浏览代码

доделал исполнитель, rs232 и прочее делать не стал
поменял компонент консоли.

kpmy 10 年之前
父节点
当前提交
eb278c32b0
共有 17 个文件被更改,包括 479 次插入281 次删除
  1. 17 3
      lib/machine/app.dart
  2. 26 6
      lib/machine/host.dart
  3. 12 12
      lib/machine/loader.dart
  4. 2 0
      lib/trisc/mem.dart
  5. 4 4
      lib/trisc/proc.dart
  6. 1 1
      lib/trisc/reg.dart
  7. 3 2
      pubspec.yaml
  8. 3 0
      web/css/index.css
  9. 1 1
      web/index.html
  10. 35 18
      web/main.dart
  11. 135 73
      web/tc/Core.tc
  12. 0 2
      web/tc/Core.ts
  13. 0 2
      web/tc/Files.ts
  14. 0 73
      web/tc/Log.ts
  15. 0 82
      web/tc/RS232.ts
  16. 240 0
      web/tc/Test2.tc
  17. 0 2
      web/tc/Test2.ts

+ 17 - 3
lib/machine/app.dart

@@ -8,19 +8,33 @@ import 'package:logging/logging.dart';
 import 'package:logging_handlers/logging_handlers_shared.dart';
 import 'dart:html';
 import 'dart:convert';
+import 'package:event_bus/event_bus.dart';
 
 part 'host.dart';
 part 'loader.dart';
 
+final EventBus bus = new EventBus();
+
+class WriteCharEvent{
+  final int char;
+  WriteCharEvent(this.char);
+}
+
+class WriteIntEvent{
+  final int value;
+  WriteIntEvent(this.value);
+}
+
 void tuneLog() {
   startQuickLogging();
-  fmt.level = Level.ALL;
+  fmt.level = Level.WARNING;
 }
 
 init() async {
   Host host = new Host();
   Flasher flash = new Flasher(host.mem, mtOrg, 81);
-  await flash.flash("bootstrap", adr: bootPC);
-  await flash.flash("Core", boot: true, list: true);
+  await flash.flash("bootstrap", adr: bootPC, list: false);
+  await flash.flash("Core", boot: true);
+  await flash.flash("Test2");
   host.run();
 }

+ 26 - 6
lib/machine/host.dart

@@ -3,6 +3,7 @@ part of machine;
 /* обслуживает служебные отрицательные адреса: (-∞..bootPC, -81 .. -1] */
 class DebugMMU extends MMU {
   MMU _inner;
+  Host _host;
 
   int get pos => _inner.pos;
   int get neg => _inner.neg;
@@ -10,7 +11,20 @@ class DebugMMU extends MMU {
 
   operator []=(int idx, tryte val) {
     if (idx < 0 && idx >= -81) {
-
+      switch(idx){
+        case -1:
+        switch(val.toInt()){
+          case 0x1b:
+            _host.stop = true;
+            fmt.shout("internal panic");
+            break;
+          default:
+            bus.fire(new WriteCharEvent(val.toInt()));
+        }
+        break;
+        case -2: break;
+        case -3: bus.fire(new WriteIntEvent(val.toInt())); break;
+      }
     } else {
       _inner[idx] = val;
     }
@@ -20,7 +34,7 @@ class DebugMMU extends MMU {
     if (idx < 0 && idx >= -3) return tryte.min; else return _inner[idx];
   }
 
-  DebugMMU(this._inner);
+  DebugMMU(this._host, this._inner);
 }
 
 /* 0Z000N */
@@ -43,19 +57,25 @@ class Host {
 
   void run(){
     Function step;
+    var boost = 1000;
     step = () {
-      if (proc.next() != CPUresult.stop && !stop) new Future.delayed(new Duration(milliseconds: 50), step);
+      CPUresult res = CPUresult.ok;
+      int i = 0;
+      while(res == CPUresult.ok && i<boost && !stop){
+        res = proc.next();
+        i++;
+      }
+      if (res != CPUresult.stop && !stop) new Future.delayed(new Duration(milliseconds: 200), step);
     };
     step();
   }
 
   Host() {
-    mem = new DebugMMU(MemFactory.newMMU(bootPC, memLength));
+    mem = new DebugMMU(this, MemFactory.newMMU(bootPC, memLength));
     proc = ProcFactory.newCPU(mem, pc: long(bootPC ~/ 3));
     /* инициализируем константы машины */
-    new Mapper(mem)[memLim ~/ 3] = long(mem.length);
+    new Mapper(mem)[memLim ~/ 3] = long(memLength);
     new Mapper(mem)[heapOrg ~/ 3] = long(heap);
     proc.reset();
-    proc.debug = true;
   }
 }

+ 12 - 12
lib/machine/loader.dart

@@ -11,17 +11,17 @@ class Module{
 class Flasher{
   static const descSize = 15;
   static const firstJump = 1;
-  
+
   RAM mem;
   int mt;
   int start;
-  
+
   List<Module> ml = new List();
-  
-  flash (String name, {int adr: -1, bool boot: false, bool list: false}) async{
-    
+
+  flash (String name, {int adr: -1, bool boot: false, bool list: true}) async{
+
     Mapper mapper = new Mapper(mem);
-    
+
     /* снизу вверх исправляем адреса */
     var fixD = (int adr, int fixorgD){
       int fadr = adr + fixorgD * 3;
@@ -30,13 +30,13 @@ class Flasher{
         int27 disp = (inst << 11) >> 11;
         int27 mno = (inst << 7) >> 23;
         if(mno == long(0)){
-          int27 _new = ((inst >> 20) << 20) + (long(mt) << 16) + long(ml.length * 3);
+          int27 _new = ((inst >> 20) << 20) + (long(org.MT) << 16) + long(ml.length * 3);
           mapper[fadr ~/ 3] = _new;
         }
         fadr = fadr - disp.toInt() * 3;
       }
     };
-    
+
     var fixP = (int adr, int fixorgP, List<String> imp){
       int fadr = adr + fixorgP * 3;
       while(fadr != adr){
@@ -54,7 +54,7 @@ class Flasher{
         fadr = fadr - disp.toInt()*3;
       }
     };
-    
+
     try{
       var code = await HttpRequest.getString("tc/$name.tc");
       Map tc;
@@ -97,12 +97,12 @@ class Flasher{
          fixorgP = nons.containsKey("fixorgP") ? nons["fixorgP"] : 0;
          List nonits = nons["nons"];
          int i = 0;
-         int c = adr + _var + typ + str; mod.code = c; 
+         int c = adr + _var + typ + str; mod.code = c;
          nonits.forEach((String n){
            mapper[(c ~/ 3) + i] = Nons.parse(n);
            i++;
          });
-         
+
          if(list){
            ml.add(mod);
            mod.size = _var + str + typ + (nonits.length * 3);
@@ -128,7 +128,7 @@ class Flasher{
       return -1;
     }
   }
-  
+
   Flasher(this.mem, this.mt, [int shift = 0]){
     this.start = mt + shift;
   }

+ 2 - 0
lib/trisc/mem.dart

@@ -38,6 +38,8 @@ class Mapper {
   }
 
   operator []=(int adr, int27 val) {
+    if(adr == 607)
+      fmt.fine("word write [$adr]=$val");
     int a = adr * WORD;
     List<tryte> x = splitInt27(val);
     for (int i = 0; i < WORD; i++) {

+ 4 - 4
lib/trisc/proc.dart

@@ -78,9 +78,9 @@ class _cpu extends CPU{
           if(reg.nz != FALSE) jump(adr, op.cond.link); /* >= */
         }else if(nz == NULL && eq == FALSE){
           if(reg.nz != NULL) jump(adr, op.cond.link); /* # */
-        }else if(nz == FALSE && eq == NULL){
+        }else if(nz == FALSE && eq == FALSE){
           if(reg.nz != TRUE) jump(adr, op.cond.link); /* <= */
-        }else halt.on(code: 215);
+        }else halt.on(code: 215, msg: "$nz $eq");
       }
     };
 
@@ -94,11 +94,11 @@ class _cpu extends CPU{
         calc(op, pc + op.offset);
         return CPUresult.ok;
       }else if (op is GetWord){
-        reg[op.a] = new Mapper(mem)[(reg[op.b] + op.offset).toInt()];
+        reg[op.a] = new Mapper(mem)[(reg[op.b] + op.offset).toInt() ~/ 3];
         reg.updateNZ(op.a);
         return CPUresult.ok;
       }else if (op is SetWord){
-        new Mapper(mem)[(reg[op.b] + op.offset).toInt()] = reg[op.a];
+        new Mapper(mem)[(reg[op.b] + op.offset).toInt() ~/ 3] = reg[op.a];
         return CPUresult.ok;
       }else if(op is GetTryte){
         reg[op.a] = long(mem[(reg[op.b] + op.offset).toInt()]);

+ 1 - 1
lib/trisc/reg.dart

@@ -56,7 +56,7 @@ class Registers {
     _cache[asm.lsl] = (tryte a, tryte b, int27 c) {
       this[a] = c.toInt() == 0
           ? this[b]
-          : (c.toInt() > 0 ? this[b] << c.toInt() : this[b] >> c.toInt());
+          : (c.toInt() > 0 ? this[b] << c.toInt() : this[b] >> c.toInt().abs());
     };
     _cache[asm.mul] = (tryte a, tryte b, int27 c) {
       this[a] = this[b] * c;

+ 3 - 2
pubspec.yaml

@@ -5,6 +5,7 @@ environment:
   sdk: '>=1.0.0 <2.0.0'
 dependencies:
   browser: any
-  libpen: any
+  event_bus: any
   logging_handlers: any
-  unittest: any
+  malison: any
+  unittest: any

+ 3 - 0
web/css/index.css

@@ -0,0 +1,3 @@
+body{
+  background-color: black;
+}

+ 1 - 1
web/index.html

@@ -3,9 +3,9 @@
 <head>
 <meta charset="utf-8">
 <title>tri</title>
+<link rel="stylesheet" href="css/index.css"/>
 </head>
 <body>
-	TRI
 	<script type="application/dart" src="main.dart"></script>
 	<script data-pub-inline src="packages/browser/dart.js"></script>
 </body>

+ 35 - 18
web/main.dart

@@ -1,7 +1,7 @@
 //import 'package:tri/tri/test.dart';
 //import 'package:tri/trisc/mem_test.dart';
 import 'package:tri/machine/app.dart' as machine;
-import 'package:libpen/libpen.dart' as libpen;
+import 'package:malison/malison.dart';
 import 'dart:html';
 import 'dart:async';
 
@@ -9,23 +9,40 @@ void main() {
   //testTri();
   //testMem();
   machine.tuneLog();
-  machine.init();
-
+  StringBuffer buffer = new StringBuffer("TRI machine\n");
 //create the Console.
-libpen.Console console = new libpen.Console(40, 25);
-document.body.append(console.container);
-bool show = true;
-var blink;
-blink = (){
-  console.clear();
-  console.setChar(0, 0, '\$');
-  console.setChar(1, 0, '>');
-  if(show)
-    console.setChar(2, 0, '_');
-  show = !show;
-  console.flush();
-  new Future.delayed(new Duration(milliseconds: 500), blink);
-};
-blink();
+  var canvas = new CanvasElement();
+  document.body.children.add(canvas);
+  var terminal = new RetroTerminal.dos(80, 40, canvas);
 
+  bool show = true;
+  var blink;
+  blink = () {
+    //console.clear();
+    List<String> data = buffer.toString().split("\n");
+    int row = 0;
+    data.forEach((s){
+      terminal.writeAt(0, row, s);
+      row++;
+    });
+    if (show)
+      terminal.writeAt(0, row, "_");
+    show = !show;
+    terminal.render();
+    new Future.delayed(new Duration(milliseconds: 500), blink);
+  };
+  blink();
+
+  machine.bus.on().listen((e) {
+    if(e is machine.WriteCharEvent){
+      if(e.char == 0x0D)
+        buffer.writeln();
+      else
+        buffer.writeCharCode(e.char);
+    }else if(e is machine.WriteIntEvent){
+      buffer.write(" ");
+      buffer.write(e.value);
+    }
+  });
+  machine.init();
 }

+ 135 - 73
web/tc/Core.tc

@@ -936,6 +936,11 @@
 				"000++0000",
 				-152
 			],
+			[
+				"BRC",
+				"000++0000",
+				-126
+			],
 			[
 				"LDW",
 				"LNK",
@@ -976,7 +981,7 @@
 				"LDW",
 				"SB",
 				24,
-				10
+				11
 			],
 			[
 				"LDW",
@@ -1056,7 +1061,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-117
+				-118
 			],
 			[
 				"LDW",
@@ -1547,7 +1552,7 @@
 			[
 				"BRC",
 				"000-+0000",
-				259
+				260
 			],
 			[
 				"ADD`",
@@ -1588,7 +1593,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-208
+				-209
 			],
 			[
 				"LDW",
@@ -2089,7 +2094,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-350
+				-351
 			],
 			[
 				"LDW",
@@ -2100,17 +2105,17 @@
 			[
 				"BRC",
 				"000++0000",
-				-361
+				-362
 			],
 			[
 				"BRC",
 				"000++0000",
-				-326
+				-327
 			],
 			[
 				"BRC",
 				"000++0000",
-				-311
+				-312
 			],
 			[
 				"LDW",
@@ -2173,7 +2178,12 @@
 			[
 				"BRC",
 				"000++0000",
-				-365
+				-366
+			],
+			[
+				"BRC",
+				"000++0000",
+				-340
 			],
 			[
 				"LDW",
@@ -2202,7 +2212,7 @@
 				"LDW",
 				"SB",
 				24,
-				8
+				9
 			],
 			[
 				"ADD`",
@@ -2226,7 +2236,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				273220
+				274435
 			],
 			[
 				"LDW",
@@ -2238,7 +2248,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				273784
+				274999
 			],
 			[
 				"LDW",
@@ -2267,7 +2277,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-390
+				-392
 			],
 			[
 				"LDW",
@@ -2295,7 +2305,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-359
+				-361
 			],
 			[
 				"LDW",
@@ -2395,7 +2405,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				295573
+				296788
 			],
 			[
 				"LDW",
@@ -2434,7 +2444,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-410
+				-412
 			],
 			[
 				"LDW",
@@ -2446,7 +2456,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				299866
+				301081
 			],
 			[
 				"LDW",
@@ -2458,7 +2468,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				300676
+				301891
 			],
 			[
 				"LDW",
@@ -2488,7 +2498,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				302134
+				303349
 			],
 			[
 				"LDW",
@@ -2512,7 +2522,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				305050
+				306265
 			],
 			[
 				"LDW",
@@ -2559,7 +2569,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				309100
+				310315
 			],
 			[
 				"LDW",
@@ -2583,7 +2593,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				310154
+				311369
 			],
 			[
 				"BRR",
@@ -2601,7 +2611,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				311854
+				313069
 			],
 			[
 				"LDW",
@@ -2710,12 +2720,12 @@
 			[
 				"BRC",
 				"000++0000",
-				-457
+				-459
 			],
 			[
 				"BRC",
 				"000++0000",
-				-431
+				-433
 			],
 			[
 				"MOV",
@@ -2737,7 +2747,7 @@
 				"BRR",
 				"MT",
 				"000+00-00",
-				323683
+				324898
 			],
 			[
 				"MOV`",
@@ -2802,7 +2812,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				333238
+				334453
 			],
 			[
 				"MOV`",
@@ -2825,7 +2835,7 @@
 				"BRR",
 				"MT",
 				"000+00000",
-				335587
+				336802
 			],
 			[
 				"LDW",
@@ -2901,7 +2911,7 @@
 				"SUB`",
 				0,
 				"LNK",
-				489
+				492
 			],
 			[
 				"MOV",
@@ -2911,7 +2921,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-188
+				-189
 			],
 			[
 				"MOV`",
@@ -3100,34 +3110,56 @@
 			[
 				"BRC",
 				"000++0000",
-				-525
+				-527
 			],
 			[
 				"BRC",
 				"000++0000",
-				-499
+				-501
 			],
 			[
 				"BRC",
 				"000++0000",
 				-76
 			],
+			[
+				"LDW",
+				"SB",
+				24,
+				33
+			],
+			[
+				"ADD`",
+				0,
+				"SB",
+				141
+			],
+			[
+				"MOV`",
+				1,
+				22
+			],
 			[
 				"BRC",
 				"000++0000",
-				-171
+				-533
+			],
+			[
+				"BRC",
+				"000++0000",
+				-507
 			],
 			[
 				"LDW",
 				"SB",
 				24,
-				34
+				5
 			],
 			[
 				"ADD`",
 				0,
 				"SB",
-				141
+				165
 			],
 			[
 				"MOV`",
@@ -3137,7 +3169,7 @@
 			[
 				"BRC",
 				"000++0000",
-				-532
+				-538
 			],
 			[
 				"LDW",
@@ -3315,18 +3347,19 @@
 			"3000100000000",
 			"X003Y00000003",
 			"X000000000000",
-			"Z2XZ0000000004",
+			"Z2XZ000000001W",
 			"X3X0000000012",
 			"Z003X1Y0001ZX",
 			"Z010000000010",
 			"Z2400000000Y11",
+			"Z2400000000Y40",
 			"X3Z3Y00000000",
 			"Z3Y3Y1Y00003X",
 			"1YY0000000003Z",
 			"Z3Y3YZ2000010",
 			"33Z3Y00000000",
 			"3003Y00000003",
-			"X3X0000000011",
+			"X3X0000000012",
 			"X003X000001W3",
 			"Z2X00000000010",
 			"X3X0000000003",
@@ -3340,7 +3373,7 @@
 			"Z2Y0000000003X",
 			"Z003Y1Y00001X",
 			"Z0100000001Z0",
-			"Z2400000000ZW0",
+			"Z2400000000ZWZ",
 			"X003Y0000001X",
 			"Z00001Y000040",
 			"Z010000000040",
@@ -3431,7 +3464,7 @@
 			"Z0101Z2000001",
 			"Z0101110001Z0",
 			"Z0101100001Z0",
-			"Z2400000000X4Z",
+			"Z2400000000X4Y",
 			"X003Y00000010",
 			"Z2XZ0000000004",
 			"Z000000000000",
@@ -3517,11 +3550,11 @@
 			"X3X00000001YZ",
 			"Z003X1Y00010X",
 			"Z01000000001W",
-			"Z2400000000WX1",
+			"Z2400000000WX0",
 			"X003Y00000013",
-			"Z2400000000WWZ",
-			"Z2400000000W0Y",
-			"Z2400000000W14",
+			"Z2400000000WWY",
+			"Z2400000000W0X",
+			"Z2400000000W13",
 			"X3Z3Y00000000",
 			"Z3Y3Y1Y00002X",
 			"1YY0000000003Z",
@@ -3532,28 +3565,29 @@
 			"X3X000000002X",
 			"Z003X1Y000103",
 			"Z01000000002Y",
-			"Z240000000Z444",
+			"Z240000000Z443",
+			"Z2400000000WY2",
 			"X003Y00000003",
 			"Z0000Z2000011",
 			"Z2X4000000002Z",
 			"Z003Y1Y00001X",
-			"X3X000000001Z",
+			"X3X0000000010",
 			"Z013X1Y000000",
 			"1Y40000000003W",
 			"X003Y0000001X",
-			"1Y3001WXXY1Y3W",
+			"1Y3001WXY41Y3W",
 			"X003Y0000001X",
-			"1Y3001WXYW043W",
+			"1Y3001WXZ2043W",
 			"X013Y00000003",
 			"3010000000000",
 			"X3X0000000010",
 			"X003X0000004X",
-			"Z240000000Z42X",
+			"Z240000000Z414",
 			"X003Y00000003",
 			"Z00001Y000001",
 			"3003Y00000003",
 			"Z2Y000000000YY",
-			"Z2400000000WW1",
+			"Z2400000000WWZ",
 			"X3Z3Y00000000",
 			"Z3Y3Y1Y000010",
 			"1YY0000000003Z",
@@ -3570,27 +3604,27 @@
 			"X003Y00000003",
 			"3003Y00000010",
 			"X003Y00000010",
-			"1Y3001W004043W",
+			"1Y3001W021043W",
 			"X000000000003",
 			"Z0000Z2000000",
 			"Z2XW0000000044",
 			"X3X0000000012",
 			"Z003X1Y000123",
 			"Z010000000014",
-			"Z240000000Z4Z4",
+			"Z240000000Z4Z2",
 			"X003Y00000010",
-			"1Y3001W1X3043W",
+			"1Y3001W1Z0043W",
 			"X013Y0000001X",
-			"1Y3001W1Y4043W",
+			"1Y3001W101043W",
 			"X010100000000",
 			"Z01011Y000001",
 			"3010000000000",
 			"X003Y0000001X",
-			"1Y3001W104043W",
+			"1Y3001W121043W",
 			"X013Y00000010",
 			"3010000000013",
 			"X003Y00000010",
-			"1Y3001W144043W",
+			"1Y3001W2X1043W",
 			"X000000000000",
 			"Z000010000003",
 			"Z010000000100",
@@ -3598,14 +3632,14 @@
 			"X000000000000",
 			"3003Y00000013",
 			"X003Y00000010",
-			"1Y3001W210043W",
+			"1Y3001W23X043W",
 			"X000000000010",
 			"3003Y0000002X",
 			"X003Y0000002X",
-			"1Y3001W2241W3W",
+			"1Y3001W2411W3W",
 			"1Y400000000000",
 			"X003Y00000010",
-			"1Y3001W3WY043W",
+			"1Y3001W3X4043W",
 			"X013Y00000003",
 			"X000000000003",
 			"100011Y000000",
@@ -3624,12 +3658,12 @@
 			"X3X00000001W2",
 			"Z003X1Y000140",
 			"Z01000000001W",
-			"Z240000000Z332",
-			"Z240000000Z4X1",
+			"Z240000000Z330",
+			"Z240000000Z4XZ",
 			"100000000003W",
 			"Z010000000100",
 			"10101Z2000000",
-			"1Y3Z01W4301Y3W",
+			"1Y3Z01XWWX1Y3W",
 			"Z000000000103",
 			"3003Y00000003",
 			"X003Y00000003",
@@ -3640,11 +3674,11 @@
 			"X3X000000002Y",
 			"3003X000001X0",
 			"X003X000001X0",
-			"1Y3001XXY1043W",
+			"1Y3001XX0Y043W",
 			"Z010000000001",
 			"3010000000000",
 			"X003X000001X0",
-			"1Y3001XX13043W",
+			"1Y3001XX30043W",
 			"X013Y00000003",
 			"X000000000003",
 			"100011Y000000",
@@ -3657,9 +3691,9 @@
 			"Z3Y3YZ2000003",
 			"33Z3Y00000000",
 			"Z2400000000000",
-			"Z003ZZ2001X03",
+			"Z003ZZ2001X1X",
 			"101000000003W",
-			"Z2400000000YX1",
+			"Z2400000000YX0",
 			"Z00000000010X",
 			"X000000000000",
 			"X3X000000003Y",
@@ -3692,23 +3726,27 @@
 			"3010000000000",
 			"Z003X1Y0002WX",
 			"Z010000000020",
-			"Z240000000Z3WX",
-			"Z240000000Z3ZW",
+			"Z240000000Z244",
+			"Z240000000Z3Y3",
 			"Z2400000000Z1W",
-			"Z2400000000YZ0",
-			"X3X000000004Y",
+			"X3X000000004X",
 			"Z003X1Y0002YX",
+			"Z010000000024",
+			"Z240000000Z24Y",
+			"Z240000000Z3YX",
+			"X3X000000001W",
+			"Z003X1Y000203",
 			"Z010000000010",
-			"Z240000000Z24Z",
+			"Z240000000Z232",
 			"X3Z3Y00000000",
 			"Z3Y3Y1Y000003",
 			"1YY0000000003Z"
 		],
-		"fixorgD": 537,
+		"fixorgD": 543,
 		"fixorgP": 0
 	},
 	"varsize": 24,
-	"entry": 1485,
+	"entry": 1491,
 	"types": [
 		"20",
 		"0Z",
@@ -3807,6 +3845,30 @@
 		114,
 		101,
 		0,
+		72,
+		101,
+		108,
+		108,
+		111,
+		44,
+		32,
+		116,
+		114,
+		105,
+		110,
+		97,
+		114,
+		121,
+		32,
+		119,
+		111,
+		114,
+		108,
+		100,
+		33,
+		0,
+		0,
+		0,
 		115,
 		116,
 		111,

+ 0 - 2
web/tc/Core.ts

@@ -1,2 +0,0 @@
-{
-}

+ 0 - 2
web/tc/Files.ts

@@ -1,2 +0,0 @@
-{
-}

+ 0 - 73
web/tc/Log.ts

@@ -1,73 +0,0 @@
-{
-	"String": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 3,
-				"rdo": true,
-				"ref": 0,
-				"form": 12,
-				"base": {
-					"ref": -3
-				},
-				"len": -1,
-				"size": 6
-			}
-		],
-		"exno": 1
-	},
-	"Ln": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-		],
-		"exno": 2
-	},
-	"Int": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 2,
-				"rdo": false,
-				"ref": -4
-			}
-		],
-		"exno": 3
-	},
-	"Break": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-		],
-		"exno": 4
-	},
-	"Beep": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-		],
-		"exno": 5
-	}
-}

+ 0 - 82
web/tc/RS232.ts

@@ -1,82 +0,0 @@
-{
-	"SendTryte": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 2,
-				"rdo": false,
-				"ref": -1
-			},
-			{
-				"class": 2,
-				"rdo": false,
-				"ref": -1
-			}
-		],
-		"exno": 1
-	},
-	"SendString": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 3,
-				"rdo": true,
-				"ref": 0,
-				"form": 12,
-				"base": {
-					"ref": -3
-				},
-				"len": -1,
-				"size": 6
-			}
-		],
-		"exno": 2
-	},
-	"SendChar": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 2,
-				"rdo": false,
-				"ref": -3
-			}
-		],
-		"exno": 3
-	},
-	"RecvTryte": {
-		"class": 1,
-		"ref": 0,
-		"form": 10,
-		"base": {
-			"ref": -9
-		},
-		"par": [
-			{
-				"class": 3,
-				"rdo": false,
-				"ref": -1
-			},
-			{
-				"class": 2,
-				"rdo": false,
-				"ref": -1
-			}
-		],
-		"exno": 4
-	}
-}

+ 240 - 0
web/tc/Test2.tc

@@ -4,6 +4,246 @@
 	"entries": [
 	],
 	"code": {
+		"asm": [
+			[
+				"SUB`",
+				"SP",
+				"SP",
+				3
+			],
+			[
+				"STW",
+				"LNK",
+				"SP",
+				0
+			],
+			[
+				"MOV`",
+				0,
+				-1
+			],
+			[
+				"MOV`",
+				1,
+				27
+			],
+			[
+				"STT",
+				1,
+				1,
+				0
+			],
+			[
+				"LDW",
+				"LNK",
+				"SP",
+				0
+			],
+			[
+				"ADD`",
+				"SP",
+				"SP",
+				3
+			],
+			[
+				"BRR",
+				"LNK",
+				"000-+0000",
+				0
+			],
+			[
+				"SUB`",
+				"SP",
+				"SP",
+				3
+			],
+			[
+				"STW",
+				"LNK",
+				"SP",
+				0
+			],
+			[
+				"MOV`",
+				0,
+				5
+			],
+			[
+				"LDW",
+				"SB",
+				24,
+				11
+			],
+			[
+				"STW",
+				0,
+				"SB",
+				3
+			],
+			[
+				"MOV`",
+				0,
+				1
+			],
+			[
+				"STW",
+				0,
+				"SB",
+				6
+			],
+			[
+				"LDW",
+				0,
+				"SB",
+				3
+			],
+			[
+				"SUB`",
+				0,
+				0,
+				5
+			],
+			[
+				"BRC",
+				"000-00-00",
+				0
+			],
+			[
+				"LDW",
+				"SB",
+				24,
+				7
+			],
+			[
+				"LDW",
+				0,
+				"SB",
+				6
+			],
+			[
+				"SUB`",
+				0,
+				0,
+				1
+			],
+			[
+				"BRC",
+				"000-00-00",
+				2
+			],
+			[
+				"MOV`",
+				0,
+				1
+			],
+			[
+				"BRC",
+				"000-+0000",
+				1
+			],
+			[
+				"MOV`",
+				0,
+				0
+			],
+			[
+				"LDW",
+				"SB",
+				24,
+				7
+			],
+			[
+				"STT",
+				0,
+				"SB",
+				0
+			],
+			[
+				"LDW",
+				0,
+				"SB",
+				6
+			],
+			[
+				"SUB`",
+				0,
+				0,
+				1
+			],
+			[
+				"BRC",
+				"000-00000",
+				0
+			],
+			[
+				"LDW",
+				"SB",
+				24,
+				5
+			],
+			[
+				"LDW",
+				0,
+				"SB",
+				3
+			],
+			[
+				"SUB`",
+				0,
+				0,
+				5
+			],
+			[
+				"BRC",
+				"000-00-00",
+				2
+			],
+			[
+				"MOV`",
+				0,
+				1
+			],
+			[
+				"BRC",
+				"000-+0000",
+				1
+			],
+			[
+				"MOV`",
+				0,
+				0
+			],
+			[
+				"LDW",
+				"SB",
+				24,
+				7
+			],
+			[
+				"STT",
+				0,
+				"SB",
+				0
+			],
+			[
+				"LDW",
+				"LNK",
+				"SP",
+				0
+			],
+			[
+				"ADD`",
+				"SP",
+				"SP",
+				3
+			],
+			[
+				"BRR",
+				"LNK",
+				"000-+0000",
+				0
+			]
+		],
 		"nons": [
 			"Z3Y3YZ2000003",
 			"33Z3Y00000000",

+ 0 - 2
web/tc/Test2.ts

@@ -1,2 +0,0 @@
-{
-}