2705
|
1 #include <stdlib.h>
|
|
2 #include "upd78k2.h"
|
|
3
|
|
4 int headless = 1;
|
|
5 void render_errorbox(char * title, char * buf)
|
|
6 {
|
|
7 }
|
|
8
|
|
9 void render_infobox(char * title, char * buf)
|
|
10 {
|
|
11 }
|
|
12
|
|
13 uint8_t pram[384];
|
|
14 uint8_t rom[0xFC80];
|
|
15
|
|
16 const memmap_chunk upd_map[] = {
|
|
17 { 0x0000, 0xFC80, 0xFFFFF, .flags = MMAP_READ, .buffer = rom},
|
|
18 { 0xFC80, 0xFD00, 0x7F, .flags = MMAP_READ | MMAP_WRITE | MMAP_CODE, .buffer = pram},
|
|
19 { 0xFD00, 0xFE00, 0xFF, .flags = MMAP_READ | MMAP_WRITE | MMAP_CODE, .buffer = pram + 128},
|
|
20 { 0xFF00, 0xFFFF, 0xFF, .read_8 = upd78237_sfr_read, .write_8 = upd78237_sfr_write}
|
|
21 };
|
|
22
|
|
23 int main(int argc, char **argv)
|
|
24 {
|
|
25 long filesize;
|
|
26 uint8_t *filebuf;
|
|
27 upd78k2_options opts;
|
|
28 upd78k2_context *upd;
|
|
29 char *fname = NULL;
|
|
30 uint8_t retranslate = 0;
|
|
31 for (int i = 1; i < argc; i++)
|
|
32 {
|
|
33 if (argv[i][0] == '-') {
|
|
34 switch(argv[i][1])
|
|
35 {
|
|
36 case 'r':
|
|
37 retranslate = 1;
|
|
38 break;
|
|
39 default:
|
|
40 fprintf(stderr, "Unrecognized switch -%c\n", argv[i][1]);
|
|
41 exit(1);
|
|
42 }
|
|
43 } else if (!fname) {
|
|
44 fname = argv[i];
|
|
45 }
|
|
46 }
|
|
47 if (!fname) {
|
|
48 fputs("usage: ztestrun zrom [cartrom]\n", stderr);
|
|
49 exit(1);
|
|
50 }
|
|
51 FILE * f = fopen(fname, "rb");
|
|
52 if (!f) {
|
|
53 fprintf(stderr, "unable to open file %s\n", fname);
|
|
54 exit(1);
|
|
55 }
|
|
56 fseek(f, 0, SEEK_END);
|
|
57 filesize = ftell(f);
|
|
58 fseek(f, 0, SEEK_SET);
|
|
59 filesize = filesize < sizeof(rom) ? filesize : sizeof(rom);
|
|
60 if (fread(rom, 1, filesize, f) != filesize) {
|
|
61 fprintf(stderr, "error reading %s\n",fname);
|
|
62 exit(1);
|
|
63 }
|
|
64 fclose(f);
|
|
65 init_upd78k2_opts(&opts, upd_map, 4);
|
|
66 upd = init_upd78k2_context(&opts);
|
|
67 upd->pc = rom[0] | rom[1] << 8;
|
|
68 upd78k2_execute(upd, 10000);
|
|
69 return 0;
|
|
70 } |