but will anyone....
This commit is contained in:
parent
b0bfb1b8f7
commit
002caab791
2 changed files with 69 additions and 0 deletions
5
README.md
Normal file
5
README.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# 6502-hacking
|
||||||
|
|
||||||
|
> HACKING <
|
||||||
|
|
||||||
|
|
64
arduino-bin-loader/arduino-bin-loader.ino
Normal file
64
arduino-bin-loader/arduino-bin-loader.ino
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#define ROM_SIZE (0xffff)
|
||||||
|
#define SER_BUF (1024)
|
||||||
|
|
||||||
|
#define SIG_RESET ('r')
|
||||||
|
#define SIG_WRITE ('w')
|
||||||
|
|
||||||
|
enum states {
|
||||||
|
IDLE,
|
||||||
|
WRITE // write rom to memory
|
||||||
|
};
|
||||||
|
|
||||||
|
void do_reset() {
|
||||||
|
SCB->AIRCR = 0x05fa0004;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum states state = IDLE;
|
||||||
|
volatile static uint8_t rom[ROM_SIZE];
|
||||||
|
uint8_t buf[SER_BUF];
|
||||||
|
uint16_t rom_idx = 0;
|
||||||
|
uint32_t start = 0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
bzero(&buf, SER_BUF);
|
||||||
|
bzero((void*)&rom, ROM_SIZE);
|
||||||
|
|
||||||
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
start = millis();
|
||||||
|
state = IDLE;
|
||||||
|
|
||||||
|
Serial.println("READY");
|
||||||
|
}
|
||||||
|
|
||||||
|
void flush_serial() {
|
||||||
|
while(Serial.available() > 0) Serial.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if(state == IDLE) {
|
||||||
|
char c = Serial.read();
|
||||||
|
|
||||||
|
if(c == SIG_RESET) {
|
||||||
|
Serial.println("resetting");
|
||||||
|
delay(1000);
|
||||||
|
do_reset();
|
||||||
|
} else if(c == SIG_WRITE) {
|
||||||
|
state = WRITE;
|
||||||
|
rom_idx = 0;
|
||||||
|
|
||||||
|
bzero((void*)&rom, ROM_SIZE);
|
||||||
|
|
||||||
|
start = millis();
|
||||||
|
|
||||||
|
Serial.println("Ready for ROM");
|
||||||
|
}
|
||||||
|
} else if(state == WRITE) {
|
||||||
|
while(true && rom_idx < 0x7ffe && millis() - start < 3000) {
|
||||||
|
while(Serial.available()) rom[rom_idx++] = Serial.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
state = IDLE;
|
||||||
|
Serial.printf("Read 0x%04X bytes into memory\r\n", rom_idx);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue