diff options
Diffstat (limited to 'src/emu/cpu/z8000')
-rw-r--r-- | src/emu/cpu/z8000/z8000.c | 33 | ||||
-rw-r--r-- | src/emu/cpu/z8000/z8000.h | 6 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/emu/cpu/z8000/z8000.c b/src/emu/cpu/z8000/z8000.c index 3a21421fce9..67fde5f9291 100644 --- a/src/emu/cpu/z8000/z8000.c +++ b/src/emu/cpu/z8000/z8000.c @@ -367,7 +367,15 @@ static CPU_RESET( z8000 ) cpustate->program = device->space(AS_PROGRAM); cpustate->io = device->space(AS_IO); cpustate->fcw = RDMEM_W(cpustate, 2); /* get reset cpustate->fcw */ - cpustate->pc = RDMEM_W(cpustate, 4); /* get reset cpustate->pc */ + if(cpustate->fcw & F_SEG) + { + //cpustate->seg_pc = RDMEM_W(cpustate, 4); + cpustate->pc = RDMEM_W(cpustate, 6); + } + else + { + cpustate->pc = RDMEM_W(cpustate, 4); /* get reset cpustate->pc */ + } } static CPU_EXIT( z8000 ) @@ -468,7 +476,7 @@ static void set_irq_line(z8000_state *cpustate, int irqline, int state) * Generic set_info **************************************************************************/ -static CPU_SET_INFO( z8000 ) +static CPU_SET_INFO( z8002 ) { z8000_state *cpustate = get_safe_token(device); @@ -514,7 +522,7 @@ static CPU_SET_INFO( z8000 ) * Generic get_info **************************************************************************/ -CPU_GET_INFO( z8000 ) +CPU_GET_INFO( z8002 ) { z8000_state *cpustate = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL; @@ -576,7 +584,7 @@ CPU_GET_INFO( z8000 ) case CPUINFO_INT_REGISTER + Z8000_R15: info->i = cpustate->RW(15); break; /* --- the following bits of info are returned as pointers to data or functions --- */ - case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(z8000); break; + case CPUINFO_FCT_SET_INFO: info->setinfo = CPU_SET_INFO_NAME(z8002); break; case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(z8000); break; case CPUINFO_FCT_RESET: info->reset = CPU_RESET_NAME(z8000); break; case CPUINFO_FCT_EXIT: info->exit = CPU_EXIT_NAME(z8000); break; @@ -638,3 +646,20 @@ CPU_GET_INFO( z8000 ) case CPUINFO_STR_REGISTER + Z8000_R15: sprintf(info->s, "R15:%04X", cpustate->RW(15)); break; } } + +/* +handling for the z8001 +*/ + +CPU_GET_INFO( z8001 ) +{ + switch (state) + { + /* --- the following bits of info are returned as pointers to data or functions --- */ + + /* --- the following bits of info are returned as NULL-terminated strings --- */ + case DEVINFO_STR_NAME: strcpy(info->s, "Zilog Z8001"); break; + + default: CPU_GET_INFO_CALL(z8002); break; + } +} diff --git a/src/emu/cpu/z8000/z8000.h b/src/emu/cpu/z8000/z8000.h index d1a8dff1d47..0e7657a8fb9 100644 --- a/src/emu/cpu/z8000/z8000.h +++ b/src/emu/cpu/z8000/z8000.h @@ -24,8 +24,10 @@ enum #define Z8000_HALT 0x0100 /* halted flag */ /* PUBLIC FUNCTIONS */ -extern CPU_GET_INFO( z8000 ); -#define CPU_Z8000 CPU_GET_INFO_NAME( z8000 ) +extern CPU_GET_INFO( z8001 ); +#define CPU_Z8001 CPU_GET_INFO_NAME( z8001 ) +extern CPU_GET_INFO( z8002 ); +#define CPU_Z8002 CPU_GET_INFO_NAME( z8002 ) CPU_DISASSEMBLE( z8000 ); |