From 8934c979387176fc1277923c6e4ee89a0970766a Mon Sep 17 00:00:00 2001 From: Brian Pollock Date: Sun, 1 Dec 2019 11:14:08 +0000 Subject: [PATCH] unittest fix/workaround - remove CPU options and disable control_server - CPU options were only used to pass 'pc'. Rather than adding another get_options/Options to tests,py, replacing options with a pc argument removes CPU's dependency on command-line options. - As a workaround for 'Address already in use', control_server is now enabled/disabled by memory.use_bus (which is False in unit tests). --- cpu6502.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/cpu6502.py b/cpu6502.py index e89d28a..8198217 100644 --- a/cpu6502.py +++ b/cpu6502.py @@ -505,10 +505,10 @@ class CPU: STACK_PAGE = 0x100 RESET_VECTOR = 0xFFFC - def __init__(self, options, memory): + def __init__(self, memory, pc=None): self.memory = memory - self.control_server = BaseHTTPServer.HTTPServer(("127.0.0.1", 6502), ControlHandlerFactory(self)) + self.control_server = memory.use_bus and BaseHTTPServer.HTTPServer(("127.0.0.1", 6502), ControlHandlerFactory(self)) self.accumulator = 0x00 self.x_index = 0x00 @@ -528,8 +528,8 @@ class CPU: self.setup_ops() self.reset() - if options.pc is not None: - self.program_counter = options.pc + if pc is not None: + self.program_counter = pc self.running = True self.quit = False @@ -704,13 +704,14 @@ class CPU: # a connection is accepted until the response # is sent. TODO: use an async HTTP server that # handles input data asynchronously. - sockets = [self.control_server] - rs, _, _ = select.select(sockets, [], [], timeout) - for s in rs: - if s is self.control_server: - self.control_server._handle_request_noblock() - else: - pass + if self.control_server: + sockets = [self.control_server] + rs, _, _ = select.select(sockets, [], [], timeout) + for s in rs: + if s is self.control_server: + self.control_server._handle_request_noblock() + else: + pass count = 1000 while count > 0 and self.running: @@ -1225,5 +1226,5 @@ if __name__ == "__main__": mem = Memory(options) - cpu = CPU(options, mem) + cpu = CPU(mem, options.pc) cpu.run(options.bus)