# HG changeset patch # User Mike Pavone # Date 1367208016 25200 # Node ID ea3899e3e7ec1f6b1e8c9fcd7cd822a4faf18685 # Parent df8a36bf5e1db8d23cb24d6d4bd046c4ec34e222 Implement cartridge rom loading in transz80 diff -r df8a36bf5e1d -r ea3899e3e7ec transz80.c --- a/transz80.c Sun Apr 28 18:53:43 2013 -0700 +++ b/transz80.c Sun Apr 28 21:00:16 2013 -0700 @@ -5,6 +5,7 @@ #include uint8_t z80_ram[0x2000]; +uint16_t cart[0x200000]; int main(int argc, char ** argv) { @@ -12,19 +13,39 @@ uint8_t *filebuf; x86_z80_options opts; z80_context context; + if (argc < 2) { + fputs("usage: transz80 zrom [cartrom]\n", stderr); + exit(1); + } FILE * f = fopen(argv[1], "rb"); + if (!f) { + fprintf(stderr, "unable to open file %s\n", argv[2]); + exit(1); + } fseek(f, 0, SEEK_END); filesize = ftell(f); fseek(f, 0, SEEK_SET); fread(z80_ram, 1, filesize < sizeof(z80_ram) ? filesize : sizeof(z80_ram), f); fclose(f); + if (argc > 2) { + f = fopen(argv[2], "rb"); + if (!f) { + fprintf(stderr, "unable to open file %s\n", argv[2]); + exit(1); + } + fseek(f, 0, SEEK_END); + filesize = ftell(f); + fseek(f, 0, SEEK_SET); + fread(cart, 1, filesize < sizeof(cart) ? filesize : sizeof(cart), f); + fclose(f); + } init_x86_z80_opts(&opts); init_z80_context(&context, &opts); - //cartridge ROM + //Z80 RAM context.mem_pointers[0] = z80_ram; context.sync_cycle = context.target_cycle = 0x7FFFFFFF; - //work RAM - context.mem_pointers[1] = context.mem_pointers[2] = NULL; + //cartridge/bank + context.mem_pointers[1] = context.mem_pointers[2] = cart; z80_reset(&context); for(;;) {