Implement carry flag for SUB, fix bug in ADD
This commit is contained in:
parent
4183b7c38e
commit
8b4a670b29
19
simulator.js
19
simulator.js
|
|
@ -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;
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue