X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hexed%2Fpc_transfer.c;fp=hexed%2Fpc_transfer.c;h=9e2681a3f70d09ada1c39d04b6927f04e3261f81;hb=272bd2ec7473ac1f7f29b27752f5402283306cce;hp=309c383d7c0efb04acaa8c823915268eae37caea;hpb=f28eaaadd73dce455231733228d3f0cbbf4462de;p=megadrive.git diff --git a/hexed/pc_transfer.c b/hexed/pc_transfer.c index 309c383..9e2681a 100644 --- a/hexed/pc_transfer.c +++ b/hexed/pc_transfer.c @@ -157,7 +157,8 @@ static void usage(const char *argv0) { fprintf(stderr, "usage:\n%s [args]\n" "\tsend [size]\n" - "\trecv \n", argv0); + "\trecv \n" + "\tjump \n", argv0); exit(1); } @@ -235,6 +236,13 @@ int main(int argc, char *argv[]) memset(data, 0, size); } + else if (strcmp(argv[1], "jump") == 0) + { + if (argc != 3) + usage(argv[0]); + + addr = atoi_or_die(argv[2]); + } else usage(argv[0]); @@ -253,13 +261,12 @@ int main(int argc, char *argv[]) if (inb(PORT_STATUS) & 0x40) printf("waiting for TH low..\n"); while (inb(PORT_STATUS) & 0x40) - sleep(1); + usleep(100000); outb(0xe0, PORT_CONTROL); if (strcmp(argv[1], "send") == 0) { - printf("send %06x %06x\n", addr, size); send_cmd(CMD_MD_SEND); send_byte((addr >> 16) & 0xff); send_byte((addr >> 8) & 0xff); @@ -303,9 +310,19 @@ int main(int argc, char *argv[]) fwrite(data, 1, size, file); } - printf("\b\b\b\b\b\b\b\b\b\b\b\b\b"); - printf("%06x/%06x\n", i, size); - fclose(file); + else if (strcmp(argv[1], "jump") == 0) + { + send_cmd(CMD_JUMP); + send_byte((addr >> 16) & 0xff); + send_byte((addr >> 8) & 0xff); + send_byte((addr >> 0) & 0xff); + } + + if (file != NULL) { + printf("\b\b\b\b\b\b\b\b\b\b\b\b\b"); + printf("%06x/%06x\n", i, size); + fclose(file); + } /* switch TL back to high, disable outputs */ outb(0xe0, PORT_CONTROL);