aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_emu
diff options
context:
space:
mode:
Diffstat (limited to 'atk16_emu')
-rw-r--r--atk16_emu/emu.py5
-rw-r--r--atk16_emu/peripherals.py10
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()