cpu - Fix incorrect flag numbering

This commit is contained in:
n loewen 2023-08-26 13:24:49 +01:00
parent 7cfad439f8
commit d0b620f1ad
1 changed files with 7 additions and 6 deletions

13
cpu.js
View File

@ -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);