Initialize instruction pointer based on a constant, to move it after screen memory
This commit is contained in:
parent
36e013b866
commit
da0ababc59
|
|
@ -15,6 +15,7 @@ const printMemory = require('./print-memory.js');
|
||||||
// 2 = what i'm currently focusing on
|
// 2 = what i'm currently focusing on
|
||||||
// 3 = always print
|
// 3 = always print
|
||||||
const DEBUG = 2;
|
const DEBUG = 2;
|
||||||
|
const INITIAL_IP_ADDRESS = 32;
|
||||||
|
|
||||||
const mnemonicsWithOptionalArgs = ['end', 'cfc', 'chp'];
|
const mnemonicsWithOptionalArgs = ['end', 'cfc', 'chp'];
|
||||||
const mnemonics2opcodes = {
|
const mnemonics2opcodes = {
|
||||||
|
|
@ -31,9 +32,9 @@ const mnemonics2opcodes = {
|
||||||
|
|
||||||
function decodeInstructions(str) {
|
function decodeInstructions(str) {
|
||||||
let lines = str.split(/\n/); // returns an array of lines
|
let lines = str.split(/\n/); // returns an array of lines
|
||||||
let machineCode = [];
|
let machineCode = new Array(INITIAL_IP_ADDRESS).fill(0);
|
||||||
let labels = {};
|
let labels = {};
|
||||||
let byteCursor = 0;
|
let byteCursor = INITIAL_IP_ADDRESS;
|
||||||
for (let i = 0; i < lines.length; i++) {
|
for (let i = 0; i < lines.length; i++) {
|
||||||
console.log();
|
console.log();
|
||||||
console.group(`Input line ${i}, cursor ${byteCursor}`);
|
console.group(`Input line ${i}, cursor ${byteCursor}`);
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,15 @@
|
||||||
// - instructions are two bytes long:
|
// - instructions are two bytes long:
|
||||||
// one byte for the opcode, one for the argument
|
// one byte for the opcode, one for the argument
|
||||||
|
|
||||||
|
const INITIAL_IP_ADDRESS = 32;
|
||||||
const CYCLE_LIMIT = 64; // max number of times to step the CPU, to stop endless loops
|
const CYCLE_LIMIT = 64; // max number of times to step the CPU, to stop endless loops
|
||||||
|
|
||||||
// STATE
|
const display = require('./display.js');
|
||||||
|
|
||||||
|
// STATE
|
||||||
const CPU = {
|
const CPU = {
|
||||||
running: false,
|
running: false,
|
||||||
IP: 0,
|
IP: INITIAL_IP_ADDRESS,
|
||||||
CF: 0,
|
CF: 0,
|
||||||
Acc: 0,
|
Acc: 0,
|
||||||
memory: null,
|
memory: null,
|
||||||
|
|
@ -188,6 +190,7 @@ exports.runProgram = (code) => {
|
||||||
if (!CPU.running) break;
|
if (!CPU.running) break;
|
||||||
if (CPU.IP >= CPU.memory.length) break;
|
if (CPU.IP >= CPU.memory.length) break;
|
||||||
stepCPU();
|
stepCPU();
|
||||||
|
display.printDisplay(CPU.memory);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue