Placeholder for the Zilog Z8001 CPU core

This commit is contained in:
Angelo Salese 2010-05-11 20:38:31 +00:00
parent 82293e597c
commit 3f3cf7748d
3 changed files with 37 additions and 10 deletions

View File

@ -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;
}
}

View File

@ -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 );

View File

@ -922,11 +922,11 @@ static MACHINE_DRIVER_START( polepos )
MDRV_CPU_IO_MAP(z80_io)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_assert,2) /* 64V */
MDRV_CPU_ADD("sub", Z8000, 24576000/8) /* 3.072 MHz */
MDRV_CPU_ADD("sub", Z8002, 24576000/8) /* 3.072 MHz */
MDRV_CPU_PROGRAM_MAP(z8002_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
MDRV_CPU_ADD("sub2", Z8000, 24576000/8) /* 3.072 MHz */
MDRV_CPU_ADD("sub2", Z8002, 24576000/8) /* 3.072 MHz */
MDRV_CPU_PROGRAM_MAP(z8002_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
@ -1005,11 +1005,11 @@ static MACHINE_DRIVER_START( topracern )
MDRV_CPU_IO_MAP(z80_io)
MDRV_CPU_VBLANK_INT_HACK(irq0_line_assert,2) /* 64V */
MDRV_CPU_ADD("sub", Z8000, 24576000/8) /* 3.072 MHz */
MDRV_CPU_ADD("sub", Z8002, 24576000/8) /* 3.072 MHz */
MDRV_CPU_PROGRAM_MAP(z8002_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
MDRV_CPU_ADD("sub2", Z8000, 24576000/8) /* 3.072 MHz */
MDRV_CPU_ADD("sub2", Z8002, 24576000/8) /* 3.072 MHz */
MDRV_CPU_PROGRAM_MAP(z8002_map)
MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)