loader working!
This commit is contained in:
commit
32c9aa9158
1 changed files with 96 additions and 0 deletions
96
6502-loader.py
Executable file
96
6502-loader.py
Executable file
|
@ -0,0 +1,96 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import asyncio
|
||||
import serial_asyncio
|
||||
import sys
|
||||
import time
|
||||
import threading
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("input", help="input filename")
|
||||
parser.add_argument("--port", help="serial port to interface with")
|
||||
parser.add_argument("--start",
|
||||
help="auto start the clock",
|
||||
const=True,
|
||||
type=bool, nargs='?', default=False
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
try:
|
||||
in_file = open(args.input, "rb")
|
||||
|
||||
except IOError:
|
||||
print("Could not open file")
|
||||
in_file.close()
|
||||
sys.exit(2)
|
||||
|
||||
class SerialHandler(asyncio.Protocol):
|
||||
def connection_made(self, transport):
|
||||
print('connection made')
|
||||
self.transport = transport
|
||||
self.buf = bytes()
|
||||
self.init_done = False
|
||||
|
||||
# clear any incoming data
|
||||
transport.serial.flushInput()
|
||||
|
||||
#transport.serial.write(b'1')
|
||||
#time.sleep(.1)
|
||||
#transport.serial.write(b'5')
|
||||
#time.sleep(.1)
|
||||
#transport.serial.write(b'6')
|
||||
#time.sleep(.1)
|
||||
|
||||
if args.start:
|
||||
transport.serial.write(b'04')
|
||||
|
||||
content = in_file.read()
|
||||
length = len(content)
|
||||
written = 0
|
||||
|
||||
print("file size " + str(length))
|
||||
|
||||
transport.serial.write(b'l')
|
||||
|
||||
while (length - written > 0):
|
||||
written += transport.serial.write(content[length - (length - written):])
|
||||
|
||||
print("wrote {} bytes of rom".format(written))
|
||||
#transport.serial.write(b'4')
|
||||
|
||||
def connection_lost(self, exc):
|
||||
pass
|
||||
|
||||
def data_received(self, data):
|
||||
self.buf += data
|
||||
|
||||
if b'\r\n' in self.buf:
|
||||
lines = self.buf.split(b'\r\n')
|
||||
|
||||
self.buf = lines[-1]
|
||||
|
||||
for line in lines[:-1]:
|
||||
s = line.decode('utf-8')
|
||||
|
||||
print(s)
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
try:
|
||||
handler = SerialHandler
|
||||
coro = serial_asyncio.create_serial_connection(loop, handler, args.port, baudrate=115200)
|
||||
loop.run_until_complete(coro)
|
||||
except Exception as E:
|
||||
print(E)
|
||||
print('failed to open serial port')
|
||||
|
||||
except Exception as E:
|
||||
print(E)
|
||||
print('failed to open port')
|
||||
port.close()
|
||||
|
||||
sys.exit(1)
|
||||
|
||||
loop.run_forever()
|
Loading…
Reference in a new issue