From 22076830404d55e8d16de804f15249f10b8f8b8f Mon Sep 17 00:00:00 2001 From: Alexander Bass Date: Wed, 14 Feb 2024 23:27:15 -0500 Subject: [PATCH] implement HCF. Add HelloWorld. Cleanup --- HelloWorld.bin | Bin 0 -> 256 bytes src/computer.ts | 19 ++++++++++----- src/index.ts | 2 +- src/ui.ts | 62 ++++++++++++++++++++++-------------------------- 4 files changed, 43 insertions(+), 40 deletions(-) create mode 100644 HelloWorld.bin diff --git a/HelloWorld.bin b/HelloWorld.bin new file mode 100644 index 0000000000000000000000000000000000000000..e14a5b35ea05a761c8078e9dfc538f53a260ae65 GIT binary patch literal 256 zcmdOA_@K|osKCw;z{= this.registers.length) { throw new Error(`Got register number ${register_no} in assign register`); } - console.log(`Set register ${register_no} to ${new_value}`); + // console.log(`Set register ${register_no} to ${new_value}`); this.registers[register_no] = new_value; break; } @@ -232,10 +231,18 @@ export class Computer { const char = String.fromCharCode(ASCIIbyte); - console.log(char); + // console.log(char); $("printout").textContent += char; break; } + case Instr.HaltCatchFire: { + throw new Error("FIRE FIRE FIRE FIRE"); + } + case Instr.CopyRegReg: { + const [register_no_to, register_no_from] = inst.params; + this.registers[register_no_to] = this.registers[register_no_from]; + break; + } default: break; } diff --git a/src/index.ts b/src/index.ts index e641507..e176d35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -13,7 +13,7 @@ function main(): void { const ui = new UI(container); - const computer = new Computer(ui.stateUpdateEvent.bind(ui)); + const computer = new Computer(ui.state_update_event.bind(ui)); computer.load_program(program); ui.set_step_func(computer.cycle.bind(computer)); diff --git a/src/ui.ts b/src/ui.ts index 62534a9..410e930 100644 --- a/src/ui.ts +++ b/src/ui.ts @@ -28,43 +28,39 @@ export class UI { for (let i = 0; i < 8; i++) { const reg_cell = el("div", `R_${i}`); reg_cell.textContent = "00"; - reg_cell.setAttribute("contenteditable", "true"); - reg_cell.setAttribute("spellcheck", "false"); + // reg_cell.setAttribute("contenteditable", "true"); + // reg_cell.setAttribute("spellcheck", "false"); registers.appendChild(reg_cell); this.register_cells.push(reg_cell); } - // eslint-disable-next-line prefer-arrow-callback - registers.addEventListener("input", function (e) { - const allowed_chars = "0123456789ABCDEFG"; - const r = e.target as HTMLElement; - let data = (r.textContent as string).toUpperCase(); + // // eslint-disable-next-line prefer-arrow-callback + // registers.addEventListener("input", function (e) { + // const allowed_chars = "0123456789ABCDEFG"; + // const r = e.target as HTMLElement; + // let data = (r.textContent as string).toUpperCase(); - for (let i = 0; i < data.length; i++) { - if (!allowed_chars.includes(data[i])) { - data = "00"; - break; - } - } + // for (let i = 0; i < data.length; i++) { + // if (!allowed_chars.includes(data[i])) { + // data = "00"; + // break; + // } + // } - if (data.length > 2) { - // data = r.textContent?.substring(0, 2) ?? "00"; - } - e.preventDefault(); - return false; - // r.textContent = ; - }); + // e.preventDefault(); + // return false; + // }); - registers.addEventListener("keydown", (e) => { - if (e.key === "Enter") { - e.preventDefault(); - (e.target as HTMLElement).blur(); - } - }); - registers.addEventListener("blur", (e) => { - const allowed_chars = "0123456789ABCDEFG"; - const r = e.target as HTMLElement; - const data = (r.textContent as string).toUpperCase(); - }); + // registers.addEventListener("keydown", (e) => { + // if (e.key === "Enter") { + // e.preventDefault(); + // (e.target as HTMLElement).blur(); + // } + // }); + // registers.addEventListener("blur", (e) => { + // const allowed_chars = "0123456789ABCDEFG"; + // const r = e.target as HTMLElement; + // const data = (r.textContent as string).toUpperCase(); + // }); this.registers = registers; @@ -95,7 +91,7 @@ export class UI { }); } - start_auto(speed: number = 0): void { + start_auto(speed: number = 200): void { if (this.step_func === null) { return; } @@ -125,7 +121,7 @@ export class UI { this.step_func = f; } - stateUpdateEvent(state: ComputerState): void { + state_update_event(state: ComputerState): void { for (let i = 0; i < 256; i++) { const current = this.program_memory_cells[i]; current.className = "";