diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h index 9eeb83ae8a3..a697a6b3e59 100644 --- a/src/emu/cpu/m68000/m68000.h +++ b/src/emu/cpu/m68000/m68000.h @@ -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); diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c index 81cbf5a4332..4d3655f2bed 100644 --- a/src/emu/cpu/m68000/m68kcpu.c +++ b/src/emu/cpu/m68000/m68kcpu.c @@ -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; + } +} diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c index 34762c8e61f..26b8849f053 100644 --- a/src/mame/drivers/magicard.c +++ b/src/mame/drivers/magicard.c @@ -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..) */