diff options
| author | Jan Tuomi <jan@jantuomi.fi> | 2024-04-13 22:27:54 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan@jantuomi.fi> | 2024-04-13 22:27:54 +0300 |
| commit | a36e5e001a4f17505c40b7f7a8f9c1f514f40de1 (patch) | |
| tree | 7511fff343ef5eb0329e18e5cb5584387c4f653a /atk16_emu | |
| parent | 46459fc1b753abc83c355440a014c696c0dacd3a (diff) | |
Fix bugs, add tests
Diffstat (limited to 'atk16_emu')
| -rw-r--r-- | atk16_emu/emu.py | 5 | ||||
| -rw-r--r-- | atk16_emu/peripherals.py | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/atk16_emu/emu.py b/atk16_emu/emu.py index d17b537..3f0fa41 100644 --- a/atk16_emu/emu.py +++ b/atk16_emu/emu.py @@ -200,17 +200,16 @@ class Machine: if addr < 2 ** 15: raise ValueError(f"Cannot write to ROM, addr: 0x{addr:>04x}") else: - # TODO: Implement memory-mapped I/O if addr == 0xE002 and value == 0b00: self.peripherals.graphics.deactivate() elif addr == 0xE002 and value == 0b01: self.peripherals.graphics.activate_tpu() elif addr == 0xE002 and value == 0b10: self.peripherals.graphics.activate_ppu() - elif 0xF800 < addr <= 0xFFFF: + elif 0xF800 <= addr <= 0xFFFF: self.peripherals.graphics.write(addr, value) elif addr == 0xE000: - self.terminal.write(value) + self.peripherals.terminal.write(value) else: self.ram.write(addr & 0x7FFF, value) diff --git a/atk16_emu/peripherals.py b/atk16_emu/peripherals.py index 0038a33..54020f4 100644 --- a/atk16_emu/peripherals.py +++ b/atk16_emu/peripherals.py @@ -8,6 +8,7 @@ class Peripherals: pygame.init() self.graphics = Graphics() self.keyboard = Keyboard() + self.terminal = Terminal() def step(self): for event in pygame.event.get(): @@ -23,6 +24,7 @@ class DummyPeripherals: def __init__(self): self.graphics = DummyGraphics() self.keyboard = DummyKeyboard() + self.terminal = Terminal() def step(self): pass @@ -127,3 +129,11 @@ class DummyKeyboard: def read(self) -> int: print("warning: reading from dummy keyboard") return 0xFFFF + +class Terminal: + def __init__(self): + pass + + def write(self, s: int): + print(chr(s), end="") + sys.stdout.flush() |
