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, running: false,
IP: INITIAL_IP_ADDRESS, IP: INITIAL_IP_ADDRESS,
FLAGS: 0, // A bit field! 0000 = ONZC FLAGS: 0, // A bit field! 0000 = ONZC
FlagNames: ['C', 'Z', 'N', 'O'],
Acc: 0, Acc: 0,
memory: null, memory: null,
@ -233,24 +234,24 @@ const Instructions = {
}, },
flag_toggle: (flagNum) => { flag_toggle: (flagNum) => {
CPU.currentInstruction.mnemonic = 'FTG'; CPU.currentInstruction.mnemonic = `FTG; ${CPU.FlagNames[flagNum]}`;
let mask = null; let mask = null;
if (flagNum === 0) { mask = 1; } if (flagNum === 0) { mask = 1; }
if (flagNum === 1) { mask = 2; } if (flagNum === 1) { mask = 2; }
if (flagNum === 2) { mask = 4; } if (flagNum === 2) { mask = 8; }
if (flagNum === 3) { mask = 8; } if (flagNum === 3) { mask = 16; }
if (mask === null) { throw new Error('Invalid flag number'); } if (mask === null) { throw new Error('Invalid flag number'); }
CPU.FLAGS = CPU.FLAGS ^= mask; CPU.FLAGS = CPU.FLAGS ^= mask;
CPU.incrementIP(2); CPU.incrementIP(2);
}, },
flag_hop: (flagNum) => { 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; let mask = null;
if (flagNum === 0) { mask = 1; } if (flagNum === 0) { mask = 1; }
if (flagNum === 1) { mask = 2; } if (flagNum === 1) { mask = 2; }
if (flagNum === 2) { mask = 4; } if (flagNum === 2) { mask = 8; }
if (flagNum === 3) { mask = 8; } if (flagNum === 3) { mask = 16; }
if (mask === null) { throw new Error('Invalid flag number'); } if (mask === null) { throw new Error('Invalid flag number'); }
if (CPU.FLAGS & mask) { if (CPU.FLAGS & mask) {
CPU.incrementIP(4); CPU.incrementIP(4);