From 5e42e2a80c1bf691bdfa229f1d95659dcd042662 Mon Sep 17 00:00:00 2001 From: Paul Warren Date: Mon, 16 Dec 2019 19:44:22 +1100 Subject: [PATCH] Bits from Ben --- 6502-monitor.ino | 45 +++++++++++++++++++++++++++++++++++++++++++++ makerom.py | 24 ++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 6502-monitor.ino create mode 100644 makerom.py diff --git a/6502-monitor.ino b/6502-monitor.ino new file mode 100644 index 0000000..8f147cb --- /dev/null +++ b/6502-monitor.ino @@ -0,0 +1,45 @@ +const char ADDR[] = {22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52}; +const char DATA[] = {39, 41, 43, 45, 47, 49, 51, 53}; +#define CLOCK 2 +#define READ_WRITE 3 + +void setup() { + for (int n = 0; n < 16; n += 1) { + pinMode(ADDR[n], INPUT); + } + for (int n = 0; n < 8; n += 1) { + pinMode(DATA[n], INPUT); + } + pinMode(CLOCK, INPUT); + pinMode(READ_WRITE, INPUT); + + attachInterrupt(digitalPinToInterrupt(CLOCK), onClock, RISING); + + Serial.begin(57600); +} + +void onClock() { + char output[15]; + + unsigned int address = 0; + for (int n = 0; n < 16; n += 1) { + int bit = digitalRead(ADDR[n]) ? 1 : 0; + Serial.print(bit); + address = (address << 1) + bit; + } + + Serial.print(" "); + + unsigned int data = 0; + for (int n = 0; n < 8; n += 1) { + int bit = digitalRead(DATA[n]) ? 1 : 0; + Serial.print(bit); + data = (data << 1) + bit; + } + + sprintf(output, " %04x %c %02x", address, digitalRead(READ_WRITE) ? 'r' : 'W', data); + Serial.println(output); +} + +void loop() { +} diff --git a/makerom.py b/makerom.py new file mode 100644 index 0000000..c8ad430 --- /dev/null +++ b/makerom.py @@ -0,0 +1,24 @@ +# +# Please see this video for details: +# https://www.youtube.com/watch?v=yl8vPW5hydQ +# +code = bytearray([ + 0xa9, 0xff, # lda #$ff + 0x8d, 0x02, 0x60, # sta $6002 + + 0xa9, 0x55, # lda #$55 + 0x8d, 0x00, 0x60, # sta $6000 + + 0xa9, 0xaa, # lda #$aa + 0x8d, 0x00, 0x60, # sta $6000 + + 0x4c, 0x05, 0x80, # jmp $8005 + ]) + +rom = code + bytearray([0xea] * (32768 - len(code))) + +rom[0x7ffc] = 0x00 +rom[0x7ffd] = 0x80 + +with open("rom.bin", "wb") as out_file: + out_file.write(rom)