diff options
Diffstat (limited to 'atk16_emu')
| -rw-r--r-- | atk16_emu/emu.py | 8 | ||||
| -rw-r--r-- | atk16_emu/peripherals.py | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/atk16_emu/emu.py b/atk16_emu/emu.py index 67f63f1..b3a3500 100644 --- a/atk16_emu/emu.py +++ b/atk16_emu/emu.py @@ -208,6 +208,8 @@ class Machine: else: if addr == 0xE7F1: return self.peripherals.keyboard.read() + elif 0xF800 <= addr <= 0xFFFF: + return self.peripherals.graphics.read(addr) else: return self.ram.read(addr & 0x7FFF) @@ -453,9 +455,9 @@ class Machine: reg_hex = C.OKBLUE + f"0x{value:>04x}" + C.ENDC print(f"{reg_name.upper()}: {reg_hex} ({value})") - for i in range(8): - ram_hex = C.OKBLUE + f"0x{self.ram.read(i):>04x}" + C.ENDC - print(f"RAM[{i}]: {ram_hex} ({self.ram.read(i)})") + # for i in range(8): + # ram_hex = C.OKBLUE + f"0x{self.ram.read(i):>04x}" + C.ENDC + # print(f"RAM[{i}]: {ram_hex} ({self.ram.read(i)})") def as_num(b: bool) -> str: return ((C.OKGREEN + "1") if b else (C.WARNING + "0")) + C.ENDC diff --git a/atk16_emu/peripherals.py b/atk16_emu/peripherals.py index b8a5b14..3bc0443 100644 --- a/atk16_emu/peripherals.py +++ b/atk16_emu/peripherals.py @@ -72,6 +72,9 @@ class TPU: # address: 5 bits y, 6 bits x self.text_mem.write(addr, char & 0xFF) + def read_char(self, addr: int) -> int: + return self.text_mem.read(addr) + class Graphics: def __init__(self): pygame.display.init() @@ -111,6 +114,9 @@ class Graphics: # take only the lower 11 bits self.tpu.write_char(addr & 0x7FF, char) + def read(self, addr: int) -> int: + return self.tpu.read_char(addr & 0x7FF) + class DummyGraphics: def __init__(self): pass @@ -130,6 +136,10 @@ class DummyGraphics: def write(self, addr: int, char: int): pass + def read(self, addr: int) -> int: + print("warning: reading from dummy graphics") + return 0 + class Keyboard: def __init__(self, set_irq_line: Callable[[int], None]): # mimic electronic behaviour my assigning a random value at start |
