summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2010-01-18 09:34:43 +0000
committer Aaron Giles <aaron@aarongiles.com>2010-01-18 09:34:43 +0000
commite738b79785852050ce8b83e369a7fc4dd46a071b (patch)
tree1ac39e9f40790b375c57fea4e5d56ca8d132babc /src/emu/cpu
parent3f87f47a2ecdccb9d9627d0d52b76f262becb949 (diff)
Correct a long-standing design flaw: device configuration state
is now separate from runtime device state. I have larger plans for devices, so there is some temporary scaffolding to hold everything together, but this first step does separate things out. There is a new class 'running_device' which represents the state of a live device. A list of these running_devices sits in machine->devicelist and is created when a running_machine is instantiated. To access the configuration state, use device->baseconfig() which returns a reference to the configuration. The list of running_devices in machine->devicelist has a 1:1 correspondance with the list of device configurations in machine->config->devicelist, and most navigation options work equally on either (scanning by class, type, etc.) For the most part, drivers will now deal with running_device objects instead of const device_config objects. In fact, in order to do this patch, I did the following global search & replace: const device_config -> running_device device->static_config -> device->baseconfig().static_config device->inline_config -> device->baseconfig().inline_config and then fixed up the compiler errors that fell out. Some specifics: Removed device_get_info_* functions and replaced them with methods called get_config_*. Added methods for get_runtime_* to access runtime state from the running_device. DEVICE_GET_INFO callbacks are only passed a device_config *. This means they have no access to the token or runtime state at all. For most cases this is fine. Added new DEVICE_GET_RUNTIME_INFO callback that is passed the running_device for accessing data that is live at runtime. In the future this will go away to make room for a cleaner mechanism. Cleaned up the handoff of memory regions from the memory subsystem to the devices.
Diffstat (limited to 'src/emu/cpu')
-rw-r--r--src/emu/cpu/adsp2100/adsp2100.c16
-rw-r--r--src/emu/cpu/adsp2100/adsp2100.h14
-rw-r--r--src/emu/cpu/alph8201/alph8201.c6
-rw-r--r--src/emu/cpu/am29000/am29000.c8
-rw-r--r--src/emu/cpu/apexc/apexc.c4
-rw-r--r--src/emu/cpu/arm/arm.c4
-rw-r--r--src/emu/cpu/arm7/arm7.c2
-rw-r--r--src/emu/cpu/arm7/arm7core.c4
-rw-r--r--src/emu/cpu/arm7/arm7core.h2
-rw-r--r--src/emu/cpu/asap/asap.c4
-rw-r--r--src/emu/cpu/avr8/avr8.c4
-rw-r--r--src/emu/cpu/ccpu/ccpu.c10
-rw-r--r--src/emu/cpu/ccpu/ccpu.h6
-rw-r--r--src/emu/cpu/cdp1802/cdp1802.c10
-rw-r--r--src/emu/cpu/cdp1802/cdp1802.h12
-rw-r--r--src/emu/cpu/cop400/cop400.c14
-rw-r--r--src/emu/cpu/cp1610/cp1610.c4
-rw-r--r--src/emu/cpu/cubeqcpu/cubeqcpu.c36
-rw-r--r--src/emu/cpu/cubeqcpu/cubeqcpu.h10
-rw-r--r--src/emu/cpu/drcbec.c6
-rw-r--r--src/emu/cpu/drcbex64.c6
-rw-r--r--src/emu/cpu/drcbex86.c6
-rw-r--r--src/emu/cpu/drcfe.c6
-rw-r--r--src/emu/cpu/drcfe.h2
-rw-r--r--src/emu/cpu/drcuml.c4
-rw-r--r--src/emu/cpu/drcuml.h4
-rw-r--r--src/emu/cpu/dsp32/dsp32.c12
-rw-r--r--src/emu/cpu/dsp32/dsp32.h6
-rw-r--r--src/emu/cpu/dsp56k/dsp56def.h2
-rw-r--r--src/emu/cpu/dsp56k/dsp56k.c6
-rw-r--r--src/emu/cpu/dsp56k/dsp56k.h8
-rw-r--r--src/emu/cpu/dsp56k/dsp56mem.c6
-rw-r--r--src/emu/cpu/dsp56k/dsp56pcu.c2
-rw-r--r--src/emu/cpu/e132xs/e132xs.c12
-rw-r--r--src/emu/cpu/esrip/esrip.c10
-rw-r--r--src/emu/cpu/esrip/esrip.h2
-rw-r--r--src/emu/cpu/f8/f8.c4
-rw-r--r--src/emu/cpu/g65816/g65816.c4
-rw-r--r--src/emu/cpu/g65816/g65816.h2
-rw-r--r--src/emu/cpu/g65816/g65816cm.h2
-rw-r--r--src/emu/cpu/h6280/h6280.c6
-rw-r--r--src/emu/cpu/h6280/h6280.h6
-rw-r--r--src/emu/cpu/h83002/h8priv.h4
-rw-r--r--src/emu/cpu/hd6309/hd6309.c6
-rw-r--r--src/emu/cpu/i386/i386.c6
-rw-r--r--src/emu/cpu/i386/i386priv.h4
-rw-r--r--src/emu/cpu/i4004/i4004.c6
-rw-r--r--src/emu/cpu/i4004/i4004.h2
-rw-r--r--src/emu/cpu/i8008/i8008.c4
-rw-r--r--src/emu/cpu/i8085/i8085.c10
-rw-r--r--src/emu/cpu/i86/i286.c8
-rw-r--r--src/emu/cpu/i86/i86.c6
-rw-r--r--src/emu/cpu/i860/i860.h6
-rw-r--r--src/emu/cpu/i860/i860dec.c2
-rw-r--r--src/emu/cpu/i960/i960.c8
-rw-r--r--src/emu/cpu/i960/i960.h4
-rw-r--r--src/emu/cpu/jaguar/jaguar.c18
-rw-r--r--src/emu/cpu/jaguar/jaguar.h10
-rw-r--r--src/emu/cpu/konami/konami.c6
-rw-r--r--src/emu/cpu/konami/konami.h6
-rw-r--r--src/emu/cpu/lh5801/lh5801.c6
-rw-r--r--src/emu/cpu/lh5801/lh5801.h2
-rw-r--r--src/emu/cpu/lr35902/lr35902.c6
-rw-r--r--src/emu/cpu/lr35902/lr35902.h2
-rw-r--r--src/emu/cpu/m37710/m37710cm.h4
-rw-r--r--src/emu/cpu/m6502/m4510.c6
-rw-r--r--src/emu/cpu/m6502/m6502.c10
-rw-r--r--src/emu/cpu/m6502/m6502.h6
-rw-r--r--src/emu/cpu/m6502/m6509.c6
-rw-r--r--src/emu/cpu/m6502/m65ce02.c6
-rw-r--r--src/emu/cpu/m6800/m6800.c4
-rw-r--r--src/emu/cpu/m68000/m68000.h20
-rw-r--r--src/emu/cpu/m68000/m68kcpu.c12
-rw-r--r--src/emu/cpu/m68000/m68kcpu.h2
-rw-r--r--src/emu/cpu/m6805/m6805.c6
-rw-r--r--src/emu/cpu/m6809/6809dasm.c2
-rw-r--r--src/emu/cpu/m6809/m6809.c6
-rw-r--r--src/emu/cpu/mb86233/mb86233.c6
-rw-r--r--src/emu/cpu/mb86233/mb86233.h4
-rw-r--r--src/emu/cpu/mb88xx/mb88xx.c12
-rw-r--r--src/emu/cpu/mb88xx/mb88xx.h2
-rw-r--r--src/emu/cpu/mc68hc11/mc68hc11.c6
-rw-r--r--src/emu/cpu/mcs48/mcs48.c48
-rw-r--r--src/emu/cpu/mcs48/mcs48.h4
-rw-r--r--src/emu/cpu/mcs48/mcs48dsm.c2
-rw-r--r--src/emu/cpu/mcs51/mcs51.c10
-rw-r--r--src/emu/cpu/mcs51/mcs51.h8
-rw-r--r--src/emu/cpu/minx/minx.c6
-rw-r--r--src/emu/cpu/mips/mips3.h6
-rw-r--r--src/emu/cpu/mips/mips3com.c6
-rw-r--r--src/emu/cpu/mips/mips3com.h4
-rw-r--r--src/emu/cpu/mips/mips3drc.c10
-rw-r--r--src/emu/cpu/mips/psx.c8
-rw-r--r--src/emu/cpu/mips/r3000.c6
-rw-r--r--src/emu/cpu/nec/nec.c8
-rw-r--r--src/emu/cpu/pdp1/pdp1.c22
-rw-r--r--src/emu/cpu/pdp1/pdp1.h6
-rw-r--r--src/emu/cpu/pdp1/tx0.c20
-rw-r--r--src/emu/cpu/pdp1/tx0.h6
-rw-r--r--src/emu/cpu/pic16c5x/pic16c5x.c6
-rw-r--r--src/emu/cpu/pic16c5x/pic16c5x.h2
-rw-r--r--src/emu/cpu/pic16c62x/pic16c62x.c6
-rw-r--r--src/emu/cpu/pic16c62x/pic16c62x.h2
-rw-r--r--src/emu/cpu/powerpc/ppc.c14
-rw-r--r--src/emu/cpu/powerpc/ppc.h12
-rw-r--r--src/emu/cpu/powerpc/ppccom.c10
-rw-r--r--src/emu/cpu/powerpc/ppccom.h4
-rw-r--r--src/emu/cpu/powerpc/ppcdrc.c12
-rw-r--r--src/emu/cpu/rsp/rsp.c4
-rw-r--r--src/emu/cpu/rsp/rsp.h12
-rw-r--r--src/emu/cpu/rsp/rspdrc.c14
-rw-r--r--src/emu/cpu/s2650/s2650.c4
-rw-r--r--src/emu/cpu/saturn/saturn.c6
-rw-r--r--src/emu/cpu/saturn/saturn.h16
-rw-r--r--src/emu/cpu/sc61860/sc61860.c8
-rw-r--r--src/emu/cpu/sc61860/sc61860.h18
-rw-r--r--src/emu/cpu/scmp/scmp.c8
-rw-r--r--src/emu/cpu/se3208/se3208.c4
-rw-r--r--src/emu/cpu/sh2/sh2.c4
-rw-r--r--src/emu/cpu/sh2/sh2.h8
-rw-r--r--src/emu/cpu/sh2/sh2comn.c8
-rw-r--r--src/emu/cpu/sh2/sh2comn.h4
-rw-r--r--src/emu/cpu/sh2/sh2drc.c6
-rw-r--r--src/emu/cpu/sh4/sh4.c6
-rw-r--r--src/emu/cpu/sh4/sh4.h8
-rw-r--r--src/emu/cpu/sh4/sh4comn.c10
-rw-r--r--src/emu/cpu/sh4/sh4comn.h4
-rw-r--r--src/emu/cpu/sharc/sharc.c12
-rw-r--r--src/emu/cpu/sharc/sharc.h6
-rw-r--r--src/emu/cpu/sm8500/sm8500.c10
-rw-r--r--src/emu/cpu/sm8500/sm8500.h4
-rw-r--r--src/emu/cpu/spc700/spc700.c4
-rw-r--r--src/emu/cpu/ssem/ssem.c4
-rw-r--r--src/emu/cpu/ssp1601/ssp1601.c4
-rw-r--r--src/emu/cpu/superfx/superfx.c14
-rw-r--r--src/emu/cpu/superfx/superfx.h6
-rw-r--r--src/emu/cpu/t11/t11.c6
-rw-r--r--src/emu/cpu/tlcs90/tlcs90.c4
-rw-r--r--src/emu/cpu/tlcs900/tlcs900.c6
-rw-r--r--src/emu/cpu/tms0980/tms0980.c8
-rw-r--r--src/emu/cpu/tms32010/tms32010.c4
-rw-r--r--src/emu/cpu/tms32025/tms32025.c4
-rw-r--r--src/emu/cpu/tms32031/tms32031.c6
-rw-r--r--src/emu/cpu/tms32031/tms32031.h4
-rw-r--r--src/emu/cpu/tms32051/tms32051.c4
-rw-r--r--src/emu/cpu/tms34010/tms34010.c18
-rw-r--r--src/emu/cpu/tms34010/tms34010.h10
-rw-r--r--src/emu/cpu/tms57002/tms57002.c4
-rw-r--r--src/emu/cpu/tms57002/tms57002.h2
-rw-r--r--src/emu/cpu/tms7000/tms7000.c10
-rw-r--r--src/emu/cpu/tms7000/tms7000.h2
-rw-r--r--src/emu/cpu/tms9900/99xxcore.h32
-rw-r--r--src/emu/cpu/tms9900/tms9900.h10
-rw-r--r--src/emu/cpu/unsp/unsp.c4
-rw-r--r--src/emu/cpu/unsp/unsp.h2
-rw-r--r--src/emu/cpu/upd7810/upd7810.c6
-rw-r--r--src/emu/cpu/upd7810/upd7810.h2
-rw-r--r--src/emu/cpu/v30mz/v30mz.c6
-rw-r--r--src/emu/cpu/v60/v60.c8
-rw-r--r--src/emu/cpu/v60/v60.h2
-rw-r--r--src/emu/cpu/v810/v810.c4
-rw-r--r--src/emu/cpu/vtlb.c6
-rw-r--r--src/emu/cpu/vtlb.h2
-rw-r--r--src/emu/cpu/z180/z180.c8
-rw-r--r--src/emu/cpu/z180/z180.h4
-rw-r--r--src/emu/cpu/z180/z180ops.h4
-rw-r--r--src/emu/cpu/z8/z8.c2
-rw-r--r--src/emu/cpu/z80/z80.c10
-rw-r--r--src/emu/cpu/z80/z80.h2
-rw-r--r--src/emu/cpu/z80/z80daisy.c10
-rw-r--r--src/emu/cpu/z80/z80daisy.h8
-rw-r--r--src/emu/cpu/z8000/z8000.c4
172 files changed, 619 insertions, 619 deletions
diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/emu/cpu/adsp2100/adsp2100.c
index 48f7ad0e0fd..b20adf021d4 100644
--- a/src/emu/cpu/adsp2100/adsp2100.c
+++ b/src/emu/cpu/adsp2100/adsp2100.c
@@ -242,7 +242,7 @@ typedef struct
UINT8 irq_state[9];
UINT8 irq_latch[9];
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
/* other internal states */
int icount;
@@ -425,7 +425,7 @@ static void check_irqs(adsp2100_state *adsp);
STATE ACCESSORS
***************************************************************************/
-INLINE adsp2100_state *get_safe_token(const device_config *device)
+INLINE adsp2100_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -691,9 +691,9 @@ static void set_irq_line(adsp2100_state *adsp, int irqline, int state)
INITIALIZATION AND SHUTDOWN
***************************************************************************/
-static adsp2100_state *adsp21xx_init(const device_config *device, cpu_irq_callback irqcallback, int chiptype)
+static adsp2100_state *adsp21xx_init(running_device *device, cpu_irq_callback irqcallback, int chiptype)
{
- const adsp21xx_config *config = (const adsp21xx_config *)device->static_config;
+ const adsp21xx_config *config = (const adsp21xx_config *)device->baseconfig().static_config;
adsp2100_state *adsp = get_safe_token(device);
/* create the tables */
@@ -2171,20 +2171,20 @@ CPU_GET_INFO( adsp2181 )
}
}
-void adsp2181_idma_addr_w(const device_config *device, UINT16 data)
+void adsp2181_idma_addr_w(running_device *device, UINT16 data)
{
adsp2100_state *adsp = get_safe_token(device);
adsp->idma_addr = data;
adsp->idma_offs = 0;
}
-UINT16 adsp2181_idma_addr_r(const device_config *device)
+UINT16 adsp2181_idma_addr_r(running_device *device)
{
adsp2100_state *adsp = get_safe_token(device);
return adsp->idma_addr;
}
-void adsp2181_idma_data_w(const device_config *device, UINT16 data)
+void adsp2181_idma_data_w(running_device *device, UINT16 data)
{
adsp2100_state *adsp = get_safe_token(device);
@@ -2211,7 +2211,7 @@ void adsp2181_idma_data_w(const device_config *device, UINT16 data)
WWORD_DATA(adsp, adsp->idma_addr++ & 0x3fff, data);
}
-UINT16 adsp2181_idma_data_r(const device_config *device)
+UINT16 adsp2181_idma_data_r(running_device *device)
{
adsp2100_state *adsp = get_safe_token(device);
UINT16 result = 0xffff;
diff --git a/src/emu/cpu/adsp2100/adsp2100.h b/src/emu/cpu/adsp2100/adsp2100.h
index b45a1b6fc73..1d6d279d26d 100644
--- a/src/emu/cpu/adsp2100/adsp2100.h
+++ b/src/emu/cpu/adsp2100/adsp2100.h
@@ -17,9 +17,9 @@
***************************************************************************/
/* transmit and receive data callbacks types */
-typedef INT32 (*adsp21xx_rx_func)(const device_config *device, int port);
-typedef void (*adsp21xx_tx_func)(const device_config *device, int port, INT32 data);
-typedef void (*adsp21xx_timer_func)(const device_config *device, int enable);
+typedef INT32 (*adsp21xx_rx_func)(running_device *device, int port);
+typedef void (*adsp21xx_tx_func)(running_device *device, int port, INT32 data);
+typedef void (*adsp21xx_timer_func)(running_device *device, int enable);
typedef struct _adsp21xx_config adsp21xx_config;
struct _adsp21xx_config
@@ -166,10 +166,10 @@ CPU_GET_INFO( adsp2181 );
#define CPU_ADSP2181 CPU_GET_INFO_NAME( adsp2181 )
void adsp2181_load_boot_data(UINT8 *srcdata, UINT32 *dstdata);
-void adsp2181_idma_addr_w(const device_config *device, UINT16 data);
-UINT16 adsp2181_idma_addr_r(const device_config *device);
-void adsp2181_idma_data_w(const device_config *device, UINT16 data);
-UINT16 adsp2181_idma_data_r(const device_config *device);
+void adsp2181_idma_addr_w(running_device *device, UINT16 data);
+UINT16 adsp2181_idma_addr_r(running_device *device);
+void adsp2181_idma_data_w(running_device *device, UINT16 data);
+UINT16 adsp2181_idma_data_r(running_device *device);
#endif /* __ADSP2100_H__ */
diff --git a/src/emu/cpu/alph8201/alph8201.c b/src/emu/cpu/alph8201/alph8201.c
index 9afa1f1a299..897f1a4c837 100644
--- a/src/emu/cpu/alph8201/alph8201.c
+++ b/src/emu/cpu/alph8201/alph8201.c
@@ -197,7 +197,7 @@ struct _alpha8201_state
UINT8 halt; /* halt input line */
#endif
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
int inst_cycles;
@@ -224,7 +224,7 @@ typedef struct {
#define LP1 lp1
#define LP2 lp2
-INLINE alpha8201_state *get_safe_token(const device_config *device)
+INLINE alpha8201_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -730,7 +730,7 @@ static CPU_EXIT( alpha8201 )
* Execute cycles CPU cycles. Return number of cycles really executed
****************************************************************************/
-static int alpha8xxx_execute(const device_config *device,const s_opcode *op_map,int cycles)
+static int alpha8xxx_execute(running_device *device,const s_opcode *op_map,int cycles)
{
alpha8201_state *cpustate = get_safe_token(device);
unsigned opcode;
diff --git a/src/emu/cpu/am29000/am29000.c b/src/emu/cpu/am29000/am29000.c
index b2425736f34..680e0a6ef99 100644
--- a/src/emu/cpu/am29000/am29000.c
+++ b/src/emu/cpu/am29000/am29000.c
@@ -141,7 +141,7 @@ typedef struct _am29000_state
STATE ACCESSORS
***************************************************************************/
-INLINE am29000_state *get_safe_token(const device_config *device)
+INLINE am29000_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -154,9 +154,9 @@ static CPU_INIT( am29000 )
{
am29000_state *am29000 = get_safe_token(device);
- am29000->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
- am29000->data = memory_find_address_space(device, ADDRESS_SPACE_DATA);
- am29000->io = memory_find_address_space(device, ADDRESS_SPACE_IO);
+ am29000->program = device->space(AS_PROGRAM);
+ am29000->data = device->space(AS_DATA);
+ am29000->io = device->space(AS_IO);
am29000->cfg = (PRL_AM29000 | PRL_REV_D) << CFG_PRL_SHIFT;
/* Register state for saving */
diff --git a/src/emu/cpu/apexc/apexc.c b/src/emu/cpu/apexc/apexc.c
index 539ba1746c0..02f7b708c6b 100644
--- a/src/emu/cpu/apexc/apexc.c
+++ b/src/emu/cpu/apexc/apexc.c
@@ -357,7 +357,7 @@ struct _apexc_state
int running; /* 1 flag: */
/* running: flag implied by the existence of the stop instruction */
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -367,7 +367,7 @@ struct _apexc_state
#define DELAY(n) {cpustate->icount -= (n); cpustate->current_word = (cpustate->current_word + (n)) & 0x1f;}
-INLINE apexc_state *get_safe_token(const device_config *device)
+INLINE apexc_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/arm/arm.c b/src/emu/cpu/arm/arm.c
index 7e3d84373ab..1d5ecf3b324 100644
--- a/src/emu/cpu/arm/arm.c
+++ b/src/emu/cpu/arm/arm.c
@@ -234,7 +234,7 @@ typedef struct
UINT8 pendingIrq;
UINT8 pendingFiq;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
} ARM_REGS;
@@ -250,7 +250,7 @@ static void arm_check_irq_state(ARM_REGS* cpustate);
/***************************************************************************/
-INLINE ARM_REGS *get_safe_token(const device_config *device)
+INLINE ARM_REGS *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/arm7/arm7.c b/src/emu/cpu/arm7/arm7.c
index 118159ba11e..b8bab8b1ee0 100644
--- a/src/emu/cpu/arm7/arm7.c
+++ b/src/emu/cpu/arm7/arm7.c
@@ -68,7 +68,7 @@ void arm7_dt_w_callback(arm_state *cpustate, UINT32 insn, UINT32 *prn, void (*wr
#define ARM7REG(reg) cpustate->sArmRegister[reg]
#define ARM7_ICOUNT cpustate->iCount
-INLINE arm_state *get_safe_token(const device_config *device)
+INLINE arm_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/arm7/arm7core.c b/src/emu/cpu/arm7/arm7core.c
index dcb3ae7deae..953e56a1668 100644
--- a/src/emu/cpu/arm7/arm7core.c
+++ b/src/emu/cpu/arm7/arm7core.c
@@ -529,7 +529,7 @@ static int storeDec(arm_state *cpustate, UINT32 pat, UINT32 rbv)
***************************************************************************/
// CPU INIT
-static void arm7_core_init(const device_config *device, const char *cpuname)
+static void arm7_core_init(running_device *device, const char *cpuname)
{
arm_state *cpustate = get_safe_token(device);
@@ -543,7 +543,7 @@ static void arm7_core_init(const device_config *device, const char *cpuname)
}
// CPU RESET
-static void arm7_core_reset(const device_config *device)
+static void arm7_core_reset(running_device *device)
{
arm_state *cpustate = get_safe_token(device);
diff --git a/src/emu/cpu/arm7/arm7core.h b/src/emu/cpu/arm7/arm7core.h
index 1af9e0060cf..67e9b918eed 100644
--- a/src/emu/cpu/arm7/arm7core.h
+++ b/src/emu/cpu/arm7/arm7core.h
@@ -161,7 +161,7 @@ enum
UINT8 pendingSwi; \
INT32 iCount; \
cpu_irq_callback irq_callback; \
- const device_config *device; \
+ running_device *device; \
const address_space *program;
diff --git a/src/emu/cpu/asap/asap.c b/src/emu/cpu/asap/asap.c
index 06901083f78..6c5db4e551f 100644
--- a/src/emu/cpu/asap/asap.c
+++ b/src/emu/cpu/asap/asap.c
@@ -87,7 +87,7 @@ struct _asap_state
int icount;
cpu_irq_callback irq_callback;
const address_space *program;
- const device_config *device;
+ running_device *device;
/* src2val table, registers are at the end */
UINT32 src2val[65536];
@@ -268,7 +268,7 @@ static void (*const conditiontable[16])(asap_state *) =
STATE ACCESSORS
***************************************************************************/
-INLINE asap_state *get_safe_token(const device_config *device)
+INLINE asap_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/avr8/avr8.c b/src/emu/cpu/avr8/avr8.c
index 125fb4e8b22..41bbc47c001 100644
--- a/src/emu/cpu/avr8/avr8.c
+++ b/src/emu/cpu/avr8/avr8.c
@@ -26,7 +26,7 @@ struct _avr8_state
{
UINT32 pc;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -75,7 +75,7 @@ enum
#define ZREG ((READ_IO_8(cpustate, 31) << 8) | READ_IO_8(cpustate, 30))
#define SPREG ((READ_IO_8(cpustate, AVR8_IO_SPH) << 8) | READ_IO_8(cpustate, AVR8_IO_SPL))
-INLINE avr8_state *get_safe_token(const device_config *device)
+INLINE avr8_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/ccpu/ccpu.c b/src/emu/cpu/ccpu/ccpu.c
index eba6927ea82..06dd58dcc5e 100644
--- a/src/emu/cpu/ccpu/ccpu.c
+++ b/src/emu/cpu/ccpu/ccpu.c
@@ -43,14 +43,14 @@ struct _ccpu_state
int icount;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
};
-INLINE ccpu_state *get_safe_token(const device_config *device)
+INLINE ccpu_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -104,7 +104,7 @@ do { \
INITIALIZATION AND SHUTDOWN
***************************************************************************/
-static UINT8 read_jmi(const device_config *device)
+static UINT8 read_jmi(running_device *device)
{
/* this routine is called when there is no external input */
/* and the JMI jumper is present */
@@ -113,7 +113,7 @@ static UINT8 read_jmi(const device_config *device)
}
-void ccpu_wdt_timer_trigger(const device_config *device)
+void ccpu_wdt_timer_trigger(running_device *device)
{
ccpu_state *cpustate = get_safe_token(device);
cpustate->waiting = FALSE;
@@ -125,7 +125,7 @@ void ccpu_wdt_timer_trigger(const device_config *device)
static CPU_INIT( ccpu )
{
- const ccpu_config *configdata = (const ccpu_config *)device->static_config;
+ const ccpu_config *configdata = (const ccpu_config *)device->baseconfig().static_config;
ccpu_state *cpustate = get_safe_token(device);
/* copy input params */
diff --git a/src/emu/cpu/ccpu/ccpu.h b/src/emu/cpu/ccpu/ccpu.h
index 820347b874c..9ac96a48784 100644
--- a/src/emu/cpu/ccpu/ccpu.h
+++ b/src/emu/cpu/ccpu/ccpu.h
@@ -38,8 +38,8 @@ enum
CONFIG STRUCTURE
***************************************************************************/
-typedef UINT8 (*ccpu_input_func)(const device_config *device);
-typedef void (*ccpu_vector_func)(const device_config *device, INT16 sx, INT16 sy, INT16 ex, INT16 ey, UINT8 shift);
+typedef UINT8 (*ccpu_input_func)(running_device *device);
+typedef void (*ccpu_vector_func)(running_device *device, INT16 sx, INT16 sy, INT16 ex, INT16 ey, UINT8 shift);
typedef struct _ccpu_config ccpu_config;
struct _ccpu_config
@@ -57,7 +57,7 @@ struct _ccpu_config
CPU_GET_INFO( ccpu );
#define CPU_CCPU CPU_GET_INFO_NAME( ccpu )
-void ccpu_wdt_timer_trigger(const device_config *device);
+void ccpu_wdt_timer_trigger(running_device *device);
CPU_DISASSEMBLE( ccpu );
diff --git a/src/emu/cpu/cdp1802/cdp1802.c b/src/emu/cpu/cdp1802/cdp1802.c
index a02c3853a9c..6ef36478eb3 100644
--- a/src/emu/cpu/cdp1802/cdp1802.c
+++ b/src/emu/cpu/cdp1802/cdp1802.c
@@ -116,7 +116,7 @@ static const cpu_state_table state_table_template =
state_array /* array of entries */
};
-INLINE cdp1802_state *get_safe_token(const device_config *device)
+INLINE cdp1802_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -224,7 +224,7 @@ INLINE void cdp1802_long_skip(cdp1802_state *cpustate, int taken)
}
}
-static void cdp1802_sample_ef(const device_config *device)
+static void cdp1802_sample_ef(running_device *device)
{
cdp1802_state *cpustate = get_safe_token(device);
@@ -238,7 +238,7 @@ static void cdp1802_sample_ef(const device_config *device)
}
}
-static void cdp1802_output_state_code(const device_config *device)
+static void cdp1802_output_state_code(running_device *device)
{
cdp1802_state *cpustate = get_safe_token(device);
@@ -276,7 +276,7 @@ static void cdp1802_output_state_code(const device_config *device)
}
}
-static void cdp1802_run(const device_config *device)
+static void cdp1802_run(running_device *device)
{
cdp1802_state *cpustate = get_safe_token(device);
@@ -965,7 +965,7 @@ static CPU_INIT( cdp1802 )
cdp1802_state *cpustate = get_safe_token(device);
int i;
- cpustate->intf = (cdp1802_interface *) device->static_config;
+ cpustate->intf = (cdp1802_interface *) device->baseconfig().static_config;
/* resolve callbacks */
devcb_resolve_write_line(&cpustate->out_q_func, &cpustate->intf->out_q_func, device);
diff --git a/src/emu/cpu/cdp1802/cdp1802.h b/src/emu/cpu/cdp1802/cdp1802.h
index 58237556799..133191e75d7 100644
--- a/src/emu/cpu/cdp1802/cdp1802.h
+++ b/src/emu/cpu/cdp1802/cdp1802.h
@@ -59,14 +59,14 @@ enum
CDP1802_GENPC = REG_GENPC
};
-typedef cdp1802_control_mode (*cdp1802_mode_read_func)(const device_config *device);
-#define CDP1802_MODE_READ(name) cdp1802_control_mode name(const device_config *device)
+typedef cdp1802_control_mode (*cdp1802_mode_read_func)(running_device *device);
+#define CDP1802_MODE_READ(name) cdp1802_control_mode name(running_device *device)
-typedef UINT8 (*cdp1802_ef_read_func)(const device_config *device);
-#define CDP1802_EF_READ(name) UINT8 name(const device_config *device)
+typedef UINT8 (*cdp1802_ef_read_func)(running_device *device);
+#define CDP1802_EF_READ(name) UINT8 name(running_device *device)
-typedef void (*cdp1802_sc_write_func)(const device_config *device, cdp1802_state_code state, int sc0, int sc1);
-#define CDP1802_SC_WRITE(name) void name(const device_config *device, cdp1802_state_code state, int sc0, int sc1)
+typedef void (*cdp1802_sc_write_func)(running_device *device, cdp1802_state_code state, int sc0, int sc1);
+#define CDP1802_SC_WRITE(name) void name(running_device *device, cdp1802_state_code state, int sc0, int sc1)
/* interface */
typedef struct _cdp1802_interface cdp1802_interface;
diff --git a/src/emu/cpu/cop400/cop400.c b/src/emu/cpu/cop400/cop400.c
index 96088d2d2fd..51c900fac61 100644
--- a/src/emu/cpu/cop400/cop400.c
+++ b/src/emu/cpu/cop400/cop400.c
@@ -253,7 +253,7 @@ static const cpu_state_table state_table_template =
INLINE FUNCTIONS
***************************************************************************/
-INLINE cop400_state *get_safe_token(const device_config *device)
+INLINE cop400_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -878,11 +878,11 @@ static TIMER_CALLBACK( microbus_tick )
INITIALIZATION
***************************************************************************/
-static void cop400_init(const device_config *device, UINT8 g_mask, UINT8 d_mask, UINT8 in_mask, int has_counter, int has_inil)
+static void cop400_init(running_device *device, UINT8 g_mask, UINT8 d_mask, UINT8 in_mask, int has_counter, int has_inil)
{
cop400_state *cpustate = get_safe_token(device);
- cpustate->intf = (cop400_interface *) device->static_config;
+ cpustate->intf = (cop400_interface *) device->baseconfig().static_config;
/* find address spaces */
@@ -955,7 +955,7 @@ static void cop400_init(const device_config *device, UINT8 g_mask, UINT8 d_mask,
state_save_register_device_item(device, 0, cpustate->idle);
}
-static void cop410_init_opcodes(const device_config *device)
+static void cop410_init_opcodes(running_device *device)
{
cop400_state *cpustate = get_safe_token(device);
int i;
@@ -986,7 +986,7 @@ static void cop410_init_opcodes(const device_config *device)
cpustate->opcode_map = COP410_OPCODE_MAP;
}
-static void cop420_init_opcodes(const device_config *device)
+static void cop420_init_opcodes(running_device *device)
{
cop400_state *cpustate = get_safe_token(device);
int i;
@@ -1021,7 +1021,7 @@ static void cop420_init_opcodes(const device_config *device)
cpustate->opcode_map = COP420_OPCODE_MAP;
}
-static void cop444_init_opcodes(const device_config *device)
+static void cop444_init_opcodes(running_device *device)
{
cop400_state *cpustate = get_safe_token(device);
int i;
@@ -1355,7 +1355,7 @@ static CPU_SET_INFO( cop400 )
static CPU_GET_INFO( cop400 )
{
cop400_state *cpustate = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL;
- cop400_interface *intf = (device != NULL && device->static_config != NULL) ? (cop400_interface *)device->static_config : NULL;
+ cop400_interface *intf = (devconfig->static_config != NULL) ? (cop400_interface *)devconfig->static_config : NULL;
switch (state)
{
diff --git a/src/emu/cpu/cp1610/cp1610.c b/src/emu/cpu/cp1610/cp1610.c
index 3ccf5634886..bcb2b9906e0 100644
--- a/src/emu/cpu/cp1610/cp1610.c
+++ b/src/emu/cpu/cp1610/cp1610.c
@@ -46,12 +46,12 @@ struct _cp1610_state
int intr_pending;
int intrm_pending;
int mask_interrupts;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE cp1610_state *get_safe_token(const device_config *device)
+INLINE cp1610_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.c b/src/emu/cpu/cubeqcpu/cubeqcpu.c
index 7a1776ca73e..688880d7a3a 100644
--- a/src/emu/cpu/cubeqcpu/cubeqcpu.c
+++ b/src/emu/cpu/cubeqcpu/cubeqcpu.c
@@ -97,7 +97,7 @@ typedef struct
cubeqst_dac_w_func dac_w;
UINT16 *sound_data;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
} cquestsnd_state;
@@ -137,8 +137,8 @@ typedef struct
UINT8 rc;
UINT8 clkcnt;
- const device_config *device;
- const device_config *lindevice;
+ running_device *device;
+ running_device *lindevice;
const address_space *program;
int icount;
} cquestrot_state;
@@ -183,8 +183,8 @@ typedef struct
UINT32 *e_stack;
UINT32 *o_stack;
- const device_config *device;
- const device_config *rotdevice;
+ running_device *device;
+ running_device *rotdevice;
const address_space *program;
int icount;
} cquestlin_state;
@@ -193,7 +193,7 @@ typedef struct
STATE ACCESSORS
***************************************************************************/
-INLINE cquestsnd_state *get_safe_token_snd(const device_config *device)
+INLINE cquestsnd_state *get_safe_token_snd(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -202,7 +202,7 @@ INLINE cquestsnd_state *get_safe_token_snd(const device_config *device)
return (cquestsnd_state *)device->token;
}
-INLINE cquestrot_state *get_safe_token_rot(const device_config *device)
+INLINE cquestrot_state *get_safe_token_rot(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -211,7 +211,7 @@ INLINE cquestrot_state *get_safe_token_rot(const device_config *device)
return (cquestrot_state *)device->token;
}
-INLINE cquestlin_state *get_safe_token_lin(const device_config *device)
+INLINE cquestlin_state *get_safe_token_lin(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -258,7 +258,7 @@ static STATE_POSTLOAD( cquestsnd_postload )
}
-static void cquestsnd_state_register(const device_config *device)
+static void cquestsnd_state_register(running_device *device)
{
cquestsnd_state *cpustate = get_safe_token_snd(device);
state_save_register_device_item_array(device, 0, cpustate->ram);
@@ -284,7 +284,7 @@ static void cquestsnd_state_register(const device_config *device)
static CPU_INIT( cquestsnd )
{
cquestsnd_state *cpustate = get_safe_token_snd(device);
- cubeqst_snd_config* _config = (cubeqst_snd_config*)device->static_config;
+ cubeqst_snd_config* _config = (cubeqst_snd_config*)device->baseconfig().static_config;
memset(cpustate, 0, sizeof(*cpustate));
@@ -322,7 +322,7 @@ static STATE_POSTLOAD( cquestrot_postload )
}
-static void cquestrot_state_register(const device_config *device)
+static void cquestrot_state_register(running_device *device)
{
cquestrot_state *cpustate = get_safe_token_rot(device);
state_save_register_device_item_array(device, 0, cpustate->ram);
@@ -356,7 +356,7 @@ static void cquestrot_state_register(const device_config *device)
static CPU_INIT( cquestrot )
{
- const cubeqst_rot_config *rotconfig = (const cubeqst_rot_config *)device->static_config;
+ const cubeqst_rot_config *rotconfig = (const cubeqst_rot_config *)device->baseconfig().static_config;
cquestrot_state *cpustate = get_safe_token_rot(device);
memset(cpustate, 0, sizeof(*cpustate));
@@ -400,7 +400,7 @@ static STATE_POSTLOAD( cquestlin_postload )
}
-static void cquestlin_state_register(const device_config *device)
+static void cquestlin_state_register(running_device *device)
{
cquestlin_state *cpustate = get_safe_token_lin(device);
@@ -439,7 +439,7 @@ static void cquestlin_state_register(const device_config *device)
static CPU_INIT( cquestlin )
{
- const cubeqst_lin_config *linconfig = (const cubeqst_lin_config *)device->static_config;
+ const cubeqst_lin_config *linconfig = (const cubeqst_lin_config *)device->baseconfig().static_config;
cquestlin_state *cpustate = get_safe_token_lin(device);
memset(cpustate, 0, sizeof(*cpustate));
@@ -1150,26 +1150,26 @@ INLINE int do_linjmp(cquestlin_state *cpustate, int jmp)
-void cubeqcpu_swap_line_banks(const device_config *device)
+void cubeqcpu_swap_line_banks(running_device *device)
{
cquestlin_state *cpustate = get_safe_token_lin(device);
cpustate->field = cpustate->field ^ 1;
}
-void cubeqcpu_clear_stack(const device_config *device)
+void cubeqcpu_clear_stack(running_device *device)
{
cquestlin_state *cpustate = get_safe_token_lin(device);
memset(&cpustate->ptr_ram[cpustate->field * 256], 0, 256);
}
-UINT8 cubeqcpu_get_ptr_ram_val(const device_config *device, int i)
+UINT8 cubeqcpu_get_ptr_ram_val(running_device *device, int i)
{
cquestlin_state *cpustate = get_safe_token_lin(device);
return cpustate->ptr_ram[(VISIBLE_FIELD * 256) + i];
}
-UINT32* cubeqcpu_get_stack_ram(const device_config *device)
+UINT32* cubeqcpu_get_stack_ram(running_device *device)
{
cquestlin_state *cpustate = get_safe_token_lin(device);
if (VISIBLE_FIELD == ODD_FIELD)
diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.h b/src/emu/cpu/cubeqcpu/cubeqcpu.h
index 0aec41a4edc..328d2f7a665 100644
--- a/src/emu/cpu/cubeqcpu/cubeqcpu.h
+++ b/src/emu/cpu/cubeqcpu/cubeqcpu.h
@@ -116,7 +116,7 @@ enum
CONFIGURATION STRUCTURE
***************************************************************************/
-typedef void (*cubeqst_dac_w_func)(const device_config *, UINT16);
+typedef void (*cubeqst_dac_w_func)(running_device *, UINT16);
typedef struct _cubeqst_snd_config cubeqst_snd_config;
struct _cubeqst_snd_config
@@ -148,11 +148,11 @@ extern WRITE16_DEVICE_HANDLER( cubeqcpu_sndram_w );
extern READ16_DEVICE_HANDLER( cubeqcpu_rotram_r );
extern WRITE16_DEVICE_HANDLER( cubeqcpu_rotram_w );
-void cubeqcpu_swap_line_banks(const device_config *device);
+void cubeqcpu_swap_line_banks(running_device *device);
-void cubeqcpu_clear_stack(const device_config *device);
-UINT8 cubeqcpu_get_ptr_ram_val(const device_config *device, int i);
-UINT32* cubeqcpu_get_stack_ram(const device_config *device);
+void cubeqcpu_clear_stack(running_device *device);
+UINT8 cubeqcpu_get_ptr_ram_val(running_device *device, int i);
+UINT32* cubeqcpu_get_stack_ram(running_device *device);
CPU_GET_INFO( cquestsnd );
CPU_GET_INFO( cquestrot );
diff --git a/src/emu/cpu/drcbec.c b/src/emu/cpu/drcbec.c
index 99fd03bea48..cfae7a70918 100644
--- a/src/emu/cpu/drcbec.c
+++ b/src/emu/cpu/drcbec.c
@@ -212,7 +212,7 @@ enum
/* internal backend-specific state */
struct _drcbe_state
{
- const device_config * device; /* CPU device we are associated with */
+ running_device * device; /* CPU device we are associated with */
const address_space * space[ADDRESS_SPACES]; /* pointers to CPU's address space */
drcuml_state * drcuml; /* pointer back to our owner */
drccache * cache; /* pointer to the cache */
@@ -254,7 +254,7 @@ union _drcbec_instruction
***************************************************************************/
/* primary back-end callbacks */
-static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits);
+static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits);
static void drcbec_free(drcbe_state *drcbe);
static void drcbec_reset(drcbe_state *drcbe);
static int drcbec_execute(drcbe_state *state, drcuml_codehandle *entry);
@@ -340,7 +340,7 @@ extern const drcbe_interface drcbe_c_be_interface =
state
-------------------------------------------------*/
-static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits)
+static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits)
{
int spacenum;
diff --git a/src/emu/cpu/drcbex64.c b/src/emu/cpu/drcbex64.c
index c301d2d8651..cd9c97524a4 100644
--- a/src/emu/cpu/drcbex64.c
+++ b/src/emu/cpu/drcbex64.c
@@ -262,7 +262,7 @@ struct _opcode_table_entry
/* internal backend-specific state */
struct _drcbe_state
{
- const device_config * device; /* CPU device we are associated with */
+ running_device * device; /* CPU device we are associated with */
drcuml_state * drcuml; /* pointer back to our owner */
drccache * cache; /* pointer to the cache */
drcuml_machine_state state; /* state of the machine */
@@ -306,7 +306,7 @@ struct _drcbe_state
***************************************************************************/
/* primary back-end callbacks */
-static drcbe_state *drcbex64_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits);
+static drcbe_state *drcbex64_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits);
static void drcbex64_free(drcbe_state *drcbe);
static void drcbex64_reset(drcbe_state *drcbe);
static int drcbex64_execute(drcbe_state *drcbe, drcuml_codehandle *entry);
@@ -685,7 +685,7 @@ INLINE void emit_smart_call_m64(drcbe_state *drcbe, x86code **dst, x86code **tar
state
-------------------------------------------------*/
-static drcbe_state *drcbex64_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits)
+static drcbe_state *drcbex64_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits)
{
/* SSE control register mapping */
static const UINT32 sse_control[4] =
diff --git a/src/emu/cpu/drcbex86.c b/src/emu/cpu/drcbex86.c
index b815b3a038f..ebc75a6282b 100644
--- a/src/emu/cpu/drcbex86.c
+++ b/src/emu/cpu/drcbex86.c
@@ -154,7 +154,7 @@ struct _opcode_table_entry
/* internal backend-specific state */
struct _drcbe_state
{
- const device_config * device; /* CPU device we are associated with */
+ running_device * device; /* CPU device we are associated with */
drcuml_state * drcuml; /* pointer back to our owner */
drccache * cache; /* pointer to the cache */
drcuml_machine_state state; /* state of the machine */
@@ -200,7 +200,7 @@ struct _drcbe_state
***************************************************************************/
/* primary back-end callbacks */
-static drcbe_state *drcbex86_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits);
+static drcbe_state *drcbex86_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits);
static void drcbex86_free(drcbe_state *drcbe);
static void drcbex86_reset(drcbe_state *drcbe);
static int drcbex86_execute(drcbe_state *drcbe, drcuml_codehandle *entry);
@@ -613,7 +613,7 @@ INLINE void track_resolve_link(drcbe_state *drcbe, x86code **destptr, const emit
state
-------------------------------------------------*/
-static drcbe_state *drcbex86_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits)
+static drcbe_state *drcbex86_alloc(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits)
{
int opnum, regnum, entry, spacenum;
drcbe_state *drcbe;
diff --git a/src/emu/cpu/drcfe.c b/src/emu/cpu/drcfe.c
index e8e7493f3dd..f1ab974d6bd 100644
--- a/src/emu/cpu/drcfe.c
+++ b/src/emu/cpu/drcfe.c
@@ -54,7 +54,7 @@ struct _drcfe_state
void * param; /* parameter for the callback */
/* CPU parameters */
- const device_config *device; /* CPU device object */
+ running_device *device; /* CPU device object */
const address_space *program; /* program address space for this CPU */
offs_t pageshift; /* shift to convert address to a page index */
cpu_translate_func translate; /* pointer to translation function */
@@ -121,7 +121,7 @@ INLINE void desc_free(drcfe_state *drcfe, opcode_desc *desc)
drcfe_init - initializate the drcfe state
-------------------------------------------------*/
-drcfe_state *drcfe_init(const device_config *cpu, const drcfe_config *config, void *param)
+drcfe_state *drcfe_init(running_device *cpu, const drcfe_config *config, void *param)
{
drcfe_state *drcfe;
@@ -142,7 +142,7 @@ drcfe_state *drcfe_init(const device_config *cpu, const drcfe_config *config, vo
drcfe->device = cpu;
drcfe->program = cpu->space(AS_PROGRAM);
drcfe->pageshift = cpu_get_page_shift(cpu, ADDRESS_SPACE_PROGRAM);
- drcfe->translate = (cpu_translate_func)device_get_info_fct(cpu, CPUINFO_FCT_TRANSLATE);
+ drcfe->translate = (cpu_translate_func)cpu->get_config_fct(CPUINFO_FCT_TRANSLATE);
return drcfe;
}
diff --git a/src/emu/cpu/drcfe.h b/src/emu/cpu/drcfe.h
index ac7231e6042..6510ebf6675 100644
--- a/src/emu/cpu/drcfe.h
+++ b/src/emu/cpu/drcfe.h
@@ -149,7 +149,7 @@ struct _drcfe_config
***************************************************************************/
/* initializate the drcfe state */
-drcfe_state *drcfe_init(const device_config *cpu, const drcfe_config *config, void *param);
+drcfe_state *drcfe_init(running_device *cpu, const drcfe_config *config, void *param);
/* clean up after ourselves */
void drcfe_exit(drcfe_state *drcfe);
diff --git a/src/emu/cpu/drcuml.c b/src/emu/cpu/drcuml.c
index 9ab8b2870ff..ca466e16371 100644
--- a/src/emu/cpu/drcuml.c
+++ b/src/emu/cpu/drcuml.c
@@ -135,7 +135,7 @@ struct _drcuml_symbol
/* structure describing UML generation state */
struct _drcuml_state
{
- const device_config * device; /* CPU device we are associated with */
+ running_device * device; /* CPU device we are associated with */
drccache * cache; /* pointer to the codegen cache */
drcuml_block * blocklist; /* list of active blocks */
const drcbe_interface * beintf; /* backend interface pointer */
@@ -538,7 +538,7 @@ INLINE void convert_to_mov_param(drcuml_instruction *inst, int pnum)
generator and initialize the back-end
-------------------------------------------------*/
-drcuml_state *drcuml_alloc(const device_config *device, drccache *cache, UINT32 flags, int modes, int addrbits, int ignorebits)
+drcuml_state *drcuml_alloc(running_device *device, drccache *cache, UINT32 flags, int modes, int addrbits, int ignorebits)
{
drcuml_state *drcuml;
int opnum;
diff --git a/src/emu/cpu/drcuml.h b/src/emu/cpu/drcuml.h
index b0c40727d63..6223d2f1252 100644
--- a/src/emu/cpu/drcuml.h
+++ b/src/emu/cpu/drcuml.h
@@ -417,7 +417,7 @@ struct _drcbe_info
/* typedefs for back-end callback functions */
-typedef drcbe_state *(*drcbe_alloc_func)(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits);
+typedef drcbe_state *(*drcbe_alloc_func)(drcuml_state *drcuml, drccache *cache, running_device *device, UINT32 flags, int modes, int addrbits, int ignorebits);
typedef void (*drcbe_free_func)(drcbe_state *state);
typedef void (*drcbe_reset_func)(drcbe_state *state);
typedef int (*drcbe_execute_func)(drcbe_state *state, drcuml_codehandle *entry);
@@ -448,7 +448,7 @@ struct _drcbe_interface
/* ----- initialization/teardown ----- */
/* allocate state for the code generator and initialize the back-end */
-drcuml_state *drcuml_alloc(const device_config *device, drccache *cache, UINT32 flags, int modes, int addrbits, int ignorebits);
+drcuml_state *drcuml_alloc(running_device *device, drccache *cache, UINT32 flags, int modes, int addrbits, int ignorebits);
/* return information about the back-end */
void drcuml_get_backend_info(drcuml_state *drcuml, drcbe_info *info);
diff --git a/src/emu/cpu/dsp32/dsp32.c b/src/emu/cpu/dsp32/dsp32.c
index ba6769e77ab..3bee3b5cdfe 100644
--- a/src/emu/cpu/dsp32/dsp32.c
+++ b/src/emu/cpu/dsp32/dsp32.c
@@ -183,8 +183,8 @@ struct _dsp32_state
int icount;
UINT8 lastpins;
UINT32 ppc;
- void (*output_pins_changed)(const device_config *device, UINT32 pins);
- const device_config *device;
+ void (*output_pins_changed)(running_device *device, UINT32 pins);
+ running_device *device;
const address_space *program;
};
@@ -202,7 +202,7 @@ static CPU_RESET( dsp32c );
STATE ACCESSORS
***************************************************************************/
-INLINE dsp32_state *get_safe_token(const device_config *device)
+INLINE dsp32_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -313,7 +313,7 @@ static void update_pcr(dsp32_state *cpustate, UINT16 newval)
static CPU_INIT( dsp32c )
{
- const dsp32_config *configdata = (const dsp32_config *)device->static_config;
+ const dsp32_config *configdata = (const dsp32_config *)device->baseconfig().static_config;
dsp32_state *cpustate = get_safe_token(device);
/* copy in config data */
@@ -499,7 +499,7 @@ INLINE void dma_store(dsp32_state *cpustate)
}
-void dsp32c_pio_w(const device_config *device, int reg, int data)
+void dsp32c_pio_w(running_device *device, int reg, int data)
{
dsp32_state *cpustate = get_safe_token(device);
UINT16 mask;
@@ -578,7 +578,7 @@ void dsp32c_pio_w(const device_config *device, int reg, int data)
PARALLEL INTERFACE READS
***************************************************************************/
-int dsp32c_pio_r(const device_config *device, int reg)
+int dsp32c_pio_r(running_device *device, int reg)
{
dsp32_state *cpustate = get_safe_token(device);
UINT16 mask, result = 0xffff;
diff --git a/src/emu/cpu/dsp32/dsp32.h b/src/emu/cpu/dsp32/dsp32.h
index fe633bb0a68..b3f324123ab 100644
--- a/src/emu/cpu/dsp32/dsp32.h
+++ b/src/emu/cpu/dsp32/dsp32.h
@@ -67,7 +67,7 @@ enum
typedef struct _dsp32_config dsp32_config;
struct _dsp32_config
{
- void (*output_pins_changed)(const device_config *device, UINT32 pins); /* a change has occurred on an output pin */
+ void (*output_pins_changed)(running_device *device, UINT32 pins); /* a change has occurred on an output pin */
};
@@ -79,7 +79,7 @@ struct _dsp32_config
extern CPU_GET_INFO( dsp32c );
#define CPU_DSP32C CPU_GET_INFO_NAME( dsp32c )
-extern void dsp32c_pio_w(const device_config *device, int reg, int data);
-extern int dsp32c_pio_r(const device_config *device, int reg);
+extern void dsp32c_pio_w(running_device *device, int reg, int data);
+extern int dsp32c_pio_r(running_device *device, int reg);
#endif /* __DSP32_H__ */
diff --git a/src/emu/cpu/dsp56k/dsp56def.h b/src/emu/cpu/dsp56k/dsp56def.h
index 8090271eab3..899e94d6f5a 100644
--- a/src/emu/cpu/dsp56k/dsp56def.h
+++ b/src/emu/cpu/dsp56k/dsp56def.h
@@ -412,7 +412,7 @@ static void PCDDR_set(dsp56k_core* cpustate, UINT16 value);
static void PCD_set(dsp56k_core* cpustate, UINT16 value);
-INLINE dsp56k_core *get_safe_token(const device_config *device)
+INLINE dsp56k_core *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/dsp56k/dsp56k.c b/src/emu/cpu/dsp56k/dsp56k.c
index f68f9b7bb80..ca60e6ee71c 100644
--- a/src/emu/cpu/dsp56k/dsp56k.c
+++ b/src/emu/cpu/dsp56k/dsp56k.c
@@ -165,7 +165,7 @@ static void set_irq_line(dsp56k_core* cpustate, int irqline, int state)
/***************************************************************************
INITIALIZATION AND SHUTDOWN
***************************************************************************/
-static void agu_init(dsp56k_core* cpustate, const device_config *device)
+static void agu_init(dsp56k_core* cpustate, running_device *device)
{
/* save states - dsp56k_agu members */
state_save_register_device_item(device, 0, cpustate->AGU.r0);
@@ -183,7 +183,7 @@ static void agu_init(dsp56k_core* cpustate, const device_config *device)
state_save_register_device_item(device, 0, cpustate->AGU.temp);
}
-static void alu_init(dsp56k_core* cpustate, const device_config *device)
+static void alu_init(dsp56k_core* cpustate, running_device *device)
{
/* save states - dsp56k_alu members */
state_save_register_device_item(device, 0, cpustate->ALU.x);
@@ -232,7 +232,7 @@ static CPU_INIT( dsp56k )
state_save_register_device_item(device, 0, cpustate->HI.trxl);
state_save_register_device_item(device, 0, cpustate->HI.bootstrap_offset);
- //cpustate->config = device->static_config;
+ //cpustate->config = device->baseconfig().static_config;
//cpustate->irq_callback = irqcallback;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
diff --git a/src/emu/cpu/dsp56k/dsp56k.h b/src/emu/cpu/dsp56k/dsp56k.h
index 41d10458ade..3a7ed889caa 100644
--- a/src/emu/cpu/dsp56k/dsp56k.h
+++ b/src/emu/cpu/dsp56k/dsp56k.h
@@ -232,7 +232,7 @@ typedef struct
UINT32 op;
int interrupt_cycles;
void (*output_pins_changed)(UINT32 pins);
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
} dsp56k_core;
@@ -241,9 +241,9 @@ typedef struct
/***************************************************************************
PUBLIC FUNCTIONS - ACCESSIBLE TO DRIVERS
***************************************************************************/
-void dsp56k_host_interface_write(const device_config* device, UINT8 offset, UINT8 data);
-UINT8 dsp56k_host_interface_read(const device_config* device, UINT8 offset);
+void dsp56k_host_interface_write(running_device* device, UINT8 offset, UINT8 data);
+UINT8 dsp56k_host_interface_read(running_device* device, UINT8 offset);
-UINT16 dsp56k_get_peripheral_memory(const device_config* device, UINT16 addr);
+UINT16 dsp56k_get_peripheral_memory(running_device* device, UINT16 addr);
#endif /* __DSP56K_H__ */
diff --git a/src/emu/cpu/dsp56k/dsp56mem.c b/src/emu/cpu/dsp56k/dsp56mem.c
index c702ff107c2..a8ef6455611 100644
--- a/src/emu/cpu/dsp56k/dsp56mem.c
+++ b/src/emu/cpu/dsp56k/dsp56mem.c
@@ -610,7 +610,7 @@ static void dsp56k_host_interface_reset(dsp56k_core* cpustate)
/* These two functions are exposed to the outside world */
/* They represent the host side of the dsp56k's host interface */
-void dsp56k_host_interface_write(const device_config* device, UINT8 offset, UINT8 data)
+void dsp56k_host_interface_write(running_device* device, UINT8 offset, UINT8 data)
{
dsp56k_core* cpustate = get_safe_token(device);
@@ -706,7 +706,7 @@ void dsp56k_host_interface_write(const device_config* device, UINT8 offset, UINT
}
}
-UINT8 dsp56k_host_interface_read(const device_config* device, UINT8 offset)
+UINT8 dsp56k_host_interface_read(running_device* device, UINT8 offset)
{
dsp56k_core* cpustate = get_safe_token(device);
@@ -934,7 +934,7 @@ static void dsp56k_io_reset(dsp56k_core* cpustate)
/* MISC*/
-UINT16 dsp56k_get_peripheral_memory(const device_config* device, UINT16 addr)
+UINT16 dsp56k_get_peripheral_memory(running_device* device, UINT16 addr)
{
// TODO // THIS COMES BACK dsp56k_core* cpustate = get_safe_token(device);
return dsp56k_peripheral_ram[A2O(addr)];
diff --git a/src/emu/cpu/dsp56k/dsp56pcu.c b/src/emu/cpu/dsp56k/dsp56pcu.c
index 99be2e73379..48011b35042 100644
--- a/src/emu/cpu/dsp56k/dsp56pcu.c
+++ b/src/emu/cpu/dsp56k/dsp56pcu.c
@@ -90,7 +90,7 @@ static UINT8 SE_bit(dsp56k_core* cpustate) { return ((SP & 0x0010) != 0); }
/***************************************************************************
INITIALIZATION AND RESET
***************************************************************************/
-static void pcu_init(dsp56k_core* cpustate, const device_config *device)
+static void pcu_init(dsp56k_core* cpustate, running_device *device)
{
/* Init the irq table */
dsp56k_irq_table_init();
diff --git a/src/emu/cpu/e132xs/e132xs.c b/src/emu/cpu/e132xs/e132xs.c
index ae8f85029fa..cf774e56719 100644
--- a/src/emu/cpu/e132xs/e132xs.c
+++ b/src/emu/cpu/e132xs/e132xs.c
@@ -319,7 +319,7 @@ struct _hyperstone_state
struct _delay delay;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
UINT32 opcodexor;
@@ -413,7 +413,7 @@ static ADDRESS_MAP_START( e132_16k_iram_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_END
-INLINE hyperstone_state *get_safe_token(const device_config *device)
+INLINE hyperstone_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -638,7 +638,7 @@ static void adjust_timer_interrupt(hyperstone_state *cpustate)
static TIMER_CALLBACK( e132xs_timer_callback )
{
- const device_config *device = (const device_config *)ptr;
+ running_device *device = (running_device *)ptr;
hyperstone_state *cpustate = get_safe_token(device);
int update = param;
@@ -1528,7 +1528,7 @@ static void set_irq_line(hyperstone_state *cpustate, int irqline, int state)
ISR &= ~(1 << irqline);
}
-static void hyperstone_init(const device_config *device, cpu_irq_callback irqcallback, int scale_mask)
+static void hyperstone_init(running_device *device, cpu_irq_callback irqcallback, int scale_mask)
{
hyperstone_state *cpustate = get_safe_token(device);
@@ -1550,7 +1550,7 @@ static void hyperstone_init(const device_config *device, cpu_irq_callback irqcal
cpustate->clock_scale_mask = scale_mask;
}
-static void e116_init(const device_config *device, cpu_irq_callback irqcallback, int scale_mask)
+static void e116_init(running_device *device, cpu_irq_callback irqcallback, int scale_mask)
{
hyperstone_state *cpustate = get_safe_token(device);
hyperstone_init(device, irqcallback, scale_mask);
@@ -1587,7 +1587,7 @@ static CPU_INIT( gms30c2216 )
e116_init(device, irqcallback, 0);
}
-static void e132_init(const device_config *device, cpu_irq_callback irqcallback, int scale_mask)
+static void e132_init(running_device *device, cpu_irq_callback irqcallback, int scale_mask)
{
hyperstone_state *cpustate = get_safe_token(device);
hyperstone_init(device, irqcallback, scale_mask);
diff --git a/src/emu/cpu/esrip/esrip.c b/src/emu/cpu/esrip/esrip.c
index f542646cb9f..7c1142cef4e 100644
--- a/src/emu/cpu/esrip/esrip.c
+++ b/src/emu/cpu/esrip/esrip.c
@@ -109,7 +109,7 @@ typedef struct
UINT16 *ipt_ram;
UINT8 *lbrm;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
@@ -120,7 +120,7 @@ typedef struct
} esrip_state;
-INLINE esrip_state *get_safe_token(const device_config *device)
+INLINE esrip_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -134,7 +134,7 @@ INLINE esrip_state *get_safe_token(const device_config *device)
PUBLIC FUNCTIONS
***************************************************************************/
-UINT8 get_rip_status(const device_config *cpu)
+UINT8 get_rip_status(running_device *cpu)
{
esrip_state *cpustate = get_safe_token(cpu);
return cpustate->status_out;
@@ -250,7 +250,7 @@ static void make_ops(esrip_state *cpustate)
static CPU_INIT( esrip )
{
esrip_state *cpustate = get_safe_token(device);
- esrip_config* _config = (esrip_config*)device->static_config;
+ esrip_config* _config = (esrip_config*)device->baseconfig().static_config;
memset(cpustate, 0, sizeof(cpustate));
@@ -1891,7 +1891,7 @@ static CPU_SET_INFO( esrip )
CPU_GET_INFO( esrip )
{
- esrip_state *cpustate = (device->token != NULL) ? get_safe_token(device) : NULL;
+ esrip_state *cpustate = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL;
switch (state)
{
diff --git a/src/emu/cpu/esrip/esrip.h b/src/emu/cpu/esrip/esrip.h
index 70826681261..b3d16adf9c0 100644
--- a/src/emu/cpu/esrip/esrip.h
+++ b/src/emu/cpu/esrip/esrip.h
@@ -98,6 +98,6 @@ CPU_GET_INFO( esrip );
#define CPU_ESRIP CPU_GET_INFO_NAME( esrip )
-extern UINT8 get_rip_status(const device_config *cpu);
+extern UINT8 get_rip_status(running_device *cpu);
#endif /* _ESRIP_H */
diff --git a/src/emu/cpu/f8/f8.c b/src/emu/cpu/f8/f8.c
index 93bf5fe0515..552d93e9a3b 100644
--- a/src/emu/cpu/f8/f8.c
+++ b/src/emu/cpu/f8/f8.c
@@ -53,7 +53,7 @@ struct _f8_Regs
UINT16 io; /* last I/O address */
UINT16 irq_vector;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *iospace;
int icount;
@@ -61,7 +61,7 @@ struct _f8_Regs
int irq_request;
};
-INLINE f8_Regs *get_safe_token(const device_config *device)
+INLINE f8_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/g65816/g65816.c b/src/emu/cpu/g65816/g65816.c
index 63f8eeab742..7076033c8de 100644
--- a/src/emu/cpu/g65816/g65816.c
+++ b/src/emu/cpu/g65816/g65816.c
@@ -91,7 +91,7 @@ TODO general:
#include "emu.h"
#include "g65816.h"
-INLINE g65816i_cpu_struct *get_safe_token(const device_config *device)
+INLINE g65816i_cpu_struct *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -402,7 +402,7 @@ static CPU_SET_INFO( g65816 )
-void g65816_set_read_vector_callback(const device_config *device, read8_space_func read_vector)
+void g65816_set_read_vector_callback(running_device *device, read8_space_func read_vector)
{
g65816i_cpu_struct *cpustate = get_safe_token(device);
READ_VECTOR = read_vector;
diff --git a/src/emu/cpu/g65816/g65816.h b/src/emu/cpu/g65816/g65816.h
index afb34596676..f1fd60acccd 100644
--- a/src/emu/cpu/g65816/g65816.h
+++ b/src/emu/cpu/g65816/g65816.h
@@ -60,7 +60,7 @@ enum
CPU_GET_INFO( g65816 );
#define CPU_G65816 CPU_GET_INFO_NAME( g65816 )
-void g65816_set_read_vector_callback(const device_config *device, read8_space_func read_vector);
+void g65816_set_read_vector_callback(running_device *device, read8_space_func read_vector);
/* ======================================================================== */
diff --git a/src/emu/cpu/g65816/g65816cm.h b/src/emu/cpu/g65816/g65816cm.h
index bf34cf1b20c..ef6cd9e12f9 100644
--- a/src/emu/cpu/g65816/g65816cm.h
+++ b/src/emu/cpu/g65816/g65816cm.h
@@ -94,7 +94,7 @@ struct _g65816i_cpu_struct
uint ir; /* Instruction Register */
uint irq_delay; /* delay 1 instruction before checking irq */
cpu_irq_callback int_ack; /* Interrupt Acknowledge */
- const device_config *device;
+ running_device *device;
const address_space *program;
read8_space_func read_vector; /* Read vector override */
uint stopped; /* Sets how the CPU is stopped */
diff --git a/src/emu/cpu/h6280/h6280.c b/src/emu/cpu/h6280/h6280.c
index 76806dbfe64..896bf36a5d5 100644
--- a/src/emu/cpu/h6280/h6280.c
+++ b/src/emu/cpu/h6280/h6280.c
@@ -117,7 +117,7 @@ static void set_irq_line(h6280_Regs* cpustate, int irqline, int state);
/* include the macros */
#include "h6280ops.h"
-INLINE h6280_Regs *get_safe_token(const device_config *device)
+INLINE h6280_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -363,12 +363,12 @@ static CPU_TRANSLATE( h6280 )
return TRUE;
}
-UINT8 h6280io_get_buffer(const device_config *device)
+UINT8 h6280io_get_buffer(running_device *device)
{
h6280_Regs* cpustate = get_safe_token(device);
return cpustate->io_buffer;
}
-void h6280io_set_buffer(const device_config *device, UINT8 data)
+void h6280io_set_buffer(running_device *device, UINT8 data)
{
h6280_Regs* cpustate = get_safe_token(device);
cpustate->io_buffer=data;
diff --git a/src/emu/cpu/h6280/h6280.h b/src/emu/cpu/h6280/h6280.h
index 8fc4068ea6f..6f5e57dc23a 100644
--- a/src/emu/cpu/h6280/h6280.h
+++ b/src/emu/cpu/h6280/h6280.h
@@ -61,7 +61,7 @@ typedef struct
UINT8 irq_state[3];
UINT8 irq_pending;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
@@ -83,8 +83,8 @@ READ8_HANDLER( h6280_timer_r );
WRITE8_HANDLER( h6280_timer_w );
/* functions for use by the PSG and joypad port only! */
-UINT8 h6280io_get_buffer(const device_config*);
-void h6280io_set_buffer(const device_config*, UINT8);
+UINT8 h6280io_get_buffer(running_device*);
+void h6280io_set_buffer(running_device*, UINT8);
CPU_DISASSEMBLE( h6280 );
diff --git a/src/emu/cpu/h83002/h8priv.h b/src/emu/cpu/h83002/h8priv.h
index dfa4aa3ad80..e3fe1c59074 100644
--- a/src/emu/cpu/h83002/h8priv.h
+++ b/src/emu/cpu/h83002/h8priv.h
@@ -25,7 +25,7 @@ struct _h83xx_state
UINT8 h8uflag, h8uiflag;
cpu_irq_callback irq_cb;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
@@ -46,7 +46,7 @@ struct _h83xx_state
};
extern h83xx_state h8;
-INLINE h83xx_state *get_safe_token(const device_config *device)
+INLINE h83xx_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/hd6309/hd6309.c b/src/emu/cpu/hd6309/hd6309.c
index 15beb58c413..ddd412593e3 100644
--- a/src/emu/cpu/hd6309/hd6309.c
+++ b/src/emu/cpu/hd6309/hd6309.c
@@ -132,7 +132,7 @@ struct _m68_state_t
int extra_cycles; /* cycles used up by interrupts */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
int icount;
PAIR ea; /* effective address */
@@ -151,7 +151,7 @@ struct _m68_state_t
UINT8 const *index_cycle;
};
-INLINE m68_state_t *get_safe_token(const device_config *device)
+INLINE m68_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -506,7 +506,7 @@ static void check_irq_lines( m68_state_t *m68_state )
static STATE_POSTLOAD( hd6309_postload )
{
- const device_config *device = (const device_config *)param;
+ running_device *device = (running_device *)param;
m68_state_t *m68_state = get_safe_token(device);
UpdateState(m68_state);
diff --git a/src/emu/cpu/i386/i386.c b/src/emu/cpu/i386/i386.c
index 63de8854143..28200c2f96e 100644
--- a/src/emu/cpu/i386/i386.c
+++ b/src/emu/cpu/i386/i386.c
@@ -463,7 +463,7 @@ static void I386OP(decode_two_byte)(i386_state *cpustate)
static UINT64 i386_debug_segbase(void *globalref, void *ref, UINT32 params, const UINT64 *param)
{
- const device_config *device = (const device_config *)ref;
+ running_device *device = (running_device *)ref;
i386_state *cpustate = get_safe_token(device);
UINT32 result;
I386_SREG seg;
@@ -484,7 +484,7 @@ static UINT64 i386_debug_segbase(void *globalref, void *ref, UINT32 params, cons
static UINT64 i386_debug_seglimit(void *globalref, void *ref, UINT32 params, const UINT64 *param)
{
- const device_config *device = (const device_config *)ref;
+ running_device *device = (running_device *)ref;
i386_state *cpustate = get_safe_token(device);
UINT32 result = 0;
I386_SREG seg;
@@ -509,7 +509,7 @@ static CPU_DEBUG_INIT( i386 )
static STATE_POSTLOAD( i386_postload )
{
- const device_config *device = (const device_config *)param;
+ running_device *device = (running_device *)param;
i386_state *cpustate = get_safe_token(device);
int i;
for (i = 0; i < 6; i++)
diff --git a/src/emu/cpu/i386/i386priv.h b/src/emu/cpu/i386/i386priv.h
index 01e024c996c..03bf67eb4f7 100644
--- a/src/emu/cpu/i386/i386priv.h
+++ b/src/emu/cpu/i386/i386priv.h
@@ -226,7 +226,7 @@ struct _i386_state
UINT8 irq_state;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
UINT32 a20_mask;
@@ -256,7 +256,7 @@ struct _i386_state
UINT8 *cycle_table_rm;
};
-INLINE i386_state *get_safe_token(const device_config *device)
+INLINE i386_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/i4004/i4004.c b/src/emu/cpu/i4004/i4004.c
index cf878b04ef8..7d2669d8ceb 100644
--- a/src/emu/cpu/i4004/i4004.c
+++ b/src/emu/cpu/i4004/i4004.c
@@ -32,7 +32,7 @@ struct _i4004_state
UINT8 TEST; // Test PIN status
PAIR PC; // It is in fact one of ADDR regs
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
@@ -86,7 +86,7 @@ static const cpu_state_table state_table_template =
INLINE FUNCTIONS
***************************************************************************/
-INLINE i4004_state *get_safe_token(const device_config *device)
+INLINE i4004_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -191,7 +191,7 @@ INLINE void POP_STACK(i4004_state *cpustate)
cpustate->pc_pos = (cpustate->pc_pos - 1) & cpustate->addr_mask;
}
-void i4004_set_test(const device_config *device, UINT8 val)
+void i4004_set_test(running_device *device, UINT8 val)
{
i4004_state *cpustate = get_safe_token(device);
cpustate->TEST = val;
diff --git a/src/emu/cpu/i4004/i4004.h b/src/emu/cpu/i4004/i4004.h
index 3c5fba3dfeb..c0a90116823 100644
--- a/src/emu/cpu/i4004/i4004.h
+++ b/src/emu/cpu/i4004/i4004.h
@@ -31,5 +31,5 @@ CPU_GET_INFO( i4004 );
CPU_DISASSEMBLE( i4004 );
-void i4004_set_test(const device_config *device, UINT8 val);
+void i4004_set_test(running_device *device, UINT8 val);
#endif
diff --git a/src/emu/cpu/i8008/i8008.c b/src/emu/cpu/i8008/i8008.c
index be4b511ce85..1cbfd5bae64 100644
--- a/src/emu/cpu/i8008/i8008.c
+++ b/src/emu/cpu/i8008/i8008.c
@@ -32,7 +32,7 @@ struct _i8008_state
UINT8 SF; // Sign flag
UINT8 PF; // Parity flag
UINT8 HALT;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
cpu_state_table state;
@@ -90,7 +90,7 @@ static const cpu_state_table state_table_template =
INLINE FUNCTIONS
***************************************************************************/
-INLINE i8008_state *get_safe_token(const device_config *device)
+INLINE i8008_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/i8085/i8085.c b/src/emu/cpu/i8085/i8085.c
index a48d950c010..dc1dd2c9b5f 100644
--- a/src/emu/cpu/i8085/i8085.c
+++ b/src/emu/cpu/i8085/i8085.c
@@ -183,7 +183,7 @@ struct _i8085_state
UINT8 ietemp; /* import/export temp space */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
cpu_state_table state;
@@ -318,7 +318,7 @@ static void execute_one(i8085_state *cpustate, int opcode);
INLINE FUNCTIONS
***************************************************************************/
-INLINE i8085_state *get_safe_token(const device_config *device)
+INLINE i8085_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1018,7 +1018,7 @@ static void init_tables (int type)
}
-static void init_808x_common(const device_config *device, cpu_irq_callback irqcallback, int type)
+static void init_808x_common(running_device *device, cpu_irq_callback irqcallback, int type)
{
i8085_state *cpustate = get_safe_token(device);
@@ -1029,8 +1029,8 @@ static void init_808x_common(const device_config *device, cpu_irq_callback irqca
cpustate->state.baseptr = cpustate;
cpustate->state.subtypemask = 1 << type;
- if (device->static_config != NULL)
- cpustate->config = *(i8085_config *)device->static_config;
+ if (device->baseconfig().static_config != NULL)
+ cpustate->config = *(i8085_config *)device->baseconfig().static_config;
cpustate->cputype = type;
cpustate->irq_callback = irqcallback;
cpustate->device = device;
diff --git a/src/emu/cpu/i86/i286.c b/src/emu/cpu/i86/i286.c
index 30756a28094..1bc0634b6fc 100644
--- a/src/emu/cpu/i86/i286.c
+++ b/src/emu/cpu/i86/i286.c
@@ -58,7 +58,7 @@ struct _i80286_state
UINT8 rights;
} ldtr, tr;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
INT32 AuxVal, OverVal, SignVal, ZeroVal, CarryVal, DirVal; /* 0 or non-0 valued flags */
@@ -81,7 +81,7 @@ struct _i80286_state
UINT16 eo; /* HJB 12/13/98 effective offset of the address (before segment is added) */
};
-INLINE i80286_state *get_safe_token(const device_config *device)
+INLINE i80286_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -298,8 +298,8 @@ static CPU_INIT( i80286 )
cpustate->io = device->space(AS_IO);
/* If a reset parameter is given, take it as pointer to an address mask */
- if( device->static_config )
- cpustate->amask = *(unsigned*)device->static_config;
+ if( device->baseconfig().static_config )
+ cpustate->amask = *(unsigned*)device->baseconfig().static_config;
else
cpustate->amask = 0x00ffff;
diff --git a/src/emu/cpu/i86/i86.c b/src/emu/cpu/i86/i86.c
index d3a42bdf242..033d4bdaf89 100644
--- a/src/emu/cpu/i86/i86.c
+++ b/src/emu/cpu/i86/i86.c
@@ -59,7 +59,7 @@ struct _i8086_state
memory_interface mem;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -71,7 +71,7 @@ struct _i8086_state
UINT16 eo; /* HJB 12/13/98 effective offset of the address (before segment is added) */
};
-INLINE i8086_state *get_safe_token(const device_config *device)
+INLINE i8086_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -162,7 +162,7 @@ static UINT8 parity_table[256];
/***************************************************************************/
-static void i8086_state_register(const device_config *device)
+static void i8086_state_register(running_device *device)
{
i8086_state *cpustate = get_safe_token(device);
state_save_register_device_item_array(device, 0, cpustate->regs.w);
diff --git a/src/emu/cpu/i860/i860.h b/src/emu/cpu/i860/i860.h
index a2210188195..0a322a974c3 100644
--- a/src/emu/cpu/i860/i860.h
+++ b/src/emu/cpu/i860/i860.h
@@ -169,14 +169,14 @@ typedef struct {
/*
* MAME-specific stuff.
*/
- const device_config *device;
+ running_device *device;
const address_space *program;
UINT32 ppc;
int icount;
} i860_state_t;
-INLINE i860_state_t *get_safe_token(const device_config *device)
+INLINE i860_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -196,7 +196,7 @@ extern void i860_gen_interrupt(i860_state_t*);
/* This is the external interface for asserting/deasserting a pin on
the i860. */
-extern void i860_set_pin(const device_config *, int, int);
+extern void i860_set_pin(running_device *, int, int);
/* Hard or soft reset. */
extern void reset_i860(i860_state_t*);
diff --git a/src/emu/cpu/i860/i860dec.c b/src/emu/cpu/i860/i860dec.c
index 8533f17377c..95a7b755553 100644
--- a/src/emu/cpu/i860/i860dec.c
+++ b/src/emu/cpu/i860/i860dec.c
@@ -309,7 +309,7 @@ static int has_delay_slot(UINT32 insn)
/* This is the external interface for asserting/deasserting pins on
the i860. */
-void i860_set_pin (const device_config *device, int pin, int val)
+void i860_set_pin (running_device *device, int pin, int val)
{
i860s *cpustate = get_safe_token(device);
if (pin == DEC_PIN_BUS_HOLD)
diff --git a/src/emu/cpu/i960/i960.c b/src/emu/cpu/i960/i960.c
index 3213330155f..f56617425c1 100644
--- a/src/emu/cpu/i960/i960.c
+++ b/src/emu/cpu/i960/i960.c
@@ -34,13 +34,13 @@ struct _i960_state_t {
int immediate_irq, immediate_vector, immediate_pri;
cpu_irq_callback irq_cb;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE i960_state_t *get_safe_token(const device_config *device)
+INLINE i960_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -2219,13 +2219,13 @@ CPU_GET_INFO( i960 )
// call from any read/write handler for a memory area that can't be bursted
// on the real hardware (e.g. Model 2's interrupt control registers)
-void i960_noburst(const device_config *device)
+void i960_noburst(running_device *device)
{
i960_state_t *i960 = get_safe_token(device);
i960->bursting = 0;
}
-void i960_stall(const device_config *device)
+void i960_stall(running_device *device)
{
i960_state_t *i960 = get_safe_token(device);
i960->IP = i960->PIP;
diff --git a/src/emu/cpu/i960/i960.h b/src/emu/cpu/i960/i960.h
index 7afc616488b..a975d1c5a2b 100644
--- a/src/emu/cpu/i960/i960.h
+++ b/src/emu/cpu/i960/i960.h
@@ -63,7 +63,7 @@ enum
CPU_GET_INFO( i960 );
#define CPU_I960 CPU_GET_INFO_NAME( i960 )
-void i960_noburst(const device_config *device);
-void i960_stall(const device_config *device);
+void i960_noburst(running_device *device);
+void i960_stall(running_device *device);
#endif /* __I960_H__ */
diff --git a/src/emu/cpu/jaguar/jaguar.c b/src/emu/cpu/jaguar/jaguar.c
index a8185110b54..c94bc504a33 100644
--- a/src/emu/cpu/jaguar/jaguar.c
+++ b/src/emu/cpu/jaguar/jaguar.c
@@ -100,7 +100,7 @@ struct _jaguar_state
void (*const *table)(jaguar_state *jaguar, UINT16 op);
cpu_irq_callback irq_callback;
jaguar_int_func cpu_interrupt;
- const device_config *device;
+ running_device *device;
const address_space *program;
};
@@ -248,7 +248,7 @@ static void (*const dsp_op_table[64])(jaguar_state *jaguar, UINT16 op) =
INLINE FUNCTIONS
***************************************************************************/
-INLINE jaguar_state *get_safe_token(const device_config *device)
+INLINE jaguar_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -402,7 +402,7 @@ static void init_tables(void)
static STATE_POSTLOAD( jaguar_postload )
{
- const device_config *device = (const device_config *)param;
+ running_device *device = (running_device *)param;
jaguar_state *jaguar = get_safe_token(device);
update_register_banks(jaguar);
@@ -410,9 +410,9 @@ static STATE_POSTLOAD( jaguar_postload )
}
-static void init_common(int isdsp, const device_config *device, cpu_irq_callback irqcallback)
+static void init_common(int isdsp, running_device *device, cpu_irq_callback irqcallback)
{
- const jaguar_cpu_config *configdata = (const jaguar_cpu_config *)device->static_config;
+ const jaguar_cpu_config *configdata = (const jaguar_cpu_config *)device->baseconfig().static_config;
jaguar_state *jaguar = get_safe_token(device);
init_tables();
@@ -1241,7 +1241,7 @@ void xor_rn_rn(jaguar_state *jaguar, UINT16 op)
I/O HANDLING
***************************************************************************/
-UINT32 jaguargpu_ctrl_r(const device_config *device, offs_t offset)
+UINT32 jaguargpu_ctrl_r(running_device *device, offs_t offset)
{
jaguar_state *jaguar = get_safe_token(device);
@@ -1251,7 +1251,7 @@ UINT32 jaguargpu_ctrl_r(const device_config *device, offs_t offset)
}
-void jaguargpu_ctrl_w(const device_config *device, offs_t offset, UINT32 data, UINT32 mem_mask)
+void jaguargpu_ctrl_w(running_device *device, offs_t offset, UINT32 data, UINT32 mem_mask)
{
jaguar_state *jaguar = get_safe_token(device);
UINT32 oldval, newval;
@@ -1337,7 +1337,7 @@ void jaguargpu_ctrl_w(const device_config *device, offs_t offset, UINT32 data, U
I/O HANDLING
***************************************************************************/
-UINT32 jaguardsp_ctrl_r(const device_config *device, offs_t offset)
+UINT32 jaguardsp_ctrl_r(running_device *device, offs_t offset)
{
jaguar_state *jaguar = get_safe_token(device);
@@ -1349,7 +1349,7 @@ UINT32 jaguardsp_ctrl_r(const device_config *device, offs_t offset)
}
-void jaguardsp_ctrl_w(const device_config *device, offs_t offset, UINT32 data, UINT32 mem_mask)
+void jaguardsp_ctrl_w(running_device *device, offs_t offset, UINT32 data, UINT32 mem_mask)
{
jaguar_state *jaguar = get_safe_token(device);
UINT32 oldval, newval;
diff --git a/src/emu/cpu/jaguar/jaguar.h b/src/emu/cpu/jaguar/jaguar.h
index e82d4c57ca5..dfe6057237e 100644
--- a/src/emu/cpu/jaguar/jaguar.h
+++ b/src/emu/cpu/jaguar/jaguar.h
@@ -71,7 +71,7 @@ enum
CONFIGURATION STRUCTURE
***************************************************************************/
-typedef void (*jaguar_int_func)(const device_config *device);
+typedef void (*jaguar_int_func)(running_device *device);
typedef struct _jaguar_cpu_config jaguar_cpu_config;
@@ -101,13 +101,13 @@ struct _jaguar_cpu_config
extern CPU_GET_INFO( jaguargpu );
#define CPU_JAGUARGPU CPU_GET_INFO_NAME( jaguargpu )
-extern void jaguargpu_ctrl_w(const device_config *device, offs_t offset, UINT32 data, UINT32 mem_mask);
-extern UINT32 jaguargpu_ctrl_r(const device_config *device, offs_t offset);
+extern void jaguargpu_ctrl_w(running_device *device, offs_t offset, UINT32 data, UINT32 mem_mask);
+extern UINT32 jaguargpu_ctrl_r(running_device *device, offs_t offset);
extern CPU_GET_INFO( jaguardsp );
#define CPU_JAGUARDSP CPU_GET_INFO_NAME( jaguardsp )
-extern void jaguardsp_ctrl_w(const device_config *device, offs_t offset, UINT32 data, UINT32 mem_mask);
-extern UINT32 jaguardsp_ctrl_r(const device_config *device, offs_t offset);
+extern void jaguardsp_ctrl_w(running_device *device, offs_t offset, UINT32 data, UINT32 mem_mask);
+extern UINT32 jaguardsp_ctrl_r(running_device *device, offs_t offset);
#endif /* __JAGUAR_H__ */
diff --git a/src/emu/cpu/konami/konami.c b/src/emu/cpu/konami/konami.c
index ee4d3e58867..32062ede898 100644
--- a/src/emu/cpu/konami/konami.c
+++ b/src/emu/cpu/konami/konami.c
@@ -61,12 +61,12 @@ struct _konami_state
UINT8 nmi_state;
UINT8 nmi_pending;
int icount;
- const device_config *device;
+ running_device *device;
const address_space *program;
konami_set_lines_func setlines_callback;
};
-INLINE konami_state *get_safe_token(const device_config *device)
+INLINE konami_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -505,7 +505,7 @@ static CPU_EXECUTE( konami )
}
-void konami_configure_set_lines(const device_config *device, konami_set_lines_func func)
+void konami_configure_set_lines(running_device *device, konami_set_lines_func func)
{
konami_state *cpustate = get_safe_token(device);
cpustate->setlines_callback = func;
diff --git a/src/emu/cpu/konami/konami.h b/src/emu/cpu/konami/konami.h
index e049c74e38b..27049084c9e 100644
--- a/src/emu/cpu/konami/konami.h
+++ b/src/emu/cpu/konami/konami.h
@@ -6,7 +6,7 @@
#define __KONAMI_H__
-typedef void (*konami_set_lines_func)(const device_config *device, int lines);
+typedef void (*konami_set_lines_func)(running_device *device, int lines);
enum
{
@@ -14,7 +14,7 @@ enum
KONAMI_DP
};
-#define KONAMI_SETLINES_CALLBACK(name) void name(const device_config *device, int lines)
+#define KONAMI_SETLINES_CALLBACK(name) void name(running_device *device, int lines)
#define KONAMI_IRQ_LINE 0 /* IRQ line number */
#define KONAMI_FIRQ_LINE 1 /* FIRQ line number */
@@ -25,7 +25,7 @@ CPU_GET_INFO( konami );
CPU_DISASSEMBLE( konami );
-void konami_configure_set_lines(const device_config *device, konami_set_lines_func func);
+void konami_configure_set_lines(running_device *device, konami_set_lines_func func);
#endif /* __KONAMI_H__ */
diff --git a/src/emu/cpu/lh5801/lh5801.c b/src/emu/cpu/lh5801/lh5801.c
index be5bd26d759..541a4d3b02d 100644
--- a/src/emu/cpu/lh5801/lh5801.c
+++ b/src/emu/cpu/lh5801/lh5801.c
@@ -50,7 +50,7 @@ typedef struct _lh5810_state lh5801_state;
struct _lh5810_state
{
const lh5801_cpu_core *config;
- const device_config *device;
+ running_device *device;
const address_space *program;
PAIR s, p, u, x, y;
@@ -68,7 +68,7 @@ struct _lh5810_state
int icount;
};
-INLINE lh5801_state *get_safe_token(const device_config *device)
+INLINE lh5801_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -105,7 +105,7 @@ static CPU_INIT( lh5801 )
lh5801_state *cpustate = get_safe_token(device);
memset(cpustate, 0, sizeof(*cpustate));
- cpustate->config = (const lh5801_cpu_core *) device->static_config;
+ cpustate->config = (const lh5801_cpu_core *) device->baseconfig().static_config;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
}
diff --git a/src/emu/cpu/lh5801/lh5801.h b/src/emu/cpu/lh5801/lh5801.h
index cc592d42ab8..b869422c7dc 100644
--- a/src/emu/cpu/lh5801/lh5801.h
+++ b/src/emu/cpu/lh5801/lh5801.h
@@ -65,7 +65,7 @@ pc 8bit
-typedef UINT8 (*lh5801_in_func)(const device_config *device);
+typedef UINT8 (*lh5801_in_func)(running_device *device);
typedef struct _lh5801_cpu_core lh5801_cpu_core;
struct _lh5801_cpu_core
diff --git a/src/emu/cpu/lr35902/lr35902.c b/src/emu/cpu/lr35902/lr35902.c
index 02df23f7d41..10b4a731d09 100644
--- a/src/emu/cpu/lr35902/lr35902.c
+++ b/src/emu/cpu/lr35902/lr35902.c
@@ -65,7 +65,7 @@ typedef struct {
int irq_state;
int ei_delay;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
/* Timer stuff */
@@ -113,7 +113,7 @@ union _lr35902_state {
lr35902_8BitRegs b;
};
-INLINE lr35902_state *get_safe_token(const device_config *device)
+INLINE lr35902_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -191,7 +191,7 @@ static CPU_INIT( lr35902 )
{
lr35902_state *cpustate = get_safe_token(device);
- cpustate->w.config = (const lr35902_cpu_core *) device->static_config;
+ cpustate->w.config = (const lr35902_cpu_core *) device->baseconfig().static_config;
cpustate->w.irq_callback = irqcallback;
cpustate->w.device = device;
cpustate->w.program = device->space(AS_PROGRAM);
diff --git a/src/emu/cpu/lr35902/lr35902.h b/src/emu/cpu/lr35902/lr35902.h
index 0e538bba41c..412bbc7b6dd 100644
--- a/src/emu/cpu/lr35902/lr35902.h
+++ b/src/emu/cpu/lr35902/lr35902.h
@@ -4,7 +4,7 @@
#define __LR35902_H__
-typedef void (*lr35902_timer_fired_func)(const device_config *device, int cycles);
+typedef void (*lr35902_timer_fired_func)(running_device *device, int cycles);
typedef struct _lr35902_cpu_core lr35902_cpu_core;
struct _lr35902_cpu_core
diff --git a/src/emu/cpu/m37710/m37710cm.h b/src/emu/cpu/m37710/m37710cm.h
index 0268dcf9b0b..3a3a0f033fa 100644
--- a/src/emu/cpu/m37710/m37710cm.h
+++ b/src/emu/cpu/m37710/m37710cm.h
@@ -109,7 +109,7 @@ struct _m37710i_cpu_struct
uint source; /* temp register */
uint destination; /* temp register */
cpu_irq_callback int_ack;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
uint stopped; /* Sets how the CPU is stopped */
@@ -127,7 +127,7 @@ struct _m37710i_cpu_struct
emu_timer *timers[8];
};
-INLINE m37710i_cpu_struct *get_safe_token(const device_config *device)
+INLINE m37710i_cpu_struct *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/m6502/m4510.c b/src/emu/cpu/m6502/m4510.c
index 57380a84156..ec1ac5a940e 100644
--- a/src/emu/cpu/m6502/m4510.c
+++ b/src/emu/cpu/m6502/m4510.c
@@ -143,7 +143,7 @@ struct _m4510_Regs {
UINT32 mem[8];
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *space;
int icount;
@@ -156,7 +156,7 @@ struct _m4510_Regs {
m6510_port_write_func port_write;
};
-INLINE m4510_Regs *get_safe_token(const device_config *device)
+INLINE m4510_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -198,7 +198,7 @@ static void default_wrmem_id(const address_space *space, offs_t address, UINT8 d
static CPU_INIT( m4510 )
{
m4510_Regs *cpustate = get_safe_token(device);
- const m6502_interface *intf = (const m6502_interface *)device->static_config;
+ const m6502_interface *intf = (const m6502_interface *)device->baseconfig().static_config;
cpustate->interrupt_inhibit = 0;
cpustate->rdmem_id = default_rdmem_id;
diff --git a/src/emu/cpu/m6502/m6502.c b/src/emu/cpu/m6502/m6502.c
index 1efbf812ecb..506170261da 100644
--- a/src/emu/cpu/m6502/m6502.c
+++ b/src/emu/cpu/m6502/m6502.c
@@ -69,7 +69,7 @@ struct _m6502_Regs
UINT8 so_state;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *space;
const address_space *io;
int int_occured;
@@ -84,7 +84,7 @@ struct _m6502_Regs
m6510_port_write_func port_write;
};
-INLINE m6502_Regs *get_safe_token(const device_config *device)
+INLINE m6502_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -129,10 +129,10 @@ static void default_wdmem_id(const address_space *space, offs_t offset, UINT8 da
*
*****************************************************************************/
-static void m6502_common_init(const device_config *device, cpu_irq_callback irqcallback, UINT8 subtype, void (*const *insn)(m6502_Regs *cpustate), const char *type)
+static void m6502_common_init(running_device *device, cpu_irq_callback irqcallback, UINT8 subtype, void (*const *insn)(m6502_Regs *cpustate), const char *type)
{
m6502_Regs *cpustate = get_safe_token(device);
- const m6502_interface *intf = (const m6502_interface *)device->static_config;
+ const m6502_interface *intf = (const m6502_interface *)device->baseconfig().static_config;
cpustate->irq_callback = irqcallback;
cpustate->device = device;
@@ -334,7 +334,7 @@ static CPU_INIT( n2a03 )
Bit 7 of address $4011 (the PSG's DPCM control register), when set,
causes an IRQ to be generated. This function allows the IRQ to be called
from the PSG core when such an occasion arises. */
-void n2a03_irq(const device_config *device)
+void n2a03_irq(running_device *device)
{
m6502_Regs *cpustate = get_safe_token(device);
diff --git a/src/emu/cpu/m6502/m6502.h b/src/emu/cpu/m6502/m6502.h
index dd3a3ef4b7b..8091e86eb07 100644
--- a/src/emu/cpu/m6502/m6502.h
+++ b/src/emu/cpu/m6502/m6502.h
@@ -51,8 +51,8 @@ enum
positiv edge sets overflow flag */
#define M6502_SET_OVERFLOW 1
-typedef UINT8 (*m6510_port_read_func)(const device_config *device, UINT8 direction);
-typedef void (*m6510_port_write_func)(const device_config *device, UINT8 direction, UINT8 data);
+typedef UINT8 (*m6510_port_read_func)(running_device *device, UINT8 direction);
+typedef void (*m6510_port_write_func)(running_device *device, UINT8 direction, UINT8 data);
/* Optional interface to set callbacks */
@@ -173,7 +173,7 @@ extern CPU_GET_INFO( n2a03 );
Bit 7 of address $4011 (the PSG's DPCM control register), when set,
causes an IRQ to be generated. This function allows the IRQ to be called
from the PSG core when such an occasion arises. */
-extern void n2a03_irq(const device_config *device);
+extern void n2a03_irq(running_device *device);
/****************************************************************************
diff --git a/src/emu/cpu/m6502/m6509.c b/src/emu/cpu/m6502/m6509.c
index cdbee4ecadb..44da9f0fc3e 100644
--- a/src/emu/cpu/m6502/m6509.c
+++ b/src/emu/cpu/m6502/m6509.c
@@ -78,7 +78,7 @@ struct _m6509_Regs {
UINT8 irq_state;
UINT8 so_state;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *space;
int icount;
@@ -87,7 +87,7 @@ struct _m6509_Regs {
write8_space_func wrmem_id; /* writemem callback for indexed instructions */
};
-INLINE m6509_Regs *get_safe_token(const device_config *device)
+INLINE m6509_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -142,7 +142,7 @@ static void default_wdmem_id(const address_space *space, offs_t address, UINT8 d
static CPU_INIT( m6509 )
{
m6509_Regs *cpustate = get_safe_token(device);
- const m6502_interface *intf = (const m6502_interface *)device->static_config;
+ const m6502_interface *intf = (const m6502_interface *)device->baseconfig().static_config;
cpustate->rdmem_id = default_rdmem_id;
cpustate->wrmem_id = default_wdmem_id;
diff --git a/src/emu/cpu/m6502/m65ce02.c b/src/emu/cpu/m6502/m65ce02.c
index 00c6b049b3e..bc9ba2d2f16 100644
--- a/src/emu/cpu/m6502/m65ce02.c
+++ b/src/emu/cpu/m6502/m65ce02.c
@@ -75,13 +75,13 @@ struct _m65ce02_Regs {
UINT8 irq_state;
int icount;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *space;
read8_space_func rdmem_id; /* readmem callback for indexed instructions */
write8_space_func wrmem_id; /* writemem callback for indexed instructions */
};
-INLINE m65ce02_Regs *get_safe_token(const device_config *device)
+INLINE m65ce02_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -102,7 +102,7 @@ static void default_wdmem_id(const address_space *space, offs_t address, UINT8 d
static CPU_INIT( m65ce02 )
{
m65ce02_Regs *cpustate = get_safe_token(device);
- const m6502_interface *intf = (const m6502_interface *)device->static_config;
+ const m6502_interface *intf = (const m6502_interface *)device->baseconfig().static_config;
cpustate->rdmem_id = default_rdmem_id;
cpustate->wrmem_id = default_wdmem_id;
diff --git a/src/emu/cpu/m6800/m6800.c b/src/emu/cpu/m6800/m6800.c
index 03d71cad089..4b22fcee176 100644
--- a/src/emu/cpu/m6800/m6800.c
+++ b/src/emu/cpu/m6800/m6800.c
@@ -113,7 +113,7 @@ struct _m6800_state
UINT8 ic_eddge; /* InputCapture eddge , b.0=fall,b.1=raise */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
/* Memory spaces */
const address_space *program;
@@ -153,7 +153,7 @@ struct _m6800_state
};
-INLINE m6800_state *get_safe_token(const device_config *device)
+INLINE m6800_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/m68000/m68000.h b/src/emu/cpu/m68000/m68000.h
index eb283cf2948..5105468cde4 100644
--- a/src/emu/cpu/m68000/m68000.h
+++ b/src/emu/cpu/m68000/m68000.h
@@ -64,11 +64,11 @@ enum
M68K_GENPCBASE = REG_GENPCBASE
};
-typedef void (*m68k_bkpt_ack_func)(const device_config *device, UINT32 data);
-typedef void (*m68k_reset_func)(const device_config *device);
-typedef void (*m68k_cmpild_func)(const device_config *device, UINT32 data, UINT8 reg);
-typedef void (*m68k_rte_func)(const device_config *device);
-typedef int (*m68k_tas_func)(const device_config *device);
+typedef void (*m68k_bkpt_ack_func)(running_device *device, UINT32 data);
+typedef void (*m68k_reset_func)(running_device *device);
+typedef void (*m68k_cmpild_func)(running_device *device, UINT32 data, UINT8 reg);
+typedef void (*m68k_rte_func)(running_device *device);
+typedef int (*m68k_tas_func)(running_device *device);
CPU_GET_INFO( m68000 );
@@ -98,13 +98,13 @@ CPU_GET_INFO( scc68070 );
#define CPU_SCC68070 CPU_GET_INFO_NAME( scc68070 )
-void m68k_set_encrypted_opcode_range(const device_config *device, offs_t start, offs_t end);
+void m68k_set_encrypted_opcode_range(running_device *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);
-void m68k_set_reset_callback(const device_config *device, m68k_reset_func callback);
-void m68k_set_cmpild_callback(const device_config *device, m68k_cmpild_func callback);
-void m68k_set_rte_callback(const device_config *device, m68k_rte_func callback);
-void m68k_set_tas_callback(const device_config *device, m68k_tas_func callback);
+void m68k_set_reset_callback(running_device *device, m68k_reset_func callback);
+void m68k_set_cmpild_callback(running_device *device, m68k_cmpild_func callback);
+void m68k_set_rte_callback(running_device *device, m68k_rte_func callback);
+void m68k_set_tas_callback(running_device *device, m68k_tas_func callback);
#endif /* __M68000_H__ */
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/emu/cpu/m68000/m68kcpu.c
index 6f6d1421af1..0fcc25abe61 100644
--- a/src/emu/cpu/m68000/m68kcpu.c
+++ b/src/emu/cpu/m68000/m68kcpu.c
@@ -552,7 +552,7 @@ static const cpu_state_table state_table_template =
-INLINE m68ki_cpu_core *get_safe_token(const device_config *device)
+INLINE m68ki_cpu_core *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -952,7 +952,7 @@ static CPU_GET_INFO( m68k )
/* global access */
-void m68k_set_encrypted_opcode_range(const device_config *device, offs_t start, offs_t end)
+void m68k_set_encrypted_opcode_range(running_device *device, offs_t start, offs_t end)
{
m68ki_cpu_core *m68k = get_safe_token(device);
m68k->encrypted_start = start;
@@ -1221,25 +1221,25 @@ static const m68k_memory_interface interface_d32_mmu =
};
-void m68k_set_reset_callback(const device_config *device, m68k_reset_func callback)
+void m68k_set_reset_callback(running_device *device, m68k_reset_func callback)
{
m68ki_cpu_core *m68k = get_safe_token(device);
m68k->reset_instr_callback = callback;
}
-void m68k_set_cmpild_callback(const device_config *device, m68k_cmpild_func callback)
+void m68k_set_cmpild_callback(running_device *device, m68k_cmpild_func callback)
{
m68ki_cpu_core *m68k = get_safe_token(device);
m68k->cmpild_instr_callback = callback;
}
-void m68k_set_rte_callback(const device_config *device, m68k_rte_func callback)
+void m68k_set_rte_callback(running_device *device, m68k_rte_func callback)
{
m68ki_cpu_core *m68k = get_safe_token(device);
m68k->rte_instr_callback = callback;
}
-void m68k_set_tas_callback(const device_config *device, m68k_tas_func callback)
+void m68k_set_tas_callback(running_device *device, m68k_tas_func callback)
{
m68ki_cpu_core *m68k = get_safe_token(device);
m68k->tas_instr_callback = callback;
diff --git a/src/emu/cpu/m68000/m68kcpu.h b/src/emu/cpu/m68000/m68kcpu.h
index fa771f48df8..36875023c6e 100644
--- a/src/emu/cpu/m68000/m68kcpu.h
+++ b/src/emu/cpu/m68000/m68kcpu.h
@@ -624,7 +624,7 @@ struct _m68ki_cpu_core
m68k_rte_func rte_instr_callback; /* Called when a RTE instruction is encountered */
m68k_tas_func tas_instr_callback; /* Called when a TAS instruction is encountered, allows / disallows writeback */
- const device_config *device;
+ running_device *device;
const address_space *program;
m68k_memory_interface memory;
offs_t encrypted_start;
diff --git a/src/emu/cpu/m6805/m6805.c b/src/emu/cpu/m6805/m6805.c
index 1eb74b3c7fc..42899548c7a 100644
--- a/src/emu/cpu/m6805/m6805.c
+++ b/src/emu/cpu/m6805/m6805.c
@@ -61,13 +61,13 @@ typedef struct
UINT16 pending_interrupts; /* MB */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int irq_state[9]; /* KW Additional lines for HD63705 */
int nmi_state;
} m6805_Regs;
-INLINE m6805_Regs *get_safe_token(const device_config *device)
+INLINE m6805_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -442,7 +442,7 @@ static void Interrupt( m6805_Regs *cpustate )
}
}
-static void state_register(m6805_Regs *cpustate, const char *type, const device_config *device)
+static void state_register(m6805_Regs *cpustate, const char *type, running_device *device)
{
state_save_register_device_item(device, 0, A);
state_save_register_device_item(device, 0, PC);
diff --git a/src/emu/cpu/m6809/6809dasm.c b/src/emu/cpu/m6809/6809dasm.c
index c4948c23f5b..41534d1ee2a 100644
--- a/src/emu/cpu/m6809/6809dasm.c
+++ b/src/emu/cpu/m6809/6809dasm.c
@@ -369,7 +369,7 @@ CPU_DISASSEMBLE( m6809 )
const UINT8 *operandarray;
unsigned int ea, flags;
int numoperands, offset, indirect;
- const m6809_config *configdata = device ? (const m6809_config *)device->static_config : NULL;
+ const m6809_config *configdata = device ? (const m6809_config *)device->baseconfig().static_config : NULL;
int encrypt_only_first_byte = configdata ? configdata->encrypt_only_first_byte : 0;
int i, p = 0, page = 0, opcode_found = FALSE;
diff --git a/src/emu/cpu/m6809/m6809.c b/src/emu/cpu/m6809/m6809.c
index 73fe82bca21..1a6e6b006be 100644
--- a/src/emu/cpu/m6809/m6809.c
+++ b/src/emu/cpu/m6809/m6809.c
@@ -99,7 +99,7 @@ struct _m68_state_t
int extra_cycles; /* cycles used up by interrupts */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const m6809_config *config;
int icount;
PAIR ea; /* effective address */
@@ -111,7 +111,7 @@ struct _m68_state_t
UINT8 nmi_state;
};
-INLINE m68_state_t *get_safe_token(const device_config *device)
+INLINE m68_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -377,7 +377,7 @@ static CPU_INIT( m6809 )
0
};
- const m6809_config *configdata = device->static_config ? (const m6809_config *)device->static_config : &default_config;
+ const m6809_config *configdata = device->baseconfig().static_config ? (const m6809_config *)device->baseconfig().static_config : &default_config;
m68_state_t *m68_state = get_safe_token(device);
m68_state->config = configdata;
diff --git a/src/emu/cpu/mb86233/mb86233.c b/src/emu/cpu/mb86233/mb86233.c
index 775c148a331..0725ea430f2 100644
--- a/src/emu/cpu/mb86233/mb86233.c
+++ b/src/emu/cpu/mb86233/mb86233.c
@@ -50,7 +50,7 @@ struct _mb86233_state
UINT32 gpr[16];
UINT32 extport[0x30];
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
@@ -65,7 +65,7 @@ struct _mb86233_state
UINT32 *Tables;
};
-INLINE mb86233_state *get_safe_token(const device_config *device)
+INLINE mb86233_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -108,7 +108,7 @@ INLINE mb86233_state *get_safe_token(const device_config *device)
static CPU_INIT( mb86233 )
{
mb86233_state *cpustate = get_safe_token(device);
- mb86233_cpu_core * _config = (mb86233_cpu_core *)device->static_config;
+ mb86233_cpu_core * _config = (mb86233_cpu_core *)device->baseconfig().static_config;
(void)irqcallback;
memset(cpustate, 0, sizeof( *cpustate ) );
diff --git a/src/emu/cpu/mb86233/mb86233.h b/src/emu/cpu/mb86233/mb86233.h
index 73dd3d04375..bb008fa4e47 100644
--- a/src/emu/cpu/mb86233/mb86233.h
+++ b/src/emu/cpu/mb86233/mb86233.h
@@ -42,8 +42,8 @@ enum
STRUCTURES
***************************************************************************/
-typedef int (*mb86233_fifo_read_func)(const device_config *device, UINT32 *data);
-typedef void (*mb86233_fifo_write_func)(const device_config *device, UINT32 data);
+typedef int (*mb86233_fifo_read_func)(running_device *device, UINT32 *data);
+typedef void (*mb86233_fifo_write_func)(running_device *device, UINT32 data);
typedef struct _mb86233_cpu_core mb86233_cpu_core;
struct _mb86233_cpu_core
diff --git a/src/emu/cpu/mb88xx/mb88xx.c b/src/emu/cpu/mb88xx/mb88xx.c
index a11faf4d7d9..d778e255b50 100644
--- a/src/emu/cpu/mb88xx/mb88xx.c
+++ b/src/emu/cpu/mb88xx/mb88xx.c
@@ -74,14 +74,14 @@ struct _mb88_state
/* IRQ handling */
UINT8 pending_interrupt;
cpu_irq_callback irqcallback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
int icount;
};
-INLINE mb88_state *get_safe_token(const device_config *device)
+INLINE mb88_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -137,9 +137,9 @@ static CPU_INIT( mb88 )
{
mb88_state *cpustate = get_safe_token(device);
- if ( device->static_config )
+ if ( device->baseconfig().static_config )
{
- const mb88_cpu_core *_config = (const mb88_cpu_core*)device->static_config;
+ const mb88_cpu_core *_config = (const mb88_cpu_core*)device->baseconfig().static_config;
cpustate->PLA = _config->PLA_config;
}
@@ -210,7 +210,7 @@ static CPU_RESET( mb88 )
static TIMER_CALLBACK( serial_timer )
{
- mb88_state *cpustate = get_safe_token((const device_config *)ptr);
+ mb88_state *cpustate = get_safe_token((running_device *)ptr);
cpustate->SBcount++;
@@ -322,7 +322,7 @@ static void update_pio( mb88_state *cpustate, int cycles )
}
}
-void mb88_external_clock_w(const device_config *device, int state)
+void mb88_external_clock_w(running_device *device, int state)
{
mb88_state *cpustate = get_safe_token(device);
if (state != cpustate->ctr)
diff --git a/src/emu/cpu/mb88xx/mb88xx.h b/src/emu/cpu/mb88xx/mb88xx.h
index 9f0d0f15b1a..10041634ed9 100644
--- a/src/emu/cpu/mb88xx/mb88xx.h
+++ b/src/emu/cpu/mb88xx/mb88xx.h
@@ -78,6 +78,6 @@ CPU_GET_INFO( mb8844 );
CPU_DISASSEMBLE( mb88 );
-void mb88_external_clock_w(const device_config *device, int state);
+void mb88_external_clock_w(running_device *device, int state);
#endif /* __MB88XX_H__ */
diff --git a/src/emu/cpu/mc68hc11/mc68hc11.c b/src/emu/cpu/mc68hc11/mc68hc11.c
index 85fc5c9d703..bc5a01dba85 100644
--- a/src/emu/cpu/mc68hc11/mc68hc11.c
+++ b/src/emu/cpu/mc68hc11/mc68hc11.c
@@ -61,7 +61,7 @@ struct _hc11_state
cpu_irq_callback irq_callback;
UINT8 irq_state[2];
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -78,7 +78,7 @@ struct _hc11_state
UINT8 tflg1;
};
-INLINE hc11_state *get_safe_token(const device_config *device)
+INLINE hc11_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -370,7 +370,7 @@ static CPU_INIT( hc11 )
hc11_state *cpustate = get_safe_token(device);
int i;
- const hc11_config *conf = (const hc11_config *)device->static_config;
+ const hc11_config *conf = (const hc11_config *)device->baseconfig().static_config;
/* clear the opcode tables */
for(i=0; i < 256; i++) {
diff --git a/src/emu/cpu/mcs48/mcs48.c b/src/emu/cpu/mcs48/mcs48.c
index 0e843053e50..6cd795330e0 100644
--- a/src/emu/cpu/mcs48/mcs48.c
+++ b/src/emu/cpu/mcs48/mcs48.c
@@ -150,7 +150,7 @@ struct _mcs48_state
UINT16 a11; /* A11 value, either 0x000 or 0x800 */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
int icount;
/* Memory spaces */
@@ -269,7 +269,7 @@ static int check_irqs(mcs48_state *cpustate);
INLINE FUNCTIONS
***************************************************************************/
-INLINE mcs48_state *get_safe_token(const device_config *device)
+INLINE mcs48_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -893,7 +893,7 @@ static const mcs48_ophandler opcode_table[256]=
mcs48_init - generic MCS-48 initialization
-------------------------------------------------*/
-static void mcs48_init(const device_config *device, cpu_irq_callback irqcallback, UINT8 feature_mask, UINT16 romsize)
+static void mcs48_init(running_device *device, cpu_irq_callback irqcallback, UINT8 feature_mask, UINT16 romsize)
{
mcs48_state *cpustate = get_safe_token(device);
@@ -1192,7 +1192,7 @@ static CPU_EXECUTE( mcs48 )
read
-------------------------------------------------*/
-UINT8 upi41_master_r(const device_config *device, UINT8 a0)
+UINT8 upi41_master_r(running_device *device, UINT8 a0)
{
mcs48_state *cpustate = get_safe_token(device);
@@ -1218,7 +1218,7 @@ UINT8 upi41_master_r(const device_config *device, UINT8 a0)
static TIMER_CALLBACK( master_callback )
{
- const device_config *device = (const device_config *)ptr;
+ running_device *device = (running_device *)ptr;
mcs48_state *cpustate = get_safe_token(device);
UINT8 a0 = (param >> 8) & 1;
UINT8 data = param;
@@ -1241,7 +1241,7 @@ static TIMER_CALLBACK( master_callback )
cpustate->sts |= STS_F1;
}
-void upi41_master_w(const device_config *device, UINT8 a0, UINT8 data)
+void upi41_master_w(running_device *device, UINT8 a0, UINT8 data)
{
timer_call_after_resynch(device->machine, (void *)device, (a0 << 8) | data, master_callback);
}
@@ -1439,7 +1439,7 @@ static CPU_GET_INFO( mcs48 )
CPU-SPECIFIC CONTEXT ACCESS
***************************************************************************/
-static void mcs48_generic_get_info(const device_config *device, UINT32 state, cpuinfo *info, UINT8 features, int romsize, int ramsize, const char *name)
+static void mcs48_generic_get_info(const device_config *devconfig, running_device *device, UINT32 state, cpuinfo *info, UINT8 features, int romsize, int ramsize, const char *name)
{
switch (state)
{
@@ -1515,26 +1515,26 @@ static void mcs48_generic_get_info(const device_config *device, UINT32 state, cp
/* Official Intel MCS-48 parts */
-CPU_GET_INFO( i8035 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 0, 64, "I8035"); }
-CPU_GET_INFO( i8048 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 1024, 64, "I8048"); }
-CPU_GET_INFO( i8648 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 1024, 64, "I8648"); }
-CPU_GET_INFO( i8748 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 1024, 64, "I8748"); }
-CPU_GET_INFO( i8039 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 0, 128, "I8039"); }
-CPU_GET_INFO( i8049 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 2048, 128, "I8049"); }
-CPU_GET_INFO( i8749 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 2048, 128, "I8749"); }
-CPU_GET_INFO( i8040 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 0, 256, "I8040"); }
-CPU_GET_INFO( i8050 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 4096, 256, "I8050"); }
+CPU_GET_INFO( i8035 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 0, 64, "I8035"); }
+CPU_GET_INFO( i8048 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 1024, 64, "I8048"); }
+CPU_GET_INFO( i8648 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 1024, 64, "I8648"); }
+CPU_GET_INFO( i8748 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 1024, 64, "I8748"); }
+CPU_GET_INFO( i8039 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 0, 128, "I8039"); }
+CPU_GET_INFO( i8049 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 2048, 128, "I8049"); }
+CPU_GET_INFO( i8749 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 2048, 128, "I8749"); }
+CPU_GET_INFO( i8040 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 0, 256, "I8040"); }
+CPU_GET_INFO( i8050 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 4096, 256, "I8050"); }
/* Official Intel UPI-41 parts */
-CPU_GET_INFO( i8041 ) { mcs48_generic_get_info(device, state, info, UPI41_FEATURE, 1024, 128, "I8041"); }
-CPU_GET_INFO( i8741 ) { mcs48_generic_get_info(device, state, info, UPI41_FEATURE, 1024, 128, "I8741"); }
-CPU_GET_INFO( i8042 ) { mcs48_generic_get_info(device, state, info, UPI41_FEATURE, 2048, 256, "I8042"); }
-CPU_GET_INFO( i8242 ) { mcs48_generic_get_info(device, state, info, UPI41_FEATURE, 2048, 256, "I8242"); }
-CPU_GET_INFO( i8742 ) { mcs48_generic_get_info(device, state, info, UPI41_FEATURE, 2048, 256, "I8742"); }
+CPU_GET_INFO( i8041 ) { mcs48_generic_get_info(devconfig, device, state, info, UPI41_FEATURE, 1024, 128, "I8041"); }
+CPU_GET_INFO( i8741 ) { mcs48_generic_get_info(devconfig, device, state, info, UPI41_FEATURE, 1024, 128, "I8741"); }
+CPU_GET_INFO( i8042 ) { mcs48_generic_get_info(devconfig, device, state, info, UPI41_FEATURE, 2048, 256, "I8042"); }
+CPU_GET_INFO( i8242 ) { mcs48_generic_get_info(devconfig, device, state, info, UPI41_FEATURE, 2048, 256, "I8242"); }
+CPU_GET_INFO( i8742 ) { mcs48_generic_get_info(devconfig, device, state, info, UPI41_FEATURE, 2048, 256, "I8742"); }
/* Clones */
-CPU_GET_INFO( mb8884 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 0, 64, "MB8884"); }
-CPU_GET_INFO( n7751 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 1024, 64, "N7751"); }
-CPU_GET_INFO( m58715 ) { mcs48_generic_get_info(device, state, info, MCS48_FEATURE, 2048, 128, "M58715"); }
+CPU_GET_INFO( mb8884 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 0, 64, "MB8884"); }
+CPU_GET_INFO( n7751 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 1024, 64, "N7751"); }
+CPU_GET_INFO( m58715 ) { mcs48_generic_get_info(devconfig, device, state, info, MCS48_FEATURE, 2048, 128, "M58715"); }
diff --git a/src/emu/cpu/mcs48/mcs48.h b/src/emu/cpu/mcs48/mcs48.h
index 2a43834bd17..34e1c253b8e 100644
--- a/src/emu/cpu/mcs48/mcs48.h
+++ b/src/emu/cpu/mcs48/mcs48.h
@@ -138,8 +138,8 @@ CPU_GET_INFO( m58715 ); /* 8049 clone */
/* functions for talking to the input/output buffers on the UPI41-class chips */
-UINT8 upi41_master_r(const device_config *device, UINT8 a0);
-void upi41_master_w(const device_config *device, UINT8 a0, UINT8 data);
+UINT8 upi41_master_r(running_device *device, UINT8 a0);
+void upi41_master_w(running_device *device, UINT8 a0, UINT8 data);
/* disassemblers */
diff --git a/src/emu/cpu/mcs48/mcs48dsm.c b/src/emu/cpu/mcs48/mcs48dsm.c
index 1e2e87eda51..5dc76e2a5c6 100644
--- a/src/emu/cpu/mcs48/mcs48dsm.c
+++ b/src/emu/cpu/mcs48/mcs48dsm.c
@@ -10,7 +10,7 @@
#include "emu.h"
-static UINT32 common_dasm(const device_config *device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, int upi41)
+static UINT32 common_dasm(running_device *device, char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, int upi41)
{
const UINT8 *startram = opram;
UINT32 flags = 0;
diff --git a/src/emu/cpu/mcs51/mcs51.c b/src/emu/cpu/mcs51/mcs51.c
index ee60a8a8cda..ac5788f2d86 100644
--- a/src/emu/cpu/mcs51/mcs51.c
+++ b/src/emu/cpu/mcs51/mcs51.c
@@ -282,7 +282,7 @@ struct _mcs51_state_t
/* Interrupt Callback */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
/* Memory spaces */
const address_space *program;
@@ -648,7 +648,7 @@ INLINE void serial_transmit(mcs51_state_t *mcs51_state, UINT8 data);
INLINE FUNCTIONS
***************************************************************************/
-INLINE mcs51_state_t *get_safe_token(const device_config *device)
+INLINE mcs51_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1283,13 +1283,13 @@ INLINE void update_irq_prio(mcs51_state_t *mcs51_state, UINT8 ipl, UINT8 iph)
***************************************************************************/
-void i8051_set_serial_tx_callback(const device_config *device, mcs51_serial_tx_func tx_func)
+void i8051_set_serial_tx_callback(running_device *device, mcs51_serial_tx_func tx_func)
{
mcs51_state_t *mcs51_state = get_safe_token(device);
mcs51_state->serial_tx_callback = tx_func;
}
-void i8051_set_serial_rx_callback(const device_config *device, mcs51_serial_rx_func rx_func)
+void i8051_set_serial_rx_callback(running_device *device, mcs51_serial_rx_func rx_func)
{
mcs51_state_t *mcs51_state = get_safe_token(device);
mcs51_state->serial_rx_callback = rx_func;
@@ -2389,7 +2389,7 @@ static CPU_INIT( ds5002fp )
{
/* default configuration */
static const ds5002fp_config default_config = { 0x00, 0x00, 0x00 };
- const ds5002fp_config *sconfig = device->static_config ? (const ds5002fp_config *)device->static_config : &default_config;
+ const ds5002fp_config *sconfig = device->baseconfig().static_config ? (const ds5002fp_config *)device->baseconfig().static_config : &default_config;
mcs51_state_t *mcs51_state = get_safe_token(device);
CPU_INIT_CALL( mcs51 );
diff --git a/src/emu/cpu/mcs51/mcs51.h b/src/emu/cpu/mcs51/mcs51.h
index 55f20738c81..4674ebe8938 100644
--- a/src/emu/cpu/mcs51/mcs51.h
+++ b/src/emu/cpu/mcs51/mcs51.h
@@ -89,11 +89,11 @@ struct _ds5002fp_config
FUNCTION PROTOTYPES
***************************************************************************/
-typedef void (*mcs51_serial_tx_func)(const device_config *device, int data);
-typedef int (*mcs51_serial_rx_func)(const device_config *device);
+typedef void (*mcs51_serial_tx_func)(running_device *device, int data);
+typedef int (*mcs51_serial_rx_func)(running_device *device);
-extern void i8051_set_serial_tx_callback(const device_config *device, mcs51_serial_tx_func tx_func);
-extern void i8051_set_serial_rx_callback(const device_config *device, mcs51_serial_rx_func rx_func);
+extern void i8051_set_serial_tx_callback(running_device *device, mcs51_serial_tx_func tx_func);
+extern void i8051_set_serial_rx_callback(running_device *device, mcs51_serial_rx_func rx_func);
/* variants with no internal rom and 128 byte internal memory */
CPU_GET_INFO( i8031 );
diff --git a/src/emu/cpu/minx/minx.c b/src/emu/cpu/minx/minx.c
index 63f9a04616a..617d40a3bd6 100644
--- a/src/emu/cpu/minx/minx.c
+++ b/src/emu/cpu/minx/minx.c
@@ -84,7 +84,7 @@ typedef struct {
UINT8 halted;
UINT8 interrupt_pending;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
} minx_state;
@@ -93,7 +93,7 @@ typedef struct {
#define WR(offset,data) memory_write_byte_8be( minx->program, offset, data )
#define GET_MINX_PC ( ( minx->PC & 0x8000 ) ? ( minx->V << 15 ) | (minx->PC & 0x7FFF ) : minx->PC )
-INLINE minx_state *get_safe_token(const device_config *device)
+INLINE minx_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -122,7 +122,7 @@ static CPU_INIT( minx )
minx->irq_callback = irqcallback;
minx->device = device;
minx->program = device->space(AS_PROGRAM);
- if ( device->static_config != NULL )
+ if ( device->baseconfig().static_config != NULL )
{
}
else
diff --git a/src/emu/cpu/mips/mips3.h b/src/emu/cpu/mips/mips3.h
index 0a3666c410d..0e7e1cfc618 100644
--- a/src/emu/cpu/mips/mips3.h
+++ b/src/emu/cpu/mips/mips3.h
@@ -224,9 +224,9 @@ struct _mips3_config
PUBLIC FUNCTIONS
***************************************************************************/
-void mips3drc_set_options(const device_config *device, UINT32 options);
-void mips3drc_add_fastram(const device_config *device, offs_t start, offs_t end, UINT8 readonly, void *base);
-void mips3drc_add_hotspot(const device_config *device, offs_t pc, UINT32 opcode, UINT32 cycles);
+void mips3drc_set_options(running_device *device, UINT32 options);
+void mips3drc_add_fastram(running_device *device, offs_t start, offs_t end, UINT8 readonly, void *base);
+void mips3drc_add_hotspot(running_device *device, offs_t pc, UINT32 opcode, UINT32 cycles);
CPU_GET_INFO( vr4300be );
CPU_GET_INFO( vr4300le );
diff --git a/src/emu/cpu/mips/mips3com.c b/src/emu/cpu/mips/mips3com.c
index f5b9f4ce844..12eb5056459 100644
--- a/src/emu/cpu/mips/mips3com.c
+++ b/src/emu/cpu/mips/mips3com.c
@@ -69,9 +69,9 @@ INLINE int tlb_entry_is_global(const mips3_tlb_entry *entry)
structure based on the configured type
-------------------------------------------------*/
-void mips3com_init(mips3_state *mips, mips3_flavor flavor, int bigendian, const device_config *device, cpu_irq_callback irqcallback)
+void mips3com_init(mips3_state *mips, mips3_flavor flavor, int bigendian, running_device *device, cpu_irq_callback irqcallback)
{
- const mips3_config *config = (const mips3_config *)device->static_config;
+ const mips3_config *config = (const mips3_config *)device->baseconfig().static_config;
int tlbindex;
/* initialize based on the config */
@@ -751,7 +751,7 @@ void mips3com_get_info(mips3_state *mips, UINT32 state, cpuinfo *info)
static TIMER_CALLBACK( compare_int_callback )
{
- const device_config *device = (const device_config *)ptr;
+ running_device *device = (running_device *)ptr;
cpu_set_input_line(device, MIPS3_IRQ5, ASSERT_LINE);
}
diff --git a/src/emu/cpu/mips/mips3com.h b/src/emu/cpu/mips/mips3com.h
index a2658e8be1f..26462b4b28a 100644
--- a/src/emu/cpu/mips/mips3com.h
+++ b/src/emu/cpu/mips/mips3com.h
@@ -195,7 +195,7 @@ struct _mips3_state
/* internal stuff */
mips3_flavor flavor;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
UINT32 system_clock;
UINT32 cpu_clock;
@@ -229,7 +229,7 @@ struct _mips3_state
FUNCTION PROTOTYPES
***************************************************************************/
-void mips3com_init(mips3_state *mips, mips3_flavor flavor, int bigendian, const device_config *device, cpu_irq_callback irqcallback);
+void mips3com_init(mips3_state *mips, mips3_flavor flavor, int bigendian, running_device *device, cpu_irq_callback irqcallback);
void mips3com_exit(mips3_state *mips);
void mips3com_reset(mips3_state *mips);
diff --git a/src/emu/cpu/mips/mips3drc.c b/src/emu/cpu/mips/mips3drc.c
index 5b3ef25fa04..c2ff2b70e40 100644
--- a/src/emu/cpu/mips/mips3drc.c
+++ b/src/emu/cpu/mips/mips3drc.c
@@ -273,7 +273,7 @@ static const UINT8 fpmode_source[4] =
INLINE FUNCTIONS
***************************************************************************/
-INLINE mips3_state *get_safe_token(const device_config *device)
+INLINE mips3_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -360,7 +360,7 @@ INLINE void save_fast_iregs(mips3_state *mips3, drcuml_block *block)
mips3_init - initialize the processor
-------------------------------------------------*/
-static void mips3_init(mips3_flavor flavor, int bigendian, const device_config *device, cpu_irq_callback irqcallback)
+static void mips3_init(mips3_flavor flavor, int bigendian, running_device *device, cpu_irq_callback irqcallback)
{
drcfe_config feconfig =
{
@@ -631,7 +631,7 @@ static CPU_GET_INFO( mips3 )
mips3drc_set_options - configure DRC options
-------------------------------------------------*/
-void mips3drc_set_options(const device_config *device, UINT32 options)
+void mips3drc_set_options(running_device *device, UINT32 options)
{
mips3_state *mips3 = get_safe_token(device);
mips3->impstate->drcoptions = options;
@@ -643,7 +643,7 @@ void mips3drc_set_options(const device_config *device, UINT32 options)
region
-------------------------------------------------*/
-void mips3drc_add_fastram(const device_config *device, offs_t start, offs_t end, UINT8 readonly, void *base)
+void mips3drc_add_fastram(running_device *device, offs_t start, offs_t end, UINT8 readonly, void *base)
{
mips3_state *mips3 = get_safe_token(device);
if (mips3->impstate->fastram_select < ARRAY_LENGTH(mips3->impstate->fastram))
@@ -661,7 +661,7 @@ void mips3drc_add_fastram(const device_config *device, offs_t start, offs_t end,
mips3drc_add_hotspot - add a new hotspot
-------------------------------------------------*/
-void mips3drc_add_hotspot(const device_config *device, offs_t pc, UINT32 opcode, UINT32 cycles)
+void mips3drc_add_hotspot(running_device *device, offs_t pc, UINT32 opcode, UINT32 cycles)
{
mips3_state *mips3 = get_safe_token(device);
if (mips3->impstate->hotspot_select < ARRAY_LENGTH(mips3->impstate->hotspot))
diff --git a/src/emu/cpu/mips/psx.c b/src/emu/cpu/mips/psx.c
index 9634e1f3e31..66026a9b570 100644
--- a/src/emu/cpu/mips/psx.c
+++ b/src/emu/cpu/mips/psx.c
@@ -185,7 +185,7 @@ struct _psxcpu_state
UINT32 multiplier_operand1;
UINT32 multiplier_operand2;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int bus_attached;
UINT32 bad_byte_address_mask;
@@ -193,7 +193,7 @@ struct _psxcpu_state
UINT32 bad_word_address_mask;
};
-INLINE psxcpu_state *get_safe_token(const device_config *device)
+INLINE psxcpu_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1606,7 +1606,7 @@ static STATE_POSTLOAD( mips_postload )
mips_update_scratchpad( psxcpu->program );
}
-static void mips_state_register( const char *type, const device_config *device )
+static void mips_state_register( const char *type, running_device *device )
{
psxcpu_state *psxcpu = get_safe_token(device);
@@ -1633,7 +1633,7 @@ static void mips_state_register( const char *type, const device_config *device )
static CPU_INIT( psxcpu )
{
psxcpu_state *psxcpu = get_safe_token(device);
-// psxcpu->intf = (psxcpu_interface *) device->static_config;
+// psxcpu->intf = (psxcpu_interface *) device->baseconfig().static_config;
psxcpu->irq_callback = irqcallback;
psxcpu->device = device;
diff --git a/src/emu/cpu/mips/r3000.c b/src/emu/cpu/mips/r3000.c
index 2b5e7a54cf2..03f71e7704f 100644
--- a/src/emu/cpu/mips/r3000.c
+++ b/src/emu/cpu/mips/r3000.c
@@ -138,7 +138,7 @@ struct _r3000_state
int interrupt_cycles;
int hasfpu;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
/* endian-dependent load/store */
@@ -162,7 +162,7 @@ struct _r3000_state
size_t dcache_size;
};
-INLINE r3000_state *get_safe_token(const device_config *device)
+INLINE r3000_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -300,7 +300,7 @@ static void set_irq_line(r3000_state *r3000, int irqline, int state)
static CPU_INIT( r3000 )
{
- const r3000_cpu_core *configdata = (const r3000_cpu_core *)device->static_config;
+ const r3000_cpu_core *configdata = (const r3000_cpu_core *)device->baseconfig().static_config;
r3000_state *r3000 = get_safe_token(device);
/* allocate memory */
diff --git a/src/emu/cpu/nec/nec.c b/src/emu/cpu/nec/nec.c
index 2996650ef04..f0b6635c0b8 100644
--- a/src/emu/cpu/nec/nec.c
+++ b/src/emu/cpu/nec/nec.c
@@ -161,7 +161,7 @@ struct _nec_state_t
UINT8 no_interrupt;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -181,7 +181,7 @@ struct _nec_state_t
};
-INLINE nec_state_t *get_safe_token(const device_config *device)
+INLINE nec_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1104,9 +1104,9 @@ static CPU_DISASSEMBLE( nec )
return necv_dasm_one(buffer, pc, oprom, nec_state->config);
}
-static void nec_init(const device_config *device, cpu_irq_callback irqcallback, int type)
+static void nec_init(running_device *device, cpu_irq_callback irqcallback, int type)
{
- const nec_config *config = device->static_config ? (const nec_config *)device->static_config : &default_config;
+ const nec_config *config = device->baseconfig().static_config ? (const nec_config *)device->baseconfig().static_config : &default_config;
nec_state_t *nec_state = get_safe_token(device);
nec_state->config = config;
diff --git a/src/emu/cpu/pdp1/pdp1.c b/src/emu/cpu/pdp1/pdp1.c
index df22fc750c9..2adcded3732 100644
--- a/src/emu/cpu/pdp1/pdp1.c
+++ b/src/emu/cpu/pdp1/pdp1.c
@@ -417,12 +417,12 @@ struct _pdp1_state
/* 1 for 16-line sequence break system, 0 for default break system */
int type_20_sbs;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE pdp1_state *get_safe_token(const device_config *device)
+INLINE pdp1_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -432,10 +432,10 @@ INLINE pdp1_state *get_safe_token(const device_config *device)
}
static void execute_instruction(pdp1_state *cpustate);
-static void null_iot (const device_config *device, int op2, int nac, int mb, int *io, int ac);
-static void lem_eem_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac);
-static void sbs_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac);
-static void type_20_sbs_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac);
+static void null_iot (running_device *device, int op2, int nac, int mb, int *io, int ac);
+static void lem_eem_iot(running_device *device, int op2, int nac, int mb, int *io, int ac);
+static void sbs_iot(running_device *device, int op2, int nac, int mb, int *io, int ac);
+static void type_20_sbs_iot(running_device *device, int op2, int nac, int mb, int *io, int ac);
static void pulse_start_clear(pdp1_state *cpustate);
@@ -539,7 +539,7 @@ static void pdp1_set_irq_line (pdp1_state *cpustate, int irqline, int state)
static CPU_INIT( pdp1 )
{
- const pdp1_reset_param_t *param = (const pdp1_reset_param_t *)device->static_config;
+ const pdp1_reset_param_t *param = (const pdp1_reset_param_t *)device->baseconfig().static_config;
pdp1_state *cpustate = get_safe_token(device);
int i;
@@ -1704,7 +1704,7 @@ no_fetch:
/*
Handle unimplemented IOT
*/
-static void null_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac)
+static void null_iot(running_device *device, int op2, int nac, int mb, int *io, int ac)
{
pdp1_state *cpustate = get_safe_token(device);
/* Note that the dummy IOT 0 is used to wait for the completion pulse
@@ -1727,7 +1727,7 @@ static void null_iot(const device_config *device, int op2, int nac, int mb, int
IOT 74: LEM/EEM
*/
-static void lem_eem_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac)
+static void lem_eem_iot(running_device *device, int op2, int nac, int mb, int *io, int ac)
{
pdp1_state *cpustate = get_safe_token(device);
if (! cpustate->extend_support) /* extend mode supported? */
@@ -1751,7 +1751,7 @@ static void lem_eem_iot(const device_config *device, int op2, int nac, int mb, i
IOT 55: esm
IOT 56: cbs
*/
-static void sbs_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac)
+static void sbs_iot(running_device *device, int op2, int nac, int mb, int *io, int ac)
{
pdp1_state *cpustate = get_safe_token(device);
switch (op2)
@@ -1795,7 +1795,7 @@ static void sbs_iot(const device_config *device, int op2, int nac, int mb, int *
IOT 52: isb
IOT 53: cac
*/
-static void type_20_sbs_iot(const device_config *device, int op2, int nac, int mb, int *io, int ac)
+static void type_20_sbs_iot(running_device *device, int op2, int nac, int mb, int *io, int ac)
{
pdp1_state *cpustate = get_safe_token(device);
int channel, mask;
diff --git a/src/emu/cpu/pdp1/pdp1.h b/src/emu/cpu/pdp1/pdp1.h
index 444f2b49b6e..5bd2af6516d 100644
--- a/src/emu/cpu/pdp1/pdp1.h
+++ b/src/emu/cpu/pdp1/pdp1.h
@@ -22,9 +22,9 @@ enum
#define pdp1_pulse_start_clear(cpudevice) cpu_set_reg(cpudevice, PDP1_START_CLEAR, 0)
#define pdp1_pulse_iot_done(cpudevice) cpu_set_reg(cpudevice, PDP1_IO_COMPLETE, 0)
-typedef void (*pdp1_extern_iot_func)(const device_config *device, int op2, int nac, int mb, int *io, int ac);
-typedef void (*pdp1_read_binary_word_func)(const device_config *device);
-typedef void (*pdp1_io_sc_func)(const device_config *device);
+typedef void (*pdp1_extern_iot_func)(running_device *device, int op2, int nac, int mb, int *io, int ac);
+typedef void (*pdp1_read_binary_word_func)(running_device *device);
+typedef void (*pdp1_io_sc_func)(running_device *device);
typedef struct _pdp1_reset_param_t pdp1_reset_param_t;
diff --git a/src/emu/cpu/pdp1/tx0.c b/src/emu/cpu/pdp1/tx0.c
index 34ed81254ba..4f8e884e085 100644
--- a/src/emu/cpu/pdp1/tx0.c
+++ b/src/emu/cpu/pdp1/tx0.c
@@ -15,9 +15,9 @@
#define LOG 0
#define LOG_EXTRA 0
-static void execute_instruction_64kw(const device_config *device);
-static void execute_instruction_8kw(const device_config *device);
-static void pulse_reset(const device_config *device);
+static void execute_instruction_64kw(running_device *device);
+static void execute_instruction_8kw(running_device *device);
+static void pulse_reset(running_device *device);
/* TX-0 Registers */
@@ -64,11 +64,11 @@ struct _tx0_state
int icount;
- const device_config *device;
+ running_device *device;
const address_space *program;
};
-INLINE tx0_state *get_safe_token(const device_config *device)
+INLINE tx0_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -127,12 +127,12 @@ static void tx0_write(tx0_state *cpustate, offs_t address, int data)
;
}
-static void tx0_init_common(const device_config *device, cpu_irq_callback irqcallback, int is_64kw)
+static void tx0_init_common(running_device *device, cpu_irq_callback irqcallback, int is_64kw)
{
tx0_state *cpustate = get_safe_token(device);
/* clean-up */
- cpustate->iface = (const tx0_reset_param_t *)device->static_config;
+ cpustate->iface = (const tx0_reset_param_t *)device->baseconfig().static_config;
cpustate->address_mask = is_64kw ? ADDRESS_MASK_64KW : ADDRESS_MASK_8KW;
cpustate->ir_mask = is_64kw ? 03 : 037;
@@ -687,7 +687,7 @@ CPU_GET_INFO( tx0_8kw )
/* execute one instruction */
-static void execute_instruction_64kw(const device_config *device)
+static void execute_instruction_64kw(running_device *device)
{
tx0_state *cpustate = get_safe_token(device);
@@ -878,7 +878,7 @@ static void indexed_address_eval(tx0_state *cpustate)
}
/* execute one instruction */
-static void execute_instruction_8kw(const device_config *device)
+static void execute_instruction_8kw(running_device *device)
{
tx0_state *cpustate = get_safe_token(device);
@@ -1284,7 +1284,7 @@ static void execute_instruction_8kw(const device_config *device)
reset most registers and flip-flops, and initialize a few emulator state
variables.
*/
-static void pulse_reset(const device_config *device)
+static void pulse_reset(running_device *device)
{
tx0_state *cpustate = get_safe_token(device);
diff --git a/src/emu/cpu/pdp1/tx0.h b/src/emu/cpu/pdp1/tx0.h
index df1c5ed9227..5e2f7a42f15 100644
--- a/src/emu/cpu/pdp1/tx0.h
+++ b/src/emu/cpu/pdp1/tx0.h
@@ -35,11 +35,11 @@ struct _tx0_reset_param_t
5: reserved (for unimplemented typ instruction?)
6: p6h
7: p7h */
- void (*io_handlers[8])(const device_config *device);
+ void (*io_handlers[8])(running_device *device);
/* select instruction handler */
- void (*sel_handler)(const device_config *device);
+ void (*sel_handler)(running_device *device);
/* callback called when reset line is pulsed: IO devices should reset */
- void (*io_reset_callback)(const device_config *device);
+ void (*io_reset_callback)(running_device *device);
};
/* PUBLIC FUNCTIONS */
diff --git a/src/emu/cpu/pic16c5x/pic16c5x.c b/src/emu/cpu/pic16c5x/pic16c5x.c
index 4d9c7a39ff6..703aadb4908 100644
--- a/src/emu/cpu/pic16c5x/pic16c5x.c
+++ b/src/emu/cpu/pic16c5x/pic16c5x.c
@@ -97,13 +97,13 @@ struct _pic16c5x_state
int inst_cycles;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
};
-INLINE pic16c5x_state *get_safe_token(const device_config *device)
+INLINE pic16c5x_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -798,7 +798,7 @@ static void pic16c5x_soft_reset(pic16c5x_state *cpustate)
pic16c5x_reset_regs(cpustate);
}
-void pic16c5x_set_config(const device_config *cpu, int data)
+void pic16c5x_set_config(running_device *cpu, int data)
{
pic16c5x_state *cpustate = get_safe_token(cpu);
diff --git a/src/emu/cpu/pic16c5x/pic16c5x.h b/src/emu/cpu/pic16c5x/pic16c5x.h
index 83b03061303..08eb44e419a 100644
--- a/src/emu/cpu/pic16c5x/pic16c5x.h
+++ b/src/emu/cpu/pic16c5x/pic16c5x.h
@@ -43,7 +43,7 @@ enum
* the value if known (available in HEX dumps of the ROM).
*/
-void pic16c5x_set_config(const device_config *cpu, int data);
+void pic16c5x_set_config(running_device *cpu, int data);
diff --git a/src/emu/cpu/pic16c62x/pic16c62x.c b/src/emu/cpu/pic16c62x/pic16c62x.c
index b47a9b6a7ec..cbfae296c8d 100644
--- a/src/emu/cpu/pic16c62x/pic16c62x.c
+++ b/src/emu/cpu/pic16c62x/pic16c62x.c
@@ -87,13 +87,13 @@ struct _pic16c62x_state
int inst_cycles;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
};
-INLINE pic16c62x_state *get_safe_token(const device_config *device)
+INLINE pic16c62x_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -917,7 +917,7 @@ static void pic16c62x_soft_reset(pic16c62x_state *cpustate)
pic16c62x_reset_regs(cpustate);
}
-void pic16c62x_set_config(const device_config *cpu, int data)
+void pic16c62x_set_config(running_device *cpu, int data)
{
pic16c62x_state *cpustate = get_safe_token(cpu);
diff --git a/src/emu/cpu/pic16c62x/pic16c62x.h b/src/emu/cpu/pic16c62x/pic16c62x.h
index c2012d49b2c..a361a942e69 100644
--- a/src/emu/cpu/pic16c62x/pic16c62x.h
+++ b/src/emu/cpu/pic16c62x/pic16c62x.h
@@ -46,7 +46,7 @@ enum
* the value if known (available in HEX dumps of the ROM).
*/
-void pic16c62x_set_config(const device_config *cpu, int data);
+void pic16c62x_set_config(running_device *cpu, int data);
diff --git a/src/emu/cpu/powerpc/ppc.c b/src/emu/cpu/powerpc/ppc.c
index e895a06cca9..7561a26c87b 100644
--- a/src/emu/cpu/powerpc/ppc.c
+++ b/src/emu/cpu/powerpc/ppc.c
@@ -306,7 +306,7 @@ typedef struct {
UINT64 tb; /* 56-bit timebase register */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
// STUFF added for the 6xx series
@@ -929,7 +929,7 @@ static void ppc_init(void)
// !!! probably should move this stuff elsewhere !!!
static CPU_INIT( ppc403 )
{
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
ppc_init();
@@ -975,7 +975,7 @@ static CPU_EXIT( ppc403 )
static CPU_INIT( ppc603 )
{
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
int pll_config = 0;
float multiplier;
int i ;
@@ -1120,7 +1120,7 @@ static CPU_EXIT( ppc603 )
static CPU_INIT( ppc602 )
{
float multiplier;
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
int i ;
@@ -1263,7 +1263,7 @@ static void mpc8240_tlbld(UINT32 op)
static CPU_INIT( mpc8240 )
{
float multiplier;
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
int i ;
@@ -1393,7 +1393,7 @@ static CPU_EXIT( mpc8240 )
static CPU_INIT( ppc601 )
{
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
float multiplier;
int i ;
@@ -1521,7 +1521,7 @@ static CPU_EXIT( ppc601 )
static CPU_INIT( ppc604 )
{
- const ppc_config *configdata = device->static_config;
+ const ppc_config *configdata = device->baseconfig().static_config;
float multiplier;
int i ;
diff --git a/src/emu/cpu/powerpc/ppc.h b/src/emu/cpu/powerpc/ppc.h
index b8c3022cb8f..34b485f4213 100644
--- a/src/emu/cpu/powerpc/ppc.h
+++ b/src/emu/cpu/powerpc/ppc.h
@@ -145,7 +145,7 @@ enum
STRUCTURES AND TYPEDEFS
***************************************************************************/
-typedef void (*ppc4xx_spu_tx_handler)(const device_config *device, UINT8 data);
+typedef void (*ppc4xx_spu_tx_handler)(running_device *device, UINT8 data);
typedef struct _powerpc_config powerpc_config;
struct _powerpc_config
@@ -159,12 +159,12 @@ struct _powerpc_config
PUBLIC FUNCTIONS
***************************************************************************/
-void ppcdrc_set_options(const device_config *device, UINT32 options);
-void ppcdrc_add_fastram(const device_config *device, offs_t start, offs_t end, UINT8 readonly, void *base);
-void ppcdrc_add_hotspot(const device_config *device, offs_t pc, UINT32 opcode, UINT32 cycles);
+void ppcdrc_set_options(running_device *device, UINT32 options);
+void ppcdrc_add_fastram(running_device *device, offs_t start, offs_t end, UINT8 readonly, void *base);
+void ppcdrc_add_hotspot(running_device *device, offs_t pc, UINT32 opcode, UINT32 cycles);
-void ppc4xx_spu_set_tx_handler(const device_config *device, ppc4xx_spu_tx_handler handler);
-void ppc4xx_spu_receive_byte(const device_config *device, UINT8 byteval);
+void ppc4xx_spu_set_tx_handler(running_device *device, ppc4xx_spu_tx_handler handler);
+void ppc4xx_spu_receive_byte(running_device *device, UINT8 byteval);
CPU_GET_INFO( ppc403ga );
diff --git a/src/emu/cpu/powerpc/ppccom.c b/src/emu/cpu/powerpc/ppccom.c
index ca457fd9a35..58e1b562242 100644
--- a/src/emu/cpu/powerpc/ppccom.c
+++ b/src/emu/cpu/powerpc/ppccom.c
@@ -286,9 +286,9 @@ INLINE int sign_double(double x)
structure based on the configured type
-------------------------------------------------*/
-void ppccom_init(powerpc_state *ppc, powerpc_flavor flavor, UINT8 cap, int tb_divisor, const device_config *device, cpu_irq_callback irqcallback)
+void ppccom_init(powerpc_state *ppc, powerpc_flavor flavor, UINT8 cap, int tb_divisor, running_device *device, cpu_irq_callback irqcallback)
{
- const powerpc_config *config = (const powerpc_config *)device->static_config;
+ const powerpc_config *config = (const powerpc_config *)device->baseconfig().static_config;
/* initialize based on the config */
memset(ppc, 0, sizeof(*ppc));
@@ -303,7 +303,7 @@ void ppccom_init(powerpc_state *ppc, powerpc_flavor flavor, UINT8 cap, int tb_di
ppc->system_clock = (config != NULL) ? config->bus_frequency : device->clock;
ppc->tb_divisor = (ppc->tb_divisor * device->clock + ppc->system_clock / 2 - 1) / ppc->system_clock;
ppc->codexor = 0;
- if (!(cap & PPCCAP_4XX) && cpu_get_endianness(device) != ENDIANNESS_NATIVE)
+ if (!(cap & PPCCAP_4XX) && device_get_endianness(device) != ENDIANNESS_NATIVE)
ppc->codexor = 4;
/* allocate the virtual TLB */
@@ -2082,7 +2082,7 @@ ADDRESS_MAP_END
specific TX handler configuration
-------------------------------------------------*/
-void ppc4xx_spu_set_tx_handler(const device_config *device, ppc4xx_spu_tx_handler handler)
+void ppc4xx_spu_set_tx_handler(running_device *device, ppc4xx_spu_tx_handler handler)
{
powerpc_state *ppc = *(powerpc_state **)device->token;
ppc->spu.tx_handler = handler;
@@ -2094,7 +2094,7 @@ void ppc4xx_spu_set_tx_handler(const device_config *device, ppc4xx_spu_tx_handle
specific serial byte receive
-------------------------------------------------*/
-void ppc4xx_spu_receive_byte(const device_config *device, UINT8 byteval)
+void ppc4xx_spu_receive_byte(running_device *device, UINT8 byteval)
{
powerpc_state *ppc = *(powerpc_state **)device->token;
ppc4xx_spu_rx_data(ppc, byteval);
diff --git a/src/emu/cpu/powerpc/ppccom.h b/src/emu/cpu/powerpc/ppccom.h
index 37a36653e38..b9c038acb74 100644
--- a/src/emu/cpu/powerpc/ppccom.h
+++ b/src/emu/cpu/powerpc/ppccom.h
@@ -551,7 +551,7 @@ struct _powerpc_state
/* internal stuff */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
offs_t codexor;
UINT32 irq_pending;
@@ -571,7 +571,7 @@ struct _powerpc_state
FUNCTION PROTOTYPES
***************************************************************************/
-void ppccom_init(powerpc_state *ppc, powerpc_flavor flavor, UINT8 cap, int tb_divisor, const device_config *device, cpu_irq_callback irqcallback);
+void ppccom_init(powerpc_state *ppc, powerpc_flavor flavor, UINT8 cap, int tb_divisor, running_device *device, cpu_irq_callback irqcallback);
void ppccom_exit(powerpc_state *ppc);
void ppccom_reset(powerpc_state *ppc);
diff --git a/src/emu/cpu/powerpc/ppcdrc.c b/src/emu/cpu/powerpc/ppcdrc.c
index 8d3264b43ea..f179e97b677 100644
--- a/src/emu/cpu/powerpc/ppcdrc.c
+++ b/src/emu/cpu/powerpc/ppcdrc.c
@@ -435,7 +435,7 @@ static const UINT8 fcmp_cr_table_source[32] =
INLINE FUNCTIONS
***************************************************************************/
-INLINE powerpc_state *get_safe_token(const device_config *device)
+INLINE powerpc_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -548,7 +548,7 @@ INLINE UINT32 compute_spr(UINT32 spr)
ppcdrc_init - initialize the processor
-------------------------------------------------*/
-static void ppcdrc_init(powerpc_flavor flavor, UINT8 cap, int tb_divisor, const device_config *device, cpu_irq_callback irqcallback)
+static void ppcdrc_init(powerpc_flavor flavor, UINT8 cap, int tb_divisor, running_device *device, cpu_irq_callback irqcallback)
{
drcfe_config feconfig =
{
@@ -823,7 +823,7 @@ static CPU_GET_INFO( ppcdrc )
ppcdrc_set_options - configure DRC options
-------------------------------------------------*/
-void ppcdrc_set_options(const device_config *device, UINT32 options)
+void ppcdrc_set_options(running_device *device, UINT32 options)
{
powerpc_state *ppc = get_safe_token(device);
ppc->impstate->drcoptions = options;
@@ -835,7 +835,7 @@ void ppcdrc_set_options(const device_config *device, UINT32 options)
region
-------------------------------------------------*/
-void ppcdrc_add_fastram(const device_config *device, offs_t start, offs_t end, UINT8 readonly, void *base)
+void ppcdrc_add_fastram(running_device *device, offs_t start, offs_t end, UINT8 readonly, void *base)
{
powerpc_state *ppc = get_safe_token(device);
if (ppc->impstate->fastram_select < ARRAY_LENGTH(ppc->impstate->fastram))
@@ -853,7 +853,7 @@ void ppcdrc_add_fastram(const device_config *device, offs_t start, offs_t end, U
ppcdrc_add_hotspot - add a new hotspot
-------------------------------------------------*/
-void ppcdrc_add_hotspot(const device_config *device, offs_t pc, UINT32 opcode, UINT32 cycles)
+void ppcdrc_add_hotspot(running_device *device, offs_t pc, UINT32 opcode, UINT32 cycles)
{
powerpc_state *ppc = get_safe_token(device);
if (ppc->impstate->hotspot_select < ARRAY_LENGTH(ppc->impstate->hotspot))
@@ -1479,7 +1479,7 @@ static void static_generate_memory_accessor(powerpc_state *ppc, int mode, int si
/* on exit, read result is in I0 */
/* routine trashes I0-I3 */
drcuml_state *drcuml = ppc->impstate->drcuml;
- int fastxor = BYTE8_XOR_BE(0) >> (int)(cpu_get_databus_width(ppc->device, ADDRESS_SPACE_PROGRAM) < 64);
+ int fastxor = BYTE8_XOR_BE(0) >> (int)(device_get_databus_width(ppc->device, ADDRESS_SPACE_PROGRAM) < 64);
drcuml_block *block;
jmp_buf errorbuf;
int translate_type;
diff --git a/src/emu/cpu/rsp/rsp.c b/src/emu/cpu/rsp/rsp.c
index 59b48deb53f..ae78eab4955 100644
--- a/src/emu/cpu/rsp/rsp.c
+++ b/src/emu/cpu/rsp/rsp.c
@@ -27,7 +27,7 @@ CPU_DISASSEMBLE( rsp );
extern offs_t rsp_dasm_one(char *buffer, offs_t pc, UINT32 op);
-INLINE rsp_state *get_safe_token(const device_config *device)
+INLINE rsp_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -302,7 +302,7 @@ static CPU_INIT( rsp )
rsp_state *rsp = get_safe_token(device);
int regIdx;
int accumIdx;
- rsp->config = (const rsp_config *)device->static_config;
+ rsp->config = (const rsp_config *)device->baseconfig().static_config;
if (LOG_INSTRUCTION_EXECUTION)
rsp->exec_output = fopen("rsp_execute.txt", "wt");
diff --git a/src/emu/cpu/rsp/rsp.h b/src/emu/cpu/rsp/rsp.h
index 709aa66778e..4a206474401 100644
--- a/src/emu/cpu/rsp/rsp.h
+++ b/src/emu/cpu/rsp/rsp.h
@@ -68,7 +68,7 @@ enum
STRUCTURES
***************************************************************************/
-typedef void (*rsp_set_status_func)(const device_config *device, UINT32 status);
+typedef void (*rsp_set_status_func)(running_device *device, UINT32 status);
typedef struct _rsp_config rsp_config;
struct _rsp_config
@@ -86,10 +86,10 @@ struct _rsp_config
PUBLIC FUNCTIONS
***************************************************************************/
-void rspdrc_flush_drc_cache(const device_config *device);
-void rspdrc_set_options(const device_config *device, UINT32 options);
-void rspdrc_add_imem(const device_config *device, void *base);
-void rspdrc_add_dmem(const device_config *device, void *base);
+void rspdrc_flush_drc_cache(running_device *device);
+void rspdrc_set_options(running_device *device, UINT32 options);
+void rspdrc_add_imem(running_device *device, void *base);
+void rspdrc_add_dmem(running_device *device, void *base);
/***************************************************************************
HELPER MACROS
@@ -209,7 +209,7 @@ struct _rsp_state
UINT32 nextpc;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/emu/cpu/rsp/rspdrc.c
index b4da27c751e..ccb5cee1cd5 100644
--- a/src/emu/cpu/rsp/rspdrc.c
+++ b/src/emu/cpu/rsp/rspdrc.c
@@ -348,7 +348,7 @@ static void log_add_disasm_comment(rsp_state *rsp, drcuml_block *block, UINT32 p
#define SET_ZERO_FLAG(x) { rsp->flag[0] |= (0x100 << (x)); }
#define CLEAR_ZERO_FLAG(x) { rsp->flag[0] &= ~(0x100 << (x)); }
-INLINE rsp_state *get_safe_token(const device_config *device)
+INLINE rsp_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -514,7 +514,7 @@ INLINE void WRITE64(rsp_state *rsp, UINT32 address, UINT64 data)
rspdrc_set_options - configure DRC options
-------------------------------------------------*/
-void rspdrc_set_options(const device_config *device, UINT32 options)
+void rspdrc_set_options(running_device *device, UINT32 options)
{
rsp_state *rsp = get_safe_token(device);
rsp->impstate->drcoptions = options;
@@ -525,7 +525,7 @@ void rspdrc_set_options(const device_config *device, UINT32 options)
rspdrc_add_imem - register an imem region
-------------------------------------------------*/
-void rspdrc_add_imem(const device_config *device, void *base)
+void rspdrc_add_imem(running_device *device, void *base)
{
rsp_state *rsp = get_safe_token(device);
rsp->impstate->imem = base;
@@ -536,7 +536,7 @@ void rspdrc_add_imem(const device_config *device, void *base)
rspdrc_add_dmem - register a dmem region
-------------------------------------------------*/
-void rspdrc_add_dmem(const device_config *device, void *base)
+void rspdrc_add_dmem(running_device *device, void *base)
{
rsp_state *rsp = get_safe_token(device);
rsp->impstate->dmem = base;
@@ -685,14 +685,14 @@ static const int vector_elements_2[16][8] =
{ 7, 7, 7, 7, 7, 7, 7, 7 }, // 7
};
-static void rspcom_init(rsp_state *rsp, const device_config *device, cpu_irq_callback irqcallback)
+static void rspcom_init(rsp_state *rsp, running_device *device, cpu_irq_callback irqcallback)
{
int regIdx = 0;
int accumIdx;
memset(rsp, 0, sizeof(*rsp));
- rsp->config = (const rsp_config *)device->static_config;
+ rsp->config = (const rsp_config *)device->baseconfig().static_config;
rsp->irq_callback = irqcallback;
rsp->device = device;
rsp->program = device->space(AS_PROGRAM);
@@ -7161,7 +7161,7 @@ static CPU_EXECUTE( rsp )
accessor to code_flush_cache
-------------------------------------------------*/
-void rspdrc_flush_drc_cache(const device_config *device)
+void rspdrc_flush_drc_cache(running_device *device)
{
rsp_state *rsp = get_safe_token(device);
rsp->impstate->cache_dirty = TRUE;
diff --git a/src/emu/cpu/s2650/s2650.c b/src/emu/cpu/s2650/s2650.c
index ea6d7eebfda..7a8d8f436ee 100644
--- a/src/emu/cpu/s2650/s2650.c
+++ b/src/emu/cpu/s2650/s2650.c
@@ -42,12 +42,12 @@ struct _s2650_regs {
int icount;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
};
-INLINE s2650_regs *get_safe_token(const device_config *device)
+INLINE s2650_regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/saturn/saturn.c b/src/emu/cpu/saturn/saturn.c
index cee6b49f404..0a5e8ac587a 100644
--- a/src/emu/cpu/saturn/saturn.c
+++ b/src/emu/cpu/saturn/saturn.c
@@ -82,12 +82,12 @@ struct _saturn_state
int monitor_id;
int monitor_in;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE saturn_state *get_safe_token(const device_config *device)
+INLINE saturn_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -113,7 +113,7 @@ static CPU_INIT( saturn )
{
saturn_state *cpustate = get_safe_token(device);
- cpustate->config = (saturn_cpu_core *) device->static_config;
+ cpustate->config = (saturn_cpu_core *) device->baseconfig().static_config;
cpustate->irq_callback = irqcallback;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
diff --git a/src/emu/cpu/saturn/saturn.h b/src/emu/cpu/saturn/saturn.h
index 1426faaceec..3ad3bc1fe2a 100644
--- a/src/emu/cpu/saturn/saturn.h
+++ b/src/emu/cpu/saturn/saturn.h
@@ -53,14 +53,14 @@ HP38G 09/??/95 1LT8 Yorke
typedef struct _saturn_cpu_core saturn_cpu_core;
struct _saturn_cpu_core
{
- void (*out)(const device_config*,int);
- int (*in)(const device_config*);
- void (*reset)(const device_config*);
- void (*config)(const device_config*,int v);
- void (*unconfig)(const device_config*,int v);
- int (*id)(const device_config*);
- void (*crc)(const device_config*,int addr, int data);
- void (*rsi)(const device_config*);
+ void (*out)(running_device*,int);
+ int (*in)(running_device*);
+ void (*reset)(running_device*);
+ void (*config)(running_device*,int v);
+ void (*unconfig)(running_device*,int v);
+ int (*id)(running_device*);
+ void (*crc)(running_device*,int addr, int data);
+ void (*rsi)(running_device*);
};
enum
diff --git a/src/emu/cpu/sc61860/sc61860.c b/src/emu/cpu/sc61860/sc61860.c
index af5563eaefd..bda92d779f1 100644
--- a/src/emu/cpu/sc61860/sc61860.c
+++ b/src/emu/cpu/sc61860/sc61860.c
@@ -55,12 +55,12 @@ struct _sc61860_state
struct { int t2ms, t512ms; int count;} timer;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE sc61860_state *get_safe_token(const device_config *device)
+INLINE sc61860_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -69,7 +69,7 @@ INLINE sc61860_state *get_safe_token(const device_config *device)
return (sc61860_state *)device->token;
}
-UINT8 *sc61860_internal_ram(const device_config *device)
+UINT8 *sc61860_internal_ram(running_device *device)
{
sc61860_state *cpustate = get_safe_token(device);
return cpustate->ram;
@@ -104,7 +104,7 @@ static CPU_RESET( sc61860 )
static CPU_INIT( sc61860 )
{
sc61860_state *cpustate = get_safe_token(device);
- cpustate->config = (sc61860_cpu_core *) device->static_config;
+ cpustate->config = (sc61860_cpu_core *) device->baseconfig().static_config;
timer_pulse(device->machine, ATTOTIME_IN_HZ(500), cpustate, 0, sc61860_2ms_tick);
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
diff --git a/src/emu/cpu/sc61860/sc61860.h b/src/emu/cpu/sc61860/sc61860.h
index a475afb6e43..cc8dc6b9bbd 100644
--- a/src/emu/cpu/sc61860/sc61860.h
+++ b/src/emu/cpu/sc61860/sc61860.h
@@ -40,20 +40,20 @@
typedef struct _sc61860_cpu_core sc61860_cpu_core;
struct _sc61860_cpu_core
{
- int (*reset)(const device_config *device);
- int (*brk)(const device_config *device);
- int (*x)(const device_config *device);
- int (*ina)(const device_config *device);
- void (*outa)(const device_config *device, int);
- int (*inb)(const device_config *device);
- void (*outb)(const device_config *device, int);
- void (*outc)(const device_config *device, int);
+ int (*reset)(running_device *device);
+ int (*brk)(running_device *device);
+ int (*x)(running_device *device);
+ int (*ina)(running_device *device);
+ void (*outa)(running_device *device, int);
+ int (*inb)(running_device *device);
+ void (*outb)(running_device *device, int);
+ void (*outc)(running_device *device, int);
};
CPU_DISASSEMBLE( sc61860 );
/* this is though for power on/off of the sharps */
-UINT8 *sc61860_internal_ram(const device_config *device);
+UINT8 *sc61860_internal_ram(running_device *device);
CPU_GET_INFO( sc61860 );
#define CPU_SC61860 CPU_GET_INFO_NAME( sc61860 )
diff --git a/src/emu/cpu/scmp/scmp.c b/src/emu/cpu/scmp/scmp.c
index 90b5786152e..d9482d9bc35 100644
--- a/src/emu/cpu/scmp/scmp.c
+++ b/src/emu/cpu/scmp/scmp.c
@@ -32,7 +32,7 @@ struct _scmp_state
UINT8 ER;
UINT8 SR;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
cpu_state_table state;
@@ -82,7 +82,7 @@ static const cpu_state_table state_table_template =
INLINE FUNCTIONS
***************************************************************************/
-INLINE scmp_state *get_safe_token(const device_config *device)
+INLINE scmp_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -528,8 +528,8 @@ static CPU_INIT( scmp )
{
scmp_state *cpustate = get_safe_token(device);
- if (device->static_config != NULL)
- cpustate->config = *(scmp_config *)device->static_config;
+ if (device->baseconfig().static_config != NULL)
+ cpustate->config = *(scmp_config *)device->baseconfig().static_config;
/* set up the state table */
cpustate->state = state_table_template;
cpustate->state.baseptr = cpustate;
diff --git a/src/emu/cpu/se3208/se3208.c b/src/emu/cpu/se3208/se3208.c
index 5edcb3f89a2..9350aabee0c 100644
--- a/src/emu/cpu/se3208/se3208.c
+++ b/src/emu/cpu/se3208/se3208.c
@@ -23,7 +23,7 @@ struct _se3208_state_t
UINT32 PPC;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
UINT8 IRQ;
UINT8 NMI;
@@ -58,7 +58,7 @@ typedef void (*_OP)(se3208_state_t *se3208_state, UINT16 Opcode);
#define INST(a) static void a(se3208_state_t *se3208_state, UINT16 Opcode)
static _OP *OpTable=NULL;
-INLINE se3208_state_t *get_safe_token(const device_config *device)
+INLINE se3208_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/sh2/sh2.c b/src/emu/cpu/sh2/sh2.c
index 35f162d4865..1c2864764b1 100644
--- a/src/emu/cpu/sh2/sh2.c
+++ b/src/emu/cpu/sh2/sh2.c
@@ -2455,12 +2455,12 @@ CPU_GET_INFO( sh1 )
}
}
-void sh2drc_set_options(const device_config *device, UINT32 options)
+void sh2drc_set_options(running_device *device, UINT32 options)
{
/* doesn't apply here */
}
-void sh2drc_add_pcflush(const device_config *device, offs_t address)
+void sh2drc_add_pcflush(running_device *device, offs_t address)
{
/* doesn't apply here */
}
diff --git a/src/emu/cpu/sh2/sh2.h b/src/emu/cpu/sh2/sh2.h
index a89adb60801..792147ddeb2 100644
--- a/src/emu/cpu/sh2/sh2.h
+++ b/src/emu/cpu/sh2/sh2.h
@@ -73,8 +73,8 @@ extern CPU_GET_INFO( sh2 );
WRITE32_HANDLER( sh2_internal_w );
READ32_HANDLER( sh2_internal_r );
-void sh2_set_ftcsr_read_callback(const device_config *device, void (*callback)(UINT32));
-void sh2_set_frt_input(const device_config *device, int state);
+void sh2_set_ftcsr_read_callback(running_device *device, void (*callback)(UINT32));
+void sh2_set_frt_input(running_device *device, int state);
/***************************************************************************
COMPILER-SPECIFIC OPTIONS
@@ -87,7 +87,7 @@ void sh2_set_frt_input(const device_config *device, int state);
#define SH2DRC_COMPATIBLE_OPTIONS (SH2DRC_STRICT_VERIFY | SH2DRC_FLUSH_PC | SH2DRC_STRICT_PCREL)
#define SH2DRC_FASTEST_OPTIONS (0)
-void sh2drc_set_options(const device_config *device, UINT32 options);
-void sh2drc_add_pcflush(const device_config *device, offs_t address);
+void sh2drc_set_options(running_device *device, UINT32 options);
+void sh2drc_add_pcflush(running_device *device, offs_t address);
#endif /* __SH2_H__ */
diff --git a/src/emu/cpu/sh2/sh2comn.c b/src/emu/cpu/sh2/sh2comn.c
index f0f4148865c..a27f5cbca04 100644
--- a/src/emu/cpu/sh2/sh2comn.c
+++ b/src/emu/cpu/sh2/sh2comn.c
@@ -500,13 +500,13 @@ READ32_HANDLER( sh2_internal_r )
return sh2->m[offset];
}
-void sh2_set_ftcsr_read_callback(const device_config *device, void (*callback)(UINT32))
+void sh2_set_ftcsr_read_callback(running_device *device, void (*callback)(UINT32))
{
SH2 *sh2 = GET_SH2(device);
sh2->ftcsr_read_callback = callback;
}
-void sh2_set_frt_input(const device_config *device, int state)
+void sh2_set_frt_input(running_device *device, int state)
{
SH2 *sh2 = GET_SH2(device);
@@ -699,9 +699,9 @@ void sh2_exception(SH2 *sh2, const char *message, int irqline)
#endif
}
-void sh2_common_init(SH2 *sh2, const device_config *device, cpu_irq_callback irqcallback)
+void sh2_common_init(SH2 *sh2, running_device *device, cpu_irq_callback irqcallback)
{
- const sh2_cpu_core *conf = (const sh2_cpu_core *)device->static_config;
+ const sh2_cpu_core *conf = (const sh2_cpu_core *)device->baseconfig().static_config;
sh2->timer = timer_alloc(device->machine, sh2_timer_callback, sh2);
timer_adjust_oneshot(sh2->timer, attotime_never, 0);
diff --git a/src/emu/cpu/sh2/sh2comn.h b/src/emu/cpu/sh2/sh2comn.h
index 2c48eafeacf..f9559d72d0c 100644
--- a/src/emu/cpu/sh2/sh2comn.h
+++ b/src/emu/cpu/sh2/sh2comn.h
@@ -115,7 +115,7 @@ typedef struct
INT8 irq_line_state[17];
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *internal;
UINT32 *m;
@@ -172,7 +172,7 @@ typedef struct
#endif
} SH2;
-void sh2_common_init(SH2 *sh2, const device_config *device, cpu_irq_callback irqcallback);
+void sh2_common_init(SH2 *sh2, running_device *device, cpu_irq_callback irqcallback);
void sh2_recalc_irq(SH2 *sh2);
void sh2_set_irq_line(SH2 *sh2, int irqline, int state);
void sh2_exception(SH2 *sh2, const char *message, int irqline);
diff --git a/src/emu/cpu/sh2/sh2drc.c b/src/emu/cpu/sh2/sh2drc.c
index 0acdb13c448..ed7378e3245 100644
--- a/src/emu/cpu/sh2/sh2drc.c
+++ b/src/emu/cpu/sh2/sh2drc.c
@@ -137,7 +137,7 @@ static void cfunc_DIV1(void *param);
INLINE FUNCTIONS
***************************************************************************/
-INLINE SH2 *get_safe_token(const device_config *device)
+INLINE SH2 *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -3156,7 +3156,7 @@ static int generate_group_12(SH2 *sh2, drcuml_block *block, compiler_state *comp
sh2drc_set_options - configure DRC options
-------------------------------------------------*/
-void sh2drc_set_options(const device_config *device, UINT32 options)
+void sh2drc_set_options(running_device *device, UINT32 options)
{
SH2 *sh2 = get_safe_token(device);
sh2->drcoptions = options;
@@ -3168,7 +3168,7 @@ void sh2drc_set_options(const device_config *device, UINT32 options)
the PC must be flushed for speedups to work
-------------------------------------------------*/
-void sh2drc_add_pcflush(const device_config *device, offs_t address)
+void sh2drc_add_pcflush(running_device *device, offs_t address)
{
SH2 *sh2 = get_safe_token(device);
diff --git a/src/emu/cpu/sh4/sh4.c b/src/emu/cpu/sh4/sh4.c
index 9d2d4cd2f34..795225a532c 100644
--- a/src/emu/cpu/sh4/sh4.c
+++ b/src/emu/cpu/sh4/sh4.c
@@ -30,7 +30,7 @@
CPU_DISASSEMBLE( sh4 );
-INLINE SH4 *get_safe_token(const device_config *device)
+INLINE SH4 *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -3384,7 +3384,7 @@ static CPU_EXECUTE( sh4 )
static CPU_INIT( sh4 )
{
- const struct sh4_config *conf = (const struct sh4_config *)device->static_config;
+ const struct sh4_config *conf = (const struct sh4_config *)device->baseconfig().static_config;
SH4 *sh4 = get_safe_token(device);
sh4_common_init(device);
@@ -3607,7 +3607,7 @@ static CPU_SET_INFO( sh4 )
}
}
-void sh4_set_ftcsr_callback(const device_config *device, sh4_ftcsr_callback callback)
+void sh4_set_ftcsr_callback(running_device *device, sh4_ftcsr_callback callback)
{
SH4 *sh4 = get_safe_token(device);
sh4->ftcsr_read_callback = callback;
diff --git a/src/emu/cpu/sh4/sh4.h b/src/emu/cpu/sh4/sh4.h
index 8bc2d370a60..a1ba8368f84 100644
--- a/src/emu/cpu/sh4/sh4.h
+++ b/src/emu/cpu/sh4/sh4.h
@@ -96,10 +96,10 @@ extern CPU_GET_INFO( sh4 );
WRITE32_HANDLER( sh4_internal_w );
READ32_HANDLER( sh4_internal_r );
-void sh4_set_frt_input(const device_config *device, int state);
-void sh4_set_irln_input(const device_config *device, int value);
-void sh4_set_ftcsr_callback(const device_config *device, sh4_ftcsr_callback callback);
-void sh4_dma_ddt(const device_config *device, struct sh4_ddt_dma *s);
+void sh4_set_frt_input(running_device *device, int state);
+void sh4_set_irln_input(running_device *device, int value);
+void sh4_set_ftcsr_callback(running_device *device, sh4_ftcsr_callback callback);
+void sh4_dma_ddt(running_device *device, struct sh4_ddt_dma *s);
#endif /* __SH4_H__ */
diff --git a/src/emu/cpu/sh4/sh4comn.c b/src/emu/cpu/sh4/sh4comn.c
index 93ee5f542b8..1e31bd9ede5 100644
--- a/src/emu/cpu/sh4/sh4comn.c
+++ b/src/emu/cpu/sh4/sh4comn.c
@@ -30,7 +30,7 @@ static const UINT16 tcnt[] = { TCNT0, TCNT1, TCNT2 };
static const UINT16 tcor[] = { TCOR0, TCOR1, TCOR2 };
static const UINT16 tcr[] = { TCR0, TCR1, TCR2 };
-INLINE SH4 *get_safe_token(const device_config *device)
+INLINE SH4 *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -997,7 +997,7 @@ READ32_HANDLER( sh4_internal_r )
return sh4->m[offset];
}
-void sh4_set_frt_input(const device_config *device, int state)
+void sh4_set_frt_input(running_device *device, int state)
{
SH4 *sh4 = get_safe_token(device);
@@ -1033,7 +1033,7 @@ void sh4_set_frt_input(const device_config *device, int state)
#endif
}
-void sh4_set_irln_input(const device_config *device, int value)
+void sh4_set_irln_input(running_device *device, int value)
{
SH4 *sh4 = get_safe_token(device);
@@ -1162,7 +1162,7 @@ void sh4_parse_configuration(SH4 *sh4, const struct sh4_config *conf)
}
}
-void sh4_common_init(const device_config *device)
+void sh4_common_init(running_device *device)
{
SH4 *sh4 = get_safe_token(device);
int i;
@@ -1189,7 +1189,7 @@ void sh4_common_init(const device_config *device)
sh4->m = auto_alloc_array(device->machine, UINT32, 16384);
}
-void sh4_dma_ddt(const device_config *device, struct sh4_ddt_dma *s)
+void sh4_dma_ddt(running_device *device, struct sh4_ddt_dma *s)
{
SH4 *sh4 = get_safe_token(device);
UINT32 chcr;
diff --git a/src/emu/cpu/sh4/sh4comn.h b/src/emu/cpu/sh4/sh4comn.h
index ccb726f66a4..c252f67fbf5 100644
--- a/src/emu/cpu/sh4/sh4comn.h
+++ b/src/emu/cpu/sh4/sh4comn.h
@@ -62,7 +62,7 @@ typedef struct
INT8 irq_line_state[17];
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *internal;
const address_space *program;
const address_space *io;
@@ -148,7 +148,7 @@ void sh4_set_irq_line(SH4 *sh4, int irqline, int state); // set state of externa
#ifdef LSB_FIRST
void sh4_swap_fp_couples(SH4 *sh4);
#endif
-void sh4_common_init(const device_config *device);
+void sh4_common_init(running_device *device);
INLINE void sh4_check_pending_irq(SH4 *sh4, const char *message) // look for highest priority active exception and handle it
{
diff --git a/src/emu/cpu/sharc/sharc.c b/src/emu/cpu/sharc/sharc.c
index e4a7790cb9a..b1610471bcb 100644
--- a/src/emu/cpu/sharc/sharc.c
+++ b/src/emu/cpu/sharc/sharc.c
@@ -125,7 +125,7 @@ struct _SHARC_REGS
UINT16 *internal_ram_block0, *internal_ram_block1;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
void (*opcode_handler)(SHARC_REGS *cpustate);
@@ -184,7 +184,7 @@ static void (* sharc_op[512])(SHARC_REGS *cpustate);
((UINT64)(cpustate->internal_ram[((pc-0x20000) * 3) + 1]) << 16) | \
((UINT64)(cpustate->internal_ram[((pc-0x20000) * 3) + 2]) << 0)
-INLINE SHARC_REGS *get_safe_token(const device_config *device)
+INLINE SHARC_REGS *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -371,7 +371,7 @@ static void build_opcode_table(void)
/*****************************************************************************/
-void sharc_external_iop_write(const device_config *device, UINT32 address, UINT32 data)
+void sharc_external_iop_write(running_device *device, UINT32 address, UINT32 data)
{
SHARC_REGS *cpustate = get_safe_token(device);
if (address == 0x1c)
@@ -388,7 +388,7 @@ void sharc_external_iop_write(const device_config *device, UINT32 address, UINT3
}
}
-void sharc_external_dma_write(const device_config *device, UINT32 address, UINT64 data)
+void sharc_external_dma_write(running_device *device, UINT32 address, UINT64 data)
{
SHARC_REGS *cpustate = get_safe_token(device);
switch ((cpustate->dma[6].control >> 6) & 0x3)
@@ -420,7 +420,7 @@ void sharc_external_dma_write(const device_config *device, UINT32 address, UINT6
static CPU_INIT( sharc )
{
SHARC_REGS *cpustate = get_safe_token(device);
- const sharc_config *cfg = (const sharc_config *)device->static_config;
+ const sharc_config *cfg = (const sharc_config *)device->baseconfig().static_config;
int saveindex;
cpustate->boot_mode = cfg->boot_mode;
@@ -608,7 +608,7 @@ static void sharc_set_irq_line(SHARC_REGS *cpustate, int irqline, int state)
}
}
-void sharc_set_flag_input(const device_config *device, int flag_num, int state)
+void sharc_set_flag_input(running_device *device, int flag_num, int state)
{
SHARC_REGS *cpustate = get_safe_token(device);
if (flag_num >= 0 && flag_num < 4)
diff --git a/src/emu/cpu/sharc/sharc.h b/src/emu/cpu/sharc/sharc.h
index 83ea58ab173..7b011457deb 100644
--- a/src/emu/cpu/sharc/sharc.h
+++ b/src/emu/cpu/sharc/sharc.h
@@ -21,10 +21,10 @@ typedef struct {
SHARC_BOOT_MODE boot_mode;
} sharc_config;
-extern void sharc_set_flag_input(const device_config *device, int flag_num, int state);
+extern void sharc_set_flag_input(running_device *device, int flag_num, int state);
-extern void sharc_external_iop_write(const device_config *device, UINT32 address, UINT32 data);
-extern void sharc_external_dma_write(const device_config *device, UINT32 address, UINT64 data);
+extern void sharc_external_iop_write(running_device *device, UINT32 address, UINT32 data);
+extern void sharc_external_dma_write(running_device *device, UINT32 address, UINT64 data);
CPU_GET_INFO( adsp21062 );
#define CPU_ADSP21062 CPU_GET_INFO_NAME( adsp21062 )
diff --git a/src/emu/cpu/sm8500/sm8500.c b/src/emu/cpu/sm8500/sm8500.c
index 7bd3e2bea89..f73c3129cfa 100644
--- a/src/emu/cpu/sm8500/sm8500.c
+++ b/src/emu/cpu/sm8500/sm8500.c
@@ -51,12 +51,12 @@ struct _sm8500_state
int halted;
int icount;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
UINT8 internal_ram[0x500];
};
-INLINE sm8500_state *get_safe_token(const device_config *device)
+INLINE sm8500_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -101,9 +101,9 @@ static CPU_INIT( sm8500 )
cpustate->irq_callback = irqcallback;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
- if ( device->static_config != NULL ) {
- cpustate->config.handle_dma = ((SM8500_CONFIG *)device->static_config)->handle_dma;
- cpustate->config.handle_timers = ((SM8500_CONFIG *)device->static_config)->handle_timers;
+ if ( device->baseconfig().static_config != NULL ) {
+ cpustate->config.handle_dma = ((SM8500_CONFIG *)device->baseconfig().static_config)->handle_dma;
+ cpustate->config.handle_timers = ((SM8500_CONFIG *)device->baseconfig().static_config)->handle_timers;
} else {
cpustate->config.handle_dma = NULL;
cpustate->config.handle_timers = NULL;
diff --git a/src/emu/cpu/sm8500/sm8500.h b/src/emu/cpu/sm8500/sm8500.h
index b1d0bf4ccc3..f334bcecf7b 100644
--- a/src/emu/cpu/sm8500/sm8500.h
+++ b/src/emu/cpu/sm8500/sm8500.h
@@ -5,8 +5,8 @@
typedef struct {
- void (*handle_dma)(const device_config *device, int cycles);
- void (*handle_timers)(const device_config *device, int cycles);
+ void (*handle_dma)(running_device *device, int cycles);
+ void (*handle_timers)(running_device *device, int cycles);
} SM8500_CONFIG;
/* interrupts */
diff --git a/src/emu/cpu/spc700/spc700.c b/src/emu/cpu/spc700/spc700.c
index 922c310732d..942e9af4d02 100644
--- a/src/emu/cpu/spc700/spc700.c
+++ b/src/emu/cpu/spc700/spc700.c
@@ -87,7 +87,7 @@ typedef struct
uint line_rst; /* Status of the RESET line */
uint ir; /* Instruction Register */
cpu_irq_callback int_ack;
- const device_config *device;
+ running_device *device;
const address_space *program;
uint stopped; /* stopped status */
int ICount;
@@ -98,7 +98,7 @@ typedef struct
int spc_int32;
} spc700i_cpu;
-INLINE spc700i_cpu *get_safe_token(const device_config *device)
+INLINE spc700i_cpu *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/ssem/ssem.c b/src/emu/cpu/ssem/ssem.c
index 661cb3d79ef..ae6ba2eb717 100644
--- a/src/emu/cpu/ssem/ssem.c
+++ b/src/emu/cpu/ssem/ssem.c
@@ -21,12 +21,12 @@ struct _ssem_state
UINT32 a;
UINT32 halt;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE ssem_state *get_safe_token(const device_config *device)
+INLINE ssem_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/ssp1601/ssp1601.c b/src/emu/cpu/ssp1601/ssp1601.c
index d7cec0918dd..8c2dab46922 100644
--- a/src/emu/cpu/ssp1601/ssp1601.c
+++ b/src/emu/cpu/ssp1601/ssp1601.c
@@ -52,12 +52,12 @@ struct _ssp1601_state_t
int g_cycles;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
};
-INLINE ssp1601_state_t *get_safe_token(const device_config *device)
+INLINE ssp1601_state_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/superfx/superfx.c b/src/emu/cpu/superfx/superfx.c
index f7bfdd61dfe..fc5add9bf52 100644
--- a/src/emu/cpu/superfx/superfx.c
+++ b/src/emu/cpu/superfx/superfx.c
@@ -61,12 +61,12 @@ struct _superfx_state
cache_t cache;
pixelcache_t pixelcache[2];
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
};
-INLINE superfx_state *get_safe_token(const device_config *device)
+INLINE superfx_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -472,7 +472,7 @@ INLINE UINT8 superfx_pipe(superfx_state *cpustate)
/*****************************************************************************/
-UINT8 superfx_mmio_read(const device_config *cpu, UINT32 addr)
+UINT8 superfx_mmio_read(running_device *cpu, UINT32 addr)
{
superfx_state *cpustate = get_safe_token(cpu);
@@ -524,7 +524,7 @@ UINT8 superfx_mmio_read(const device_config *cpu, UINT32 addr)
return 0;
}
-void superfx_mmio_write(const device_config *cpu, UINT32 addr, UINT8 data)
+void superfx_mmio_write(running_device *cpu, UINT32 addr, UINT8 data)
{
superfx_state *cpustate = get_safe_token(cpu);
@@ -639,7 +639,7 @@ static void superfx_timing_reset(superfx_state *cpustate)
cpustate->ramdr = 0;
}
-void superfx_add_clocks(const device_config *cpu, INT32 clocks)
+void superfx_add_clocks(running_device *cpu, INT32 clocks)
{
superfx_state *cpustate = get_safe_token(cpu);
@@ -682,9 +682,9 @@ static CPU_INIT( superfx )
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
- if (device->static_config != NULL)
+ if (device->baseconfig().static_config != NULL)
{
- cpustate->config = *(superfx_config *)device->static_config;
+ cpustate->config = *(superfx_config *)device->baseconfig().static_config;
}
devcb_resolve_write_line(&cpustate->out_irq_func, &cpustate->config.out_irq_func, device);
diff --git a/src/emu/cpu/superfx/superfx.h b/src/emu/cpu/superfx/superfx.h
index 96043a8fde6..b111e323b61 100644
--- a/src/emu/cpu/superfx/superfx.h
+++ b/src/emu/cpu/superfx/superfx.h
@@ -96,8 +96,8 @@ CPU_GET_INFO( superfx );
CPU_DISASSEMBLE( superfx );
extern offs_t superfx_dasm_one(char *buffer, offs_t pc, UINT8 op, UINT8 param0, UINT8 param1, UINT16 alt);
-UINT8 superfx_mmio_read(const device_config *cpu, UINT32 addr);
-void superfx_mmio_write(const device_config *cpu, UINT32 addr, UINT8 data);
-void superfx_add_clocks(const device_config *cpu, INT32 clocks);
+UINT8 superfx_mmio_read(running_device *cpu, UINT32 addr);
+void superfx_mmio_write(running_device *cpu, UINT32 addr, UINT8 data);
+void superfx_add_clocks(running_device *cpu, INT32 clocks);
#endif /* __SUPERFX_H__ */
diff --git a/src/emu/cpu/t11/t11.c b/src/emu/cpu/t11/t11.c
index 2368f6ee8bc..d384d22a1a6 100644
--- a/src/emu/cpu/t11/t11.c
+++ b/src/emu/cpu/t11/t11.c
@@ -33,12 +33,12 @@ struct _t11_state
UINT8 irq_state;
int icount;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
};
-INLINE t11_state *get_safe_token(const device_config *device)
+INLINE t11_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -259,7 +259,7 @@ static CPU_INIT( t11 )
0xc000, 0x8000, 0x4000, 0x2000,
0x1000, 0x0000, 0xf600, 0xf400
};
- const struct t11_setup *setup = (const struct t11_setup *)device->static_config;
+ const struct t11_setup *setup = (const struct t11_setup *)device->baseconfig().static_config;
t11_state *cpustate = get_safe_token(device);
cpustate->initial_pc = initial_pc[setup->mode >> 13];
diff --git a/src/emu/cpu/tlcs90/tlcs90.c b/src/emu/cpu/tlcs90/tlcs90.c
index ecef3e2979c..d3284610881 100644
--- a/src/emu/cpu/tlcs90/tlcs90.c
+++ b/src/emu/cpu/tlcs90/tlcs90.c
@@ -31,7 +31,7 @@ typedef struct
UINT8 halt, after_EI;
UINT16 irq_state, irq_mask;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -60,7 +60,7 @@ typedef struct
} t90_Regs;
-INLINE t90_Regs *get_safe_token(const device_config *device)
+INLINE t90_Regs *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/tlcs900/tlcs900.c b/src/emu/cpu/tlcs900/tlcs900.c
index 98927db7019..ef8605afc61 100644
--- a/src/emu/cpu/tlcs900/tlcs900.c
+++ b/src/emu/cpu/tlcs900/tlcs900.c
@@ -72,7 +72,7 @@ struct _tlcs900_state
int icount;
int regbank;
cpu_irq_callback irqcallback;
- const device_config *device;
+ running_device *device;
const address_space *program;
};
@@ -204,7 +204,7 @@ struct _tlcs900_state
#define WRMEML(addr,data) { UINT32 dl = data; WRMEMW(addr,dl); WRMEMW(addr+2,(dl >> 16)); }
-INLINE tlcs900_state *get_safe_token( const device_config *device )
+INLINE tlcs900_state *get_safe_token( running_device *device )
{
assert( device != NULL );
assert( device->token != NULL );
@@ -219,7 +219,7 @@ static CPU_INIT( tlcs900 )
{
tlcs900_state *cpustate = get_safe_token(device);
- cpustate->intf = (const tlcs900_interface *)device->static_config;
+ cpustate->intf = (const tlcs900_interface *)device->baseconfig().static_config;
cpustate->irqcallback = irqcallback;
cpustate->device = device;
cpustate->program = device->space( AS_PROGRAM );
diff --git a/src/emu/cpu/tms0980/tms0980.c b/src/emu/cpu/tms0980/tms0980.c
index 37d96cab152..5d97d35576c 100644
--- a/src/emu/cpu/tms0980/tms0980.c
+++ b/src/emu/cpu/tms0980/tms0980.c
@@ -446,7 +446,7 @@ static const UINT32 tms1100_default_decode[256] = {
};
-INLINE tms0980_state *get_safe_token(const device_config *device)
+INLINE tms0980_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -492,11 +492,11 @@ static ADDRESS_MAP_START(data_7bit, ADDRESS_SPACE_DATA, 8)
ADDRESS_MAP_END
-static void cpu_init_tms_common( const device_config *device, const UINT32* decode_table, UINT16 o_mask, UINT16 r_mask, UINT8 pc_size, UINT8 byte_size )
+static void cpu_init_tms_common( running_device *device, const UINT32* decode_table, UINT16 o_mask, UINT16 r_mask, UINT8 pc_size, UINT8 byte_size )
{
tms0980_state *cpustate = get_safe_token( device );
- cpustate->config = (const tms0980_config *) device->static_config;
+ cpustate->config = (const tms0980_config *) device->baseconfig().static_config;
assert( cpustate->config != NULL );
@@ -760,7 +760,7 @@ static const UINT8 tms1000_pc_decode[64] =
};
-static void tms0980_set_cki_bus( const device_config *device )
+static void tms0980_set_cki_bus( running_device *device )
{
tms0980_state *cpustate = get_safe_token( device );
diff --git a/src/emu/cpu/tms32010/tms32010.c b/src/emu/cpu/tms32010/tms32010.c
index 5952cbdfa7e..e02d22daf28 100644
--- a/src/emu/cpu/tms32010/tms32010.c
+++ b/src/emu/cpu/tms32010/tms32010.c
@@ -91,13 +91,13 @@ struct _tms32010_state
UINT16 memaccess;
int addr_mask;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
};
-INLINE tms32010_state *get_safe_token(const device_config *device)
+INLINE tms32010_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/tms32025/tms32025.c b/src/emu/cpu/tms32025/tms32025.c
index 4889038c46a..a6fda6241c4 100644
--- a/src/emu/cpu/tms32025/tms32025.c
+++ b/src/emu/cpu/tms32025/tms32025.c
@@ -173,7 +173,7 @@ struct _tms32025_state
int mHackIgnoreARP; /* special handling for lst, lst1 instructions */
int waiting_for_serial_frame;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
const address_space *io;
@@ -182,7 +182,7 @@ struct _tms32025_state
UINT16 *datamap[0x200];
};
-INLINE tms32025_state *get_safe_token(const device_config *device)
+INLINE tms32025_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/tms32031/tms32031.c b/src/emu/cpu/tms32031/tms32031.c
index 323dcc1c29e..838c72d4b15 100644
--- a/src/emu/cpu/tms32031/tms32031.c
+++ b/src/emu/cpu/tms32031/tms32031.c
@@ -119,11 +119,11 @@ struct _tms32031_state
tms32031_xf_func xf1_w;
tms32031_iack_func iack_w;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
};
-INLINE tms32031_state *get_safe_token(const device_config *device)
+INLINE tms32031_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -369,7 +369,7 @@ static void set_irq_line(tms32031_state *tms, int irqline, int state)
static CPU_INIT( tms32031 )
{
- const tms32031_config *configdata = (const tms32031_config *)device->static_config;
+ const tms32031_config *configdata = (const tms32031_config *)device->baseconfig().static_config;
tms32031_state *tms = get_safe_token(device);
int i;
diff --git a/src/emu/cpu/tms32031/tms32031.h b/src/emu/cpu/tms32031/tms32031.h
index abb852ddb1a..2dbd6fe73ec 100644
--- a/src/emu/cpu/tms32031/tms32031.h
+++ b/src/emu/cpu/tms32031/tms32031.h
@@ -16,8 +16,8 @@
TYPE DEFINITIONS
***************************************************************************/
-typedef void (*tms32031_xf_func)(const device_config *device, UINT8 val);
-typedef void (*tms32031_iack_func)(const device_config *device, UINT8 val, offs_t address);
+typedef void (*tms32031_xf_func)(running_device *device, UINT8 val);
+typedef void (*tms32031_iack_func)(running_device *device, UINT8 val, offs_t address);
typedef struct _tms32031_config tms32031_config;
diff --git a/src/emu/cpu/tms32051/tms32051.c b/src/emu/cpu/tms32051/tms32051.c
index fc280411836..4c6579e410b 100644
--- a/src/emu/cpu/tms32051/tms32051.c
+++ b/src/emu/cpu/tms32051/tms32051.c
@@ -143,13 +143,13 @@ struct _tms32051_state
} shadow;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *data;
int icount;
};
-INLINE tms32051_state *get_safe_token(const device_config *device)
+INLINE tms32051_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/tms34010/tms34010.c b/src/emu/cpu/tms34010/tms34010.c
index 0aed131d99a..f6105abd317 100644
--- a/src/emu/cpu/tms34010/tms34010.c
+++ b/src/emu/cpu/tms34010/tms34010.c
@@ -62,10 +62,10 @@ struct _tms34010_state
UINT8 external_host_access;
UINT8 executing;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const tms34010_config *config;
- const device_config *screen;
+ running_device *screen;
emu_timer * scantimer;
int icount;
@@ -82,7 +82,7 @@ struct _tms34010_state
cpu_state_table state;
};
-INLINE tms34010_state *get_safe_token(const device_config *device)
+INLINE tms34010_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -683,7 +683,7 @@ static void check_interrupt(tms34010_state *tms)
static CPU_INIT( tms34010 )
{
- const tms34010_config *configdata = device->static_config ? (const tms34010_config *)device->static_config : &default_config;
+ const tms34010_config *configdata = device->baseconfig().static_config ? (const tms34010_config *)device->baseconfig().static_config : &default_config;
tms34010_state *tms = get_safe_token(device);
tms->external_host_access = FALSE;
@@ -725,7 +725,7 @@ static CPU_RESET( tms34010 )
/* zap the state and copy in the config pointer */
tms34010_state *tms = get_safe_token(device);
const tms34010_config *config = tms->config;
- const device_config *screen = tms->screen;
+ running_device *screen = tms->screen;
UINT16 *shiftreg = tms->shiftreg;
cpu_irq_callback save_irqcallback = tms->irq_callback;
emu_timer *save_scantimer = tms->scantimer;
@@ -1096,7 +1096,7 @@ static TIMER_CALLBACK( scanline_callback )
}
-void tms34010_get_display_params(const device_config *cpu, tms34010_display_params *params)
+void tms34010_get_display_params(running_device *cpu, tms34010_display_params *params)
{
tms34010_state *tms = get_safe_token(cpu);
@@ -1135,7 +1135,7 @@ VIDEO_UPDATE( tms340x0 )
pen_t blackpen = get_black_pen(screen->machine);
tms34010_display_params params;
tms34010_state *tms = NULL;
- const device_config *cpu;
+ running_device *cpu;
int x;
/* find the owning CPU */
@@ -1609,7 +1609,7 @@ static STATE_POSTLOAD( tms34010_state_postload )
HOST INTERFACE WRITES
***************************************************************************/
-void tms34010_host_w(const device_config *cpu, int reg, int data)
+void tms34010_host_w(running_device *cpu, int reg, int data)
{
const address_space *space;
tms34010_state *tms = get_safe_token(cpu);
@@ -1665,7 +1665,7 @@ void tms34010_host_w(const device_config *cpu, int reg, int data)
HOST INTERFACE READS
***************************************************************************/
-int tms34010_host_r(const device_config *cpu, int reg)
+int tms34010_host_r(running_device *cpu, int reg)
{
tms34010_state *tms = get_safe_token(cpu);
unsigned int addr;
diff --git a/src/emu/cpu/tms34010/tms34010.h b/src/emu/cpu/tms34010/tms34010.h
index 4446ea8fc65..62b40d218aa 100644
--- a/src/emu/cpu/tms34010/tms34010.h
+++ b/src/emu/cpu/tms34010/tms34010.h
@@ -196,8 +196,8 @@ struct _tms34010_config
const char *screen_tag; /* the screen operated on */
UINT32 pixclock; /* the pixel clock (0 means don't adjust screen size) */
int pixperclock; /* pixels per clock */
- void (*scanline_callback)(const device_config *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params);
- void (*output_int)(const device_config *device, int state); /* output interrupt callback */
+ void (*scanline_callback)(running_device *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params);
+ void (*output_int)(running_device *device, int state); /* output interrupt callback */
void (*to_shiftreg)(const address_space *space, offs_t, UINT16 *); /* shift register write */
void (*from_shiftreg)(const address_space *space, offs_t, UINT16 *); /* shift register read */
};
@@ -205,7 +205,7 @@ struct _tms34010_config
/* PUBLIC FUNCTIONS - 34010 */
VIDEO_UPDATE( tms340x0 );
-void tms34010_get_display_params(const device_config *cpu, tms34010_display_params *params);
+void tms34010_get_display_params(running_device *cpu, tms34010_display_params *params);
CPU_GET_INFO( tms34010 );
#define CPU_TMS34010 CPU_GET_INFO_NAME( tms34010 )
@@ -221,8 +221,8 @@ CPU_GET_INFO( tms34020 );
#define TMS34010_HOST_DATA 2
#define TMS34010_HOST_CONTROL 3
-void tms34010_host_w(const device_config *cpu, int reg, int data);
-int tms34010_host_r(const device_config *cpu, int reg);
+void tms34010_host_w(running_device *cpu, int reg, int data);
+int tms34010_host_r(running_device *cpu, int reg);
/* Reads & writes to the 34010 I/O registers; place at 0xc0000000 */
diff --git a/src/emu/cpu/tms57002/tms57002.c b/src/emu/cpu/tms57002/tms57002.c
index b26bb4b3b83..cfbd3de3686 100644
--- a/src/emu/cpu/tms57002/tms57002.c
+++ b/src/emu/cpu/tms57002/tms57002.c
@@ -109,7 +109,7 @@ typedef struct {
int unsupported_inst_warning;
} tms57002_t;
-INLINE tms57002_t *get_safe_token(const device_config *device)
+INLINE tms57002_t *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -254,7 +254,7 @@ READ8_DEVICE_HANDLER(tms57002_dready_r)
return s->sti & S_HOST ? 0 : 1;
}
-void tms57002_sync(const device_config *device)
+void tms57002_sync(running_device *device)
{
tms57002_t *s = get_safe_token(device);
diff --git a/src/emu/cpu/tms57002/tms57002.h b/src/emu/cpu/tms57002/tms57002.h
index 36f956363be..5c0a3f37a45 100644
--- a/src/emu/cpu/tms57002/tms57002.h
+++ b/src/emu/cpu/tms57002/tms57002.h
@@ -19,7 +19,7 @@ WRITE8_DEVICE_HANDLER(tms57002_cload_w);
READ8_DEVICE_HANDLER(tms57002_empty_r);
READ8_DEVICE_HANDLER(tms57002_dready_r);
-void tms57002_sync(const device_config *cpu);
+void tms57002_sync(running_device *cpu);
#endif
diff --git a/src/emu/cpu/tms7000/tms7000.c b/src/emu/cpu/tms7000/tms7000.c
index d0bb4b0a24c..2902ccba522 100644
--- a/src/emu/cpu/tms7000/tms7000.c
+++ b/src/emu/cpu/tms7000/tms7000.c
@@ -45,7 +45,7 @@ static void tms7000_check_IRQ_lines(tms7000_state *cpustate);
static void tms7000_do_interrupt( tms7000_state *cpustate, UINT16 address, UINT8 line );
static CPU_EXECUTE( tms7000 );
static CPU_EXECUTE( tms7000_exl );
-static void tms7000_service_timer1( const device_config *device );
+static void tms7000_service_timer1( running_device *device );
static UINT16 bcd_add( UINT16 a, UINT16 b );
static UINT16 bcd_tencomp( UINT16 a );
static UINT16 bcd_sub( UINT16 a, UINT16 b);
@@ -73,7 +73,7 @@ struct _tms7000_state
UINT8 rf[0x80]; /* Register file (SJE) */
UINT8 pf[0x100]; /* Perpherial file */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -85,7 +85,7 @@ struct _tms7000_state
UINT8 idle_state; /* Set after the execution of an idle instruction */
};
-INLINE tms7000_state *get_safe_token(const device_config *device)
+INLINE tms7000_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -529,7 +529,7 @@ static CPU_EXECUTE( tms7000_exl )
/****************************************************************************
* Trigger the event counter
****************************************************************************/
-void tms7000_A6EC1( const device_config *device )
+void tms7000_A6EC1( running_device *device )
{
tms7000_state *cpustate = get_safe_token(device);
if( (cpustate->pf[0x03] & 0x80) == 0x80 ) /* Is timer system active? */
@@ -539,7 +539,7 @@ void tms7000_A6EC1( const device_config *device )
}
}
-static void tms7000_service_timer1( const device_config *device )
+static void tms7000_service_timer1( running_device *device )
{
tms7000_state *cpustate = get_safe_token(device);
if( --cpustate->t1_prescaler < 0 ) /* Decrement prescaler and check for underflow */
diff --git a/src/emu/cpu/tms7000/tms7000.h b/src/emu/cpu/tms7000/tms7000.h
index 0fcf1430bae..2cd8379d569 100644
--- a/src/emu/cpu/tms7000/tms7000.h
+++ b/src/emu/cpu/tms7000/tms7000.h
@@ -46,7 +46,7 @@ enum
};
/* PUBLIC FUNCTIONS */
-extern void tms7000_A6EC1( const device_config *device ); /* External event counter */
+extern void tms7000_A6EC1( running_device *device ); /* External event counter */
extern CPU_GET_INFO( tms7000 );
extern CPU_GET_INFO( tms7000_exl );
diff --git a/src/emu/cpu/tms9900/99xxcore.h b/src/emu/cpu/tms9900/99xxcore.h
index aa17a921d29..fda462bf4e2 100644
--- a/src/emu/cpu/tms9900/99xxcore.h
+++ b/src/emu/cpu/tms9900/99xxcore.h
@@ -92,19 +92,19 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX ti990_10
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( ti990_10 )
- #define TMS99XX_cpu_get_name "TI990/10"
+ #define TMS99XX_device_get_name "TI990/10"
#elif (TMS99XX_MODEL == TMS9900_ID)
#define TMS99XX_PREFIX tms9900
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9900 )
- #define TMS99XX_cpu_get_name "TMS9900"
+ #define TMS99XX_device_get_name "TMS9900"
#elif (TMS99XX_MODEL == TMS9940_ID)
#define TMS99XX_PREFIX tms9940
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9940 )
- #define TMS99XX_cpu_get_name "TMS9940"
+ #define TMS99XX_device_get_name "TMS9940"
#error "tms9940 is not yet supported"
@@ -112,13 +112,13 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX tms9980a
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9980a )
- #define TMS99XX_cpu_get_name "TMS9980A/TMS9981"
+ #define TMS99XX_device_get_name "TMS9980A/TMS9981"
#elif (TMS99XX_MODEL == TMS9985_ID)
#define TMS99XX_PREFIX tms9985
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9985 )
- #define TMS99XX_cpu_get_name "TMS9985"
+ #define TMS99XX_device_get_name "TMS9985"
#error "tms9985 is not yet supported"
@@ -126,7 +126,7 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX tms9989
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9989 )
- #define TMS99XX_cpu_get_name "TMS9989"
+ #define TMS99XX_device_get_name "TMS9989"
#error "tms9989 is not yet supported"
@@ -134,13 +134,13 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX tms9995
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms9995 )
- #define TMS99XX_cpu_get_name "TMS9995"
+ #define TMS99XX_device_get_name "TMS9995"
#elif (TMS99XX_MODEL == TMS99000_ID)
#define TMS99XX_PREFIX tms99000
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms99000 )
- #define TMS99XX_cpu_get_name "TMS99000"
+ #define TMS99XX_device_get_name "TMS99000"
#error "tms99000 is not yet supported"
@@ -148,7 +148,7 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX tms99105a
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms99105a )
- #define TMS99XX_cpu_get_name "TMS99105A"
+ #define TMS99XX_device_get_name "TMS99105A"
#error "tms99105a is not yet supported"
@@ -156,7 +156,7 @@ Other references can be found on spies.com:
#define TMS99XX_PREFIX tms99110a
#define TMS99XX_GET_INFO CPU_GET_INFO_NAME( tms99110a )
- #define TMS99XX_cpu_get_name "TMS99110A"
+ #define TMS99XX_device_get_name "TMS99110A"
#error "tms99110a is not yet supported"
@@ -436,7 +436,7 @@ struct _tms99xx_state
/* note that this callback is used by tms9900_set_irq_line(cpustate) and tms9980a_set_irq_line(cpustate) to
retreive the value on IC0-IC3 (non-standard behaviour) */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -509,7 +509,7 @@ struct _tms99xx_state
int extra_byte; /* buffer holding the unused byte in a word read */
};
-INLINE tms99xx_state *get_safe_token(const device_config *device)
+INLINE tms99xx_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1210,7 +1210,7 @@ static void set_flag1(tms99xx_state *cpustate, int val);
/**************************************************************************/
-static void register_for_save_state(const device_config *device)
+static void register_for_save_state(running_device *device)
{
tms99xx_state *cpustate = get_safe_token(device);
state_save_register_device_item(device, 0, cpustate->WP);
@@ -1288,7 +1288,7 @@ static void register_for_save_state(const device_config *device)
static CPU_INIT( tms99xx )
{
- const TMS99XX_RESET_PARAM *param = (const TMS99XX_RESET_PARAM *) device->static_config;
+ const TMS99XX_RESET_PARAM *param = (const TMS99XX_RESET_PARAM *) device->baseconfig().static_config;
tms99xx_state *cpustate = get_safe_token(device);
register_for_save_state(device);
@@ -4635,7 +4635,7 @@ static CPU_SET_INFO( tms99xx )
* Generic get_info
**************************************************************************/
-void TMS99XX_GET_INFO(const device_config *device, UINT32 state, cpuinfo *info)
+void TMS99XX_GET_INFO(const device_config *devconfig, running_device *device, UINT32 state, cpuinfo *info)
{
tms99xx_state *cpustate = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL;
switch (state)
@@ -4770,7 +4770,7 @@ void TMS99XX_GET_INFO(const device_config *device, UINT32 state, cpuinfo *info)
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cpustate->icount; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
- case DEVINFO_STR_NAME: strcpy(info->s, TMS99XX_cpu_get_name); break;
+ case DEVINFO_STR_NAME: strcpy(info->s, TMS99XX_device_get_name); break;
case DEVINFO_STR_FAMILY: strcpy(info->s, "Texas Instruments 9900"); break;
case DEVINFO_STR_VERSION: strcpy(info->s, "2.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
diff --git a/src/emu/cpu/tms9900/tms9900.h b/src/emu/cpu/tms9900/tms9900.h
index 3f84ed653b7..ce2ea5c25dc 100644
--- a/src/emu/cpu/tms9900/tms9900.h
+++ b/src/emu/cpu/tms9900/tms9900.h
@@ -48,11 +48,11 @@ enum
TMS9900_R12, TMS9900_R13, TMS9900_R14, TMS9900_R15
};
-typedef void (*ti99xx_idle_func)(const device_config *device, int state);
-typedef void (*ti99xx_rset_func)(const device_config *device);
-typedef void (*ti99xx_lrex_func)(const device_config *device);
-typedef void (*ti99xx_ckon_ckof_func)(const device_config *device, int state);
-typedef void (*ti99xx_error_interrupt_func)(const device_config *device, int state);
+typedef void (*ti99xx_idle_func)(running_device *device, int state);
+typedef void (*ti99xx_rset_func)(running_device *device);
+typedef void (*ti99xx_lrex_func)(running_device *device);
+typedef void (*ti99xx_ckon_ckof_func)(running_device *device, int state);
+typedef void (*ti99xx_error_interrupt_func)(running_device *device, int state);
extern CPU_GET_INFO( ti990_10 );
diff --git a/src/emu/cpu/unsp/unsp.c b/src/emu/cpu/unsp/unsp.c
index f0dababc283..dc0f87dab80 100644
--- a/src/emu/cpu/unsp/unsp.c
+++ b/src/emu/cpu/unsp/unsp.c
@@ -10,7 +10,7 @@
#include "debugger.h"
#include "unsp.h"
-INLINE unsp_state *get_safe_token(const device_config *device)
+INLINE unsp_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -116,7 +116,7 @@ static CPU_INIT( unsp )
memset(unsp->r, 0, sizeof(UINT16) * UNSP_GPR_COUNT);
unsp->device = device;
- unsp->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
+ unsp->program = device->space(AS_PROGRAM);
unsp->irq = 0;
unsp->fiq = 0;
}
diff --git a/src/emu/cpu/unsp/unsp.h b/src/emu/cpu/unsp/unsp.h
index cf0961373eb..a7acc04b273 100644
--- a/src/emu/cpu/unsp/unsp.h
+++ b/src/emu/cpu/unsp/unsp.h
@@ -23,7 +23,7 @@ struct _unsp_state
UINT8 sb;
UINT8 saved_sb;
- const device_config *device;
+ running_device *device;
const address_space *program;
int icount;
diff --git a/src/emu/cpu/upd7810/upd7810.c b/src/emu/cpu/upd7810/upd7810.c
index 05bd37ec0ea..8a30f0ec885 100644
--- a/src/emu/cpu/upd7810/upd7810.c
+++ b/src/emu/cpu/upd7810/upd7810.c
@@ -499,13 +499,13 @@ struct _upd7810_state
void (*handle_timers)(upd7810_state *cpustate, int cycles);
UPD7810_CONFIG config;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
};
-INLINE upd7810_state *get_safe_token(const device_config *device)
+INLINE upd7810_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -1701,7 +1701,7 @@ static CPU_INIT( upd7810 )
{
upd7810_state *cpustate = get_safe_token(device);
- cpustate->config = *(const UPD7810_CONFIG*) device->static_config;
+ cpustate->config = *(const UPD7810_CONFIG*) device->baseconfig().static_config;
cpustate->irq_callback = irqcallback;
cpustate->device = device;
cpustate->program = device->space(AS_PROGRAM);
diff --git a/src/emu/cpu/upd7810/upd7810.h b/src/emu/cpu/upd7810/upd7810.h
index e00a08a6d54..d2748d44914 100644
--- a/src/emu/cpu/upd7810/upd7810.h
+++ b/src/emu/cpu/upd7810/upd7810.h
@@ -30,7 +30,7 @@ typedef enum
* It will be called whenever an output signal changes or a new
* input line state is to be sampled.
*/
-typedef int (*upd7810_io_callback)(const device_config *device, int ioline, int state);
+typedef int (*upd7810_io_callback)(running_device *device, int ioline, int state);
// use it as reset parameter in the Machine struct
typedef struct {
diff --git a/src/emu/cpu/v30mz/v30mz.c b/src/emu/cpu/v30mz/v30mz.c
index bc9c6fc5034..16f4c90ea68 100644
--- a/src/emu/cpu/v30mz/v30mz.c
+++ b/src/emu/cpu/v30mz/v30mz.c
@@ -80,7 +80,7 @@ struct _v30mz_state
UINT8 no_interrupt;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -93,7 +93,7 @@ struct _v30mz_state
UINT16 e16;
};
-INLINE v30mz_state *get_safe_token(const device_config *device)
+INLINE v30mz_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -923,7 +923,7 @@ static CPU_DISASSEMBLE( nec )
return necv_dasm_one(buffer, pc, oprom);
}
-static void nec_init(const device_config *device, cpu_irq_callback irqcallback, int type)
+static void nec_init(running_device *device, cpu_irq_callback irqcallback, int type)
{
v30mz_state *cpustate = get_safe_token(device);
diff --git a/src/emu/cpu/v60/v60.c b/src/emu/cpu/v60/v60.c
index daeda645bfa..f68c25952aa 100644
--- a/src/emu/cpu/v60/v60.c
+++ b/src/emu/cpu/v60/v60.c
@@ -78,7 +78,7 @@ struct _v60_state
UINT8 irq_line;
UINT8 nmi_line;
cpu_irq_callback irq_cb;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
UINT32 PPC;
@@ -111,7 +111,7 @@ struct _v60_state
UINT8 moddim;
};
-INLINE v60_state *get_safe_token(const device_config *device)
+INLINE v60_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -312,7 +312,7 @@ static UINT32 opUNHANDLED(v60_state *cpustate)
// Opcode jump table
#include "optable.c"
-static void base_init(const device_config *device, cpu_irq_callback irqcallback)
+static void base_init(running_device *device, cpu_irq_callback irqcallback)
{
v60_state *cpustate = get_safe_token(device);
@@ -381,7 +381,7 @@ static CPU_EXIT( v60 )
{
}
-void v60_stall(const device_config *device)
+void v60_stall(running_device *device)
{
v60_state *cpustate = get_safe_token(device);
cpustate->stall_io = 1;
diff --git a/src/emu/cpu/v60/v60.h b/src/emu/cpu/v60/v60.h
index 2f165bd2856..aa56110905d 100644
--- a/src/emu/cpu/v60/v60.h
+++ b/src/emu/cpu/v60/v60.h
@@ -77,7 +77,7 @@ enum
V60_REGMAX
};
-void v60_stall(const device_config *device);
+void v60_stall(running_device *device);
CPU_GET_INFO( v60 );
#define CPU_V60 CPU_GET_INFO_NAME( v60 )
diff --git a/src/emu/cpu/v810/v810.c b/src/emu/cpu/v810/v810.c
index 4cd2d5ae6bf..eea2784160f 100644
--- a/src/emu/cpu/v810/v810.c
+++ b/src/emu/cpu/v810/v810.c
@@ -30,14 +30,14 @@ struct _v810_state
UINT8 irq_line;
UINT8 nmi_line;
cpu_irq_callback irq_cb;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
UINT32 PPC;
int icount;
};
-INLINE v810_state *get_safe_token(const device_config *device)
+INLINE v810_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/vtlb.c b/src/emu/cpu/vtlb.c
index c64e987edb6..68320609d5d 100644
--- a/src/emu/cpu/vtlb.c
+++ b/src/emu/cpu/vtlb.c
@@ -30,7 +30,7 @@
/* VTLB state */
struct _vtlb_state
{
- const device_config *device; /* CPU device */
+ running_device *device; /* CPU device */
int space; /* address space */
int dynamic; /* number of dynamic entries */
int fixed; /* number of fixed entries */
@@ -55,7 +55,7 @@ struct _vtlb_state
given CPU
-------------------------------------------------*/
-vtlb_state *vtlb_alloc(const device_config *cpu, int space, int fixed_entries, int dynamic_entries)
+vtlb_state *vtlb_alloc(running_device *cpu, int space, int fixed_entries, int dynamic_entries)
{
vtlb_state *vtlb;
@@ -69,7 +69,7 @@ vtlb_state *vtlb_alloc(const device_config *cpu, int space, int fixed_entries, i
vtlb->fixed = fixed_entries;
vtlb->pageshift = cpu_get_page_shift(cpu, space);
vtlb->addrwidth = cpu_get_logaddr_width(cpu, space);
- vtlb->translate = (cpu_translate_func)device_get_info_fct(cpu, CPUINFO_FCT_TRANSLATE);
+ vtlb->translate = (cpu_translate_func)cpu->get_config_fct(CPUINFO_FCT_TRANSLATE);
/* validate CPU information */
assert((1 << vtlb->pageshift) > VTLB_FLAGS_MASK);
diff --git a/src/emu/cpu/vtlb.h b/src/emu/cpu/vtlb.h
index 7068bc77b87..feb8417f597 100644
--- a/src/emu/cpu/vtlb.h
+++ b/src/emu/cpu/vtlb.h
@@ -55,7 +55,7 @@ typedef struct _vtlb_state vtlb_state;
/* ----- initialization/teardown ----- */
/* allocate a new VTLB for the given CPU */
-vtlb_state *vtlb_alloc(const device_config *cpu, int space, int fixed_entries, int dynamic_entries);
+vtlb_state *vtlb_alloc(running_device *cpu, int space, int fixed_entries, int dynamic_entries);
/* free an allocated VTLB */
void vtlb_free(vtlb_state *vtlb);
diff --git a/src/emu/cpu/z180/z180.c b/src/emu/cpu/z180/z180.c
index f4481a9fb39..7679b144ed8 100644
--- a/src/emu/cpu/z180/z180.c
+++ b/src/emu/cpu/z180/z180.c
@@ -115,7 +115,7 @@ struct _z180_state
UINT32 ea;
z80_daisy_state *daisy;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *iospace;
cpu_state_table state;
@@ -125,7 +125,7 @@ struct _z180_state
UINT8 *cc[6];
};
-INLINE z180_state *get_safe_token(const device_config *device)
+INLINE z180_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -2015,8 +2015,8 @@ static CPU_INIT( z180 )
{
z180_state *cpustate = get_safe_token(device);
cpustate->daisy = NULL;
- if (device->static_config)
- cpustate->daisy = z80daisy_init(device, (const z80_daisy_chain *)device->static_config);
+ if (device->baseconfig().static_config)
+ cpustate->daisy = z80daisy_init(device, (const z80_daisy_chain *)device->baseconfig().static_config);
cpustate->irq_callback = irqcallback;
SZHVC_add = auto_alloc_array(device->machine, UINT8, 2*256*256);
diff --git a/src/emu/cpu/z180/z180.h b/src/emu/cpu/z180/z180.h
index 09d379cbd32..8e188ce1676 100644
--- a/src/emu/cpu/z180/z180.h
+++ b/src/emu/cpu/z180/z180.h
@@ -136,8 +136,8 @@ enum
#ifdef UNUSED_DEFINITION
/* MMU mapped memory lookup */
-extern UINT8 z180_readmem(const device_config *device, offs_t offset);
-extern void z180_writemem(const device_config *device, offs_t offset, UINT8 data);
+extern UINT8 z180_readmem(running_device *device, offs_t offset);
+extern void z180_writemem(running_device *device, offs_t offset, UINT8 data);
#endif
extern CPU_GET_INFO( z180 );
diff --git a/src/emu/cpu/z180/z180ops.h b/src/emu/cpu/z180/z180ops.h
index 9a977c91d49..87a992a9855 100644
--- a/src/emu/cpu/z180/z180ops.h
+++ b/src/emu/cpu/z180/z180ops.h
@@ -70,7 +70,7 @@ INLINE void z180_mmu(z180_state *cpustate)
***************************************************************/
#define RM(cs,addr) memory_read_byte_8le((cs)->program, MMU_REMAP_ADDR(cs,addr))
#ifdef UNUSED_FUNCTION
-UINT8 z180_readmem(const device_config *device, offs_t offset)
+UINT8 z180_readmem(running_device *device, offs_t offset)
{
z180_state *cpustate = get_safe_token(device);
return RM(cpustate, offset);
@@ -82,7 +82,7 @@ UINT8 z180_readmem(const device_config *device, offs_t offset)
***************************************************************/
#define WM(cs,addr,value) memory_write_byte_8le((cs)->program, MMU_REMAP_ADDR(cs,addr),value)
#ifdef UNUSED_FUNCTION
-void z180_writemem(const device_config *device, offs_t offset, UINT8 data)
+void z180_writemem(running_device *device, offs_t offset, UINT8 data)
{
z180_state *cpustate = get_safe_token(device);
WM(cpustate, offset, data);
diff --git a/src/emu/cpu/z8/z8.c b/src/emu/cpu/z8/z8.c
index b272c992aaa..4969d4b3209 100644
--- a/src/emu/cpu/z8/z8.c
+++ b/src/emu/cpu/z8/z8.c
@@ -236,7 +236,7 @@ static const cpu_state_table state_table_template =
INLINE FUNCTIONS
***************************************************************************/
-INLINE z8_state *get_safe_token(const device_config *device)
+INLINE z8_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
diff --git a/src/emu/cpu/z80/z80.c b/src/emu/cpu/z80/z80.c
index 44f9dbfd0f9..7b84300b139 100644
--- a/src/emu/cpu/z80/z80.c
+++ b/src/emu/cpu/z80/z80.c
@@ -148,7 +148,7 @@ struct _z80_state
UINT8 after_ei; /* are we in the EI shadow? */
UINT32 ea;
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -163,7 +163,7 @@ struct _z80_state
const UINT8 * cc_ex;
};
-INLINE z80_state *get_safe_token(const device_config *device)
+INLINE z80_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);
@@ -3463,8 +3463,8 @@ static CPU_INIT( z80 )
/* Reset registers to their initial values */
memset(z80, 0, sizeof(*z80));
- if (device->static_config != NULL)
- z80->daisy = z80daisy_init(device, (const z80_daisy_chain *)device->static_config);
+ if (device->baseconfig().static_config != NULL)
+ z80->daisy = z80daisy_init(device, (const z80_daisy_chain *)device->baseconfig().static_config);
z80->irq_callback = irqcallback;
z80->device = device;
z80->program = device->space(AS_PROGRAM);
@@ -3653,7 +3653,7 @@ static CPU_SET_INFO( z80 )
}
}
-void z80_set_cycle_tables(const device_config *device, const UINT8 *op, const UINT8 *cb, const UINT8 *ed, const UINT8 *xy, const UINT8 *xycb, const UINT8 *ex)
+void z80_set_cycle_tables(running_device *device, const UINT8 *op, const UINT8 *cb, const UINT8 *ed, const UINT8 *xy, const UINT8 *xycb, const UINT8 *ex)
{
z80_state *z80 = get_safe_token(device);
diff --git a/src/emu/cpu/z80/z80.h b/src/emu/cpu/z80/z80.h
index 0d913c4c7f8..db633ff0eee 100644
--- a/src/emu/cpu/z80/z80.h
+++ b/src/emu/cpu/z80/z80.h
@@ -23,6 +23,6 @@ CPU_GET_INFO( z80 );
CPU_DISASSEMBLE( z80 );
-void z80_set_cycle_tables(const device_config *device, const UINT8 *op, const UINT8 *cb, const UINT8 *ed, const UINT8 *xy, const UINT8 *xycb, const UINT8 *ex);
+void z80_set_cycle_tables(running_device *device, const UINT8 *op, const UINT8 *cb, const UINT8 *ed, const UINT8 *xy, const UINT8 *xycb, const UINT8 *ex);
#endif /* __Z80_H__ */
diff --git a/src/emu/cpu/z80/z80daisy.c b/src/emu/cpu/z80/z80daisy.c
index b51da9b88a6..915be1dac71 100644
--- a/src/emu/cpu/z80/z80daisy.c
+++ b/src/emu/cpu/z80/z80daisy.c
@@ -13,14 +13,14 @@
struct _z80_daisy_state
{
z80_daisy_state * next; /* next device */
- const device_config * device; /* associated device */
+ running_device * device; /* associated device */
z80_daisy_irq_state irq_state; /* IRQ state callback */
z80_daisy_irq_ack irq_ack; /* IRQ ack callback */
z80_daisy_irq_reti irq_reti; /* IRQ reti callback */
};
-z80_daisy_state *z80daisy_init(const device_config *cpudevice, const z80_daisy_chain *daisy)
+z80_daisy_state *z80daisy_init(running_device *cpudevice, const z80_daisy_chain *daisy)
{
astring tempstring;
z80_daisy_state *head = NULL;
@@ -34,9 +34,9 @@ z80_daisy_state *z80daisy_init(const device_config *cpudevice, const z80_daisy_c
(*tailptr)->device = cpudevice->machine->device(device_inherit_tag(tempstring, cpudevice->tag, daisy->devname));
if ((*tailptr)->device == NULL)
fatalerror("Unable to locate device '%s'", daisy->devname);
- (*tailptr)->irq_state = (z80_daisy_irq_state)device_get_info_fct((*tailptr)->device, DEVINFO_FCT_IRQ_STATE);
- (*tailptr)->irq_ack = (z80_daisy_irq_ack)device_get_info_fct((*tailptr)->device, DEVINFO_FCT_IRQ_ACK);
- (*tailptr)->irq_reti = (z80_daisy_irq_reti)device_get_info_fct((*tailptr)->device, DEVINFO_FCT_IRQ_RETI);
+ (*tailptr)->irq_state = (z80_daisy_irq_state)(*tailptr)->device->get_config_fct(DEVINFO_FCT_IRQ_STATE);
+ (*tailptr)->irq_ack = (z80_daisy_irq_ack)(*tailptr)->device->get_config_fct(DEVINFO_FCT_IRQ_ACK);
+ (*tailptr)->irq_reti = (z80_daisy_irq_reti)(*tailptr)->device->get_config_fct(DEVINFO_FCT_IRQ_RETI);
tailptr = &(*tailptr)->next;
}
diff --git a/src/emu/cpu/z80/z80daisy.h b/src/emu/cpu/z80/z80daisy.h
index 4d54e27cbc7..ad3adcfbc0d 100644
--- a/src/emu/cpu/z80/z80daisy.h
+++ b/src/emu/cpu/z80/z80daisy.h
@@ -36,9 +36,9 @@ enum
***************************************************************************/
/* per-device callback functions */
-typedef int (*z80_daisy_irq_state)(const device_config *device);
-typedef int (*z80_daisy_irq_ack)(const device_config *device);
-typedef int (*z80_daisy_irq_reti)(const device_config *device);
+typedef int (*z80_daisy_irq_state)(running_device *device);
+typedef int (*z80_daisy_irq_ack)(running_device *device);
+typedef int (*z80_daisy_irq_reti)(running_device *device);
/* opaque internal daisy chain state */
@@ -58,7 +58,7 @@ struct _z80_daisy_chain
FUNCTION PROTOTYPES
***************************************************************************/
-z80_daisy_state *z80daisy_init(const device_config *cpudevice, const z80_daisy_chain *daisy);
+z80_daisy_state *z80daisy_init(running_device *cpudevice, const z80_daisy_chain *daisy);
void z80daisy_reset(z80_daisy_state *daisy);
int z80daisy_update_irq_state(z80_daisy_state *chain);
diff --git a/src/emu/cpu/z8000/z8000.c b/src/emu/cpu/z8000/z8000.c
index bf485a40214..7b4870a575e 100644
--- a/src/emu/cpu/z8000/z8000.c
+++ b/src/emu/cpu/z8000/z8000.c
@@ -78,7 +78,7 @@ struct _z8000_state
int nmi_state; /* NMI line state */
int irq_state[2]; /* IRQ line states (NVI, VI) */
cpu_irq_callback irq_callback;
- const device_config *device;
+ running_device *device;
const address_space *program;
const address_space *io;
int icount;
@@ -86,7 +86,7 @@ struct _z8000_state
#include "z8000cpu.h"
-INLINE z8000_state *get_safe_token(const device_config *device)
+INLINE z8000_state *get_safe_token(running_device *device)
{
assert(device != NULL);
assert(device->token != NULL);