Tidy up formatting + re-order code for clarity
This commit is contained in:
parent
d674394afb
commit
9aed9e5e8b
|
|
@ -6,50 +6,58 @@ function CPU(mem) {
|
||||||
this.acc = 0;
|
this.acc = 0;
|
||||||
|
|
||||||
this.instructions = {
|
this.instructions = {
|
||||||
end: () => {
|
end: () => {
|
||||||
console.log('END');
|
console.log('END');
|
||||||
this.running = false
|
this.running = false
|
||||||
},
|
},
|
||||||
store_lit: (lit) => {
|
|
||||||
|
store_lit: (lit) => {
|
||||||
console.log('STO lit#');
|
console.log('STO lit#');
|
||||||
this.memory[lit] = this.acc;
|
this.memory[lit] = this.acc;
|
||||||
log_memory();
|
log_memory();
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
store_addr: (addr) => {
|
store_addr: (addr) => {
|
||||||
console.log('STO addr');
|
console.log('STO addr');
|
||||||
this.memory[this.memory[addr]] = this.acc;
|
this.memory[this.memory[addr]] = this.acc;
|
||||||
log_memory();
|
log_memory();
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
load_lit: (lit) => {
|
|
||||||
|
load_lit: (lit) => {
|
||||||
console.log('LDA lit#');
|
console.log('LDA lit#');
|
||||||
this.acc = lit;
|
this.acc = lit;
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
load_addr: (addr) => {
|
|
||||||
|
load_addr: (addr) => {
|
||||||
console.log('LDA addr');
|
console.log('LDA addr');
|
||||||
console.log('mem at addr: ', this.memory[addr]);
|
console.log('mem at addr: ', this.memory[addr]);
|
||||||
this.acc = this.memory[addr];
|
this.acc = this.memory[addr];
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
add_lit: (lit) => {
|
add_lit: (lit) => {
|
||||||
console.log("ADD lit");
|
console.log("ADD lit");
|
||||||
if ( (this.acc + lit) > 15 ) { this.carryFlag = 1; }
|
if ( (this.acc + lit) > 15 ) { this.carryFlag = 1; }
|
||||||
this.acc = (this.acc + lit % 15);
|
this.acc = (this.acc + lit % 15);
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
add_addr: (addr) => {
|
add_addr: (addr) => {
|
||||||
console.log("ADD addr");
|
console.log("ADD addr");
|
||||||
if ( (this.acc + this.memory[addr]) > 15 ) { this.carryFlag = 1; }
|
if ( (this.acc + this.memory[addr]) > 15 ) { this.carryFlag = 1; }
|
||||||
this.acc = (this.acc + this.memory[addr] % 15);
|
this.acc = (this.acc + this.memory[addr] % 15);
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
sub_lit: (lit) => { // TODO: carry flag
|
sub_lit: (lit) => { // TODO: carry flag
|
||||||
console.log("SUB lit");
|
console.log("SUB lit");
|
||||||
this.acc = this.acc - lit;
|
this.acc = this.acc - lit;
|
||||||
this.instructionPointer = this.instructionPointer += 1;
|
this.instructionPointer = this.instructionPointer += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
sub_addr: (addr) => { // TODO: carry flag
|
sub_addr: (addr) => { // TODO: carry flag
|
||||||
console.log("SUB addr");
|
console.log("SUB addr");
|
||||||
this.acc = this.acc - this.memory[addr];
|
this.acc = this.acc - this.memory[addr];
|
||||||
|
|
@ -57,21 +65,6 @@ function CPU(mem) {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
log_debug_state = () => {
|
|
||||||
console.log();
|
|
||||||
console.group('CPU state');
|
|
||||||
console.log( `IP: ${this.instructionPointer} Acc: ${this.acc} CF: ${this.carryFlag} ${this.running ? "running" : "halted" }` );
|
|
||||||
console.log();
|
|
||||||
console.groupEnd('CPU state');
|
|
||||||
};
|
|
||||||
|
|
||||||
log_memory = () => {
|
|
||||||
console.log();
|
|
||||||
console.group('Memory');
|
|
||||||
console.table(this.memory);
|
|
||||||
console.groupEnd('Memory');
|
|
||||||
}
|
|
||||||
|
|
||||||
this.perform_operation = (opcode, arg) => {
|
this.perform_operation = (opcode, arg) => {
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case 0:
|
case 0:
|
||||||
|
|
@ -113,7 +106,7 @@ function CPU(mem) {
|
||||||
default:
|
default:
|
||||||
console.error( `Invalid opcode: ${opcode} with argument ${arg}` );
|
console.error( `Invalid opcode: ${opcode} with argument ${arg}` );
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
this.run_program = () => {
|
this.run_program = () => {
|
||||||
console.log();
|
console.log();
|
||||||
|
|
@ -135,6 +128,21 @@ function CPU(mem) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log_debug_state = () => {
|
||||||
|
console.log();
|
||||||
|
console.group('CPU state');
|
||||||
|
console.log( `IP: ${this.instructionPointer} Acc: ${this.acc} CF: ${this.carryFlag} ${this.running ? "running" : "halted" }` );
|
||||||
|
console.log();
|
||||||
|
console.groupEnd('CPU state');
|
||||||
|
};
|
||||||
|
|
||||||
|
log_memory = () => {
|
||||||
|
console.log();
|
||||||
|
console.group('Memory');
|
||||||
|
console.table(this.memory);
|
||||||
|
console.groupEnd('Memory');
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// UNIMPLEMENTED
|
// UNIMPLEMENTED
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue