diff --git a/src/emu/cpu/adsp2100/2100ops.c b/src/emu/cpu/adsp2100/2100ops.c index 70603884337..8ecbd3fc75d 100644 --- a/src/emu/cpu/adsp2100/2100ops.c +++ b/src/emu/cpu/adsp2100/2100ops.c @@ -169,7 +169,6 @@ INLINE void pc_stack_pop(adsp2100_state *adsp) adsp->sstat |= PC_EMPTY; } adsp->pc = adsp->pc_stack[adsp->pc_sp]; - CHANGEPC(adsp); } INLINE UINT32 pc_stack_pop_val(adsp2100_state *adsp) diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/emu/cpu/adsp2100/adsp2100.c index 2988a07f5c4..670029188b5 100644 --- a/src/emu/cpu/adsp2100/adsp2100.c +++ b/src/emu/cpu/adsp2100/adsp2100.c @@ -329,8 +329,6 @@ INLINE void WWORD_PGM(adsp2100_state *adsp, UINT32 addr, UINT32 data) #define ROPCODE(a) memory_decrypted_read_dword((a)->program, (a)->pc << 2) -#define CHANGEPC(a) change_pc((a)->pc << 2) - /*************************************************************************** IMPORT CORE UTILITIES @@ -359,7 +357,6 @@ INLINE int adsp2100_generate_irq(adsp2100_state *adsp, int which) /* vector to location & stop idling */ adsp->pc = which; - CHANGEPC(adsp); adsp->idle = 0; /* mask other interrupts based on the nesting bit */ @@ -385,7 +382,6 @@ INLINE int adsp2101_generate_irq(adsp2100_state *adsp, int which, int indx) /* vector to location & stop idling */ adsp->pc = 0x04 + indx * 4; - CHANGEPC(adsp); adsp->idle = 0; /* mask other interrupts based on the nesting bit */ @@ -411,7 +407,6 @@ INLINE int adsp2181_generate_irq(adsp2100_state *adsp, int which, int indx) /* vector to location & stop idling */ adsp->pc = 0x04 + indx * 4; - CHANGEPC(adsp); adsp->idle = 0; /* mask other interrupts based on the nesting bit */ @@ -750,7 +745,6 @@ static CPU_RESET( adsp21xx ) adsp->chip_type = CHIP_TYPE_ADSP2100; break; } - CHANGEPC(adsp); adsp->ppc = -1; adsp->loop = 0xffff; @@ -917,7 +911,6 @@ static CPU_EXECUTE( adsp21xx ) int check_debugger = ((device->machine->debug_flags & DEBUG_FLAG_ENABLED) != 0); adsp2100_state *adsp = device->token; - CHANGEPC(adsp); check_irqs(adsp); /* reset the core */ @@ -1017,7 +1010,6 @@ static CPU_EXECUTE( adsp21xx ) if (op & 0x000001) pc_stack_push(adsp); adsp->pc = ((op >> 4) & 0x0fff) | ((op << 10) & 0x3000); - CHANGEPC(adsp); } } else @@ -1027,7 +1019,6 @@ static CPU_EXECUTE( adsp21xx ) if (op & 0x000001) pc_stack_push(adsp); adsp->pc = ((op >> 4) & 0x0fff) | ((op << 10) & 0x3000); - CHANGEPC(adsp); } } break; @@ -1112,7 +1103,6 @@ static CPU_EXECUTE( adsp21xx ) if (op & 0x000010) pc_stack_push(adsp); adsp->pc = adsp->i[4 + ((op >> 6) & 3)] & 0x3fff; - CHANGEPC(adsp); } break; case 0x0c: @@ -1197,7 +1187,6 @@ static CPU_EXECUTE( adsp21xx ) if (CONDITION(adsp, op & 15)) { adsp->pc = (op >> 4) & 0x3fff; - CHANGEPC(adsp); /* check for a busy loop */ if (adsp->pc == adsp->ppc) adsp->icount = 0; @@ -1209,7 +1198,6 @@ static CPU_EXECUTE( adsp21xx ) { pc_stack_push(adsp); adsp->pc = (op >> 4) & 0x3fff; - CHANGEPC(adsp); } break; case 0x20: case 0x21: diff --git a/src/emu/cpu/alph8201/alph8201.c b/src/emu/cpu/alph8201/alph8201.c index a66da3f257e..b135fd7e10f 100644 --- a/src/emu/cpu/alph8201/alph8201.c +++ b/src/emu/cpu/alph8201/alph8201.c @@ -286,7 +286,6 @@ INLINE void M_JMP(UINT8 dat) PCL = dat; /* update pc page */ R.pc.b.h = R.ix0.b.h = R.ix1.b.h = R.ix2.b.h = R.mb & 3; - change_pc(PC); } INLINE void M_UNDEFINED(void) @@ -844,7 +843,6 @@ static void set_irq_line(int irqline, int state) { R.halt = (state==ASSERT_LINE) ? 1 : 0; /* mame_printf_debug("ALPHA8201 HALT %d\n",R.halt); */ - change_pc(PC); } } #endif diff --git a/src/emu/cpu/drcbec.c b/src/emu/cpu/drcbec.c index 84099fb7b20..66c80ba4a49 100644 --- a/src/emu/cpu/drcbec.c +++ b/src/emu/cpu/drcbec.c @@ -179,6 +179,7 @@ enum struct _drcbe_state { const device_config * 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 */ drcuml_machine_state state; /* state of the machine */ @@ -307,6 +308,8 @@ const drcbe_interface drcbe_c_be_interface = static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, const device_config *device, UINT32 flags, int modes, int addrbits, int ignorebits) { + int spacenum; + /* allocate space in the cache for our state */ drcbe_state *drcbe = drccache_memory_alloc(cache, sizeof(*drcbe)); if (drcbe == NULL) @@ -315,6 +318,8 @@ static drcbe_state *drcbec_alloc(drcuml_state *drcuml, drccache *cache, const de /* remember our pointers */ drcbe->device = device; + for (spacenum = 0; spacenum < ARRAY_LENGTH(drcbe->space); spacenum++) + drcbe->space[spacenum] = memory_find_address_space(device, spacenum); drcbe->drcuml = drcuml; drcbe->cache = cache; @@ -756,43 +761,43 @@ static int drcbec_execute(drcbe_state *drcbe, drcuml_codehandle *entry) break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ1, 4, 0): /* READ dst,src1,space_BYTE */ - PARAM0 = memory_read_byte(active_address_space[PARAM2 / 16], PARAM1); + PARAM0 = memory_read_byte(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ2, 4, 0): /* READ dst,src1,space_WORD */ - PARAM0 = memory_read_word(active_address_space[PARAM2 / 16], PARAM1); + PARAM0 = memory_read_word(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ4, 4, 0): /* READ dst,src1,space_DWORD */ - PARAM0 = memory_read_dword(active_address_space[PARAM2 / 16], PARAM1); + PARAM0 = memory_read_dword(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READM2, 4, 0): /* READM dst,src1,mask,space_WORD */ - PARAM0 = memory_read_word_masked(active_address_space[PARAM3 / 16], PARAM1, PARAM2); + PARAM0 = memory_read_word_masked(drcbe->space[PARAM3 / 16], PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READM4, 4, 0): /* READM dst,src1,mask,space_DWORD */ - PARAM0 = memory_read_dword_masked(active_address_space[PARAM3 / 16], PARAM1, PARAM2); + PARAM0 = memory_read_dword_masked(drcbe->space[PARAM3 / 16], PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE1, 4, 0): /* WRITE dst,src1,space_BYTE */ - memory_write_byte(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_byte(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE2, 4, 0): /* WRITE dst,src1,space_WORD */ - memory_write_word(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_word(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE4, 4, 0): /* WRITE dst,src1,space_DWORD */ - memory_write_dword(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_dword(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITEM2, 4, 0): /* WRITEM dst,src1,mask,space_WORD */ - memory_write_word_masked(active_address_space[PARAM3 / 16], PARAM0, PARAM1, PARAM2); + memory_write_word_masked(drcbe->space[PARAM3 / 16], PARAM0, PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITEM4, 4, 0): /* WRITEM dst,src1,mask,space_DWORD */ - memory_write_dword_masked(active_address_space[PARAM3 / 16], PARAM0, PARAM1, PARAM2); + memory_write_dword_masked(drcbe->space[PARAM3 / 16], PARAM0, PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_CARRY, 4, 1): /* CARRY src,bitnum */ @@ -1187,59 +1192,59 @@ static int drcbec_execute(drcbe_state *drcbe, drcuml_codehandle *entry) break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ1, 8, 0): /* DREAD dst,src1,space_BYTE */ - DPARAM0 = memory_read_byte(active_address_space[PARAM2 / 16], PARAM1); + DPARAM0 = memory_read_byte(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ2, 8, 0): /* DREAD dst,src1,space_WORD */ - DPARAM0 = memory_read_word(active_address_space[PARAM2 / 16], PARAM1); + DPARAM0 = memory_read_word(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ4, 8, 0): /* DREAD dst,src1,space_DWORD */ - DPARAM0 = memory_read_dword(active_address_space[PARAM2 / 16], PARAM1); + DPARAM0 = memory_read_dword(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READ8, 8, 0): /* DREAD dst,src1,space_QOWRD */ - DPARAM0 = memory_read_qword(active_address_space[PARAM2 / 16], PARAM1); + DPARAM0 = memory_read_qword(drcbe->space[PARAM2 / 16], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READM2, 8, 0): /* DREADM dst,src1,mask,space_WORD */ - DPARAM0 = memory_read_word_masked(active_address_space[PARAM3 / 16], PARAM1, PARAM2); + DPARAM0 = memory_read_word_masked(drcbe->space[PARAM3 / 16], PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READM4, 8, 0): /* DREADM dst,src1,mask,space_DWORD */ - DPARAM0 = memory_read_dword_masked(active_address_space[PARAM3 / 16], PARAM1, PARAM2); + DPARAM0 = memory_read_dword_masked(drcbe->space[PARAM3 / 16], PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_READM8, 8, 0): /* DREADM dst,src1,mask,space_QWORD */ - DPARAM0 = memory_read_qword_masked(active_address_space[PARAM3 / 16], PARAM1, PARAM2); + DPARAM0 = memory_read_qword_masked(drcbe->space[PARAM3 / 16], PARAM1, PARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE1, 8, 0): /* DWRITE dst,src1,space_BYTE */ - memory_write_byte(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_byte(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE2, 8, 0): /* DWRITE dst,src1,space_WORD */ - memory_write_word(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_word(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE4, 8, 0): /* DWRITE dst,src1,space_DWORD */ - memory_write_dword(active_address_space[PARAM2 / 16], PARAM0, PARAM1); + memory_write_dword(drcbe->space[PARAM2 / 16], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITE8, 8, 0): /* DWRITE dst,src1,space_QWORD */ - memory_write_qword(active_address_space[PARAM2 / 16], PARAM0, DPARAM1); + memory_write_qword(drcbe->space[PARAM2 / 16], PARAM0, DPARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITEM2, 8, 0): /* DWRITEM dst,src1,mask,space_WORD */ - memory_write_word_masked(active_address_space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); + memory_write_word_masked(drcbe->space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITEM4, 8, 0): /* DWRITEM dst,src1,mask,space_DWORD */ - memory_write_dword_masked(active_address_space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); + memory_write_dword_masked(drcbe->space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_WRITEM8, 8, 0): /* DWRITEM dst,src1,mask,space_QWORD */ - memory_write_qword_masked(active_address_space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); + memory_write_qword_masked(drcbe->space[PARAM3 / 16], PARAM0, DPARAM1, DPARAM2); break; case MAKE_OPCODE_SHORT(DRCUML_OP_CARRY, 8, 0): /* DCARRY src,bitnum */ @@ -1600,11 +1605,11 @@ static int drcbec_execute(drcbe_state *drcbe, drcuml_codehandle *entry) break; case MAKE_OPCODE_SHORT(DRCUML_OP_FREAD, 4, 0): /* FSREAD dst,src1,space */ - PARAM0 = memory_read_dword(active_address_space[PARAM2], PARAM1); + PARAM0 = memory_read_dword(drcbe->space[PARAM2], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_FWRITE, 4, 0): /* FSWRITE dst,src1,space */ - memory_write_dword(active_address_space[PARAM2], PARAM0, PARAM1); + memory_write_dword(drcbe->space[PARAM2], PARAM0, PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_FMOV, 4, 1): /* FSMOV dst,src[,c] */ @@ -1735,11 +1740,11 @@ static int drcbec_execute(drcbe_state *drcbe, drcuml_codehandle *entry) break; case MAKE_OPCODE_SHORT(DRCUML_OP_FREAD, 8, 0): /* FDREAD dst,src1,space */ - DPARAM0 = memory_read_qword(active_address_space[PARAM2], PARAM1); + DPARAM0 = memory_read_qword(drcbe->space[PARAM2], PARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_FWRITE, 8, 0): /* FDWRITE dst,src1,space */ - memory_write_qword(active_address_space[PARAM2], PARAM0, DPARAM1); + memory_write_qword(drcbe->space[PARAM2], PARAM0, DPARAM1); break; case MAKE_OPCODE_SHORT(DRCUML_OP_FMOV, 8, 1): /* FDMOV dst,src[,c] */ diff --git a/src/emu/cpu/drcbex64.c b/src/emu/cpu/drcbex64.c index 29fdc01fcc1..c4a424c28fd 100644 --- a/src/emu/cpu/drcbex64.c +++ b/src/emu/cpu/drcbex64.c @@ -712,11 +712,11 @@ static drcbe_state *drcbex64_alloc(drcuml_state *drcuml, drccache *cache, const /* get address spaces and accessors */ for (spacenum = 0; spacenum < ADDRESS_SPACES; spacenum++) - if (active_address_space[spacenum] != NULL) - { - drcbe->accessors[spacenum] = active_address_space[spacenum]->accessors; - drcbe->space[spacenum] = active_address_space[spacenum]; - } + { + drcbe->space[spacenum] = memory_find_address_space(device, spacenum); + if (drcbe->space[spacenum] != NULL) + drcbe->accessors[spacenum] = drcbe->space[spacenum]->accessors; + } /* build up necessary arrays */ memcpy(drcbe->ssecontrol, sse_control, sizeof(drcbe->ssecontrol)); diff --git a/src/emu/cpu/drcbex86.c b/src/emu/cpu/drcbex86.c index c9f1f8fc4fd..2dfa9f7ce4b 100644 --- a/src/emu/cpu/drcbex86.c +++ b/src/emu/cpu/drcbex86.c @@ -552,7 +552,7 @@ static drcbe_state *drcbex86_alloc(drcuml_state *drcuml, drccache *cache, const /* get address spaces */ for (spacenum = 0; spacenum < ADDRESS_SPACES; spacenum++) - drcbe->space[spacenum] = active_address_space[spacenum]; + drcbe->space[spacenum] = memory_find_address_space(device, spacenum); /* allocate hash tables */ drcbe->hash = drchash_alloc(cache, modes, addrbits, ignorebits); diff --git a/src/emu/cpu/i8085/i8085.c b/src/emu/cpu/i8085/i8085.c index 46e91839f9b..6e5752458a2 100644 --- a/src/emu/cpu/i8085/i8085.c +++ b/src/emu/cpu/i8085/i8085.c @@ -1405,6 +1405,7 @@ static CPU_RESET( i8085 ) I.sid_callback = save_sidcallback; I.device = device; I.program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM); + I.io = memory_find_address_space(device, ADDRESS_SPACE_IO); change_pc(I.PC.d); I.cputype = cputype_bak; diff --git a/src/emu/cpu/pic16c5x/pic16c5x.h b/src/emu/cpu/pic16c5x/pic16c5x.h index 15e9f3eeb31..759c73cccb4 100644 --- a/src/emu/cpu/pic16c5x/pic16c5x.h +++ b/src/emu/cpu/pic16c5x/pic16c5x.h @@ -98,7 +98,7 @@ void pic16c5x_config(int data); * that use different encoding mechanisms for opcodes and opcode arguments */ -#define PIC16C5x_RDOP_ARG(A) (program_raw_read_word(R.program, (A)<<1)) +#define PIC16C5x_RDOP_ARG(A) (memory_raw_read_word(R.program, (A)<<1)) diff --git a/src/emu/cpu/sc61860/sc.h b/src/emu/cpu/sc61860/sc.h index 61f55e331c9..526e78f1f29 100644 --- a/src/emu/cpu/sc61860/sc.h +++ b/src/emu/cpu/sc61860/sc.h @@ -30,5 +30,3 @@ enum // SC61860_NMI_STATE, // SC61860_IRQ_STATE }; - -#define PEEK_OP(pc) program_decrypted_read_byte(pc) diff --git a/src/emu/cpu/sh2/sh2.c b/src/emu/cpu/sh2/sh2.c index 3ad2d4cd37b..0d29c609c24 100644 --- a/src/emu/cpu/sh2/sh2.c +++ b/src/emu/cpu/sh2/sh2.c @@ -28,7 +28,7 @@ /***************************************************************************** Changes 20051129 Mariusz Wojcieszek - - introduced program_decrypted_read_word() for opcode fetching + - introduced memory_decrypted_read_word() for opcode fetching 20050813 Mariusz Wojcieszek - fixed 64 bit / 32 bit division in division unit diff --git a/src/emu/cpuintrf.c b/src/emu/cpuintrf.c index 33b4a7bf6eb..2e56070c722 100644 --- a/src/emu/cpuintrf.c +++ b/src/emu/cpuintrf.c @@ -980,7 +980,6 @@ INLINE void set_cpu_context(const device_config *oldcpu, const device_config *ne /* set the memory context and swap in the new */ classheader = newcpu->classtoken; - memory_set_context(newcpu->machine, classheader->index); (*classheader->set_context)(newcpu->token); } else @@ -1150,7 +1149,6 @@ void cpu_init(const device_config *device, int index, int clock, cpu_irq_callbac classheader->space[ADDRESS_SPACE_DATA] = memory_find_address_space(device, ADDRESS_SPACE_DATA); classheader->space[ADDRESS_SPACE_IO] = memory_find_address_space(device, ADDRESS_SPACE_IO); - memory_set_context(device->machine, index); device->machine->activecpu = device; (*classheader->init)(device, index, clock, irqcallback); diff --git a/src/emu/memory.c b/src/emu/memory.c index 47ca4b9c9e6..25362db3909 100644 --- a/src/emu/memory.c +++ b/src/emu/memory.c @@ -203,12 +203,20 @@ struct _memory_block UINT8 * data; /* pointer to the data for this block */ }; +/* a bank is a global pointer to memory that can be shared across CPUs and changed dynamically */ +typedef struct _bank_reference bank_reference; +struct _bank_reference +{ + bank_reference * next; + const address_space * space; +}; + typedef struct _bank_data bank_info; struct _bank_data { UINT8 used; /* is this bank used? */ UINT8 dynamic; /* is this bank allocated dynamically? */ - const address_space * space; /* address space it is used for */ + bank_reference * reflist; /* linked list of address spaces referencing this bank */ UINT8 read; /* is this bank used for reads? */ UINT8 write; /* is this bank used for writes? */ offs_t bytestart; /* byte-adjusted start offset */ @@ -252,8 +260,6 @@ struct _memory_private memory_block * memory_block_list; /* head of the list of memory blocks */ - int cur_context; /* current CPU context */ - bank_info bankdata[STATIC_COUNT]; /* data gathered for each bank */ UINT8 * wptable; /* watchpoint-fill table */ @@ -265,8 +271,6 @@ struct _memory_private GLOBAL VARIABLES ***************************************************************************/ -const address_space * active_address_space[ADDRESS_SPACES];/* address space data */ - #define ACCESSOR_GROUP(width) \ { \ memory_read_byte_##width, \ @@ -392,6 +396,44 @@ INLINE void adjust_addresses(address_space *space, offs_t *start, offs_t *end, o } +/*------------------------------------------------- + bank_references_space - return true if the + given bank is referenced by a particular + address space +-------------------------------------------------*/ + +INLINE int bank_references_space(const bank_info *bank, const address_space *space) +{ + bank_reference *ref; + + for (ref = bank->reflist; ref != NULL; ref = ref->next) + if (ref->space == space) + return TRUE; + return FALSE; +} + + +/*------------------------------------------------- + add_bank_reference - add a new address space + reference to a bank +-------------------------------------------------*/ + +INLINE void add_bank_reference(bank_info *bank, const address_space *space) +{ + bank_reference **refptr; + + /* make sure we don't already have a reference to the bank */ + for (refptr = &bank->reflist; *refptr != NULL; refptr = &(*refptr)->next) + if ((*refptr)->space == space) + return; + + /* allocate a new entry and fill it */ + (*refptr) = malloc_or_die(sizeof(**refptr)); + (*refptr)->next = NULL; + (*refptr)->space = space; +} + + /*------------------------------------------------- read_byte_generic - read a byte from an arbitrary address space @@ -657,16 +699,8 @@ void memory_init(running_machine *machine) add_exit_callback(machine, memory_exit); /* allocate our private data */ - machine->memory_data = auto_malloc(sizeof(*machine->memory_data)); - memdata = machine->memory_data; - - /* no current context to start */ - memdata->cur_context = -1; - - /* reset the shared pointers and bank pointers */ - memset(memdata->shared_ptr, 0, sizeof(memdata->shared_ptr)); - memset(memdata->bank_ptr, 0, sizeof(memdata->bank_ptr)); - memset(memdata->bankd_ptr, 0, sizeof(memdata->bankd_ptr)); + memdata = machine->memory_data = auto_malloc(sizeof(*machine->memory_data)); + memset(memdata, 0, sizeof(*memdata)); /* build up the cpudata array with info about all CPUs and address spaces */ memory_init_spaces(machine); @@ -706,28 +740,6 @@ const address_space *memory_find_address_space(const device_config *cpu, int spa } -/*------------------------------------------------- - memory_set_context - set the memory context --------------------------------------------------*/ - -void memory_set_context(running_machine *machine, int activecpu) -{ - memory_private *memdata = machine->memory_data; - - /* remember dynamic RAM/ROM */ - if (activecpu == -1) - activecpu = memdata->cur_context; - memdata->cur_context = activecpu; - - active_address_space[ADDRESS_SPACE_PROGRAM] = cpu_get_address_space(machine->cpu[activecpu], ADDRESS_SPACE_PROGRAM); - active_address_space[ADDRESS_SPACE_DATA] = cpu_get_address_space(machine->cpu[activecpu], ADDRESS_SPACE_DATA); - active_address_space[ADDRESS_SPACE_IO] = cpu_get_address_space(machine->cpu[activecpu], ADDRESS_SPACE_IO); - -// need to handle: -// active_address_space[ADDRESS_SPACE_PROGRAM].readlookup = ((machine->debug_flags & DEBUG_FLAG_WPR_PROGRAM) != 0) ? wptable : space->read.table; -} - - /*************************************************************************** ADDRESS MAPS @@ -811,7 +823,7 @@ void memory_set_decrypted_region(const address_space *space, offs_t addrstart, o bank_info *bank = &space->machine->memory_data->bankdata[banknum]; /* consider this bank if it is used for reading and matches the address space */ - if (bank->used && bank->read && bank->space == space) + if (bank->used && bank->read && bank_references_space(bank, space)) { /* verify that the region fully covers the decrypted range */ if (bank->bytestart >= bytestart && bank->byteend <= byteend) @@ -889,7 +901,7 @@ int memory_set_direct_region(const address_space *space, offs_t byteaddress) for (entry = 1; entry < STATIC_COUNT; entry++) { bank_info *bank = &memdata->bankdata[entry]; - if (bank->used && bank->space == space && bank->bytestart < byteaddress && bank->byteend > byteaddress) + if (bank->used && bank_references_space(bank, space) && bank->bytestart < byteaddress && bank->byteend > byteaddress) break; } @@ -1047,9 +1059,9 @@ void memory_configure_bank_decrypted(running_machine *machine, int banknum, int void memory_set_bank(running_machine *machine, int banknum, int entrynum) { - const address_space *space = active_address_space[ADDRESS_SPACE_PROGRAM]; memory_private *memdata = machine->memory_data; bank_info *bank = &memdata->bankdata[banknum]; + bank_reference *ref; /* validation checks */ if (banknum < STATIC_BANK1 || banknum > MAX_EXPLICIT_BANKS || !bank->used) @@ -1066,9 +1078,9 @@ void memory_set_bank(running_machine *machine, int banknum, int entrynum) memdata->bank_ptr[banknum] = bank->entry[entrynum]; memdata->bankd_ptr[banknum] = bank->entryd[entrynum]; - /* if we're executing out of this bank, adjust the opbase pointer */ - if (space != NULL && space->direct.entry == banknum) - force_opbase_update(space); + /* invalidate all the direct references to any referenced address spaces */ + for (ref = bank->reflist; ref != NULL; ref = ref->next) + force_opbase_update(ref->space); } @@ -1097,9 +1109,9 @@ int memory_get_bank(running_machine *machine, int banknum) void memory_set_bankptr(running_machine *machine, int banknum, void *base) { - const address_space *space = active_address_space[ADDRESS_SPACE_PROGRAM]; memory_private *memdata = machine->memory_data; bank_info *bank = &memdata->bankdata[banknum]; + bank_reference *ref; /* validation checks */ if (banknum < STATIC_BANK1 || banknum > MAX_EXPLICIT_BANKS || !bank->used) @@ -1114,9 +1126,9 @@ void memory_set_bankptr(running_machine *machine, int banknum, void *base) /* set the base */ memdata->bank_ptr[banknum] = base; - /* if we're executing out of this bank, adjust the opbase pointer */ - if (space != NULL && space->direct.entry == banknum) - force_opbase_update(space); + /* invalidate all the direct references to any referenced address spaces */ + for (ref = bank->reflist; ref != NULL; ref = ref->next) + force_opbase_update(ref->space); } @@ -1822,15 +1834,19 @@ static void memory_init_locate(running_machine *machine) if (bank->used) { address_map_entry *entry; + bank_reference *ref; + int foundit = FALSE; /* set the initial bank pointer */ - for (entry = bank->space->map->entrylist; entry != NULL; entry = entry->next) - if (entry->bytestart == bank->bytestart) - { - memdata->bank_ptr[banknum] = entry->memory; - VPRINTF(("assigned bank %d pointer to memory from range %08X-%08X [%p]\n", banknum, entry->addrstart, entry->addrend, entry->memory)); - break; - } + for (ref = bank->reflist; !foundit && ref != NULL; ref = ref->next) + for (entry = ref->space->map->entrylist; entry != NULL; entry = entry->next) + if (entry->bytestart == bank->bytestart) + { + memdata->bank_ptr[banknum] = entry->memory; + foundit = TRUE; + VPRINTF(("assigned bank %d pointer to memory from range %08X-%08X [%p]\n", banknum, entry->addrstart, entry->addrend, entry->memory)); + break; + } /* if the entry was set ahead of time, override the automatically found pointer */ if (!bank->dynamic && bank->curentry != MAX_BANK_ENTRIES) @@ -1851,6 +1867,7 @@ static void memory_exit(running_machine *machine) { memory_private *memdata = machine->memory_data; address_space *space, *nextspace; + int banknum; /* free the memory blocks */ while (memdata->memory_block_list != NULL) @@ -1859,6 +1876,18 @@ static void memory_exit(running_machine *machine) memdata->memory_block_list = block->next; free(block); } + + /* free all the bank references */ + for (banknum = 0; banknum < STATIC_COUNT; banknum++) + { + bank_info *bank = &memdata->bankdata[banknum]; + while (bank->reflist != NULL) + { + bank_reference *ref = bank->reflist; + bank->reflist = ref->next; + free(ref); + } + } /* free all the address spaces and tables */ for (space = (address_space *)memdata->spacelist; space != NULL; space = nextspace) @@ -2276,7 +2305,7 @@ static void bank_assign_static(int banknum, const address_space *space, read_or_ /* fill in information about the bank */ bank->used = TRUE; bank->dynamic = FALSE; - bank->space = space; + add_bank_reference(bank, space); bank->bytestart = bytestart; bank->byteend = byteend; bank->curentry = MAX_BANK_ENTRIES; @@ -2303,11 +2332,11 @@ static genf *bank_assign_dynamic(const address_space *space, read_or_write reado for (banknum = MAX_BANKS; banknum >= 1; banknum--) { bank_info *bank = &space->machine->memory_data->bankdata[banknum]; - if (!bank->used || (bank->dynamic && bank->space == space && bank->bytestart == bytestart)) + if (!bank->used || (bank->dynamic && bank_references_space(bank, space) && bank->bytestart == bytestart)) { bank->used = TRUE; bank->dynamic = TRUE; - bank->space = space; + add_bank_reference(bank, space); bank->bytestart = bytestart; bank->byteend = byteend; VPRINTF(("Assigned bank %d to '%s',%s,%08X\n", banknum, space->cpu->tag, space->name, bytestart)); @@ -3631,10 +3660,6 @@ static memory_handler get_stub_handler(read_or_write readorwrite, int spacedbits 8-BIT READ HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - UINT8 memory_read_byte_8le(const address_space *space, offs_t address) { return read_byte_generic(space, address); @@ -3730,312 +3755,11 @@ UINT64 memory_read_qword_masked_8be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -UINT8 program_read_byte_8le(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address); -} - -UINT8 program_read_byte_8be(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address); -} - -UINT16 program_read_word_8le(offs_t address) -{ - UINT16 result = program_read_byte_8le(address + 0) << 0; - return result | (program_read_byte_8le(address + 1) << 8); -} - -UINT16 program_read_word_masked_8le(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0x00ff) result |= program_read_byte_8le(address + 0) << 0; - if (mask & 0xff00) result |= program_read_byte_8le(address + 1) << 8; - return result; -} - -UINT16 program_read_word_8be(offs_t address) -{ - UINT16 result = program_read_byte_8be(address + 0) << 8; - return result | (program_read_byte_8be(address + 1) << 0); -} - -UINT16 program_read_word_masked_8be(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0xff00) result |= program_read_byte_8be(address + 0) << 8; - if (mask & 0x00ff) result |= program_read_byte_8be(address + 1) << 0; - return result; -} - -UINT32 program_read_dword_8le(offs_t address) -{ - UINT32 result = program_read_word_8le(address + 0) << 0; - return result | (program_read_word_8le(address + 2) << 16); -} - -UINT32 program_read_dword_masked_8le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= program_read_word_masked_8le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= program_read_word_masked_8le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 program_read_dword_8be(offs_t address) -{ - UINT32 result = program_read_word_8be(address + 0) << 16; - return result | (program_read_word_8be(address + 2) << 0); -} - -UINT32 program_read_dword_masked_8be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= program_read_word_masked_8be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= program_read_word_masked_8be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 program_read_qword_8le(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_8le(address + 0) << 0; - return result | ((UINT64)program_read_dword_8le(address + 4) << 32); -} - -UINT64 program_read_qword_masked_8le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_8le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_8le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 program_read_qword_8be(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_8le(address + 0) << 32; - return result | ((UINT64)program_read_dword_8le(address + 4) << 0); -} - -UINT64 program_read_qword_masked_8be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_8be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_8be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -UINT8 data_read_byte_8le(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_DATA], address); -} - -UINT8 data_read_byte_8be(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_DATA], address); -} - -UINT16 data_read_word_8le(offs_t address) -{ - UINT16 result = data_read_byte_8le(address + 0) << 0; - return result | (data_read_byte_8le(address + 1) << 8); -} - -UINT16 data_read_word_masked_8le(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0x00ff) result |= data_read_byte_8le(address + 0) << 0; - if (mask & 0xff00) result |= data_read_byte_8le(address + 1) << 8; - return result; -} - -UINT16 data_read_word_8be(offs_t address) -{ - UINT16 result = data_read_byte_8be(address + 0) << 8; - return result | (data_read_byte_8be(address + 1) << 0); -} - -UINT16 data_read_word_masked_8be(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0xff00) result |= data_read_byte_8be(address + 0) << 8; - if (mask & 0x00ff) result |= data_read_byte_8be(address + 1) << 0; - return result; -} - -UINT32 data_read_dword_8le(offs_t address) -{ - UINT32 result = data_read_word_8le(address + 0) << 0; - return result | (data_read_word_8le(address + 2) << 16); -} - -UINT32 data_read_dword_masked_8le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= data_read_word_masked_8le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= data_read_word_masked_8le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 data_read_dword_8be(offs_t address) -{ - UINT32 result = data_read_word_8be(address + 0) << 16; - return result | (data_read_word_8be(address + 2) << 0); -} - -UINT32 data_read_dword_masked_8be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= data_read_word_masked_8be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= data_read_word_masked_8be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 data_read_qword_8le(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_8le(address + 0) << 0; - return result | ((UINT64)data_read_dword_8le(address + 4) << 32); -} - -UINT64 data_read_qword_masked_8le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_8le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_8le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 data_read_qword_8be(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_8le(address + 0) << 32; - return result | ((UINT64)data_read_dword_8le(address + 4) << 0); -} - -UINT64 data_read_qword_masked_8be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_8be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_8be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -UINT8 io_read_byte_8le(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_IO], address); -} - -UINT8 io_read_byte_8be(offs_t address) -{ - return read_byte_generic(active_address_space[ADDRESS_SPACE_IO], address); -} - -UINT16 io_read_word_8le(offs_t address) -{ - UINT16 result = io_read_byte_8le(address + 0) << 0; - return result | (io_read_byte_8le(address + 1) << 8); -} - -UINT16 io_read_word_masked_8le(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0x00ff) result |= io_read_byte_8le(address + 0) << 0; - if (mask & 0xff00) result |= io_read_byte_8le(address + 1) << 8; - return result; -} - -UINT16 io_read_word_8be(offs_t address) -{ - UINT16 result = io_read_byte_8be(address + 0) << 8; - return result | (io_read_byte_8be(address + 1) << 0); -} - -UINT16 io_read_word_masked_8be(offs_t address, UINT16 mask) -{ - UINT16 result = 0; - if (mask & 0xff00) result |= io_read_byte_8be(address + 0) << 8; - if (mask & 0x00ff) result |= io_read_byte_8be(address + 1) << 0; - return result; -} - -UINT32 io_read_dword_8le(offs_t address) -{ - UINT32 result = io_read_word_8le(address + 0) << 0; - return result | (io_read_word_8le(address + 2) << 16); -} - -UINT32 io_read_dword_masked_8le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= io_read_word_masked_8le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= io_read_word_masked_8le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 io_read_dword_8be(offs_t address) -{ - UINT32 result = io_read_word_8be(address + 0) << 16; - return result | (io_read_word_8be(address + 2) << 0); -} - -UINT32 io_read_dword_masked_8be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= io_read_word_masked_8be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= io_read_word_masked_8be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 io_read_qword_8le(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_8le(address + 0) << 0; - return result | ((UINT64)io_read_dword_8le(address + 4) << 32); -} - -UINT64 io_read_qword_masked_8le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_8le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_8le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 io_read_qword_8be(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_8le(address + 0) << 32; - return result | ((UINT64)io_read_dword_8le(address + 4) << 0); -} - -UINT64 io_read_qword_masked_8be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_8be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_8be(address + 4, mask >> 0) << 0; - return result; -} - - /*************************************************************************** 8-BIT WRITE HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - void memory_write_byte_8le(const address_space *space, offs_t address, UINT8 data) { write_byte_generic(space, address, data); @@ -4119,276 +3843,11 @@ void memory_write_qword_masked_8be(const address_space *space, offs_t address, U } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -void program_write_byte_8le(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data); -} - -void program_write_byte_8be(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data); -} - -void program_write_word_8le(offs_t address, UINT16 data) -{ - program_write_byte_8le(address + 0, data >> 0); - program_write_byte_8le(address + 1, data >> 8); -} - -void program_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0x00ff) program_write_byte_8le(address + 0, data >> 0); - if (mask & 0xff00) program_write_byte_8le(address + 1, data >> 8); -} - -void program_write_word_8be(offs_t address, UINT16 data) -{ - program_write_byte_8be(address + 0, data >> 8); - program_write_byte_8be(address + 1, data >> 0); -} - -void program_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0xff00) program_write_byte_8be(address + 0, data >> 8); - if (mask & 0x00ff) program_write_byte_8be(address + 1, data >> 0); -} - -void program_write_dword_8le(offs_t address, UINT32 data) -{ - program_write_word_8le(address + 0, data >> 0); - program_write_word_8le(address + 2, data >> 16); -} - -void program_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) program_write_word_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) program_write_word_masked_8le(address + 2, data >> 16, mask >> 16); -} - -void program_write_dword_8be(offs_t address, UINT32 data) -{ - program_write_word_8be(address + 0, data >> 16); - program_write_word_8be(address + 2, data >> 0); -} - -void program_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) program_write_word_masked_8be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) program_write_word_masked_8be(address + 2, data >> 0, mask >> 0); -} - -void program_write_qword_8le(offs_t address, UINT64 data) -{ - program_write_dword_8le(address + 0, data >> 0); - program_write_dword_8le(address + 4, data >> 32); -} - -void program_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_8le(address + 4, data >> 32, mask >> 32); -} - -void program_write_qword_8be(offs_t address, UINT64 data) -{ - program_write_dword_8be(address + 0, data >> 32); - program_write_dword_8be(address + 4, data >> 0); -} - -void program_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_8be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_8be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -void data_write_byte_8le(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_DATA], address, data); -} - -void data_write_byte_8be(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_DATA], address, data); -} - -void data_write_word_8le(offs_t address, UINT16 data) -{ - data_write_byte_8le(address + 0, data >> 0); - data_write_byte_8le(address + 1, data >> 8); -} - -void data_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0x00ff) data_write_byte_8le(address + 0, data >> 0); - if (mask & 0xff00) data_write_byte_8le(address + 1, data >> 8); -} - -void data_write_word_8be(offs_t address, UINT16 data) -{ - data_write_byte_8be(address + 0, data >> 8); - data_write_byte_8be(address + 1, data >> 0); -} - -void data_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0xff00) data_write_byte_8be(address + 0, data >> 8); - if (mask & 0x00ff) data_write_byte_8be(address + 1, data >> 0); -} - -void data_write_dword_8le(offs_t address, UINT32 data) -{ - data_write_word_8le(address + 0, data >> 0); - data_write_word_8le(address + 2, data >> 16); -} - -void data_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) data_write_word_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) data_write_word_masked_8le(address + 2, data >> 16, mask >> 16); -} - -void data_write_dword_8be(offs_t address, UINT32 data) -{ - data_write_word_8be(address + 0, data >> 16); - data_write_word_8be(address + 2, data >> 0); -} - -void data_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) data_write_word_masked_8be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) data_write_word_masked_8be(address + 2, data >> 0, mask >> 0); -} - -void data_write_qword_8le(offs_t address, UINT64 data) -{ - data_write_dword_8le(address + 0, data >> 0); - data_write_dword_8le(address + 4, data >> 32); -} - -void data_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_8le(address + 4, data >> 32, mask >> 32); -} - -void data_write_qword_8be(offs_t address, UINT64 data) -{ - data_write_dword_8be(address + 0, data >> 32); - data_write_dword_8be(address + 4, data >> 0); -} - -void data_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_8be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_8be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -void io_write_byte_8le(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_IO], address, data); -} - -void io_write_byte_8be(offs_t address, UINT8 data) -{ - write_byte_generic(active_address_space[ADDRESS_SPACE_IO], address, data); -} - -void io_write_word_8le(offs_t address, UINT16 data) -{ - io_write_byte_8le(address + 0, data >> 0); - io_write_byte_8le(address + 1, data >> 8); -} - -void io_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0x00ff) io_write_byte_8le(address + 0, data >> 0); - if (mask & 0xff00) io_write_byte_8le(address + 1, data >> 8); -} - -void io_write_word_8be(offs_t address, UINT16 data) -{ - io_write_byte_8be(address + 0, data >> 8); - io_write_byte_8be(address + 1, data >> 0); -} - -void io_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask) -{ - if (mask & 0xff00) io_write_byte_8be(address + 0, data >> 8); - if (mask & 0x00ff) io_write_byte_8be(address + 1, data >> 0); -} - -void io_write_dword_8le(offs_t address, UINT32 data) -{ - io_write_word_8le(address + 0, data >> 0); - io_write_word_8le(address + 2, data >> 16); -} - -void io_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) io_write_word_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) io_write_word_masked_8le(address + 2, data >> 16, mask >> 16); -} - -void io_write_dword_8be(offs_t address, UINT32 data) -{ - io_write_word_8be(address + 0, data >> 16); - io_write_word_8be(address + 2, data >> 0); -} - -void io_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) io_write_word_masked_8be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) io_write_word_masked_8be(address + 2, data >> 0, mask >> 0); -} - -void io_write_qword_8le(offs_t address, UINT64 data) -{ - io_write_dword_8le(address + 0, data >> 0); - io_write_dword_8le(address + 4, data >> 32); -} - -void io_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_8le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_8le(address + 4, data >> 32, mask >> 32); -} - -void io_write_qword_8be(offs_t address, UINT64 data) -{ - io_write_dword_8be(address + 0, data >> 32); - io_write_dword_8be(address + 4, data >> 0); -} - -void io_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_8be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_8be(address + 4, data >> 0, mask >> 0); -} - - /*************************************************************************** 16-BIT READ HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - UINT8 memory_read_byte_16le(const address_space *space, offs_t address) { UINT32 shift = (address & 1) * 8; @@ -4478,294 +3937,11 @@ UINT64 memory_read_qword_masked_16be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -UINT8 program_read_byte_16le(offs_t address) -{ - UINT32 shift = (address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xff << shift) >> shift; -} - -UINT8 program_read_byte_16be(offs_t address) -{ - UINT32 shift = (~address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xff << shift) >> shift; -} - -UINT16 program_read_word_16le(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffff); -} - -UINT16 program_read_word_masked_16le(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - -UINT16 program_read_word_16be(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffff); -} - -UINT16 program_read_word_masked_16be(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - -UINT32 program_read_dword_16le(offs_t address) -{ - UINT32 result = program_read_word_16le(address + 0) << 0; - return result | (program_read_word_16le(address + 2) << 16); -} - -UINT32 program_read_dword_masked_16le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= program_read_word_masked_16le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= program_read_word_masked_16le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 program_read_dword_16be(offs_t address) -{ - UINT32 result = program_read_word_16be(address + 0) << 16; - return result | (program_read_word_16be(address + 2) << 0); -} - -UINT32 program_read_dword_masked_16be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= program_read_word_masked_16be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= program_read_word_masked_16be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 program_read_qword_16le(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_16le(address + 0) << 0; - return result | ((UINT64)program_read_dword_16le(address + 4) << 32); -} - -UINT64 program_read_qword_masked_16le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_16le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_16le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 program_read_qword_16be(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_16le(address + 0) << 32; - return result | ((UINT64)program_read_dword_16le(address + 4) << 0); -} - -UINT64 program_read_qword_masked_16be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_16be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_16be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -UINT8 data_read_byte_16le(offs_t address) -{ - UINT32 shift = (address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xff << shift) >> shift; -} - -UINT8 data_read_byte_16be(offs_t address) -{ - UINT32 shift = (~address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xff << shift) >> shift; -} - -UINT16 data_read_word_16le(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffff); -} - -UINT16 data_read_word_masked_16le(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - -UINT16 data_read_word_16be(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffff); -} - -UINT16 data_read_word_masked_16be(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - -UINT32 data_read_dword_16le(offs_t address) -{ - UINT32 result = data_read_word_16le(address + 0) << 0; - return result | (data_read_word_16le(address + 2) << 16); -} - -UINT32 data_read_dword_masked_16le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= data_read_word_masked_16le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= data_read_word_masked_16le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 data_read_dword_16be(offs_t address) -{ - UINT32 result = data_read_word_16be(address + 0) << 16; - return result | (data_read_word_16be(address + 2) << 0); -} - -UINT32 data_read_dword_masked_16be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= data_read_word_masked_16be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= data_read_word_masked_16be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 data_read_qword_16le(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_16le(address + 0) << 0; - return result | ((UINT64)data_read_dword_16le(address + 4) << 32); -} - -UINT64 data_read_qword_masked_16le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_16le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_16le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 data_read_qword_16be(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_16le(address + 0) << 32; - return result | ((UINT64)data_read_dword_16le(address + 4) << 0); -} - -UINT64 data_read_qword_masked_16be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_16be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_16be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -UINT8 io_read_byte_16le(offs_t address) -{ - UINT32 shift = (address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xff << shift) >> shift; -} - -UINT8 io_read_byte_16be(offs_t address) -{ - UINT32 shift = (~address & 1) * 8; - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xff << shift) >> shift; -} - -UINT16 io_read_word_16le(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffff); -} - -UINT16 io_read_word_masked_16le(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - -UINT16 io_read_word_16be(offs_t address) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffff); -} - -UINT16 io_read_word_masked_16be(offs_t address, UINT16 mask) -{ - return read_word_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - -UINT32 io_read_dword_16le(offs_t address) -{ - UINT32 result = io_read_word_16le(address + 0) << 0; - return result | (io_read_word_16le(address + 2) << 16); -} - -UINT32 io_read_dword_masked_16le(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0x0000ffff) result |= io_read_word_masked_16le(address + 0, mask >> 0) << 0; - if (mask & 0xffff0000) result |= io_read_word_masked_16le(address + 2, mask >> 16) << 16; - return result; -} - -UINT32 io_read_dword_16be(offs_t address) -{ - UINT32 result = io_read_word_16be(address + 0) << 16; - return result | (io_read_word_16be(address + 2) << 0); -} - -UINT32 io_read_dword_masked_16be(offs_t address, UINT32 mask) -{ - UINT32 result = 0; - if (mask & 0xffff0000) result |= io_read_word_masked_16be(address + 0, mask >> 16) << 16; - if (mask & 0x0000ffff) result |= io_read_word_masked_16be(address + 2, mask >> 0) << 0; - return result; -} - -UINT64 io_read_qword_16le(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_16le(address + 0) << 0; - return result | ((UINT64)io_read_dword_16le(address + 4) << 32); -} - -UINT64 io_read_qword_masked_16le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_16le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_16le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 io_read_qword_16be(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_16le(address + 0) << 32; - return result | ((UINT64)io_read_dword_16le(address + 4) << 0); -} - -UINT64 io_read_qword_masked_16be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_16be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_16be(address + 4, mask >> 0) << 0; - return result; -} - - /*************************************************************************** 16-BIT WRITE HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - void memory_write_byte_16le(const address_space *space, offs_t address, UINT8 data) { UINT32 shift = (address & 1) * 8; @@ -4847,270 +4023,11 @@ void memory_write_qword_masked_16be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -void program_write_byte_16le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xff << shift); -} - -void program_write_byte_16be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xff << shift); -} - -void program_write_word_16le(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, 0xffff); -} - -void program_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - -void program_write_word_16be(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, 0xffff); -} - -void program_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - -void program_write_dword_16le(offs_t address, UINT32 data) -{ - program_write_word_16le(address + 0, data >> 0); - program_write_word_16le(address + 2, data >> 16); -} - -void program_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) program_write_word_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) program_write_word_masked_16le(address + 2, data >> 16, mask >> 16); -} - -void program_write_dword_16be(offs_t address, UINT32 data) -{ - program_write_word_16be(address + 0, data >> 16); - program_write_word_16be(address + 2, data >> 0); -} - -void program_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) program_write_word_masked_16be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) program_write_word_masked_16be(address + 2, data >> 0, mask >> 0); -} - -void program_write_qword_16le(offs_t address, UINT64 data) -{ - program_write_dword_16le(address + 0, data >> 0); - program_write_dword_16le(address + 4, data >> 32); -} - -void program_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_16le(address + 4, data >> 32, mask >> 32); -} - -void program_write_qword_16be(offs_t address, UINT64 data) -{ - program_write_dword_16be(address + 0, data >> 32); - program_write_dword_16be(address + 4, data >> 0); -} - -void program_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_16be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_16be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -void data_write_byte_16le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xff << shift); -} - -void data_write_byte_16be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xff << shift); -} - -void data_write_word_16le(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, 0xffff); -} - -void data_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - -void data_write_word_16be(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, 0xffff); -} - -void data_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - -void data_write_dword_16le(offs_t address, UINT32 data) -{ - data_write_word_16le(address + 0, data >> 0); - data_write_word_16le(address + 2, data >> 16); -} - -void data_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) data_write_word_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) data_write_word_masked_16le(address + 2, data >> 16, mask >> 16); -} - -void data_write_dword_16be(offs_t address, UINT32 data) -{ - data_write_word_16be(address + 0, data >> 16); - data_write_word_16be(address + 2, data >> 0); -} - -void data_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) data_write_word_masked_16be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) data_write_word_masked_16be(address + 2, data >> 0, mask >> 0); -} - -void data_write_qword_16le(offs_t address, UINT64 data) -{ - data_write_dword_16le(address + 0, data >> 0); - data_write_dword_16le(address + 4, data >> 32); -} - -void data_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_16le(address + 4, data >> 32, mask >> 32); -} - -void data_write_qword_16be(offs_t address, UINT64 data) -{ - data_write_dword_16be(address + 0, data >> 32); - data_write_dword_16be(address + 4, data >> 0); -} - -void data_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_16be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_16be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -void io_write_byte_16le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xff << shift); -} - -void io_write_byte_16be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 1) * 8; - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xff << shift); -} - -void io_write_word_16le(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data, 0xffff); -} - -void io_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} - -void io_write_word_16be(offs_t address, UINT16 data) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data, 0xffff); -} - -void io_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask) -{ - write_word_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} - -void io_write_dword_16le(offs_t address, UINT32 data) -{ - io_write_word_16le(address + 0, data >> 0); - io_write_word_16le(address + 2, data >> 16); -} - -void io_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0x0000ffff) io_write_word_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & 0xffff0000) io_write_word_masked_16le(address + 2, data >> 16, mask >> 16); -} - -void io_write_dword_16be(offs_t address, UINT32 data) -{ - io_write_word_16be(address + 0, data >> 16); - io_write_word_16be(address + 2, data >> 0); -} - -void io_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask) -{ - if (mask & 0xffff0000) io_write_word_masked_16be(address + 0, data >> 16, mask >> 16); - if (mask & 0x0000ffff) io_write_word_masked_16be(address + 2, data >> 0, mask >> 0); -} - -void io_write_qword_16le(offs_t address, UINT64 data) -{ - io_write_dword_16le(address + 0, data >> 0); - io_write_dword_16le(address + 4, data >> 32); -} - -void io_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_16le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_16le(address + 4, data >> 32, mask >> 32); -} - -void io_write_qword_16be(offs_t address, UINT64 data) -{ - io_write_dword_16be(address + 0, data >> 32); - io_write_dword_16be(address + 4, data >> 0); -} - -void io_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_16be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_16be(address + 4, data >> 0, mask >> 0); -} - - /*************************************************************************** 32-BIT READ HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - UINT8 memory_read_byte_32le(const address_space *space, offs_t address) { UINT32 shift = (address & 3) * 8; @@ -5196,282 +4113,11 @@ UINT64 memory_read_qword_masked_32be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -UINT8 program_read_byte_32le(offs_t address) -{ - UINT32 shift = (address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xff << shift) >> shift; -} - -UINT8 program_read_byte_32be(offs_t address) -{ - UINT32 shift = (~address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xff << shift) >> shift; -} - -UINT16 program_read_word_32le(offs_t address) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffff << shift) >> shift; -} - -UINT16 program_read_word_masked_32le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask << shift) >> shift; -} - -UINT16 program_read_word_32be(offs_t address) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffff << shift) >> shift; -} - -UINT16 program_read_word_masked_32be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask << shift) >> shift; -} - -UINT32 program_read_dword_32le(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffffffff); -} - -UINT32 program_read_dword_masked_32le(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - -UINT32 program_read_dword_32be(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, 0xffffffff); -} - -UINT32 program_read_dword_masked_32be(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - -UINT64 program_read_qword_32le(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_32le(address + 0) << 0; - return result | ((UINT64)program_read_dword_32le(address + 4) << 32); -} - -UINT64 program_read_qword_masked_32le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_32le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_32le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 program_read_qword_32be(offs_t address) -{ - UINT64 result = (UINT64)program_read_dword_32le(address + 0) << 32; - return result | ((UINT64)program_read_dword_32le(address + 4) << 0); -} - -UINT64 program_read_qword_masked_32be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)program_read_dword_masked_32be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)program_read_dword_masked_32be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -UINT8 data_read_byte_32le(offs_t address) -{ - UINT32 shift = (address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xff << shift) >> shift; -} - -UINT8 data_read_byte_32be(offs_t address) -{ - UINT32 shift = (~address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xff << shift) >> shift; -} - -UINT16 data_read_word_32le(offs_t address) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffff << shift) >> shift; -} - -UINT16 data_read_word_masked_32le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask << shift) >> shift; -} - -UINT16 data_read_word_32be(offs_t address) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffff << shift) >> shift; -} - -UINT16 data_read_word_masked_32be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask << shift) >> shift; -} - -UINT32 data_read_dword_32le(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffffffff); -} - -UINT32 data_read_dword_masked_32le(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - -UINT32 data_read_dword_32be(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, 0xffffffff); -} - -UINT32 data_read_dword_masked_32be(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - -UINT64 data_read_qword_32le(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_32le(address + 0) << 0; - return result | ((UINT64)data_read_dword_32le(address + 4) << 32); -} - -UINT64 data_read_qword_masked_32le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_32le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_32le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 data_read_qword_32be(offs_t address) -{ - UINT64 result = (UINT64)data_read_dword_32le(address + 0) << 32; - return result | ((UINT64)data_read_dword_32le(address + 4) << 0); -} - -UINT64 data_read_qword_masked_32be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)data_read_dword_masked_32be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)data_read_dword_masked_32be(address + 4, mask >> 0) << 0; - return result; -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -UINT8 io_read_byte_32le(offs_t address) -{ - UINT32 shift = (address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xff << shift) >> shift; -} - -UINT8 io_read_byte_32be(offs_t address) -{ - UINT32 shift = (~address & 3) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xff << shift) >> shift; -} - -UINT16 io_read_word_32le(offs_t address) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffff << shift) >> shift; -} - -UINT16 io_read_word_masked_32le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask << shift) >> shift; -} - -UINT16 io_read_word_32be(offs_t address) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffff << shift) >> shift; -} - -UINT16 io_read_word_masked_32be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask << shift) >> shift; -} - -UINT32 io_read_dword_32le(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffffffff); -} - -UINT32 io_read_dword_masked_32le(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - -UINT32 io_read_dword_32be(offs_t address) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, 0xffffffff); -} - -UINT32 io_read_dword_masked_32be(offs_t address, UINT32 mask) -{ - return read_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - -UINT64 io_read_qword_32le(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_32le(address + 0) << 0; - return result | ((UINT64)io_read_dword_32le(address + 4) << 32); -} - -UINT64 io_read_qword_masked_32le(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_32le(address + 0, mask >> 0) << 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_32le(address + 4, mask >> 32) << 32; - return result; -} - -UINT64 io_read_qword_32be(offs_t address) -{ - UINT64 result = (UINT64)io_read_dword_32le(address + 0) << 32; - return result | ((UINT64)io_read_dword_32le(address + 4) << 0); -} - -UINT64 io_read_qword_masked_32be(offs_t address, UINT64 mask) -{ - UINT64 result = 0; - if (mask & U64(0xffffffff00000000)) result |= (UINT64)io_read_dword_masked_32be(address + 0, mask >> 32) << 32; - if (mask & U64(0x00000000ffffffff)) result |= (UINT64)io_read_dword_masked_32be(address + 4, mask >> 0) << 0; - return result; -} - - /*************************************************************************** 32-BIT WRITE HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - void memory_write_byte_32le(const address_space *space, offs_t address, UINT8 data) { UINT32 shift = (address & 3) * 8; @@ -5553,270 +4199,11 @@ void memory_write_qword_masked_32be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -void program_write_byte_32le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xff << shift); -} - -void program_write_byte_32be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xff << shift); -} - -void program_write_word_32le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xffff << shift); -} - -void program_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, mask << shift); -} - -void program_write_word_32be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, 0xffff << shift); -} - -void program_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data << shift, mask << shift); -} - -void program_write_dword_32le(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, 0xffffffff); -} - -void program_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - -void program_write_dword_32be(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, 0xffffffff); -} - -void program_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - -void program_write_qword_32le(offs_t address, UINT64 data) -{ - program_write_dword_32le(address + 0, data >> 0); - program_write_dword_32le(address + 4, data >> 32); -} - -void program_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_32le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_32le(address + 4, data >> 32, mask >> 32); -} - -void program_write_qword_32be(offs_t address, UINT64 data) -{ - program_write_dword_32be(address + 0, data >> 32); - program_write_dword_32be(address + 4, data >> 0); -} - -void program_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) program_write_dword_masked_32be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) program_write_dword_masked_32be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -void data_write_byte_32le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xff << shift); -} - -void data_write_byte_32be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xff << shift); -} - -void data_write_word_32le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xffff << shift); -} - -void data_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, mask << shift); -} - -void data_write_word_32be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, 0xffff << shift); -} - -void data_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data << shift, mask << shift); -} - -void data_write_dword_32le(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, 0xffffffff); -} - -void data_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - -void data_write_dword_32be(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, 0xffffffff); -} - -void data_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - -void data_write_qword_32le(offs_t address, UINT64 data) -{ - data_write_dword_32le(address + 0, data >> 0); - data_write_dword_32le(address + 4, data >> 32); -} - -void data_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_32le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_32le(address + 4, data >> 32, mask >> 32); -} - -void data_write_qword_32be(offs_t address, UINT64 data) -{ - data_write_dword_32be(address + 0, data >> 32); - data_write_dword_32be(address + 4, data >> 0); -} - -void data_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) data_write_dword_masked_32be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) data_write_dword_masked_32be(address + 4, data >> 0, mask >> 0); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -void io_write_byte_32le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xff << shift); -} - -void io_write_byte_32be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 3) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xff << shift); -} - -void io_write_word_32le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xffff << shift); -} - -void io_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, mask << shift); -} - -void io_write_word_32be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, 0xffff << shift); -} - -void io_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 2) * 8; - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data << shift, mask << shift); -} - -void io_write_dword_32le(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, 0xffffffff); -} - -void io_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} - -void io_write_dword_32be(offs_t address, UINT32 data) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, 0xffffffff); -} - -void io_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask) -{ - write_dword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} - -void io_write_qword_32le(offs_t address, UINT64 data) -{ - io_write_dword_32le(address + 0, data >> 0); - io_write_dword_32le(address + 4, data >> 32); -} - -void io_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_32le(address + 0, data >> 0, mask >> 0); - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_32le(address + 4, data >> 32, mask >> 32); -} - -void io_write_qword_32be(offs_t address, UINT64 data) -{ - io_write_dword_32be(address + 0, data >> 32); - io_write_dword_32be(address + 4, data >> 0); -} - -void io_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask) -{ - if (mask & U64(0xffffffff00000000)) io_write_dword_masked_32be(address + 0, data >> 32, mask >> 32); - if (mask & U64(0x00000000ffffffff)) io_write_dword_masked_32be(address + 4, data >> 0, mask >> 0); -} - - /*************************************************************************** 64-BIT READ HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - UINT8 memory_read_byte_64le(const address_space *space, offs_t address) { UINT32 shift = (address & 7) * 8; @@ -5898,270 +4285,11 @@ UINT64 memory_read_qword_masked_64be(const address_space *space, offs_t address, } -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -UINT8 program_read_byte_64le(offs_t address) -{ - UINT32 shift = (address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xff << shift) >> shift; -} - -UINT8 program_read_byte_64be(offs_t address) -{ - UINT32 shift = (~address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xff << shift) >> shift; -} - -UINT16 program_read_word_64le(offs_t address) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 program_read_word_masked_64le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)mask << shift) >> shift; -} - -UINT16 program_read_word_64be(offs_t address) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 program_read_word_masked_64be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)mask << shift) >> shift; -} - -UINT32 program_read_dword_64le(offs_t address) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 program_read_dword_masked_64le(offs_t address, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)mask << shift) >> shift; -} - -UINT32 program_read_dword_64be(offs_t address) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 program_read_dword_masked_64be(offs_t address, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)mask << shift) >> shift; -} - -UINT64 program_read_qword_64le(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, U64(0xffffffffffffffff)); -} - -UINT64 program_read_qword_masked_64le(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - -UINT64 program_read_qword_64be(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, U64(0xffffffffffffffff)); -} - -UINT64 program_read_qword_masked_64be(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, mask); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -UINT8 data_read_byte_64le(offs_t address) -{ - UINT32 shift = (address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xff << shift) >> shift; -} - -UINT8 data_read_byte_64be(offs_t address) -{ - UINT32 shift = (~address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xff << shift) >> shift; -} - -UINT16 data_read_word_64le(offs_t address) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 data_read_word_masked_64le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)mask << shift) >> shift; -} - -UINT16 data_read_word_64be(offs_t address) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 data_read_word_masked_64be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)mask << shift) >> shift; -} - -UINT32 data_read_dword_64le(offs_t address) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 data_read_dword_masked_64le(offs_t address, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)mask << shift) >> shift; -} - -UINT32 data_read_dword_64be(offs_t address) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 data_read_dword_masked_64be(offs_t address, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)mask << shift) >> shift; -} - -UINT64 data_read_qword_64le(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, U64(0xffffffffffffffff)); -} - -UINT64 data_read_qword_masked_64le(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - -UINT64 data_read_qword_64be(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, U64(0xffffffffffffffff)); -} - -UINT64 data_read_qword_masked_64be(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, mask); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -UINT8 io_read_byte_64le(offs_t address) -{ - UINT32 shift = (address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xff << shift) >> shift; -} - -UINT8 io_read_byte_64be(offs_t address) -{ - UINT32 shift = (~address & 7) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xff << shift) >> shift; -} - -UINT16 io_read_word_64le(offs_t address) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 io_read_word_masked_64le(offs_t address, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)mask << shift) >> shift; -} - -UINT16 io_read_word_64be(offs_t address) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xffff << shift) >> shift; -} - -UINT16 io_read_word_masked_64be(offs_t address, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)mask << shift) >> shift; -} - -UINT32 io_read_dword_64le(offs_t address) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 io_read_dword_masked_64le(offs_t address, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)mask << shift) >> shift; -} - -UINT32 io_read_dword_64be(offs_t address) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)0xffffffff << shift) >> shift; -} - -UINT32 io_read_dword_masked_64be(offs_t address, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)mask << shift) >> shift; -} - -UINT64 io_read_qword_64le(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, U64(0xffffffffffffffff)); -} - -UINT64 io_read_qword_masked_64le(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - -UINT64 io_read_qword_64be(offs_t address) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, U64(0xffffffffffffffff)); -} - -UINT64 io_read_qword_masked_64be(offs_t address, UINT64 mask) -{ - return read_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, mask); -} - - /*************************************************************************** 64-BIT WRITE HANDLERS ***************************************************************************/ -/*------------------------------------------------- - NEUTRAL --------------------------------------------------*/ - void memory_write_byte_64le(const address_space *space, offs_t address, UINT8 data) { UINT32 shift = (address & 7) * 8; @@ -6241,258 +4369,3 @@ void memory_write_qword_masked_64be(const address_space *space, offs_t address, { write_qword_generic(space, address, data, mask); } - - -/*------------------------------------------------- - ADDRESS_SPACE_PROGRAM --------------------------------------------------*/ - -void program_write_byte_64le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void program_write_byte_64be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void program_write_word_64le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void program_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void program_write_word_64be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void program_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void program_write_dword_64le(offs_t address, UINT32 data) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void program_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void program_write_dword_64be(offs_t address, UINT32 data) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void program_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void program_write_qword_64le(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, U64(0xffffffffffffffff)); -} - -void program_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - -void program_write_qword_64be(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, U64(0xffffffffffffffff)); -} - -void program_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_PROGRAM], address, data, mask); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_DATA --------------------------------------------------*/ - -void data_write_byte_64le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void data_write_byte_64be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void data_write_word_64le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void data_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void data_write_word_64be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void data_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void data_write_dword_64le(offs_t address, UINT32 data) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void data_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void data_write_dword_64be(offs_t address, UINT32 data) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void data_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void data_write_qword_64le(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, U64(0xffffffffffffffff)); -} - -void data_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - -void data_write_qword_64be(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, U64(0xffffffffffffffff)); -} - -void data_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_DATA], address, data, mask); -} - - -/*------------------------------------------------- - ADDRESS_SPACE_IO --------------------------------------------------*/ - -void io_write_byte_64le(offs_t address, UINT8 data) -{ - UINT32 shift = (address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void io_write_byte_64be(offs_t address, UINT8 data) -{ - UINT32 shift = (~address & 7) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xff << shift); -} - -void io_write_word_64le(offs_t address, UINT16 data) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void io_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void io_write_word_64be(offs_t address, UINT16 data) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xffff << shift); -} - -void io_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask) -{ - UINT32 shift = (~address & 6) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void io_write_dword_64le(offs_t address, UINT32 data) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void io_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void io_write_dword_64be(offs_t address, UINT32 data) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)0xffffffff << shift); -} - -void io_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask) -{ - UINT32 shift = (~address & 4) * 8; - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, (UINT64)data << shift, (UINT64)mask << shift); -} - -void io_write_qword_64le(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, U64(0xffffffffffffffff)); -} - -void io_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} - -void io_write_qword_64be(offs_t address, UINT64 data) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, U64(0xffffffffffffffff)); -} - -void io_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask) -{ - write_qword_generic(active_address_space[ADDRESS_SPACE_IO], address, data, mask); -} diff --git a/src/emu/memory.h b/src/emu/memory.h index 6e5f67f679a..31ccf435eb8 100644 --- a/src/emu/memory.h +++ b/src/emu/memory.h @@ -497,58 +497,13 @@ union _addrmap64_token /* bank switching for CPU cores */ -#define change_pc(byteaddress) do { /*memory_set_direct_region(active_address_space[ADDRESS_SPACE_PROGRAM], byteaddress)*/ } while (0) +#define change_pc(byteaddress) do {} while (0) /* opcode range safety check */ #define address_is_unsafe(S,A) ((UNEXPECTED((A) < (S)->direct.min) || UNEXPECTED((A) > (S)->direct.max))) -/* temporary shortcuts for accessing the active address space */ -#ifndef NO_LEGACY_MEMORY_HANDLERS -#define program_read_byte(_addr) memory_read_byte(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_read_word(_addr) memory_read_word(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_read_dword(_addr) memory_read_dword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_read_qword(_addr) memory_read_qword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) - -#define program_write_byte(_addr,_data) memory_write_byte(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr), (_data)) -#define program_write_word(_addr,_data) memory_write_word(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr), (_data)) -#define program_write_dword(_addr,_data) memory_write_dword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr), (_data)) -#define program_write_qword(_addr,_data) memory_write_qword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr), (_data)) - -#define program_decrypted_read_ptr(_addr) memory_decrypted_read_ptr(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_decrypted_read_byte(_addr) memory_decrypted_read_byte(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_decrypted_read_word(_addr) memory_decrypted_read_word(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_decrypted_read_dword(_addr) memory_decrypted_read_dword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_decrypted_read_qword(_addr) memory_decrypted_read_qword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) - -#define program_raw_read_ptr(_addr) memory_raw_read_ptr(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_raw_read_byte(_addr) memory_raw_read_byte(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_raw_read_word(_addr) memory_raw_read_word(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_raw_read_dword(_addr) memory_raw_read_dword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) -#define program_raw_read_qword(_addr) memory_raw_read_qword(active_address_space[ADDRESS_SPACE_PROGRAM], (_addr)) - -#define data_read_byte(_addr) memory_read_byte(active_address_space[ADDRESS_SPACE_DATA], (_addr)) -#define data_read_word(_addr) memory_read_word(active_address_space[ADDRESS_SPACE_DATA], (_addr)) -#define data_read_dword(_addr) memory_read_dword(active_address_space[ADDRESS_SPACE_DATA], (_addr)) -#define data_read_qword(_addr) memory_read_qword(active_address_space[ADDRESS_SPACE_DATA], (_addr)) - -#define data_write_byte(_addr,_data) memory_write_byte(active_address_space[ADDRESS_SPACE_DATA], (_addr), (_data)) -#define data_write_word(_addr,_data) memory_write_word(active_address_space[ADDRESS_SPACE_DATA], (_addr), (_data)) -#define data_write_dword(_addr,_data) memory_write_dword(active_address_space[ADDRESS_SPACE_DATA], (_addr), (_data)) -#define data_write_qword(_addr,_data) memory_write_qword(active_address_space[ADDRESS_SPACE_DATA], (_addr), (_data)) - -#define io_read_byte(_addr) memory_read_byte(active_address_space[ADDRESS_SPACE_IO], (_addr)) -#define io_read_word(_addr) memory_read_word(active_address_space[ADDRESS_SPACE_IO], (_addr)) -#define io_read_dword(_addr) memory_read_dword(active_address_space[ADDRESS_SPACE_IO], (_addr)) -#define io_read_qword(_addr) memory_read_qword(active_address_space[ADDRESS_SPACE_IO], (_addr)) - -#define io_write_byte(_addr,_data) memory_write_byte(active_address_space[ADDRESS_SPACE_IO], (_addr), (_data)) -#define io_write_word(_addr,_data) memory_write_word(active_address_space[ADDRESS_SPACE_IO], (_addr), (_data)) -#define io_write_dword(_addr,_data) memory_write_dword(active_address_space[ADDRESS_SPACE_IO], (_addr), (_data)) -#define io_write_qword(_addr,_data) memory_write_qword(active_address_space[ADDRESS_SPACE_IO], (_addr), (_data)) -#endif - /* wrappers for dynamic read handler installation */ #define memory_install_read_handler(space, start, end, mask, mirror, rhandler) \ _memory_install_handler(space, start, end, mask, mirror, rhandler, (FPTR)NULL, #rhandler, NULL) @@ -883,8 +838,6 @@ union _addrmap64_token GLOBAL VARIABLES ***************************************************************************/ -extern const address_space * active_address_space[]; /* address spaces */ - extern const char *const address_space_names[ADDRESS_SPACES]; @@ -902,9 +855,6 @@ void memory_init(running_machine *machine); /* find an address space in our internal list; for faster access use cpu_get_address_space() */ const address_space *memory_find_address_space(const device_config *cpu, int spacenum); -/* set the current memory context - soon to be deprecated */ -void memory_set_context(running_machine *machine, int activecpu); - /* ----- address maps ----- */ @@ -1312,371 +1262,4 @@ void memory_write_dword_masked_64be(const address_space *space, offs_t address, void memory_write_qword_64be(const address_space *space, offs_t address, UINT64 data); void memory_write_qword_masked_64be(const address_space *space, offs_t address, UINT64 data, UINT64 mask); -#ifndef NO_LEGACY_MEMORY_HANDLERS -/* declare program address space handlers */ -UINT8 program_read_byte_8le(offs_t address); -UINT16 program_read_word_8le(offs_t address); -UINT16 program_read_word_masked_8le(offs_t address, UINT16 mask); -UINT32 program_read_dword_8le(offs_t address); -UINT32 program_read_dword_masked_8le(offs_t address, UINT32 mask); -UINT64 program_read_qword_8le(offs_t address); -UINT64 program_read_qword_masked_8le(offs_t address, UINT64 mask); -void program_write_byte_8le(offs_t address, UINT8 data); -void program_write_word_8le(offs_t address, UINT16 data); -void program_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_8le(offs_t address, UINT32 data); -void program_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_8le(offs_t address, UINT64 data); -void program_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_8be(offs_t address); -UINT16 program_read_word_8be(offs_t address); -UINT16 program_read_word_masked_8be(offs_t address, UINT16 mask); -UINT32 program_read_dword_8be(offs_t address); -UINT32 program_read_dword_masked_8be(offs_t address, UINT32 mask); -UINT64 program_read_qword_8be(offs_t address); -UINT64 program_read_qword_masked_8be(offs_t address, UINT64 mask); -void program_write_byte_8be(offs_t address, UINT8 data); -void program_write_word_8be(offs_t address, UINT16 data); -void program_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_8be(offs_t address, UINT32 data); -void program_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_8be(offs_t address, UINT64 data); -void program_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_16le(offs_t address); -UINT16 program_read_word_16le(offs_t address); -UINT16 program_read_word_masked_16le(offs_t address, UINT16 mask); -UINT32 program_read_dword_16le(offs_t address); -UINT32 program_read_dword_masked_16le(offs_t address, UINT32 mask); -UINT64 program_read_qword_16le(offs_t address); -UINT64 program_read_qword_masked_16le(offs_t address, UINT64 mask); -void program_write_byte_16le(offs_t address, UINT8 data); -void program_write_word_16le(offs_t address, UINT16 data); -void program_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_16le(offs_t address, UINT32 data); -void program_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_16le(offs_t address, UINT64 data); -void program_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_16be(offs_t address); -UINT16 program_read_word_16be(offs_t address); -UINT16 program_read_word_masked_16be(offs_t address, UINT16 mask); -UINT32 program_read_dword_16be(offs_t address); -UINT32 program_read_dword_masked_16be(offs_t address, UINT32 mask); -UINT64 program_read_qword_16be(offs_t address); -UINT64 program_read_qword_masked_16be(offs_t address, UINT64 mask); -void program_write_byte_16be(offs_t address, UINT8 data); -void program_write_word_16be(offs_t address, UINT16 data); -void program_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_16be(offs_t address, UINT32 data); -void program_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_16be(offs_t address, UINT64 data); -void program_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_32le(offs_t address); -UINT16 program_read_word_32le(offs_t address); -UINT16 program_read_word_masked_32le(offs_t address, UINT16 mask); -UINT32 program_read_dword_32le(offs_t address); -UINT32 program_read_dword_masked_32le(offs_t address, UINT32 mask); -UINT64 program_read_qword_32le(offs_t address); -UINT64 program_read_qword_masked_32le(offs_t address, UINT64 mask); -void program_write_byte_32le(offs_t address, UINT8 data); -void program_write_word_32le(offs_t address, UINT16 data); -void program_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_32le(offs_t address, UINT32 data); -void program_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_32le(offs_t address, UINT64 data); -void program_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_32be(offs_t address); -UINT16 program_read_word_32be(offs_t address); -UINT16 program_read_word_masked_32be(offs_t address, UINT16 mask); -UINT32 program_read_dword_32be(offs_t address); -UINT32 program_read_dword_masked_32be(offs_t address, UINT32 mask); -UINT64 program_read_qword_32be(offs_t address); -UINT64 program_read_qword_masked_32be(offs_t address, UINT64 mask); -void program_write_byte_32be(offs_t address, UINT8 data); -void program_write_word_32be(offs_t address, UINT16 data); -void program_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_32be(offs_t address, UINT32 data); -void program_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_32be(offs_t address, UINT64 data); -void program_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_64le(offs_t address); -UINT16 program_read_word_64le(offs_t address); -UINT16 program_read_word_masked_64le(offs_t address, UINT16 mask); -UINT32 program_read_dword_64le(offs_t address); -UINT32 program_read_dword_masked_64le(offs_t address, UINT32 mask); -UINT64 program_read_qword_64le(offs_t address); -UINT64 program_read_qword_masked_64le(offs_t address, UINT64 mask); -void program_write_byte_64le(offs_t address, UINT8 data); -void program_write_word_64le(offs_t address, UINT16 data); -void program_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_64le(offs_t address, UINT32 data); -void program_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_64le(offs_t address, UINT64 data); -void program_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 program_read_byte_64be(offs_t address); -UINT16 program_read_word_64be(offs_t address); -UINT16 program_read_word_masked_64be(offs_t address, UINT16 mask); -UINT32 program_read_dword_64be(offs_t address); -UINT32 program_read_dword_masked_64be(offs_t address, UINT32 mask); -UINT64 program_read_qword_64be(offs_t address); -UINT64 program_read_qword_masked_64be(offs_t address, UINT64 mask); -void program_write_byte_64be(offs_t address, UINT8 data); -void program_write_word_64be(offs_t address, UINT16 data); -void program_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask); -void program_write_dword_64be(offs_t address, UINT32 data); -void program_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask); -void program_write_qword_64be(offs_t address, UINT64 data); -void program_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask); - - -/* declare data address space handlers */ -UINT8 data_read_byte_8le(offs_t address); -UINT16 data_read_word_8le(offs_t address); -UINT16 data_read_word_masked_8le(offs_t address, UINT16 mask); -UINT32 data_read_dword_8le(offs_t address); -UINT32 data_read_dword_masked_8le(offs_t address, UINT32 mask); -UINT64 data_read_qword_8le(offs_t address); -UINT64 data_read_qword_masked_8le(offs_t address, UINT64 mask); -void data_write_byte_8le(offs_t address, UINT8 data); -void data_write_word_8le(offs_t address, UINT16 data); -void data_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_8le(offs_t address, UINT32 data); -void data_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_8le(offs_t address, UINT64 data); -void data_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_8be(offs_t address); -UINT16 data_read_word_8be(offs_t address); -UINT16 data_read_word_masked_8be(offs_t address, UINT16 mask); -UINT32 data_read_dword_8be(offs_t address); -UINT32 data_read_dword_masked_8be(offs_t address, UINT32 mask); -UINT64 data_read_qword_8be(offs_t address); -UINT64 data_read_qword_masked_8be(offs_t address, UINT64 mask); -void data_write_byte_8be(offs_t address, UINT8 data); -void data_write_word_8be(offs_t address, UINT16 data); -void data_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_8be(offs_t address, UINT32 data); -void data_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_8be(offs_t address, UINT64 data); -void data_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_16le(offs_t address); -UINT16 data_read_word_16le(offs_t address); -UINT16 data_read_word_masked_16le(offs_t address, UINT16 mask); -UINT32 data_read_dword_16le(offs_t address); -UINT32 data_read_dword_masked_16le(offs_t address, UINT32 mask); -UINT64 data_read_qword_16le(offs_t address); -UINT64 data_read_qword_masked_16le(offs_t address, UINT64 mask); -void data_write_byte_16le(offs_t address, UINT8 data); -void data_write_word_16le(offs_t address, UINT16 data); -void data_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_16le(offs_t address, UINT32 data); -void data_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_16le(offs_t address, UINT64 data); -void data_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_16be(offs_t address); -UINT16 data_read_word_16be(offs_t address); -UINT16 data_read_word_masked_16be(offs_t address, UINT16 mask); -UINT32 data_read_dword_16be(offs_t address); -UINT32 data_read_dword_masked_16be(offs_t address, UINT32 mask); -UINT64 data_read_qword_16be(offs_t address); -UINT64 data_read_qword_masked_16be(offs_t address, UINT64 mask); -void data_write_byte_16be(offs_t address, UINT8 data); -void data_write_word_16be(offs_t address, UINT16 data); -void data_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_16be(offs_t address, UINT32 data); -void data_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_16be(offs_t address, UINT64 data); -void data_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_32le(offs_t address); -UINT16 data_read_word_32le(offs_t address); -UINT16 data_read_word_masked_32le(offs_t address, UINT16 mask); -UINT32 data_read_dword_32le(offs_t address); -UINT32 data_read_dword_masked_32le(offs_t address, UINT32 mask); -UINT64 data_read_qword_32le(offs_t address); -UINT64 data_read_qword_masked_32le(offs_t address, UINT64 mask); -void data_write_byte_32le(offs_t address, UINT8 data); -void data_write_word_32le(offs_t address, UINT16 data); -void data_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_32le(offs_t address, UINT32 data); -void data_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_32le(offs_t address, UINT64 data); -void data_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_32be(offs_t address); -UINT16 data_read_word_32be(offs_t address); -UINT16 data_read_word_masked_32be(offs_t address, UINT16 mask); -UINT32 data_read_dword_32be(offs_t address); -UINT32 data_read_dword_masked_32be(offs_t address, UINT32 mask); -UINT64 data_read_qword_32be(offs_t address); -UINT64 data_read_qword_masked_32be(offs_t address, UINT64 mask); -void data_write_byte_32be(offs_t address, UINT8 data); -void data_write_word_32be(offs_t address, UINT16 data); -void data_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_32be(offs_t address, UINT32 data); -void data_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_32be(offs_t address, UINT64 data); -void data_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_64le(offs_t address); -UINT16 data_read_word_64le(offs_t address); -UINT16 data_read_word_masked_64le(offs_t address, UINT16 mask); -UINT32 data_read_dword_64le(offs_t address); -UINT32 data_read_dword_masked_64le(offs_t address, UINT32 mask); -UINT64 data_read_qword_64le(offs_t address); -UINT64 data_read_qword_masked_64le(offs_t address, UINT64 mask); -void data_write_byte_64le(offs_t address, UINT8 data); -void data_write_word_64le(offs_t address, UINT16 data); -void data_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_64le(offs_t address, UINT32 data); -void data_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_64le(offs_t address, UINT64 data); -void data_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 data_read_byte_64be(offs_t address); -UINT16 data_read_word_64be(offs_t address); -UINT16 data_read_word_masked_64be(offs_t address, UINT16 mask); -UINT32 data_read_dword_64be(offs_t address); -UINT32 data_read_dword_masked_64be(offs_t address, UINT32 mask); -UINT64 data_read_qword_64be(offs_t address); -UINT64 data_read_qword_masked_64be(offs_t address, UINT64 mask); -void data_write_byte_64be(offs_t address, UINT8 data); -void data_write_word_64be(offs_t address, UINT16 data); -void data_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask); -void data_write_dword_64be(offs_t address, UINT32 data); -void data_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask); -void data_write_qword_64be(offs_t address, UINT64 data); -void data_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask); - - -/* declare io address space handlers */ -UINT8 io_read_byte_8le(offs_t address); -UINT16 io_read_word_8le(offs_t address); -UINT16 io_read_word_masked_8le(offs_t address, UINT16 mask); -UINT32 io_read_dword_8le(offs_t address); -UINT32 io_read_dword_masked_8le(offs_t address, UINT32 mask); -UINT64 io_read_qword_8le(offs_t address); -UINT64 io_read_qword_masked_8le(offs_t address, UINT64 mask); -void io_write_byte_8le(offs_t address, UINT8 data); -void io_write_word_8le(offs_t address, UINT16 data); -void io_write_word_masked_8le(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_8le(offs_t address, UINT32 data); -void io_write_dword_masked_8le(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_8le(offs_t address, UINT64 data); -void io_write_qword_masked_8le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_8be(offs_t address); -UINT16 io_read_word_8be(offs_t address); -UINT16 io_read_word_masked_8be(offs_t address, UINT16 mask); -UINT32 io_read_dword_8be(offs_t address); -UINT32 io_read_dword_masked_8be(offs_t address, UINT32 mask); -UINT64 io_read_qword_8be(offs_t address); -UINT64 io_read_qword_masked_8be(offs_t address, UINT64 mask); -void io_write_byte_8be(offs_t address, UINT8 data); -void io_write_word_8be(offs_t address, UINT16 data); -void io_write_word_masked_8be(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_8be(offs_t address, UINT32 data); -void io_write_dword_masked_8be(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_8be(offs_t address, UINT64 data); -void io_write_qword_masked_8be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_16le(offs_t address); -UINT16 io_read_word_16le(offs_t address); -UINT16 io_read_word_masked_16le(offs_t address, UINT16 mask); -UINT32 io_read_dword_16le(offs_t address); -UINT32 io_read_dword_masked_16le(offs_t address, UINT32 mask); -UINT64 io_read_qword_16le(offs_t address); -UINT64 io_read_qword_masked_16le(offs_t address, UINT64 mask); -void io_write_byte_16le(offs_t address, UINT8 data); -void io_write_word_16le(offs_t address, UINT16 data); -void io_write_word_masked_16le(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_16le(offs_t address, UINT32 data); -void io_write_dword_masked_16le(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_16le(offs_t address, UINT64 data); -void io_write_qword_masked_16le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_16be(offs_t address); -UINT16 io_read_word_16be(offs_t address); -UINT16 io_read_word_masked_16be(offs_t address, UINT16 mask); -UINT32 io_read_dword_16be(offs_t address); -UINT32 io_read_dword_masked_16be(offs_t address, UINT32 mask); -UINT64 io_read_qword_16be(offs_t address); -UINT64 io_read_qword_masked_16be(offs_t address, UINT64 mask); -void io_write_byte_16be(offs_t address, UINT8 data); -void io_write_word_16be(offs_t address, UINT16 data); -void io_write_word_masked_16be(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_16be(offs_t address, UINT32 data); -void io_write_dword_masked_16be(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_16be(offs_t address, UINT64 data); -void io_write_qword_masked_16be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_32le(offs_t address); -UINT16 io_read_word_32le(offs_t address); -UINT16 io_read_word_masked_32le(offs_t address, UINT16 mask); -UINT32 io_read_dword_32le(offs_t address); -UINT32 io_read_dword_masked_32le(offs_t address, UINT32 mask); -UINT64 io_read_qword_32le(offs_t address); -UINT64 io_read_qword_masked_32le(offs_t address, UINT64 mask); -void io_write_byte_32le(offs_t address, UINT8 data); -void io_write_word_32le(offs_t address, UINT16 data); -void io_write_word_masked_32le(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_32le(offs_t address, UINT32 data); -void io_write_dword_masked_32le(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_32le(offs_t address, UINT64 data); -void io_write_qword_masked_32le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_32be(offs_t address); -UINT16 io_read_word_32be(offs_t address); -UINT16 io_read_word_masked_32be(offs_t address, UINT16 mask); -UINT32 io_read_dword_32be(offs_t address); -UINT32 io_read_dword_masked_32be(offs_t address, UINT32 mask); -UINT64 io_read_qword_32be(offs_t address); -UINT64 io_read_qword_masked_32be(offs_t address, UINT64 mask); -void io_write_byte_32be(offs_t address, UINT8 data); -void io_write_word_32be(offs_t address, UINT16 data); -void io_write_word_masked_32be(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_32be(offs_t address, UINT32 data); -void io_write_dword_masked_32be(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_32be(offs_t address, UINT64 data); -void io_write_qword_masked_32be(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_64le(offs_t address); -UINT16 io_read_word_64le(offs_t address); -UINT16 io_read_word_masked_64le(offs_t address, UINT16 mask); -UINT32 io_read_dword_64le(offs_t address); -UINT32 io_read_dword_masked_64le(offs_t address, UINT32 mask); -UINT64 io_read_qword_64le(offs_t address); -UINT64 io_read_qword_masked_64le(offs_t address, UINT64 mask); -void io_write_byte_64le(offs_t address, UINT8 data); -void io_write_word_64le(offs_t address, UINT16 data); -void io_write_word_masked_64le(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_64le(offs_t address, UINT32 data); -void io_write_dword_masked_64le(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_64le(offs_t address, UINT64 data); -void io_write_qword_masked_64le(offs_t address, UINT64 data, UINT64 mask); - -UINT8 io_read_byte_64be(offs_t address); -UINT16 io_read_word_64be(offs_t address); -UINT16 io_read_word_masked_64be(offs_t address, UINT16 mask); -UINT32 io_read_dword_64be(offs_t address); -UINT32 io_read_dword_masked_64be(offs_t address, UINT32 mask); -UINT64 io_read_qword_64be(offs_t address); -UINT64 io_read_qword_masked_64be(offs_t address, UINT64 mask); -void io_write_byte_64be(offs_t address, UINT8 data); -void io_write_word_64be(offs_t address, UINT16 data); -void io_write_word_masked_64be(offs_t address, UINT16 data, UINT16 mask); -void io_write_dword_64be(offs_t address, UINT32 data); -void io_write_dword_masked_64be(offs_t address, UINT32 data, UINT32 mask); -void io_write_qword_64be(offs_t address, UINT64 data); -void io_write_qword_masked_64be(offs_t address, UINT64 data, UINT64 mask); -#endif - #endif /* __MEMORY_H__ */ diff --git a/src/mame/drivers/ataxx.c b/src/mame/drivers/ataxx.c index 75435ae3667..14e16211220 100644 --- a/src/mame/drivers/ataxx.c +++ b/src/mame/drivers/ataxx.c @@ -315,7 +315,7 @@ static MACHINE_DRIVER_START( ataxx ) MDRV_CPU_PROGRAM_MAP(slave_map_program,0) MDRV_CPU_IO_MAP(slave_map_io,0) - MDRV_CPU_ADD("sound", I80186, XTAL_16MHz) + MDRV_CPU_ADD("audio", I80186, XTAL_16MHz) MDRV_CPU_PROGRAM_MAP(leland_80186_map_program,0) MDRV_CPU_IO_MAP(ataxx_80186_map_io,0) @@ -364,7 +364,7 @@ ROM_START( ataxx ) ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) ) ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "e-302-31003-01.u15", 0x20001, 0x20000, CRC(8bb3233b) SHA1(5131ad78bdf904cde36534e99efa5576fcea25c0) ) ROM_LOAD16_BYTE( "e-302-31001-01.u1", 0x20000, 0x20000, CRC(728d75f2) SHA1(d9e8e742cc2d536bd62370c1e474c7036e4392bb) ) ROM_LOAD16_BYTE( "e-302-31004-01.u16", 0x60001, 0x20000, CRC(f2bdff48) SHA1(f34eb16ea180effffd81d637acc3d96bffaf81c9) ) @@ -395,7 +395,7 @@ ROM_START( ataxxa ) ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) ) ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "e-302-31003-01.u15", 0x20001, 0x20000, CRC(8bb3233b) SHA1(5131ad78bdf904cde36534e99efa5576fcea25c0) ) ROM_LOAD16_BYTE( "e-302-31001-01.u1", 0x20000, 0x20000, CRC(728d75f2) SHA1(d9e8e742cc2d536bd62370c1e474c7036e4392bb) ) ROM_LOAD16_BYTE( "e-302-31004-01.u16", 0x60001, 0x20000, CRC(f2bdff48) SHA1(f34eb16ea180effffd81d637acc3d96bffaf81c9) ) @@ -426,7 +426,7 @@ ROM_START( ataxxj ) ROM_LOAD( "e-302-31013-01.u112", 0x20000, 0x20000, CRC(7e7c3e2f) SHA1(a7e31e1f1b09414c40ab9ace5e9bffbdbaee8704) ) ROM_LOAD( "e-302-31014-01.u113", 0x40000, 0x20000, CRC(8cf3e101) SHA1(672a3a0ca0f5334cf614bc49cbc1ae5ccea54cbe) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "ataxxj.u15", 0x20001, 0x20000, CRC(db266d3f) SHA1(31c9baf4548b23e1e1939069620a937ee98a7b09) ) ROM_LOAD16_BYTE( "ataxxj.u1", 0x20000, 0x20000, CRC(d6db2724) SHA1(d3c7b45b165eb7c9a6369863b273ecac5c31ca65) ) ROM_LOAD16_BYTE( "ataxxj.u16", 0x60001, 0x20000, CRC(2b127f56) SHA1(909fed387ad6bb1d83f9cee271e6dc851ac50525) ) @@ -463,7 +463,7 @@ ROM_START( wsf ) ROM_LOAD( "30007-01.157", 0xc0000, 0x20000, CRC(451321ae) SHA1(da82f0bba4341b087136afa17767b64389a0f8f4) ) ROM_LOAD( "30008-01.158", 0xe0000, 0x20000, CRC(4d23836f) SHA1(7b5b9419774e7537e69017c4c44a0601b6e93714) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "30017-01.u3", 0x20001, 0x20000, CRC(39ec13c1) SHA1(4067da05cbaf205ab7cc14a3370220ad98b394cd) ) ROM_LOAD16_BYTE( "30020-01.u6", 0x20000, 0x20000, CRC(532c02bf) SHA1(a2070d57f1ce2a68a064872ea7b77ba418187cfe) ) ROM_LOAD16_BYTE( "30018-01.u4", 0x60001, 0x20000, CRC(1ec16735) SHA1(86766742b50edd25cfeef6f808d2733c484eca4e) ) @@ -508,7 +508,7 @@ ROM_START( indyheat ) ROM_LOAD( "u157_27c.010", 0xc0000, 0x20000, CRC(a6462adc) SHA1(bdc744e3c836715874d40b9e32f509f288ce00fd) ) ROM_LOAD( "u158_27c.010", 0xe0000, 0x20000, CRC(d6ef27a3) SHA1(37fcf772ce564a9300f9dd437b9015a2d25b46b5) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "u3_27c.010", 0x20001, 0x20000, CRC(97413818) SHA1(64caa14e05dd9ec43ce13f5c738df1f39f5fa75c) ) ROM_LOAD16_BYTE( "u6_27c.010", 0x20000, 0x20000, CRC(15a89962) SHA1(52f66e1ccde0ef3fb7959a207cc967237e37833e) ) ROM_LOAD16_BYTE( "u4_27c.010", 0x60001, 0x20000, CRC(fa7bfa04) SHA1(0174f5372117d15bf0ecd48b72c9cca4cf8bb75f) ) @@ -554,7 +554,7 @@ ROM_START( brutforc ) ROM_LOAD( "u157", 0xc0000, 0x20000, CRC(e42b3dba) SHA1(ed3707932507bcddd0191e36e2f5479b2ce2e642) ) ROM_LOAD( "u158", 0xe0000, 0x20000, CRC(a0aa3220) SHA1(bd9bffa4fcf76e34a72a497d322c0430cbc7c81e) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "u3", 0x20001, 0x20000, CRC(9984906c) SHA1(66626ea32fb510a9bb1974e41806fee6a4afa1cf) ) ROM_LOAD16_BYTE( "u6", 0x20000, 0x20000, CRC(c9c5a413) SHA1(5d4f8bc895b89267643b41ecad52b886fd88df97) ) ROM_LOAD16_BYTE( "u4", 0x60001, 0x20000, CRC(ca8ab3a6) SHA1(2e7c7f50fbaed7e052a97ac7954b634bbc657226) ) @@ -608,7 +608,7 @@ ROM_START( asylum ) ROM_CONTINUE( 0x1c0000, 0x20000 ) ROM_LOAD( "asy-spe.158", 0xe0000, 0x20000, CRC(49d19520) SHA1(6f24221c976e9dacc1ce96dfc1d1e3df4e8a8255) ) - ROM_REGION( 0x100000, "sound", 0 ) + ROM_REGION( 0x100000, "audio", 0 ) ROM_LOAD16_BYTE( "asy-65.3", 0x20001, 0x20000, CRC(709bdc78) SHA1(ca235c2ab26fbb153ffe775a1a44b31695902d3f) ) ROM_LOAD16_BYTE( "asy-65.6", 0x20000, 0x20000, CRC(d019fb2e) SHA1(9d16b0399f03067e7bf79043904a1045119937c6) ) ROM_LOAD16_BYTE( "asy-65.4", 0x60001, 0x20000, CRC(1882c3b2) SHA1(71af49d1f59e257e5f8a0fc590d0533dda5bf82b) ) diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c index 346349ab75b..166e24cadb8 100644 --- a/src/mame/drivers/atetris.c +++ b/src/mame/drivers/atetris.c @@ -149,7 +149,7 @@ static MACHINE_RESET( atetris ) static READ8_HANDLER( atetris_slapstic_r ) { int result = slapstic_base[0x2000 + offset]; - int new_bank = slapstic_tweak(space->machine, offset) & 1; + int new_bank = slapstic_tweak(space, offset) & 1; /* update for the new bank */ if (new_bank != current_bank) diff --git a/src/mame/drivers/konamim2.c b/src/mame/drivers/konamim2.c index 5c94a0d8dd2..8380611ed86 100644 --- a/src/mame/drivers/konamim2.c +++ b/src/mame/drivers/konamim2.c @@ -786,7 +786,7 @@ static void cde_handle_reports(void) } } -static void cde_dma_transfer(int channel, int next) +static void cde_dma_transfer(const address_space *space, int channel, int next) { UINT32 address; int length; @@ -805,7 +805,7 @@ static void cde_dma_transfer(int channel, int next) for (i=0; i < cde_dma[channel].next_length; i++) { - program_write_byte_64be(address, 0xff); // TODO: do the real transfer... + memory_write_byte(space, address, 0xff); // TODO: do the real transfer... address++; } } @@ -943,13 +943,13 @@ static WRITE64_HANDLER(cde_w) { cde_dma[0].dma_done = 1; - cde_dma_transfer(0, 0); + cde_dma_transfer(space, 0, 0); } if (d & 0x40) { cde_dma[0].dma_done = 1; - cde_dma_transfer(0, 1); + cde_dma_transfer(space, 0, 1); } break; } diff --git a/src/mame/drivers/leland.c b/src/mame/drivers/leland.c index 4e506bf5c32..9efb67cb8c4 100644 --- a/src/mame/drivers/leland.c +++ b/src/mame/drivers/leland.c @@ -1857,66 +1857,6 @@ ROM_END * *************************************/ -#if 0 -/* -Copy this code into the init function and modify: -{ - UINT8 *ram = memory_region(machine, "master"); - FILE *output; - - output = fopen("indyheat.m", "w"); - dasm_chunk("Resident", &ram[0x00000], 0x0000, 0x2000, output); - dasm_chunk("Bank 0x02000:", &ram[0x02000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x10000:", &ram[0x10000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x18000:", &ram[0x18000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x20000:", &ram[0x20000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x28000:", &ram[0x28000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x30000:", &ram[0x30000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x38000:", &ram[0x38000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x40000:", &ram[0x40000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x48000:", &ram[0x48000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x50000:", &ram[0x50000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x58000:", &ram[0x58000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x60000:", &ram[0x60000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x68000:", &ram[0x68000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x70000:", &ram[0x70000], 0x2000, 0x8000, output); - dasm_chunk("Bank 0x78000:", &ram[0x78000], 0x2000, 0x8000, output); - fclose(output); -} -*/ - -static void dasm_chunk(char *tag, UINT8 *base, UINT16 pc, UINT32 length, FILE *output) -{ - extern unsigned DasmZ80(char *buffer, unsigned _pc); - - UINT8 *old_rom = opbase->rom; - UINT8 *old_ram = opbase->ram; - char buffer[256]; - int count, offset, i; - - fprintf(output, "\n\n\n%s:\n", tag); - opbase->rom = opbase->ram = &base[-pc]; - for (offset = 0; offset < length; offset += count) - { - count = DasmZ80(buffer, pc); - for (i = 0; i < 4; i++) - if (i < count) - fprintf(output, "%c", (program_decrypted_read_byte(pc + i) >= 32 && program_decrypted_read_byte(pc + i) < 127) ? program_decrypted_read_byte(pc + i) : ' '); - else - fprintf(output, " "); - fprintf(output, " %04X: ", pc); - for (i = 0; i < 4; i++) - if (i < count) - fprintf(output, "%02X ", program_decrypted_read_byte(pc++)); - else - fprintf(output, " "); - fprintf(output, "%s\n", buffer); - } - opbase->rom = old_rom; - opbase->ram = old_ram; -} -#endif - static void init_master_ports(running_machine *machine, UINT8 mvram_base, UINT8 io_base) { /* set up the master CPU VRAM I/O */ diff --git a/src/mame/drivers/missile.c b/src/mame/drivers/missile.c index 5f15c981181..317822a4154 100644 --- a/src/mame/drivers/missile.c +++ b/src/mame/drivers/missile.c @@ -510,9 +510,9 @@ static MACHINE_RESET( missile ) * *************************************/ -INLINE int get_madsel(running_machine *machine) +INLINE int get_madsel(const address_space *space) { - UINT16 pc = cpu_get_previouspc(machine->activecpu); + UINT16 pc = cpu_get_previouspc(space->cpu); /* if we're at a different instruction than last time, reset our delay counter */ if (pc != madsel_lastpc) @@ -521,7 +521,7 @@ INLINE int get_madsel(running_machine *machine) /* MADSEL signal disables standard address decoding and routes writes to video RAM; it is enabled if the IRQ signal is clear and the low 5 bits of the fetched opcode are 0x01 */ - if (!irq_state && (program_decrypted_read_byte(pc) & 0x1f) == 0x01) + if (!irq_state && (memory_decrypted_read_byte(space, pc) & 0x1f) == 0x01) { /* the MADSEL signal goes high 5 cycles after the opcode is identified; this effectively skips the indirect memory read. Since this is difficult @@ -663,7 +663,7 @@ static VIDEO_UPDATE( missile ) static WRITE8_HANDLER( missile_w ) { /* if we're in MADSEL mode, write to video RAM */ - if (get_madsel(space->machine)) + if (get_madsel(space)) { write_vram(space->machine, offset, data); return; @@ -721,7 +721,7 @@ static READ8_HANDLER( missile_r ) UINT8 result = 0xff; /* if we're in MADSEL mode, read from video RAM */ - if (get_madsel(space->machine)) + if (get_madsel(space)) return read_vram(space->machine, offset); /* otherwise, strip A15 and handle manually */ diff --git a/src/mame/drivers/segas32.c b/src/mame/drivers/segas32.c index d6f1e65a426..c2d3edd9ecf 100644 --- a/src/mame/drivers/segas32.c +++ b/src/mame/drivers/segas32.c @@ -3839,7 +3839,7 @@ static WRITE16_HANDLER( f1en_comms_echo_w ) { // pretend that slave is following master op, enables attract mode video with sound if (ACCESSING_BITS_0_7) - program_write_byte( 0x810049, data ); + memory_write_byte( space, 0x810049, data ); } static DRIVER_INIT( f1en ) diff --git a/src/mame/drivers/starwars.c b/src/mame/drivers/starwars.c index 02fad78b880..8ff2e0b9fe5 100644 --- a/src/mame/drivers/starwars.c +++ b/src/mame/drivers/starwars.c @@ -92,9 +92,9 @@ static WRITE8_HANDLER( irq_ack_w ) * *************************************/ -static void esb_slapstic_tweak(running_machine *machine, offs_t offset) +static void esb_slapstic_tweak(const address_space *space, offs_t offset) { - int new_bank = slapstic_tweak(machine, offset); + int new_bank = slapstic_tweak(space, offset); /* update for the new bank */ if (new_bank != slapstic_current_bank) @@ -108,14 +108,14 @@ static void esb_slapstic_tweak(running_machine *machine, offs_t offset) static READ8_HANDLER( esb_slapstic_r ) { int result = slapstic_base[offset]; - esb_slapstic_tweak(space->machine, offset); + esb_slapstic_tweak(space, offset); return result; } static WRITE8_HANDLER( esb_slapstic_w ) { - esb_slapstic_tweak(space->machine, offset); + esb_slapstic_tweak(space, offset); } @@ -142,7 +142,7 @@ static DIRECT_UPDATE_HANDLER( esb_setdirect ) { slapstic_last_pc = pc; slapstic_last_address = address; - esb_slapstic_tweak(space->machine, address & 0x1fff); + esb_slapstic_tweak(space, address & 0x1fff); } return ~0; } diff --git a/src/mame/drivers/suprnova.c b/src/mame/drivers/suprnova.c index cf6e47e4c26..b6a8cbe8e98 100644 --- a/src/mame/drivers/suprnova.c +++ b/src/mame/drivers/suprnova.c @@ -904,7 +904,7 @@ MACHINE_DRIVER_END static READ32_HANDLER( bios_skip_r ) { #if BIOS_SKIP - if ((cpu_get_pc(space->cpu)==0x6f8) || (cpu_get_pc(space->cpu)==0x6fa)) program_write_byte(0x06000029,1); + if ((cpu_get_pc(space->cpu)==0x6f8) || (cpu_get_pc(space->cpu)==0x6fa)) memory_write_byte(space, 0x06000029,1); #endif return skns_main_ram[0x00028/4]; } diff --git a/src/mame/includes/slapstic.h b/src/mame/includes/slapstic.h index 81ff228e369..db3ceb78e8c 100644 --- a/src/mame/includes/slapstic.h +++ b/src/mame/includes/slapstic.h @@ -15,4 +15,4 @@ void slapstic_init(running_machine *machine, int chip); void slapstic_reset(void); int slapstic_bank(void); -int slapstic_tweak(running_machine *machine, offs_t offset); +int slapstic_tweak(const address_space *space, offs_t offset); diff --git a/src/mame/machine/amiga.c b/src/mame/machine/amiga.c index aab2b677d9d..dd03255b490 100644 --- a/src/mame/machine/amiga.c +++ b/src/mame/machine/amiga.c @@ -318,7 +318,7 @@ static void amiga_m68k_reset(const device_config *device) /* set the overlay bit */ if ( IS_AGA(amiga_intf) ) { - program_write_byte( 0xbfa001, 1 ); + memory_write_byte( space, 0xbfa001, 1 ); } else { diff --git a/src/mame/machine/atarigen.c b/src/mame/machine/atarigen.c index 15b2fe299f7..74b76090814 100644 --- a/src/mame/machine/atarigen.c +++ b/src/mame/machine/atarigen.c @@ -588,7 +588,7 @@ void atarigen_slapstic_reset(void) WRITE16_HANDLER( atarigen_slapstic_w ) { - update_bank(slapstic_tweak(space->machine, offset)); + update_bank(slapstic_tweak(space, offset)); } @@ -603,7 +603,7 @@ READ16_HANDLER( atarigen_slapstic_r ) int result = atarigen_slapstic[offset & 0xfff]; /* then determine the new one */ - update_bank(slapstic_tweak(space->machine, offset)); + update_bank(slapstic_tweak(space, offset)); return result; } diff --git a/src/mame/machine/harddriv.c b/src/mame/machine/harddriv.c index f91d45d80ba..8bcd3f713b4 100644 --- a/src/mame/machine/harddriv.c +++ b/src/mame/machine/harddriv.c @@ -1200,7 +1200,7 @@ READ16_HANDLER( hd68k_ds3_gdata_r ) logerror("%06X:hd68k_ds3_gdata_r(%04X)\n", cpu_get_previouspc(space->cpu), ds3_gdata); /* attempt to optimize the transfer if conditions are right */ - if (cpunum_get_active() == 0 && pc == hdds3_transfer_pc && + if (space->machine->activecpu == space->machine->cpu[0] && pc == hdds3_transfer_pc && !(!ds3_g68flag && ds3_g68irqs) && !(ds3_gflag && ds3_gfirqs)) { UINT32 destaddr = cpu_get_reg(space->cpu, M68K_A1); @@ -1214,7 +1214,7 @@ READ16_HANDLER( hd68k_ds3_gdata_r ) while (count68k > 0 && hdadsp_data_memory[0x16e6] > 0) { - program_write_word(destaddr, ds3_gdata); + memory_write_word(space, destaddr, ds3_gdata); { hdadsp_data_memory[0x16e6]--; ds3_gdata = hdadsp_pgm_memory[i6] >> 8; @@ -1616,13 +1616,13 @@ WRITE16_HANDLER( hddspcom_control_w ) WRITE16_HANDLER( rd68k_slapstic_w ) { - slapstic_tweak(space->machine, offset & 0x3fff); + slapstic_tweak(space, offset & 0x3fff); } READ16_HANDLER( rd68k_slapstic_r ) { - int bank = slapstic_tweak(space->machine, offset & 0x3fff) * 0x4000; + int bank = slapstic_tweak(space, offset & 0x3fff) * 0x4000; return hd68k_slapstic_base[bank + (offset & 0x3fff)]; } diff --git a/src/mame/machine/slapstic.c b/src/mame/machine/slapstic.c index 3cdb70f73c5..160afbaded6 100644 --- a/src/mame/machine/slapstic.c +++ b/src/mame/machine/slapstic.c @@ -862,7 +862,7 @@ int slapstic_bank(void) * *************************************/ -static int alt2_kludge(running_machine *machine, offs_t offset) +static int alt2_kludge(const address_space *space, offs_t offset) { /* Of the 3 alternate addresses, only the middle one needs to actually hit in the slapstic region; the first and third ones can be anywhere in the @@ -874,15 +874,15 @@ static int alt2_kludge(running_machine *machine, offs_t offset) if (access_68k) { /* first verify that the prefetched PC matches the first alternate */ - if (MATCHES_MASK_VALUE(cpu_get_pc(machine->activecpu) >> 1, slapstic.alt1)) + if (MATCHES_MASK_VALUE(cpu_get_pc(space->cpu) >> 1, slapstic.alt1)) { /* now look for a move.w (An),(An) or cmpm.w (An)+,(An)+ */ - UINT16 opcode = program_decrypted_read_word(cpu_get_previouspc(machine->activecpu) & 0xffffff); + UINT16 opcode = memory_decrypted_read_word(space, cpu_get_previouspc(space->cpu) & 0xffffff); if ((opcode & 0xf1f8) == 0x3090 || (opcode & 0xf1f8) == 0xb148) { /* fetch the value of the register for the second operand, and see */ /* if it matches the third alternate */ - UINT32 regval = cpu_get_reg(machine->activecpu, M68K_A0 + ((opcode >> 9) & 7)) >> 1; + UINT32 regval = cpu_get_reg(space->cpu, M68K_A0 + ((opcode >> 9) & 7)) >> 1; if (MATCHES_MASK_VALUE(regval, slapstic.alt3)) { alt_bank = (regval >> slapstic.altshift) & 3; @@ -909,7 +909,7 @@ static int alt2_kludge(running_machine *machine, offs_t offset) * *************************************/ -int slapstic_tweak(running_machine *machine, offs_t offset) +int slapstic_tweak(const address_space *space, offs_t offset) { /* reset is universal */ if (offset == 0x0000) @@ -951,7 +951,7 @@ int slapstic_tweak(running_machine *machine, offs_t offset) /* the first one was missed (since it's usually an opcode fetch) */ else if (MATCHES_MASK_VALUE(offset, slapstic.alt2)) { - state = alt2_kludge(machine, offset); + state = alt2_kludge(space, offset); } /* check for standard bankswitches */ @@ -1119,7 +1119,7 @@ int slapstic_tweak(running_machine *machine, offs_t offset) /* log this access */ if (LOG_SLAPSTIC) - slapstic_log(machine, offset); + slapstic_log(space->machine, offset); /* return the active bank */ return current_bank; diff --git a/src/mame/video/atarisy2.c b/src/mame/video/atarisy2.c index fd6d19509b5..0b4660fef51 100644 --- a/src/mame/video/atarisy2.c +++ b/src/mame/video/atarisy2.c @@ -254,20 +254,20 @@ WRITE16_HANDLER( atarisy2_paletteram_w ) READ16_HANDLER( atarisy2_slapstic_r ) { int result = atarisy2_slapstic[offset]; - slapstic_tweak(space->machine, offset); + slapstic_tweak(space, offset); /* an extra tweak for the next opcode fetch */ - videobank = slapstic_tweak(space->machine, 0x1234) * 0x1000; + videobank = slapstic_tweak(space, 0x1234) * 0x1000; return result; } WRITE16_HANDLER( atarisy2_slapstic_w ) { - slapstic_tweak(space->machine, offset); + slapstic_tweak(space, offset); /* an extra tweak for the next opcode fetch */ - videobank = slapstic_tweak(space->machine, 0x1234) * 0x1000; + videobank = slapstic_tweak(space, 0x1234) * 0x1000; } diff --git a/src/mame/video/williams.c b/src/mame/video/williams.c index 5bf630afdb0..5c010867f12 100644 --- a/src/mame/video/williams.c +++ b/src/mame/video/williams.c @@ -626,7 +626,7 @@ INLINE void blit_pixel(const address_space *space, int offset, int srcdata, int /* note that we have to allow blits to non-video RAM (e.g. tileram) because those */ /* are not blocked by the window enable */ if (!williams_blitter_window_enable || offset < williams_blitter_clip_address || offset >= 0xc000) - program_write_byte(offset, pix); + memory_write_byte(space, offset, pix); }