Added very basic SCC68070 implementation, currently is just a basic m68k with 32-bits of address lines.

The plan is to add the on-chip peripherals on the magicard.c driver then, when I get some consistency, hardwire it to the cpu core.

Please check this modification asap (should be fine, but I haven't compiled with a clean build)
This commit is contained in:
Angelo Salese 2009-07-03 18:43:09 +00:00
parent fa2917a857
commit 66ff5a084a
3 changed files with 31 additions and 3 deletions

View File

@ -27,7 +27,8 @@ enum
M68K_CPU_TYPE_68EC020,
M68K_CPU_TYPE_68020,
M68K_CPU_TYPE_68030, /* Supported by disassembler ONLY */
M68K_CPU_TYPE_68040 /* Supported by disassembler ONLY */
M68K_CPU_TYPE_68040,
M68K_CPU_TYPE_SCC68070
};
@ -75,6 +76,8 @@ CPU_GET_INFO( m68ec020 );
CPU_GET_INFO( m68020 );
CPU_GET_INFO( m68040 );
CPU_GET_INFO( scc68070 );
#define CPU_M68000 CPU_GET_INFO_NAME( m68000 )
#define CPU_M68008 CPU_GET_INFO_NAME( m68008 )
#define CPU_M68010 CPU_GET_INFO_NAME( m68010 )
@ -82,6 +85,8 @@ CPU_GET_INFO( m68040 );
#define CPU_M68020 CPU_GET_INFO_NAME( m68020 )
#define CPU_M68040 CPU_GET_INFO_NAME( m68040 )
#define CPU_SCC68070 CPU_GET_INFO_NAME( scc68070 )
void m68k_set_encrypted_opcode_range(const device_config *device, offs_t start, offs_t end);
unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type);

View File

@ -484,7 +484,8 @@ INLINE m68ki_cpu_core *get_safe_token(const device_config *device)
cpu_get_type(device) == CPU_M68010 ||
cpu_get_type(device) == CPU_M68EC020 ||
cpu_get_type(device) == CPU_M68020 ||
cpu_get_type(device) == CPU_M68040);
cpu_get_type(device) == CPU_M68040 ||
cpu_get_type(device) == CPU_SCC68070);
return (m68ki_cpu_core *)device->token;
}
@ -1334,3 +1335,25 @@ CPU_GET_INFO( m68040 )
default: CPU_GET_INFO_CALL(m68k); break;
}
}
/****************************************************************************
* SCC-68070 section
****************************************************************************/
CPU_GET_INFO( scc68070 )
{
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
case CPUINFO_INT_ADDRBUS_WIDTH_PROGRAM: info->i = 32; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_FCT_INIT: info->init = CPU_INIT_NAME(m68000); break; //todo
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "SCC68070"); break;
default: CPU_GET_INFO_CALL(m68k); break;
}
}

View File

@ -416,7 +416,7 @@ static INTERRUPT_GEN( magicard_irq )
}
static MACHINE_DRIVER_START( magicard )
MDRV_CPU_ADD("maincpu", M68000, CLOCK_A/2) /* SCC-68070 CCA84 datasheet */
MDRV_CPU_ADD("maincpu", SCC68070, CLOCK_A/2) /* SCC-68070 CCA84 datasheet */
MDRV_CPU_PROGRAM_MAP(magicard_mem)
MDRV_CPU_VBLANK_INT("screen", magicard_irq) /* no interrupts? (it erases the vectors..) */