From 114a327dd3b6a2901166a518becbe04099a062da Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 May 2017 01:48:34 +0200 Subject: ... --- eval.go | 94 +++++++++++++ main.go | 88 +------------ parse.go | 128 ++++++++++++++++++ testdata/j1.dump | 396 +++++++++++++++++++++++++++---------------------------- 4 files changed, 423 insertions(+), 283 deletions(-) create mode 100644 eval.go create mode 100644 parse.go diff --git a/eval.go b/eval.go new file mode 100644 index 0000000..670a13f --- /dev/null +++ b/eval.go @@ -0,0 +1,94 @@ +package main + +type J1 struct { + dsp uint16 // 5 bit Data stack pointer + st0 uint16 // 5 bit Return stack pointer + pc uint16 // 13 bit + rsp uint16 // 5 bit + dstack [0x20]uint16 // Data stack + rstack [0x20]uint16 // Return stack + memory [0x8000]uint16 +} + +func (vm *J1) Eval() { + insn := vm.memory[vm.pc] + immediate := insn & 0x7fff // 0,insn[14:0] + + var st0sel uint16 + + switch insn & 0x6000 { // insn[14:13] + case 0x0000: // ubranch + st0sel = 0 + case 0x4000: // call + st0sel = 0 + case 0x2000: // 0branch + st0sel = 1 + case 0x6000: // ALU + st0sel = (insn >> 8) & 0x0f + } + + st0 := vm.st0 + st1 := vm.dstack[vm.dsp&0x001f] + rst0 := vm.rstack[vm.rsp&0x001f] + + //is_alu := insn&0xe000 == 0x6000 + is_lit := insn&0x8000 != 0 + + var _st0 uint16 + if is_lit { + _st0 = immediate + } else { + switch st0sel { + case 0x00: // T + _st0 = st0 + case 0x01: // N + _st0 = st1 + case 0x02: // T+N + _st0 = st0 + st1 + case 0x03: // T&N + _st0 = st0 & st1 + case 0x04: // T|N + _st0 = st0 | st1 + case 0x05: // T^N + _st0 = st0 ^ st1 + case 0x06: // ~T + _st0 = ^st0 + case 0x07: // N==T + if st1 == st0 { + _st0 = 1 + } else { + _st0 = 0 + } + case 0x08: // N>T + _st0 = st1 >> (st0 & 0xf) + case 0x0a: // T-1 + _st0 = st0 - 1 + case 0x0b: // R (rT) + _st0 = rst0 + case 0x0c: // [T] TODO + if st0&0xc000 != 0 { + // io_din + } else { + // ramrd + } + case 0x0d: // N<>T", - "T-1", - "rT", - "[T]", - "N<> 8) & 15 - s := "ALU " + opcodes[op] - if v&(1<<12) != 0 { - s += " R→PC" - } - if v&(1<<7) != 0 { - s += " T→N" - } - if v&(1<<6) != 0 { - s += " T→R" - } - if v&(1<<5) != 0 { - s += " N→[T]" - } - switch expand((v >> 2) & 3) { - case -1: - s += " r-1" - case -2: - s += " r-2" // ??? - case 1: - s += " r+1" - } - switch expand(v & 3) { - case -1: - s += " d-1" - case 1: - s += " d+1" - } - return s - } - return "" -} - -func expand(v uint16) int8 { - if v&2 != 0 { - v |= 0xfc + inst := Decode(v) + fmt.Printf("%0.4X %0.4X\t%s\n", 2*i, v, inst) } - return int8(v) } diff --git a/parse.go b/parse.go new file mode 100644 index 0000000..fbc553e --- /dev/null +++ b/parse.go @@ -0,0 +1,128 @@ +package main + +import ( + "encoding/binary" + "fmt" + "os" +) + +func ReadBin(fname string) ([]uint16, error) { + fd, err := os.Open(fname) + if err != nil { + return nil, err + } + defer fd.Close() + stat, err := fd.Stat() + if err != nil { + return nil, err + } + size := stat.Size() + body := make([]uint16, int(size)/2) + if err := binary.Read(fd, binary.BigEndian, &body); err != nil { + return nil, err + } + return body, nil +} + +func Decode(v uint16) Instruction { + switch { + case v&(1<<15) != 0: + return newLit(v) + case v&(7<<13) == 0: + return newJump(v) + case v&(7<<13) == 1<<13: + return newCondJump(v) + case v&(7<<13) == 1<<14: + return newCall(v) + case v&(7<<13) == 3<<13: + return newALU(v) + } + return nil +} + +type Instruction interface { + isInstruction() +} + +type Lit uint16 + +func newLit(v uint16) Lit { return Lit(v & 0x7fff) } +func (v Lit) String() string { return fmt.Sprintf("LIT %0.4X", uint16(v)) } +func (v Lit) isInstruction() {} + +type Jump uint16 + +func newJump(v uint16) Jump { return Jump(v << 1) } +func (v Jump) String() string { return fmt.Sprintf("UBRANCH %0.4X", uint16(v)) } +func (v Jump) isInstruction() {} + +type CondJump uint16 + +func newCondJump(v uint16) CondJump { return CondJump(v << 1) } +func (v CondJump) String() string { return fmt.Sprintf("0BRANCH %0.4X", uint16(v)) } +func (v CondJump) isInstruction() {} + +type Call uint16 + +func newCall(v uint16) Call { return Call(v << 1) } +func (v Call) String() string { return fmt.Sprintf("CALL %0.4X", uint16(v)) } +func (v Call) isInstruction() {} + +type ALU struct { + Opcode uint16 + RtoPC bool + TtoN bool + TtoR bool + NtoAtT bool + Rdir int8 + Ddir int8 +} + +func newALU(v uint16) ALU { + return ALU{ + Opcode: (v >> 8) & 15, + RtoPC: v&(1<<12) != 0, + TtoN: v&(1<<7) != 0, + TtoR: v&(1<<6) != 0, + NtoAtT: v&(1<<5) != 0, + Rdir: expand((v >> 2) & 3), + Ddir: expand(v & 3), + } +} + +func (v ALU) isInstruction() {} + +func expand(v uint16) int8 { + if v&2 != 0 { + v |= 0xfc + } + return int8(v) +} + +var opcodes = []string{ + "T", "N", "T+N", "T&N", "T|N", "T^N", "~T", "N==T", + "N>T", "T-1", "R", "[T]", "N<>T T→R r-1 d-1 -0F70 7172 ALU N R→PC T→R N→[T] +0F70 7172 ALU N R→PC T→R N→[T] d-2 0F72 FF3D LIT 7F3D 0F74 42FD CALL 85FA 0F76 D109 LIT 5109 @@ -2071,7 +2071,7 @@ 102C 6147 ALU N T→R r+1 d-1 102E 8000 LIT 0000 1030 6147 ALU N T→R r+1 d-1 -1032 6B81 ALU rT T→N d+1 +1032 6B81 ALU R T→N d+1 1034 4475 CALL 88EA 1036 42F1 CALL 85E2 1038 8005 LIT 0005 @@ -2178,8 +2178,8 @@ 1102 6180 ALU N T→N 1104 6147 ALU N T→R r+1 d-1 1106 6147 ALU N T→R r+1 d-1 -1108 6B8D ALU rT T→N r-1 d+1 -110A 6B8D ALU rT T→N r-1 d+1 +1108 6B8D ALU R T→N r-1 d+1 +110A 6B8D ALU R T→N r-1 d+1 110C 6181 ALU N T→N d+1 110E 6181 ALU N T→N d+1 1110 6147 ALU N T→R r+1 d-1 @@ -2187,7 +2187,7 @@ 1114 6180 ALU N T→N 1116 6180 ALU N T→N 1118 40A9 CALL 8152 -111A 6B8D ALU rT T→N r-1 d+1 +111A 6B8D ALU R T→N r-1 d+1 111C 6081 ALU T T→N d+1 111E 800C LIT 000C 1120 4077 CALL 80EE @@ -2195,8 +2195,8 @@ 1124 90C0 LIT 10C0 1126 6703 ALU N==T d-1 1128 2884 0BRANCH 5108 -112A 6B8D ALU rT T→N r-1 d+1 -112C 6B8D ALU rT T→N r-1 d+1 +112A 6B8D ALU R T→N r-1 d+1 +112C 6B8D ALU R T→N r-1 d+1 112E 6180 ALU N T→N 1130 0016 UBRANCH 002C 1132 6081 ALU T T→N d+1 @@ -2274,7 +2274,7 @@ 11C2 8016 LIT 0016 11C4 46C4 CALL 8D88 11C6 46D0 CALL 8DA0 -11C8 6B81 ALU rT T→N d+1 +11C8 6B81 ALU R T→N d+1 11CA 8006 LIT 0006 11CC 6203 ALU T+N d-1 11CE 48D6 CALL 91AC @@ -2285,7 +2285,7 @@ 11D8 801C LIT 001C 11DA 46C4 CALL 8D88 11DC 46D0 CALL 8DA0 -11DE 6B8D ALU rT T→N r-1 d+1 +11DE 6B8D ALU R T→N r-1 d+1 11E0 8008 LIT 0008 11E2 6203 ALU T+N d-1 11E4 011A UBRANCH 0234 @@ -2491,7 +2491,7 @@ 1374 46F1 CALL 8DE2 1376 C000 LIT 4000 1378 C000 LIT 4000 -137A 6B8D ALU rT T→N r-1 d+1 +137A 6B8D ALU R T→N r-1 d+1 137C 6403 ALU T|N d-1 137E 8000 LIT 0000 1380 46F1 CALL 8DE2 @@ -2783,7 +2783,7 @@ 15BC 906C LIT 106C 15BE 4115 CALL 822A 15C0 40A4 CALL 8148 -15C2 7206 ALU T+N R→PC r+1 +15C2 7206 ALU T+N R→PC r+1 d-2 15C4 756F ALU T^N R→PC T→R N→[T] r-1 d-1 15C6 6574 ALU T^N T→R N→[T] r+1 15C8 FF72 LIT 7F72 @@ -2791,9 +2791,9 @@ 15CC 9070 LIT 1070 15CE 4115 CALL 822A 15D0 40A4 CALL 8148 -15D2 730A ALU T&N R→PC r-2 +15D2 730A ALU T&N R→PC r-2 d-2 15D4 6275 ALU T+N T→R N→[T] r+1 d+1 -15D6 656E ALU T^N T→R N→[T] r-1 +15D6 656E ALU T^N T→R N→[T] r-1 d-2 15D8 6D74 ALU N<>T R→PC T→N r-2 d+1 1AE4 7A7C ALU T-1 R→PC T→R N→[T] r-1 -1AE6 7B5C ALU rT R→PC T→R r-1 +1AE6 7B5C ALU R R→PC T→R r-1 1AE8 7C29 ALU [T] R→PC N→[T] r-2 d+1 -1AEA 7CE2 ALU [T] R→PC T→N T→R N→[T] +1AEA 7CE2 ALU [T] R→PC T→N T→R N→[T] d-2 1AEC 7D89 ALU N<>T d-1 27EE 8020 LIT 0020 -27F0 6B8D ALU rT T→N r-1 d+1 +27F0 6B8D ALU R T→N r-1 d+1 27F2 4088 CALL 8110 27F4 4D97 CALL 9B2E 27F6 720F ALU T+N R→PC r-1 d-1 @@ -5426,13 +5426,13 @@ 2A62 6147 ALU N T→R r+1 d-1 2A64 8000 LIT 0000 2A66 6147 ALU N T→R r+1 d-1 -2A68 6B81 ALU rT T→N d+1 +2A68 6B81 ALU R T→N d+1 2A6A 4088 CALL 8110 2A6C A8D8 LIT 28D8 2A6E 6203 ALU T+N d-1 2A70 6C00 ALU [T] 2A72 355B 0BRANCH 6AB6 -2A74 6B81 ALU rT T→N d+1 +2A74 6B81 ALU R T→N d+1 2A76 4088 CALL 8110 2A78 A868 LIT 2868 2A7A 6203 ALU T+N d-1 @@ -5441,7 +5441,7 @@ 2A80 4068 CALL 80D0 2A82 3546 0BRANCH 6A8C 2A84 6103 ALU N d-1 -2A86 6B81 ALU rT T→N d+1 +2A86 6B81 ALU R T→N d+1 2A88 5514 CALL AA28 2A8A 155B UBRANCH 2AB6 2A8C 6081 ALU T T→N d+1 @@ -5453,13 +5453,13 @@ 2A98 6203 ALU T+N d-1 2A9A 6081 ALU T T→N d+1 2A9C 6C00 ALU [T] -2A9E 6B81 ALU rT T→N d+1 +2A9E 6B81 ALU R T→N d+1 2AA0 4088 CALL 8110 2AA2 A948 LIT 2948 2AA4 6203 ALU T+N d-1 2AA6 6023 ALU T N→[T] d-1 2AA8 6103 ALU N d-1 -2AAA 6B81 ALU rT T→N d+1 +2AAA 6B81 ALU R T→N d+1 2AAC 6180 ALU N T→N 2AAE 6023 ALU T N→[T] d-1 2AB0 6103 ALU N d-1 @@ -5473,10 +5473,10 @@ 2AC0 8000 LIT 0000 2AC2 6147 ALU N T→R r+1 d-1 2AC4 4C0D CALL 981A -2AC6 6B81 ALU rT T→N d+1 +2AC6 6B81 ALU R T→N d+1 2AC8 6703 ALU N==T d-1 2ACA 3562 0BRANCH 6AC4 -2ACC 6B81 ALU rT T→N d+1 +2ACC 6B81 ALU R T→N d+1 2ACE 4088 CALL 8110 2AD0 A040 LIT 2040 2AD2 6203 ALU T+N d-1 @@ -5541,26 +5541,26 @@ 2B48 6147 ALU N T→R r+1 d-1 2B4A 9B46 LIT 1B46 2B4C 6C00 ALU [T] -2B4E 6B81 ALU rT T→N d+1 +2B4E 6B81 ALU R T→N d+1 2B50 8007 LIT 0007 2B52 6303 ALU T&N d-1 2B54 8008 LIT 0008 2B56 41EB CALL 83D6 2B58 6203 ALU T+N d-1 2B5A 53EE CALL A7DC -2B5C 6B81 ALU rT T→N d+1 +2B5C 6B81 ALU R T→N d+1 2B5E 8003 LIT 0003 2B60 6903 ALU N>>T d-1 2B62 8028 LIT 0028 2B64 41EB CALL 83D6 2B66 6203 ALU T+N d-1 -2B68 6B81 ALU rT T→N d+1 +2B68 6B81 ALU R T→N d+1 2B6A 4088 CALL 8110 2B6C A868 LIT 2868 2B6E 6203 ALU T+N d-1 2B70 6023 ALU T N→[T] d-1 2B72 6103 ALU N d-1 -2B74 6B8D ALU rT T→N r-1 d+1 +2B74 6B8D ALU R T→N r-1 d+1 2B76 4088 CALL 8110 2B78 A7F8 LIT 27F8 2B7A 6203 ALU T+N d-1 @@ -5591,7 +5591,7 @@ 2BAC 6147 ALU N T→R r+1 d-1 2BAE 8000 LIT 0000 2BB0 6600 ALU ~T -2BB2 6B81 ALU rT T→N d+1 +2BB2 6B81 ALU R T→N d+1 2BB4 4088 CALL 8110 2BB6 AB96 LIT 2B96 2BB8 6203 ALU T+N d-1 @@ -5603,13 +5603,13 @@ 2BC4 6147 ALU N T→R r+1 d-1 2BC6 8000 LIT 0000 2BC8 6147 ALU N T→R r+1 d-1 -2BCA 6B81 ALU rT T→N d+1 +2BCA 6B81 ALU R T→N d+1 2BCC 4088 CALL 8110 2BCE A8D8 LIT 28D8 2BD0 6203 ALU T+N d-1 2BD2 6C00 ALU [T] 2BD4 35F4 0BRANCH 6BE8 -2BD6 6B81 ALU rT T→N d+1 +2BD6 6B81 ALU R T→N d+1 2BD8 6081 ALU T T→N d+1 2BDA 8007 LIT 0007 2BDC 6303 ALU T&N d-1 @@ -5724,7 +5724,7 @@ 2CB6 4556 CALL 8AAC 2CB8 FF52 LIT 7F52 2CBA 42FD CALL 85FA -2CBC 6B8D ALU rT T→N r-1 d+1 +2CBC 6B8D ALU R T→N r-1 d+1 2CBE 85AA LIT 05AA 2CC0 6023 ALU T N→[T] d-1 2CC2 710F ALU N R→PC r-1 d-1 @@ -5743,7 +5743,7 @@ 2CDC 710F ALU N R→PC r-1 d-1 2CDE 6147 ALU N T→R r+1 d-1 2CE0 6180 ALU N T→N -2CE2 6B81 ALU rT T→N d+1 +2CE2 6B81 ALU R T→N d+1 2CE4 4088 CALL 8110 2CE6 A7F8 LIT 27F8 2CE8 6203 ALU T+N d-1 @@ -5753,7 +5753,7 @@ 2CF0 8003 LIT 0003 2CF2 6903 ALU N>>T d-1 2CF4 6203 ALU T+N d-1 -2CF6 6B8D ALU rT T→N r-1 d+1 +2CF6 6B8D ALU R T→N r-1 d+1 2CF8 4088 CALL 8110 2CFA A868 LIT 2868 2CFC 6203 ALU T+N d-1 @@ -5815,7 +5815,7 @@ 2D6C 6147 ALU N T→R r+1 d-1 2D6E 8000 LIT 0000 2D70 6147 ALU N T→R r+1 d-1 -2D72 6B81 ALU rT T→N d+1 +2D72 6B81 ALU R T→N d+1 2D74 55C3 CALL AB86 2D76 8004 LIT 0004 2D78 6181 ALU N T→N d+1 @@ -5868,9 +5868,9 @@ 2DD6 6147 ALU N T→R r+1 d-1 2DD8 8000 LIT 0000 2DDA 6147 ALU N T→R r+1 d-1 -2DDC 6B81 ALU rT T→N d+1 +2DDC 6B81 ALU R T→N d+1 2DDE 5594 CALL AB28 -2DE0 6B81 ALU rT T→N d+1 +2DE0 6B81 ALU R T→N d+1 2DE2 4088 CALL 8110 2DE4 A8D8 LIT 28D8 2DE6 6203 ALU T+N d-1 @@ -5878,7 +5878,7 @@ 2DEA 6303 ALU T&N d-1 2DEC 3710 0BRANCH 6E20 2DEE 6181 ALU N T→N d+1 -2DF0 6B81 ALU rT T→N d+1 +2DF0 6B81 ALU R T→N d+1 2DF2 4088 CALL 8110 2DF4 A7F8 LIT 27F8 2DF6 6203 ALU T+N d-1 @@ -5887,7 +5887,7 @@ 2DFC 8010 LIT 0010 2DFE 6803 ALU N>T r-2 d-1 -3028 766E ALU ~T R→PC T→R N→[T] r-1 +3028 766E ALU ~T R→PC T→R N→[T] r-1 d-2 302A 6461 ALU T|N T→R N→[T] d+1 302C 7265 ALU T+N R→PC T→R N→[T] r+1 d+1 302E 2E73 0BRANCH 5CE6 -3030 7366 ALU T&N R→PC T→R N→[T] r+1 +3030 7366 ALU T&N R→PC T→R N→[T] r+1 d-2 3032 43AF CALL 875E 3034 552F CALL AA5E 3036 4002 CALL 8004 @@ -6192,7 +6192,7 @@ 305E 6147 ALU N T→R r+1 d-1 3060 8000 LIT 0000 3062 6147 ALU N T→R r+1 d-1 -3064 6B81 ALU rT T→N d+1 +3064 6B81 ALU R T→N d+1 3066 5598 CALL AB30 3068 404B CALL 8096 306A 3832 0BRANCH 7064 @@ -6285,7 +6285,7 @@ 3118 4353 CALL 86A6 311A 40A4 CALL 8148 311C 2007 0BRANCH 400E -311E 7266 ALU T+N R→PC T→R N→[T] r+1 +311E 7266 ALU T+N R→PC T→R N→[T] r+1 d-2 3120 6D61 ALU N<>T R→PC T→R r-2 d+1 @@ -6379,14 +6379,14 @@ 31D4 0000 UBRANCH 0000 31D6 0000 UBRANCH 0000 31D8 6D4D ALU N<>T T→R r-2 d+1 31EC 6F4F ALU Nu>T T→R N→[T] d-1 -35AA 6E6F ALU dsp T→R N→[T] r-1 d-1 +35AA 6E6F ALU depth T→R N→[T] r-1 d-1 35AC FF20 LIT 7F20 35AE 42FD CALL 85FA 35B0 43E0 CALL 87C0 @@ -6915,23 +6915,23 @@ 3604 6147 ALU N T→R r+1 d-1 3606 9B46 LIT 1B46 3608 6C00 ALU [T] -360A 6B81 ALU rT T→N d+1 +360A 6B81 ALU R T→N d+1 360C 8020 LIT 0020 360E 41EB CALL 83D6 3610 6203 ALU T+N d-1 3612 6600 ALU ~T 3614 6147 ALU N T→R r+1 d-1 3616 8064 LIT 0064 -3618 6B81 ALU rT T→N d+1 +3618 6B81 ALU R T→N d+1 361A 4D97 CALL 9B2E 361C 8258 LIT 0258 361E 6203 ALU T+N d-1 3620 8064 LIT 0064 -3622 6B8D ALU rT T→N r-1 d+1 +3622 6B8D ALU R T→N r-1 d+1 3624 4D9C CALL 9B38 3626 814E LIT 014E 3628 6203 ALU T+N d-1 -362A 6B81 ALU rT T→N d+1 +362A 6B81 ALU R T→N d+1 362C 4C1C CALL 9838 362E 404B CALL 8096 3630 3B03 0BRANCH 7606 @@ -6943,7 +6943,7 @@ 363C 5A98 CALL B530 363E 6403 ALU T|N d-1 3640 3AE7 0BRANCH 75CE -3642 6B8D ALU rT T→N r-1 d+1 +3642 6B8D ALU R T→N r-1 d+1 3644 85AA LIT 05AA 3646 6023 ALU T N→[T] d-1 3648 710F ALU N R→PC r-1 d-1 @@ -7042,12 +7042,12 @@ 3702 40A4 CALL 8148 3704 5415 CALL A82A 3706 7568 ALU T^N R→PC T→R N→[T] r-2 -3708 7246 ALU T+N R→PC T→R r+1 +3708 7246 ALU T+N R→PC T→R r+1 d-2 370A 5369 CALL A6D2 370C 7461 ALU T|N R→PC T→R N→[T] d+1 370E 7553 ALU T^N R→PC T→R d-1 3710 4D6E CALL 9ADC -3712 6E6F ALU dsp T→R N→[T] r-1 d-1 +3712 6E6F ALU depth T→R N→[T] r-1 d-1 3714 7554 ALU T^N R→PC T→R r+1 3716 5765 CALL AECA 3718 6465 ALU T|N T→R N→[T] r+1 d+1 @@ -7066,7 +7066,7 @@ 3732 7041 ALU T R→PC T→R d+1 3734 4D72 CALL 9AE4 3736 7961 ALU N>>T R→PC T→R N→[T] d+1 -3738 754A ALU T^N R→PC T→R r-2 +3738 754A ALU T^N R→PC T→R r-2 d-2 373A 4A6E CALL 94DC 373C 6C75 ALU [T] T→R N→[T] r+1 d+1 373E 7541 ALU T^N R→PC T→R d+1 @@ -7077,8 +7077,8 @@ 3748 766F ALU ~T R→PC T→R N→[T] r-1 d-1 374A 6544 ALU T^N T→R r+1 374C 4A63 CALL 94C6 -374E 6E61 ALU dsp T→R N→[T] d+1 -3750 6546 ALU T^N T→R r+1 +374E 6E61 ALU depth T→R N→[T] d+1 +3750 6546 ALU T^N T→R r+1 d-2 3752 FF62 LIT 7F62 3754 6103 ALU N d-1 3756 B652 LIT 3652 @@ -7107,7 +7107,7 @@ 3784 B64A LIT 364A 3786 5B2C CALL B658 3788 4C39 CALL 9872 -378A 6B8D ALU rT T→N r-1 d+1 +378A 6B8D ALU R T→N r-1 d+1 378C 85AA LIT 05AA 378E 6023 ALU T N→[T] d-1 3790 710F ALU N R→PC r-1 d-1 @@ -7122,7 +7122,7 @@ 37A2 8000 LIT 0000 37A4 4C33 CALL 9866 37A6 40A4 CALL 8148 -37A8 6E04 ALU dsp r+1 +37A8 6E04 ALU depth r+1 37AA 7074 ALU T R→PC T→R N→[T] r+1 37AC FF20 LIT 7F20 37AE 42FD CALL 85FA @@ -7140,7 +7140,7 @@ 37C6 736D ALU T&N R→PC T→R N→[T] r-1 d+1 37C8 FF20 LIT 7F20 37CA 42FD CALL 85FA -37CC 6B8D ALU rT T→N r-1 d+1 +37CC 6B8D ALU R T→N r-1 d+1 37CE 85AA LIT 05AA 37D0 6023 ALU T N→[T] d-1 37D2 710F ALU N R→PC r-1 d-1 @@ -7245,7 +7245,7 @@ 3898 8000 LIT 0000 389A 6147 ALU N T→R r+1 d-1 389C 8001 LIT 0001 -389E 6B81 ALU rT T→N d+1 +389E 6B81 ALU R T→N d+1 38A0 8007 LIT 0007 38A2 6303 ALU T&N d-1 38A4 6D03 ALU N<>T T→R N→[T] d+1 38F4 2E6E 0BRANCH 5CDC -38F6 7366 ALU T&N R→PC T→R N→[T] r+1 +38F6 7366 ALU T&N R→PC T→R N→[T] r+1 d-2 38F8 43AF CALL 875E 38FA 4B72 CALL 96E4 38FC 4CB3 CALL 9966 @@ -7301,13 +7301,13 @@ 3908 5718 CALL AE30 390A 6961 ALU N>>T T→R N→[T] d+1 390C 6974 ALU N>>T T→R N→[T] r+1 -390E 676E ALU N==T T→R N→[T] r-1 +390E 676E ALU N==T T→R N→[T] r-1 d-2 3910 6620 ALU ~T N→[T] 3912 726F ALU T+N R→PC T→R N→[T] r-1 d-1 3914 4520 CALL 8A40 3916 6874 ALU N>T T→R N→[T] -39AE 676E ALU N==T T→R N→[T] r-1 +39AE 676E ALU N==T T→R N→[T] r-1 d-2 39B0 42FD CALL 85FA 39B2 42D9 CALL 85B2 39B4 1CCB UBRANCH 3996 @@ -8159,7 +8159,7 @@ 3FBC 9FC0 LIT 1FC0 3FBE 6703 ALU N==T d-1 3FC0 3FC5 0BRANCH 7F8A -3FC2 6E81 ALU dsp T→N d+1 +3FC2 6E81 ALU depth T→N d+1 3FC4 80FF LIT 00FF 3FC6 6303 ALU T&N d-1 3FC8 3FE7 0BRANCH 7FCE -- cgit v1.2.3