X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=s51%2Fs51-command.c;fp=s51%2Fs51-command.c;h=25328f1ece4e4b1f587edd4e677642ac092c724f;hp=b4f853be7794b60ac244902d5eeb2e38ef39fb2a;hb=e0697186a2f9b6139636ff5d5c162879c85caf9c;hpb=23aca1fcbc169184e32d4ec19f28dd4fd4cfda36 diff --git a/s51/s51-command.c b/s51/s51-command.c index b4f853be..25328f1e 100644 --- a/s51/s51-command.c +++ b/s51/s51-command.c @@ -46,6 +46,21 @@ parse_uint16(char *value, uint16_t *uint16) return command_success; } +static enum command_result +parse_uint8(char *value, uint8_t *uint8) +{ + int v; + enum command_result result; + + result = parse_int(value, &v); + if (result != command_success) + return command_error; + if (v < 0 || v > 0xff) + return command_error; + *uint8 = v; + return command_success; +} + enum command_result command_quit (int argc, char **argv) { @@ -97,19 +112,19 @@ command_di (int argc, char **argv) enum command_result command_ds (int argc, char **argv) { - uint16_t start, end; - uint8_t memory[65536]; + uint8_t start, end; + uint8_t memory[0x100]; uint8_t status; int length; if (argc != 3) return command_error; - if (parse_uint16(argv[1], &start) != command_success) + if (parse_uint8(argv[1], &start) != command_success) return command_error; - if (parse_uint16(argv[2], &end) != command_success) + if (parse_uint8(argv[2], &end) != command_success) return command_error; length = (int) end - (int) start + 1; - status = ccdbg_read_memory(s51_dbg, start + 0xdf00, memory, length); + status = ccdbg_read_sfr(s51_dbg, start, memory, length); dump_bytes(memory, length, start); return command_success; } @@ -143,6 +158,15 @@ command_set (int argc, char **argv) enum command_result command_dump (int argc, char **argv) { + if (argv[1]) { + if (strcmp(argv[1], "rom") == 0 || + strcmp(argv[1], "xram") == 0) + return command_dx(argc-1, argv+1); + if (strcmp(argv[1], "iram") == 0) + return command_di(argc-1, argv+1); + if (strcmp(argv[1], "sfr") == 0) + return command_ds(argc-1, argv+1); + } return command_error; }