54 lines
1.0 KiB
C
54 lines
1.0 KiB
C
void comando_dump(char *filename, word start, word end) {
|
|
|
|
// send command byte
|
|
send_byte_to_MCU(CMD_READ);
|
|
if(TIMEOUT) return;
|
|
|
|
// send filename
|
|
send_string_to_MCU(filename);
|
|
if(TIMEOUT) return;
|
|
|
|
// response
|
|
byte response = receive_byte_from_MCU();
|
|
if(TIMEOUT) return;
|
|
|
|
if(response == ERR_RESPONSE) {
|
|
// error with file, print message
|
|
print_string_response();
|
|
return;
|
|
}
|
|
|
|
// get file length
|
|
word len = receive_word_from_mcu();
|
|
if(TIMEOUT) return;
|
|
|
|
// 1234567890123456789012345678901234567890
|
|
// 0000: 00 00 00 00 00 00 00 00
|
|
|
|
// get file bytes
|
|
byte row = 0;
|
|
for(word t=0;t!=len;t++) {
|
|
byte data = receive_byte_from_MCU();
|
|
if(TIMEOUT) return;
|
|
|
|
if(!(t>=start && t<=end)) continue;
|
|
|
|
if(row == 0) {
|
|
woz_putc('\r');
|
|
woz_print_hexword(t);
|
|
woz_puts(": ");
|
|
}
|
|
|
|
woz_print_hex(data);
|
|
woz_putc(' ');
|
|
|
|
row++;
|
|
row &= 7;
|
|
|
|
if(apple1_readkey()) {
|
|
woz_puts("*BRK*\r");
|
|
break;
|
|
}
|
|
}
|
|
}
|