diff options
author | Ian C <ianc@noddybox.co.uk> | 2006-09-16 22:54:59 +0000 |
---|---|---|
committer | Ian C <ianc@noddybox.co.uk> | 2006-09-16 22:54:59 +0000 |
commit | f76b8997620b8fb22f3b3c650c6fa9005b7d660b (patch) | |
tree | de3c279bff19a21affd395e086ad068853a264fe /src/z80.c | |
parent | 7145eef7df3d346e816117b78d5cbd6e023611e1 (diff) |
Added newer version of the Z80 core
Diffstat (limited to 'src/z80.c')
-rw-r--r-- | src/z80.c | 28 |
1 files changed, 22 insertions, 6 deletions
@@ -112,11 +112,16 @@ static void Z80_CheckInterrupt(Z80 *cpu) /* ---------------------------------------- INTERFACES */ -Z80 *Z80Init(Z80ReadMemory read_memory, - Z80WriteMemory write_memory, - Z80ReadPort read_port, - Z80WritePort write_port, - Z80ReadMemory read_disassem) +#ifdef ENABLE_ARRAY_MEMORY +Z80 *Z80Init(Z80ReadPort read_port, + Z80WritePort write_port) +#else +Z80 *Z80Init(Z80ReadMemory read_memory, + Z80WriteMemory write_memory, + Z80ReadPort read_port, + Z80WritePort write_port, + Z80ReadMemory read_for_disassem) +#endif { Z80 *cpu; int f; @@ -124,18 +129,22 @@ Z80 *Z80Init(Z80ReadMemory read_memory, InitTables(); +#ifndef ENABLE_ARRAY_MEMORY if (!read_memory || !write_memory) return NULL; +#endif cpu=malloc(sizeof *cpu); if (cpu) { +#ifndef ENABLE_ARRAY_MEMORY cpu->mread=read_memory; cpu->mwrite=write_memory; + cpu->disread=read_for_disassem; +#endif cpu->pread=read_port; cpu->pwrite=write_port; - cpu->disread=read_disassem; for(f=0;f<eZ80_NO_CALLBACK;f++) for(r=0;r<MAX_PER_CALLBACK;r++) @@ -336,6 +345,7 @@ void Z80SetLabels(Z80Label labels[]) const char *Z80Disassemble(Z80 *cpu, Z80Word *pc) { #ifdef ENABLE_DISASSEM + Z80Byte Z80_Dis_FetchByte(Z80 *cpu, Z80Word *pc); static char s[80]; Z80Word opc,npc; Z80Byte op; @@ -350,7 +360,13 @@ const char *Z80Disassemble(Z80 *cpu, Z80Word *pc) strcat(s,Z80_Dis_Printf("%-40s ;",Z80_Dis_GetArg())); for(f=0;f<5 && opc!=npc;f++) + { +#ifdef ENABLE_ARRAY_MEMORY + strcat(s,Z80_Dis_Printf(" %.2x",(int)Z80_MEMORY[opc++])); +#else strcat(s,Z80_Dis_Printf(" %.2x",(int)cpu->disread(cpu,opc++))); +#endif + } if (opc!=npc) for(f=1;f<3;f++) |