From: Keith Packard Date: Mon, 13 Apr 2009 04:47:32 +0000 (-0700) Subject: Add load command to s51 X-Git-Tag: 0.5~58^2~10 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=11c526bdcbf4012e18fbfdc29ca8832870ca38f0;p=fw%2Faltos Add load command to s51 --- diff --git a/s51/s51-command.c b/s51/s51-command.c index cc208abf..02ecdddd 100644 --- a/s51/s51-command.c +++ b/s51/s51-command.c @@ -493,7 +493,38 @@ command_step (int argc, char **argv) enum command_result command_load (int argc, char **argv) { - return command_error; + char *filename = argv[1]; + FILE *file; + struct hex_file *hex; + struct hex_image *image; + + if (!filename) + return command_error; + file = fopen(filename, "r"); + if (!file) { + perror(filename); + return command_error; + } + hex = ccdbg_hex_file_read(file, filename); + fclose(file); + if (!hex) { + return command_error; + } + image = ccdbg_hex_image_create(hex); + ccdbg_hex_file_free(hex); + if (!image) { + fprintf(stderr, "image create failed\n"); + return command_error; + } + if (image->address >= 0xf000) { + printf("Loading %d bytes to RAM at 0x%04x\n", + image->length, image->address); + ccdbg_write_hex_image(s51_dbg, image, 0); + } else { + fprintf(stderr, "Can only load to RAM\n"); + } + ccdbg_hex_image_free(image); + return command_success; } enum command_result