summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2008-11-22 22:50:58 +0000
committer Aaron Giles <aaron@aarongiles.com>2008-11-22 22:50:58 +0000
commitcd5d467fc8c4f32160789122740cc6c8381b63f8 (patch)
tree369402ba0e99868323559b28a95bba7fb991094f /src
parent7fbd73c60c15cb5940b94036c1e1c39318216397 (diff)
NEC core converted.
Diffstat (limited to 'src')
-rw-r--r--src/emu/cpu/mips/r3kdasm.c7
-rw-r--r--src/emu/cpu/nec/nec.c82
-rw-r--r--src/emu/cpu/nec/nec.h18
3 files changed, 34 insertions, 73 deletions
diff --git a/src/emu/cpu/mips/r3kdasm.c b/src/emu/cpu/mips/r3kdasm.c
index 73a5886ea55..948ac906616 100644
--- a/src/emu/cpu/mips/r3kdasm.c
+++ b/src/emu/cpu/mips/r3kdasm.c
@@ -77,13 +77,6 @@ static const char *const ccreg[4][32] =
/***************************************************************************
- MEMORY ACCESSORS
-***************************************************************************/
-
-#define ROPCODE(pc) program_decrypted_read_dword(pc)
-
-
-/***************************************************************************
CODE CODE
***************************************************************************/
diff --git a/src/emu/cpu/nec/nec.c b/src/emu/cpu/nec/nec.c
index fb483a42528..ef9e75ba332 100644
--- a/src/emu/cpu/nec/nec.c
+++ b/src/emu/cpu/nec/nec.c
@@ -103,6 +103,7 @@
****************************************************************************/
+#define NO_LEGACY_MEMORY_HANDLERS 1
#include "debugger.h"
#include "deprecat.h"
@@ -133,15 +134,10 @@ typedef struct
{
offs_t fetch_xor;
- UINT8 (*rbyte)(offs_t);
- UINT16 (*rword)(offs_t);
- void (*wbyte)(offs_t, UINT8);
- void (*wword)(offs_t, UINT16);
-
- UINT8 (*rbyte_port)(offs_t);
- UINT16 (*rword_port)(offs_t);
- void (*wbyte_port)(offs_t, UINT8);
- void (*wword_port)(offs_t, UINT16);
+ UINT8 (*rbyte)(const address_space *, offs_t);
+ UINT16 (*rword)(const address_space *, offs_t);
+ void (*wbyte)(const address_space *, offs_t, UINT8);
+ void (*wword)(const address_space *, offs_t, UINT16);
} memory_interface;
@@ -165,6 +161,8 @@ struct _nec_state_t
cpu_irq_callback irq_callback;
const device_config *device;
+ const address_space *program;
+ const address_space *io;
int icount;
memory_interface mem;
@@ -230,7 +228,7 @@ static void do_prefetch(nec_state_t *nec_state, int previous_ICount)
INLINE UINT8 fetch(nec_state_t *nec_state)
{
prefetch(nec_state);
- return program_raw_read_byte(FETCH_XOR((nec_state->sregs[PS]<<4)+nec_state->ip++));
+ return memory_raw_read_byte(nec_state->program, FETCH_XOR((nec_state->sregs[PS]<<4)+nec_state->ip++));
}
INLINE UINT16 fetchword(nec_state_t *nec_state)
@@ -253,7 +251,7 @@ static UINT8 fetchop(nec_state_t *nec_state)
UINT8 ret;
prefetch(nec_state);
- ret = program_decrypted_read_byte( FETCH_XOR( ( nec_state->sregs[PS]<<4)+nec_state->ip++));
+ ret = memory_decrypted_read_byte(nec_state->program, FETCH_XOR( ( nec_state->sregs[PS]<<4)+nec_state->ip++));
if (nec_state->MF == 1)
if (nec_state->config->v25v35_decryptiontable)
@@ -1129,6 +1127,8 @@ static void nec_init(const device_config *device, int index, int clock, cpu_irq_
nec_state->irq_callback = irqcallback;
nec_state->device = device;
+ nec_state->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
+ nec_state->io = memory_find_address_space(device, ADDRESS_SPACE_IO);
}
@@ -1141,15 +1141,10 @@ static void configure_memory_8bit(nec_state_t *nec_state)
{
nec_state->mem.fetch_xor = 0;
- nec_state->mem.rbyte = program_read_byte_8le;
- nec_state->mem.rword = program_read_word_8le;
- nec_state->mem.wbyte = program_write_byte_8le;
- nec_state->mem.wword = program_write_word_8le;
-
- nec_state->mem.rbyte_port = io_read_byte_8le;
- nec_state->mem.rword_port = io_read_word_8le;
- nec_state->mem.wbyte_port = io_write_byte_8le;
- nec_state->mem.wword_port = io_write_word_8le;
+ nec_state->mem.rbyte = memory_read_byte_8le;
+ nec_state->mem.rword = memory_read_word_8le;
+ nec_state->mem.wbyte = memory_write_byte_8le;
+ nec_state->mem.wword = memory_write_word_8le;
}
#endif
@@ -1159,47 +1154,25 @@ static void configure_memory_8bit(nec_state_t *nec_state)
*****************************************************************************/
#if (HAS_V30||HAS_V33||HAS_V35)
-static UINT16 read_word_16le(offs_t addr)
-{
- if (!(addr & 1))
- return program_read_word_16le(addr);
- else
- {
- UINT16 result = program_read_byte_16le(addr);
- return result | (program_read_byte_16le(addr + 1) << 8);
- }
-}
-
-static void write_word_16le(offs_t addr, UINT16 data)
+static UINT16 read_word_16le(const address_space *space, offs_t addr)
{
if (!(addr & 1))
- program_write_word_16le(addr, data);
+ return memory_read_word_16le(space, addr);
else
{
- program_write_byte_16le(addr, data);
- program_write_byte_16le(addr + 1, data >> 8);
+ UINT16 result = memory_read_byte_16le(space, addr);
+ return result | (memory_read_byte_16le(space, addr + 1) << 8);
}
}
-static UINT16 read_port_word_16le(offs_t addr)
+static void write_word_16le(const address_space *space, offs_t addr, UINT16 data)
{
if (!(addr & 1))
- return io_read_word_16le(addr);
+ memory_write_word_16le(space, addr, data);
else
{
- UINT16 result = io_read_byte_16le(addr);
- return result | (io_read_byte_16le(addr + 1) << 8);
- }
-}
-
-static void write_port_word_16le(offs_t addr, UINT16 data)
-{
- if (!(addr & 1))
- io_write_word_16le(addr, data);
- else
- {
- io_write_byte_16le(addr, data);
- io_write_byte_16le(addr + 1, data >> 8);
+ memory_write_byte_16le(space, addr, data);
+ memory_write_byte_16le(space, addr + 1, data >> 8);
}
}
@@ -1207,15 +1180,10 @@ static void configure_memory_16bit(nec_state_t *nec_state)
{
nec_state->mem.fetch_xor = BYTE_XOR_LE(0);
- nec_state->mem.rbyte = program_read_byte_16le;
+ nec_state->mem.rbyte = memory_read_byte_16le;
nec_state->mem.rword = read_word_16le;
- nec_state->mem.wbyte = program_write_byte_16le;
+ nec_state->mem.wbyte = memory_write_byte_16le;
nec_state->mem.wword = write_word_16le;
-
- nec_state->mem.rbyte_port = io_read_byte_16le;
- nec_state->mem.rword_port = read_port_word_16le;
- nec_state->mem.wbyte_port = io_write_byte_16le;
- nec_state->mem.wword_port = write_port_word_16le;
}
#endif
diff --git a/src/emu/cpu/nec/nec.h b/src/emu/cpu/nec/nec.h
index b57faaf8277..569001c41e7 100644
--- a/src/emu/cpu/nec/nec.h
+++ b/src/emu/cpu/nec/nec.h
@@ -76,15 +76,15 @@ typedef enum { AH,AL,CH,CL,DH,DL,BH,BL,SPH,SPL,BPH,BPL,IXH,IXL,IYH,IYL } BREGS;
/************************************************************************/
-#define read_byte(a) (*nec_state->mem.rbyte)(a)
-#define read_word(a) (*nec_state->mem.rword)(a)
-#define write_byte(a,d) (*nec_state->mem.wbyte)((a),(d))
-#define write_word(a,d) (*nec_state->mem.wword)((a),(d))
-
-#define read_port_byte(a) (*nec_state->mem.rbyte_port)(a)
-#define read_port_word(a) (*nec_state->mem.rword_port)(a)
-#define write_port_byte(a,d) (*nec_state->mem.wbyte_port)((a),(d))
-#define write_port_word(a,d) (*nec_state->mem.wword_port)((a),(d))
+#define read_byte(a) (*nec_state->mem.rbyte)(nec_state->program, a)
+#define read_word(a) (*nec_state->mem.rword)(nec_state->program, a)
+#define write_byte(a,d) (*nec_state->mem.wbyte)(nec_state->program, (a),(d))
+#define write_word(a,d) (*nec_state->mem.wword)(nec_state->program, (a),(d))
+
+#define read_port_byte(a) (*nec_state->mem.rbyte)(nec_state->io, a)
+#define read_port_word(a) (*nec_state->mem.rword)(nec_state->io, a)
+#define write_port_byte(a,d) (*nec_state->mem.wbyte)(nec_state->io, (a),(d))
+#define write_port_word(a,d) (*nec_state->mem.wword)(nec_state->io, (a),(d))
/************************************************************************/