Reorganized emulator and added simple tty device
This commit is contained in:
parent
a7d026190e
commit
4abfc941bf
|
@ -0,0 +1,9 @@
|
||||||
|
# Kyler Olsen
|
||||||
|
# Feb 2024
|
||||||
|
|
||||||
|
from .emulator import Computer, Memory
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
'Computer',
|
||||||
|
'Memory',
|
||||||
|
]
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Kyler Olsen
|
||||||
|
# Feb 2024
|
||||||
|
|
||||||
|
from .emulator import Device
|
||||||
|
|
||||||
|
|
||||||
|
class tty(Device):
|
||||||
|
|
||||||
|
def __setitem__(self, index: int, value: int):
|
||||||
|
if index & 0xf == 0xe:
|
||||||
|
print(value)
|
||||||
|
elif index & 0xf == 0xf:
|
||||||
|
print(chr(value), end='')
|
|
@ -9,9 +9,9 @@ class Device:
|
||||||
_start: int
|
_start: int
|
||||||
_end: int
|
_end: int
|
||||||
|
|
||||||
def __init__(self, start: int, end: int):
|
def __init__(self, start: int, end: int | None = None):
|
||||||
self._start = start
|
self._start = start
|
||||||
self._end = end
|
self._end = end or start
|
||||||
|
|
||||||
def __contains__(self, value: int) -> bool:
|
def __contains__(self, value: int) -> bool:
|
||||||
return self._start <= value <= self._end
|
return self._start <= value <= self._end
|
||||||
|
@ -30,9 +30,13 @@ class Memory:
|
||||||
_ram: list[int]
|
_ram: list[int]
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, rom: list[int], devices: list[Device]) -> None:
|
def __init__(
|
||||||
|
self,
|
||||||
|
rom: list[int],
|
||||||
|
devices: list[Device] | None = None,
|
||||||
|
) -> None:
|
||||||
self._rom = [0] * 0x700
|
self._rom = [0] * 0x700
|
||||||
self._devices = devices[:]
|
self._devices = (devices or list())[:]
|
||||||
self._ram = [0] * 0x1000
|
self._ram = [0] * 0x1000
|
||||||
|
|
||||||
for i, data in enumerate(rom):
|
for i, data in enumerate(rom):
|
||||||
|
@ -70,6 +74,18 @@ class Memory:
|
||||||
else:
|
else:
|
||||||
raise IndexError
|
raise IndexError
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def load_rom_file(filename: str) -> list[int]:
|
||||||
|
rom: list[int] = []
|
||||||
|
|
||||||
|
with open(filename, 'b') as file:
|
||||||
|
while file:
|
||||||
|
incoming = file.read(3)
|
||||||
|
rom.append(incoming[0] << 4 | ((incoming[1] & 0xf0) >> 4))
|
||||||
|
rom.append(((incoming[1] & 0xf) << 8) | incoming[2])
|
||||||
|
|
||||||
|
return rom
|
||||||
|
|
||||||
|
|
||||||
class Computer:
|
class Computer:
|
||||||
|
|
Loading…
Reference in New Issue