From 34e2c24b88e74e3f1833306ab23eead7b06d35b0 Mon Sep 17 00:00:00 2001 From: n loewen Date: Fri, 28 Feb 2025 10:48:47 +0000 Subject: [PATCH] Start working on micropython simulator for 2025 version of cardiograph --- src/cpu.mpy | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/cpu.mpy diff --git a/src/cpu.mpy b/src/cpu.mpy new file mode 100644 index 0000000..85d8cf4 --- /dev/null +++ b/src/cpu.mpy @@ -0,0 +1,49 @@ +class CPU: + def __init__(self): + self.running = False + self.IP = 254 + self.acc = 0 + self.flags = { 'C': False, 'Z': False, 'N': False, 'Eq': False } + self.instruction = { 'opcode': False, 'operand': False } + self.memory = False + + def load_memory(self, bytes): + self.memory = bytes + bytearray(256 - len(bytes)) + print(self.memory) + + def step(self): + if self.IP >= 256: + self.IP = 0 + print(self.IP) + self.instruction['opcode'] = self.memory[self.IP] + self.IP = self.IP+1 + self.instruction['operand'] = self.memory[self.IP] + self.IP = self.IP+1 + print(self.instruction) + + nums2mnems = { + 'hlt': '00', + 'nop': '01', + 'add_lit': '04' + } + + def hlt(self): + self.running = false + + def nop(self): + pass + + def add_lit(num): + self.acc = self.acc + num + +cpu = CPU() +print(cpu) +print(cpu.running) + +prog = '04 01 14 01 00 00' +b = bytes.fromhex(prog) +cpu.load_memory(b) + +cpu.step() +cpu.step() +cpu.step()