diff --git a/src/py65/mpu6502.py b/src/py65/mpu6502.py index ab5dcb0..8070bc4 100644 --- a/src/py65/mpu6502.py +++ b/src/py65/mpu6502.py @@ -15,7 +15,7 @@ class MPU: ZERO = 2 CARRY = 1 - def __init__(self): + def __init__(self, memory=None, pc=0): # config self.debug = False @@ -26,8 +26,13 @@ class MPU: self.processorCycles = 0 self.internalCycleDelay = 0 + if not memory: + memory = 0xFFFF * [0x00] + self.memory = memory + self.start_pc = pc + # init - self.clearMemory() + #self.clearMemory() self.reset() def __repr__(self): @@ -48,17 +53,19 @@ class MPU: return self def reset(self): - self.pc=0 - self.sp=255 - self.a=self.x=self.y=0 - self.flags=32 - self.breakFlag=False - self.processorCycles=0 + self.pc = self.start_pc + self.sp = 255 + self.a = 0 + self.x = 0 + self.y = 0 + self.flags = 32 + self.breakFlag = False + self.processorCycles = 0 - def clearMemory(self, start=0x0000, end=0xFFFF): - self.memory = [] - for addr in range(start, end + 1): - self.memory.insert(addr, 0x00) + #def clearMemory(self, start=0x0000, end=0xFFFF): + #self.memory = [] + #for addr in range(start, end + 1): + #self.memory.insert(addr, 0x00) def ByteAt(self, addr): return self.memory[addr] diff --git a/src/py65/util.py b/src/py65/util.py index ff9011d..cde80c5 100644 --- a/src/py65/util.py +++ b/src/py65/util.py @@ -1,7 +1,5 @@ import re import select -import termios -import fcntl import os class AddressParser: @@ -140,6 +138,8 @@ def getch(stdin): """ Performs a nonblocking read of one byte from stdin and returns its ordinal value. If no byte is available, 0 is returned. """ + import termios + import fcntl fd = stdin.fileno()