cpu - Change flags from NZOC to ONZC

This commit is contained in:
n loewen 2023-08-23 15:30:06 +01:00
parent e1cc491e28
commit 5f29c7c3eb
3 changed files with 26 additions and 26 deletions

24
cpu.js
View File

@ -19,7 +19,7 @@ const CPU = {
// Core state
running: false,
IP: INITIAL_IP_ADDRESS,
FLAGS: 0, // A bit field! 0000 = NZOC
FLAGS: 0, // A bit field! 0000 = ONZC
Acc: 0,
memory: null,
@ -29,13 +29,13 @@ const CPU = {
CPU.memory = new Uint8Array(256);
CPU.memory.set(data, 0);
},
setFlagNegative: () => { CPU.FLAGS |= 8 },
setFlagZero: () => { CPU.FLAGS |= 4 },
setFlagOverflow: () => { CPU.FLAGS |= 2 },
setFlagOverflow: () => { CPU.FLAGS |= 4 },
setFlagNegative: () => { CPU.FLAGS |= 4 },
setFlagZero: () => { CPU.FLAGS |= 2 },
setFlagCarry: () => { CPU.FLAGS |= 1 },
unsetFlagNegative: () => { CPU.FLAGS &= ~8 },
unsetFlagZero: () => { CPU.FLAGS &= ~4 },
unsetFlagOverflow: () => { CPU.FLAGS &= ~2 },
unsetFlagOverflow: () => { CPU.FLAGS &= ~8 },
unsetFlagNegative: () => { CPU.FLAGS &= ~4 },
unsetFlagZero: () => { CPU.FLAGS &= ~2 },
unsetFlagCarry: () => { CPU.FLAGS &= ~1 },
updateFlagZero: () => {
if (CPU.Acc === 0) {
@ -107,7 +107,7 @@ const Instructions = {
// Calculate overflow flag status
let bitSixCarry = 0;
if ((CPU.Acc & 64) && (lit & 64)) { bitSixCarry = 1; }
let overflow = bitSixCarry ^ (CPU.FLAGS & 1)
let overflow = bitSixCarry ^ (CPU.FLAGS & 8);
if (overflow) {
CPU.setFlagOverflow();
} else {
@ -132,7 +132,7 @@ const Instructions = {
// Calculate overflow flag status
let bitSixCarry = 0;
if ((CPU.Acc & 64) && (addr & 64)) { bitSixCarry = 1; }
let overflow = bitSixCarry ^ (CPU.FLAGS & 1)
let overflow = bitSixCarry ^ (CPU.FLAGS & 8);
if (overflow) {
CPU.setFlagOverflow();
} else {
@ -157,7 +157,7 @@ const Instructions = {
// Calculate overflow flag status
let bitSixCarry = 0;
if ((CPU.Acc & 64) && (lit & 64)) { bitSixCarry = 1; }
let overflow = bitSixCarry ^ (CPU.FLAGS & 1)
let overflow = bitSixCarry ^ (CPU.FLAGS & 8);
if (overflow) {
CPU.setFlagOverflow();
} else {
@ -182,7 +182,7 @@ const Instructions = {
// Calculate overflow flag status
let bitSixCarry = 0;
if ((CPU.Acc & 64) && (addr & 64)) { bitSixCarry = 1; }
let overflow = bitSixCarry ^ (CPU.FLAGS & 1)
let overflow = bitSixCarry ^ (CPU.FLAGS & 8);
if (overflow) {
CPU.setFlagOverflow();
} else {
@ -384,7 +384,7 @@ function logCPUState(debug = false) {
console.log('Mnemonic:', CPU.currentInstruction.mnemonic);
console.log(`Machine: $${num2hex(CPU.currentInstruction.opcode)} $${num2hex(CPU.currentInstruction.operand)}`);
console.log();
console.log(`IP: $${num2hex(CPU.IP)} Acc: $${num2hex(CPU.Acc)} NZOC: ${num2bin_4bit(CPU.FLAGS)}`);
console.log(`IP: $${num2hex(CPU.IP)} Acc: $${num2hex(CPU.Acc)} ONZC: ${num2bin_4bit(CPU.FLAGS)}`);
console.log(`KEY: $${num2hex(CPU.memory[KEYPAD_ADDR])}  ${CPU.running ? "running" : "halted" }`);
console.log();
console.groupEnd();

View File

@ -37,13 +37,13 @@ With single stepping + verbose debugging output:
- `A` - accumulator
- `IP` - instruction pointer (aka program counter)
- `FLAGS` - flags: **N**egative, **Z**ero, **O**verflow, **C**arry
- `FLAGS` - flags: **O**verflow, **N**egative, **Z**ero, **C**arry
- in machine language, each flag is given a number:
- N = 3
Z = 2
O = 1
- O = 3
N = 2
Z = 1
C = 0
- (bitwise, `0000 = NZOC`)
- (bitwise, `0000 = ONZC`)
## Instruction set
@ -85,21 +85,21 @@ NOP +2
STO w +2
LDA r NZ +2
ADD NZOC +2
SUB NZOC +2
ADD ONZC +2
SUB ONZC +2
HOP +2/+4
JMP arg
FTG NZOC +2
FHP NZOC +2/+4
FTG ONZC +2
FHP ONZC +2/+4
STO r,w +2
LDA r,r NZ +2
ADD r NZOC +2
SUB r NZOC +2
ADD r ONZC +2
SUB r ONZC +2
HOP r +2/+4
JMP r arg
FTG r NZOC +2
FHP r NZOC +2/+4
FTG r ONZC +2
FHP r ONZC +2/+4
```

View File

@ -7,7 +7,7 @@
#LOOPCOUNT $80
#Z 2 ; the zero flag is #2
#Z 1 ; the zero flag is #1
#keypad $20 ; magic memory location containing latest key pressed
#loopIter $FF ; address of loop iterator
#iterPx $03 ; where to display iterator