Convert to python3

This commit is contained in:
Philippe Chataignon 2021-11-24 22:07:20 +01:00
parent 8934c97938
commit b717984056
4 changed files with 58 additions and 58 deletions

View File

@ -391,7 +391,7 @@ class Apple2:
rs, _, _ = select.select([listener], [], [], 2) rs, _, _ = select.select([listener], [], [], 2)
if not rs: if not rs:
print >>sys.stderr, "CPU module did not start" print("CPU module did not start", file=sys.stderr)
sys.exit(1) sys.exit(1)
self.cpu, _ = listener.accept() self.cpu, _ = listener.accept()
@ -404,7 +404,7 @@ class Apple2:
break break
cycle, rw, addr, val = struct.unpack("<IBHB", op) cycle, rw, addr, val = struct.unpack("<IBHB", op)
if rw == 0: if rw == 0:
self.cpu.send(chr(self.softswitches.read_byte(cycle, addr))) self.cpu.send(bytes([self.softswitches.read_byte(cycle, addr)]))
elif rw == 1: elif rw == 1:
self.display.update(addr, val) self.display.update(addr, val)
else: else:
@ -415,7 +415,7 @@ class Apple2:
quit = True quit = True
if event.type == pygame.KEYDOWN: if event.type == pygame.KEYDOWN:
key = ord(event.unicode) if event.unicode else 0 key = ord(event.unicode.encode("ascii")) if event.unicode else 0
if event.key == pygame.K_LEFT: if event.key == pygame.K_LEFT:
key = 0x08 key = 0x08
if event.key == pygame.K_RIGHT: if event.key == pygame.K_RIGHT:
@ -435,16 +435,16 @@ class Apple2:
def usage(): def usage():
print >>sys.stderr, "ApplePy - an Apple ][ emulator in Python" print("ApplePy - an Apple ][ emulator in Python", file=sys.stderr)
print >>sys.stderr, "James Tauber / http://jtauber.com/" print("James Tauber / http://jtauber.com/", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, "Usage: applepy.py [options]" print("Usage: applepy.py [options]", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, " -c, --cassette Cassette wav file to load" print(" -c, --cassette Cassette wav file to load", file=sys.stderr)
print >>sys.stderr, " -R, --rom ROM file to use (default A2ROM.BIN)" print(" -R, --rom ROM file to use (default A2ROM.BIN)", file=sys.stderr)
print >>sys.stderr, " -r, --ram RAM file to load (default none)" print(" -r, --ram RAM file to load (default none)", file=sys.stderr)
print >>sys.stderr, " -p, --pc Initial PC value" print(" -p, --pc Initial PC value", file=sys.stderr)
print >>sys.stderr, " -q, --quiet Quiet mode, no sounds (default sounds)" print(" -q, --quiet Quiet mode, no sounds (default sounds)", file=sys.stderr)
sys.exit(1) sys.exit(1)

View File

@ -98,12 +98,12 @@ def run(win):
def usage(): def usage():
print >>sys.stderr, "ApplePy - an Apple ][ emulator in Python" print("ApplePy - an Apple ][ emulator in Python", file=sys.stderr)
print >>sys.stderr, "James Tauber / http://jtauber.com/" print("James Tauber / http://jtauber.com/", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, "Usage: applepy_curses.py [options]" print("Usage: applepy_curses.py [options]", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, " -R, --rom ROM file to use (default A2ROM.BIN)" print(" -R, --rom ROM file to use (default A2ROM.BIN)", file=sys.stderr)
sys.exit(1) sys.exit(1)

View File

@ -1,16 +1,16 @@
import json import json
import sys import sys
import urllib import urllib.request, urllib.parse, urllib.error
URL_PREFIX = "http://localhost:6502" URL_PREFIX = "http://localhost:6502"
def get(url): def get(url):
return json.loads(urllib.urlopen(URL_PREFIX + url).read()) return json.loads(urllib.request.urlopen(URL_PREFIX + url).read())
def post(url, data=None): def post(url, data=None):
return urllib.urlopen(URL_PREFIX + url, json.dumps(data) if data is not None else "") return urllib.request.urlopen(URL_PREFIX + url, json.dumps(data) if data is not None else "")
def value(s): def value(s):
@ -45,7 +45,7 @@ def cmd_disassemble(a):
addr = status["program_counter"] addr = status["program_counter"]
disasm = get("/disassemble/%d" % addr) disasm = get("/disassemble/%d" % addr)
for d in disasm: for d in disasm:
print format_disassemble(d) print(format_disassemble(d))
def cmd_dump(a): def cmd_dump(a):
@ -80,7 +80,7 @@ def cmd_dump(a):
s += "." s += "."
else: else:
s += " " s += " "
print s print(s)
addr += 16 addr += 16
@ -89,20 +89,20 @@ def cmd_help(a):
if len(a) > 1: if len(a) > 1:
f = Commands.get(a[1]) f = Commands.get(a[1])
if f is not None: if f is not None:
print f.__doc__ print(f.__doc__)
else: else:
print "Unknown command:", a[1] print("Unknown command:", a[1])
else: else:
print "Commands:" print("Commands:")
for c in sorted(Commands): for c in sorted(Commands):
print " ", c print(" ", c)
def cmd_peek(a): def cmd_peek(a):
"""Peek memory location""" """Peek memory location"""
addr = value(a[1]) addr = value(a[1])
dump = get("/memory/%d" % addr) dump = get("/memory/%d" % addr)
print "%04X: %02X" % (addr, dump[0]) print("%04X: %02X" % (addr, dump[0]))
def cmd_poke(a): def cmd_poke(a):
@ -115,7 +115,7 @@ def cmd_poke(a):
def cmd_status(a): def cmd_status(a):
"""CPU status""" """CPU status"""
status = get("/status") status = get("/status")
print "A=%02X X=%02X Y=%02X S=%02X PC=%04X F=%c%c0%c%c%c%c%c" % ( print("A=%02X X=%02X Y=%02X S=%02X PC=%04X F=%c%c0%c%c%c%c%c" % (
status["accumulator"], status["accumulator"],
status["x_index"], status["x_index"],
status["y_index"], status["y_index"],
@ -128,9 +128,9 @@ def cmd_status(a):
"I" if status["interrupt_disable_flag"] else "i", "I" if status["interrupt_disable_flag"] else "i",
"Z" if status["zero_flag"] else "z", "Z" if status["zero_flag"] else "z",
"C" if status["carry_flag"] else "c", "C" if status["carry_flag"] else "c",
) ))
disasm = get("/disassemble/%d" % status["program_counter"]) disasm = get("/disassemble/%d" % status["program_counter"])
print format_disassemble(disasm[0]) print(format_disassemble(disasm[0]))
def cmd_quit(a): def cmd_quit(a):
@ -155,15 +155,15 @@ Commands = {
def main(): def main():
print "ApplePy control console" print("ApplePy control console")
while True: while True:
s = raw_input("6502> ") s = input("6502> ")
a = s.strip().split() a = s.strip().split()
f = Commands.get(a[0]) f = Commands.get(a[0])
if f is not None: if f is not None:
f(a) f(a)
else: else:
print "Unknown command:", s print("Unknown command:", s)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -3,7 +3,7 @@
# originally written 2001, updated 2011 # originally written 2001, updated 2011
import BaseHTTPServer import http.server
import json import json
import re import re
import select import select
@ -35,7 +35,7 @@ class ROM:
def load_file(self, address, filename): def load_file(self, address, filename):
with open(filename, "rb") as f: with open(filename, "rb") as f:
for offset, datum in enumerate(f.read()): for offset, datum in enumerate(f.read()):
self._mem[address - self.start + offset] = ord(datum) self._mem[address - self.start + offset] = datum
def read_byte(self, address): def read_byte(self, address):
assert self.start <= address <= self.end assert self.start <= address <= self.end
@ -365,7 +365,7 @@ class Disassemble:
return r, info[0] return r, info[0]
class ControlHandler(BaseHTTPServer.BaseHTTPRequestHandler): class ControlHandler(http.server.BaseHTTPRequestHandler):
def __init__(self, request, client_address, server, cpu): def __init__(self, request, client_address, server, cpu):
self.cpu = cpu self.cpu = cpu
@ -385,13 +385,13 @@ class ControlHandler(BaseHTTPServer.BaseHTTPRequestHandler):
r"/reset$": self.post_reset, r"/reset$": self.post_reset,
} }
BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, request, client_address, server) http.server.BaseHTTPRequestHandler.__init__(self, request, client_address, server)
def log_request(self, code, size=0): def log_request(self, code, size=0):
pass pass
def dispatch(self, urls): def dispatch(self, urls):
for r, f in urls.items(): for r, f in list(urls.items()):
m = re.match(r, self.path) m = re.match(r, self.path)
if m is not None: if m is not None:
f(m) f(m)
@ -439,7 +439,7 @@ class ControlHandler(BaseHTTPServer.BaseHTTPRequestHandler):
end = int(e) end = int(e)
else: else:
end = addr end = addr
self.response(json.dumps(list(map(self.cpu.read_byte, range(addr, end + 1))))) self.response(json.dumps(list(map(self.cpu.read_byte, list(range(addr, end + 1))))))
def get_status(self, m): def get_status(self, m):
self.response(json.dumps(dict((x, getattr(self.cpu, x)) for x in ( self.response(json.dumps(dict((x, getattr(self.cpu, x)) for x in (
@ -719,9 +719,9 @@ class CPU:
op = self.read_pc_byte() op = self.read_pc_byte()
func = self.ops[op] func = self.ops[op]
if func is None: if func is None:
print "UNKNOWN OP" print("UNKNOWN OP")
print hex(self.program_counter - 1) print(hex(self.program_counter - 1))
print hex(op) print(hex(op))
break break
else: else:
self.ops[op]() self.ops[op]()
@ -736,9 +736,9 @@ class CPU:
op = self.read_pc_byte() op = self.read_pc_byte()
func = self.ops[op] func = self.ops[op]
if func is None: if func is None:
print "UNKNOWN OP" print("UNKNOWN OP")
print hex(self.program_counter - 1) print(hex(self.program_counter - 1))
print hex(op) print(hex(op))
break break
else: else:
self.ops[op]() self.ops[op]()
@ -1172,15 +1172,15 @@ class CPU:
def usage(): def usage():
print >>sys.stderr, "ApplePy - an Apple ][ emulator in Python" print("ApplePy - an Apple ][ emulator in Python", file=sys.stderr)
print >>sys.stderr, "James Tauber / http://jtauber.com/" print("James Tauber / http://jtauber.com/", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, "Usage: cpu6502.py [options]" print("Usage: cpu6502.py [options]", file=sys.stderr)
print >>sys.stderr print(file=sys.stderr)
print >>sys.stderr, " -b, --bus Bus port number" print(" -b, --bus Bus port number", file=sys.stderr)
print >>sys.stderr, " -p, --pc Initial PC value" print(" -p, --pc Initial PC value", file=sys.stderr)
print >>sys.stderr, " -R, --rom ROM file to use (default A2ROM.BIN)" print(" -R, --rom ROM file to use (default A2ROM.BIN)", file=sys.stderr)
print >>sys.stderr, " -r, --ram RAM file to load (default none)" print(" -r, --ram RAM file to load (default none)", file=sys.stderr)
sys.exit(1) sys.exit(1)
@ -1220,8 +1220,8 @@ def get_options():
if __name__ == "__main__": if __name__ == "__main__":
options = get_options() options = get_options()
if options.bus is None: if options.bus is None:
print "ApplePy cpu core" print("ApplePy cpu core")
print "Run applepy.py instead" print("Run applepy.py instead")
sys.exit(0) sys.exit(0)
mem = Memory(options) mem = Memory(options)