changeset 245:ea3899e3e7ec

Implement cartridge rom loading in transz80
author Mike Pavone <pavone@retrodev.com>
date Sun, 28 Apr 2013 21:00:16 -0700
parents df8a36bf5e1d
children ed548c77b598
files transz80.c
diffstat 1 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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 <stdlib.h>
 
 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(;;)
 	{