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