Implement carry flag for SUB, fix bug in ADD

This commit is contained in:
n loewen 2023-08-02 15:09:24 +01:00
parent 4183b7c38e
commit 8b4a670b29
1 changed files with 17 additions and 10 deletions

View File

@ -70,9 +70,9 @@ const Instructions = {
add_addr: (addr) => {
CPU.currentInstruction.mnemonic = 'ADD addr';
let sum = CPU.Acc + CPU.memory[addr];
if (sum > 15) {
if (sum > 255) {
CPU.CF = 1;
CPU.Acc = (sum % 15) - 1;
CPU.Acc = (sum % 255) - 1;
} else {
CPU.CF = 0;
CPU.Acc = sum;
@ -85,7 +85,7 @@ const Instructions = {
let sum = CPU.Acc - lit;
if (sum < 0) {
CPU.CF = 1;
CPU.Acc = (sum % 15) + 1; // FIXME ???
CPU.Acc = 255 + sum + 1;
} else {
CPU.CF = 0;
CPU.Acc = sum;
@ -93,9 +93,16 @@ const Instructions = {
CPU.IP = CPU.IP += 2;
},
sub_addr: (addr) => { // TODO: carry flag
console.log("SUB addr");
CPU.Acc = CPU.Acc - CPU.memory[addr];
sub_addr: (addr) => {
CPU.currentInstruction.mnemonic = 'SUB addr';
let sum = CPU.Acc - CPU.memory[addr];
if (sum < 0) {
CPU.CF = 1;
CPU.Acc = 255 + sum + 1;
} else {
CPU.CF = 0;
CPU.Acc = sum;
}
CPU.IP = CPU.IP += 2;
},