@@ -18,13 +18,13 @@ class InstructionDecoderProgrammer(eepromSize: Int): Programmer(eepromSize) {
1818 val II = 0b0000010000000000 // Instruction register in
1919 val AI = 0b0000001000000000 // A register in
2020 val AO = 0b0000000100000000 // A register out
21- val EO = 0b0000000010000000 // ALU out
22- val SU = 0b0000000001000000 // ALU subtract
21+ val SO = 0b0000000010000000 // ALU sum out
22+ val SM = 0b0000000001000000 // ALU subtract (S-)
2323 val BI = 0b0000000000100000 // B register in
2424 val OI = 0b0000000000010000 // Output register in
2525 val CE = 0b0000000000001000 // Program counter enable
2626 val CO = 0b0000000000000100 // Program counter out
27- val J = 0b0000000000000010 // Jump (program counter in)
27+ val CJ = 0b0000000000000010 // Jump (program counter in)
2828 val FI = 0b0000000000000001 // Flags in
2929
3030 val FLAGS_Z0C0 = 0
@@ -38,11 +38,11 @@ class InstructionDecoderProgrammer(eepromSize: Int): Programmer(eepromSize) {
3838 val UCODE_TEMPLATE = arrayOf(
3939 intArrayOf( MI or CO , RO or II or CE , 0 , 0 , 0 , 0 , 0 , 0 ), // 0000 - NOP
4040 intArrayOf( MI or CO , RO or II or CE , IO or MI , RO or AI , 0 , 0 , 0 , 0 ), // 0001 - LDA
41- intArrayOf( MI or CO , RO or II or CE , IO or MI , RO or BI , EO or AI or FI , 0 , 0 , 0 ), // 0010 - ADD
42- intArrayOf( MI or CO , RO or II or CE , IO or MI , RO or BI , EO or AI or SU or FI , 0 , 0 , 0 ), // 0011 - SUB
41+ intArrayOf( MI or CO , RO or II or CE , IO or MI , RO or BI , SO or AI or FI , 0 , 0 , 0 ), // 0010 - ADD
42+ intArrayOf( MI or CO , RO or II or CE , IO or MI , RO or BI , SO or AI or SM or FI , 0 , 0 , 0 ), // 0011 - SUB
4343 intArrayOf( MI or CO , RO or II or CE , IO or MI , AO or RI , 0 , 0 , 0 , 0 ), // 0100 - STA
4444 intArrayOf( MI or CO , RO or II or CE , IO or AI , 0 , 0 , 0 , 0 , 0 ), // 0101 - LDI
45- intArrayOf( MI or CO , RO or II or CE , IO or J , 0 , 0 , 0 , 0 , 0 ), // 0110 - JMP
45+ intArrayOf( MI or CO , RO or II or CE , IO or CJ , 0 , 0 , 0 , 0 , 0 ), // 0110 - JMP
4646 intArrayOf( MI or CO , RO or II or CE , 0 , 0 , 0 , 0 , 0 , 0 ), // 0111 - JC
4747 intArrayOf( MI or CO , RO or II or CE , 0 , 0 , 0 , 0 , 0 , 0 ), // 1000 - JZ
4848 intArrayOf( MI or CO , RO or II or CE , 0 , 0 , 0 , 0 , 0 , 0 ), // 1001
@@ -62,16 +62,16 @@ class InstructionDecoderProgrammer(eepromSize: Int): Programmer(eepromSize) {
6262
6363 // ZF = 0, CF = 1
6464 ucode[FLAGS_Z0C1 ] = UCODE_TEMPLATE .deepCopy()
65- ucode[FLAGS_Z0C1 ][JC ][2 ] = IO or J
65+ ucode[FLAGS_Z0C1 ][JC ][2 ] = IO or CJ
6666
6767 // ZF = 1, CF = 0
6868 ucode[FLAGS_Z1C0 ] = UCODE_TEMPLATE .deepCopy()
69- ucode[FLAGS_Z1C0 ][JZ ][2 ] = IO or J
69+ ucode[FLAGS_Z1C0 ][JZ ][2 ] = IO or CJ
7070
7171 // ZF = 1, CF = 1
7272 ucode[FLAGS_Z1C1 ] = UCODE_TEMPLATE .deepCopy()
73- ucode[FLAGS_Z1C1 ][JC ][2 ] = IO or J
74- ucode[FLAGS_Z1C1 ][JZ ][2 ] = IO or J
73+ ucode[FLAGS_Z1C1 ][JC ][2 ] = IO or CJ
74+ ucode[FLAGS_Z1C1 ][JZ ][2 ] = IO or CJ
7575 }
7676
7777 fun fill () {
0 commit comments