From 1424fce2980cf85047ffb528cc89049382dbe838 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Tue, 19 Feb 2008 17:54:47 +0000 Subject: [PATCH] Added i8749 CPU type for MESS. --- src/emu/cpu/cpu.mak | 5 +++-- src/emu/cpu/i8039/i8039.c | 26 ++++++++++++++++++++++++++ src/emu/cpu/i8039/i8039.h | 25 +++++++++++++++++++++++++ src/emu/cpuexec.h | 1 + src/emu/cpuintrf.c | 4 ++++ src/mame/mame.mak | 1 + 6 files changed, 60 insertions(+), 2 deletions(-) diff --git a/src/emu/cpu/cpu.mak b/src/emu/cpu/cpu.mak index d3cb1368ad2..d97a683ba45 100644 --- a/src/emu/cpu/cpu.mak +++ b/src/emu/cpu/cpu.mak @@ -524,17 +524,18 @@ $(CPUOBJ)/i8085/i8085.o: $(CPUSRC)/i8085/i8085.c \ #------------------------------------------------- -# Intel 8039 and derivatives +# Intel MCS-48 (8039 and derivatives) #------------------------------------------------- CPUDEFS += -DHAS_I8035=$(if $(filter I8035,$(CPUS)),1,0) CPUDEFS += -DHAS_I8039=$(if $(filter I8039,$(CPUS)),1,0) CPUDEFS += -DHAS_I8048=$(if $(filter I8048,$(CPUS)),1,0) +CPUDEFS += -DHAS_I8749=$(if $(filter I8749,$(CPUS)),1,0) CPUDEFS += -DHAS_N7751=$(if $(filter N7751,$(CPUS)),1,0) CPUDEFS += -DHAS_MB8884=$(if $(filter MB8884,$(CPUS)),1,0) CPUDEFS += -DHAS_M58715=$(if $(filter M58715,$(CPUS)),1,0) -ifneq ($(filter I8035 I8039 I8048 N7751 MB8884 M58715,$(CPUS)),) +ifneq ($(filter I8035 I8039 I8048 I8749 N7751 MB8884 M58715,$(CPUS)),) OBJDIRS += $(CPUOBJ)/i8039 CPUOBJS += $(CPUOBJ)/i8039/i8039.o DBGOBJS += $(CPUOBJ)/i8039/8039dasm.o diff --git a/src/emu/cpu/i8039/i8039.c b/src/emu/cpu/i8039/i8039.c index f07e10bd68d..6d66b93b500 100644 --- a/src/emu/cpu/i8039/i8039.c +++ b/src/emu/cpu/i8039/i8039.c @@ -629,6 +629,16 @@ static void i8035_init (int index, int clock, const void *config, int (*irqcallb } #endif +#if (HAS_I8749) +static void i8749_init (int index, int clock, const void *config, int (*irqcallback)(int)) +{ + i8039_init(index, clock, config, irqcallback); + + R.ram_mask = 0x7f; + R.int_rom_size = 0x800; +} +#endif + #if (HAS_M58715) static void m58715_init (int index, int clock, const void *config, int (*irqcallback)(int)) { @@ -1024,6 +1034,22 @@ void i8048_get_info(UINT32 state, cpuinfo *info) } #endif +#if (HAS_I8749) +/************************************************************************** + * CPU-specific get_info/set_info + **************************************************************************/ +void i8749_get_info(UINT32 state, cpuinfo *info) +{ + switch (state) + { + /* --- the following bits of info are returned as NULL-terminated strings --- */ + case CPUINFO_STR_NAME: strcpy(info->s, "I8749"); break; + case CPUINFO_PTR_INIT: info->init = i8749_init; break; + + default: i8039_get_info(state, info); break; + } +} +#endif #if (HAS_N7751) /************************************************************************** diff --git a/src/emu/cpu/i8039/i8039.h b/src/emu/cpu/i8039/i8039.h index ca79bf6e7a8..eb5c4229cf8 100644 --- a/src/emu/cpu/i8039/i8039.h +++ b/src/emu/cpu/i8039/i8039.h @@ -102,6 +102,31 @@ extern void i8035_get_info(UINT32 state, cpuinfo *info); extern void i8048_get_info(UINT32 state, cpuinfo *info); #endif +/************************************************************************** + * I8749 section + **************************************************************************/ +#if (HAS_I8749) +#define I8749_PC I8039_PC +#define I8749_SP I8039_SP +#define I8749_PSW I8039_PSW +#define I8749_A I8039_A +#define I8749_TC I8039_TC +#define I8749_P1 I8039_P1 +#define I8749_P2 I8039_P2 +#define I8749_R0 I8039_R0 +#define I8749_R1 I8039_R1 +#define I8749_R2 I8039_R2 +#define I8749_R3 I8039_R3 +#define I8749_R4 I8039_R4 +#define I8749_R5 I8039_R5 +#define I8749_R6 I8039_R6 +#define I8749_R7 I8039_R7 + +#define i8749_ICount i8039_ICount + +extern void i8749_get_info(UINT32 state, cpuinfo *info); +#endif + /************************************************************************** * N7751 section **************************************************************************/ diff --git a/src/emu/cpuexec.h b/src/emu/cpuexec.h index 142df166c88..8b52e5939b0 100644 --- a/src/emu/cpuexec.h +++ b/src/emu/cpuexec.h @@ -79,6 +79,7 @@ enum _cpu_type CPU_I8035, CPU_I8039, CPU_I8048, + CPU_I8749, CPU_N7751, CPU_MB8884, CPU_M58715, diff --git a/src/emu/cpuintrf.c b/src/emu/cpuintrf.c index 6bee32bd6eb..230057fd509 100644 --- a/src/emu/cpuintrf.c +++ b/src/emu/cpuintrf.c @@ -52,6 +52,7 @@ void v70_get_info(UINT32 state, cpuinfo *info); void i8035_get_info(UINT32 state, cpuinfo *info); void i8039_get_info(UINT32 state, cpuinfo *info); void i8048_get_info(UINT32 state, cpuinfo *info); +void i8749_get_info(UINT32 state, cpuinfo *info); void n7751_get_info(UINT32 state, cpuinfo *info); void mb8884_get_info(UINT32 state, cpuinfo *info); void m58715_get_info(UINT32 state, cpuinfo *info); @@ -369,6 +370,9 @@ static const struct #if (HAS_I8048) { CPU_I8048, i8048_get_info }, #endif +#if (HAS_I8749) + { CPU_I8749, i8749_get_info }, +#endif #if (HAS_N7751) { CPU_N7751, n7751_get_info }, #endif diff --git a/src/mame/mame.mak b/src/mame/mame.mak index d6038f3dfe6..1dcaa175b22 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -65,6 +65,7 @@ CPUS += V70 CPUS += I8035 CPUS += I8039 CPUS += I8048 +CPUS += I8749 CPUS += N7751 CPUS += MB8884 CPUS += M58715