diff --git a/cpu.js b/cpu.js index 56b3370..31e458b 100644 --- a/cpu.js +++ b/cpu.js @@ -20,6 +20,7 @@ const CPU = { running: false, IP: INITIAL_IP_ADDRESS, FLAGS: 0, // A bit field! 0000 = ONZC + FlagNames: ['C', 'Z', 'N', 'O'], Acc: 0, memory: null, @@ -233,24 +234,24 @@ const Instructions = { }, flag_toggle: (flagNum) => { - CPU.currentInstruction.mnemonic = 'FTG'; + CPU.currentInstruction.mnemonic = `FTG; ${CPU.FlagNames[flagNum]}`; let mask = null; if (flagNum === 0) { mask = 1; } if (flagNum === 1) { mask = 2; } - if (flagNum === 2) { mask = 4; } - if (flagNum === 3) { mask = 8; } + if (flagNum === 2) { mask = 8; } + if (flagNum === 3) { mask = 16; } if (mask === null) { throw new Error('Invalid flag number'); } CPU.FLAGS = CPU.FLAGS ^= mask; CPU.incrementIP(2); }, flag_hop: (flagNum) => { - CPU.currentInstruction.mnemonic = `FHP; IP+2: ${CPU.memory[CPU.IP+2]}, IP+3: ${CPU.memory[CPU.IP+3]}`; + CPU.currentInstruction.mnemonic = `FTG; ${CPU.FlagNames[flagNum]}; IP+2: ${CPU.memory[CPU.IP+2]}, IP+3: ${CPU.memory[CPU.IP+3]}`; let mask = null; if (flagNum === 0) { mask = 1; } if (flagNum === 1) { mask = 2; } - if (flagNum === 2) { mask = 4; } - if (flagNum === 3) { mask = 8; } + if (flagNum === 2) { mask = 8; } + if (flagNum === 3) { mask = 16; } if (mask === null) { throw new Error('Invalid flag number'); } if (CPU.FLAGS & mask) { CPU.incrementIP(4);