WIP check-in. Things work now, but I'm still working on the code.

Converted address maps to tokens. Changed the address_map structure
to house global map-wide information and hung a list of entries off
of it corresponding to each address range. Introduced new functions
address_map_alloc() and address_map_free() to build/destroy these
structures. Updated all code as necessary.

Fixed several instances of porttagtohandler*() in the address maps.
Drivers should use AM_READ_PORT() macros instead.

ADDRESS_MAP_EXTERN() now is required to specify the number of 
databits, just like ADDRESS_MAP_START.

Removed ADDRESS_MAP_FLAGS() grossness. There are now three new macros
which replace its former usage. ADDRESS_MAP_GLOBAL_MASK(mask)
specifies a global address-space-wide mask on all addresses. Useful
for cases where one or more address lines simply are not used at
all. And ADDRESS_MAP_UNMAP_LOW/HIGH specifies the behavior of
unmapped reads (do they come back as 0 or ~0).

Changed internal memory mapping behavior to keep only a single
address map and store the byte-adjusted values next in the address
map entries rather than maintaining two separate maps. Many other
small internal changes/cleanups.
This commit is contained in:
Aaron Giles 2008-03-09 21:59:57 +00:00
parent ac9778cdb0
commit ddfc0c3259
437 changed files with 2009 additions and 1737 deletions

View File

@ -410,7 +410,7 @@ struct SearchRegion
UINT8 flags;
UINT8 * cachedPointer;
const address_map
const address_map_entry
* writeHandler;
UINT8 * first;
@ -8922,7 +8922,7 @@ static void RestoreRegionBackup(SearchRegion * region)
static UINT8 DefaultEnableRegion(running_machine *machine, SearchRegion * region, SearchInfo * info)
{
write8_machine_func handler = region->writeHandler->write.handler8;
write8_machine_func handler = region->writeHandler->write.mhandler8;
FPTR handlerAddress = (FPTR)handler;
switch(info->searchSpeed)
@ -8939,7 +8939,7 @@ static UINT8 DefaultEnableRegion(running_machine *machine, SearchRegion * region
}
#endif
if( (handler == MWA8_RAM) && (!region->writeHandler->base))
if( (handler == MWA8_RAM) && (!region->writeHandler->baseptr))
return 1;
#ifndef MESS
@ -8981,7 +8981,7 @@ static UINT8 DefaultEnableRegion(running_machine *machine, SearchRegion * region
if( (handler == MWA8_NOP) || (handler == MWA8_ROM))
return 0;
if( (handlerAddress > STATIC_COUNT) && (!region->writeHandler->base))
if( (handlerAddress > STATIC_COUNT) && (!region->writeHandler->baseptr))
return 0;
return 1;
@ -9155,37 +9155,31 @@ static void BuildSearchRegions(running_machine *machine, SearchInfo * info)
if(info->targetIdx < cpu_gettotalcpu())
{
const address_map * map = NULL;
const address_map_entry * entry;
SearchRegion * traverse;
int count = 0;
map = memory_get_map(info->targetIdx, ADDRESS_SPACE_PROGRAM);
while(!IS_AMENTRY_END(map))
{
if(!IS_AMENTRY_EXTENDED(map) && map->write.handler)
for (entry = map->entrylist; entry != NULL; entry = entry->next)
if (entry->write.handler)
count++;
map++;
}
info->regionList = calloc(sizeof(SearchRegion), count);
info->regionListLength = count;
traverse = info->regionList;
map = memory_get_map(info->targetIdx, ADDRESS_SPACE_PROGRAM);
while(!IS_AMENTRY_END(map))
for (entry = map->entrylist; entry != NULL; entry = entry->next)
{
if(!IS_AMENTRY_EXTENDED(map) && map->write.handler)
if (entry->write.handler)
{
UINT32 length = (map->end - map->start) + 1;
UINT32 length = (entry->end - entry->start) + 1;
traverse->address = map->start;
traverse->address = entry->start;
traverse->length = length;
traverse->targetIdx = info->targetIdx;
traverse->targetType = info->targetType;
traverse->writeHandler = map;
traverse->writeHandler = entry;
traverse->first = NULL;
traverse->last = NULL;
@ -9200,8 +9194,6 @@ static void BuildSearchRegions(running_machine *machine, SearchInfo * info)
traverse++;
}
map++;
}
}
}
@ -10475,23 +10467,17 @@ static void DoSearch(SearchInfo * search)
static UINT8 ** LookupHandlerMemory(UINT8 cpu, UINT32 address, UINT32 * outRelativeAddress)
{
const address_map * map = memory_get_map(cpu, ADDRESS_SPACE_PROGRAM);
while(!IS_AMENTRY_END(map))
{
if(!IS_AMENTRY_EXTENDED(map) && map->write.handler)
const address_map_entry *entry;
for (entry = map->entrylist; entry != NULL; entry = entry->next)
if (entry->write.handler != NULL && (address >= entry->start) && (address <= entry->end))
{
if((address >= map->start) && (address <= map->end))
{
if(outRelativeAddress)
*outRelativeAddress = address - map->start;
if(outRelativeAddress)
*outRelativeAddress = address - entry->start;
return (UINT8 **)map->base;
}
return (UINT8 **)entry->baseptr;
}
map++;
}
return NULL;
}

View File

@ -356,7 +356,7 @@ void cop410_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cop410_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA:
info->internal_map = construct_map_cop410_RAM; break;
info->internal_map8 = address_map_cop410_RAM; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "COP410"); break;

View File

@ -385,7 +385,7 @@ void cop420_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &cop420_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA:
info->internal_map = construct_map_cop420_RAM; break;
info->internal_map8 = address_map_cop420_RAM; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "COP420"); break;

View File

@ -1242,11 +1242,11 @@ void dsp56k_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &dsp56k_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA:
info->internal_map = construct_map_dsp56156_x_data_memory; break;
info->internal_map16 = address_map_dsp56156_x_data_memory; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM:
info->internal_map = construct_map_dsp56156_program_memory; break;
info->internal_map16 = address_map_dsp56156_program_memory; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO:
info->internal_map = 0; break;
info->internal_map16 = 0; break;
// --- the following bits of info are returned as NULL-terminated strings ---

View File

@ -5090,8 +5090,8 @@ static void hyperstone_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &hyperstone_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map16 = NULL; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Hyperstone CPU"); break;
@ -5245,7 +5245,7 @@ void e116t_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_4k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_4k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e116t_init; break;
@ -5268,7 +5268,7 @@ void e116xt_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_8k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_8k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e116xt_init; break;
@ -5291,7 +5291,7 @@ void e116xs_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_16k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_16k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e116xs_init; break;
@ -5314,7 +5314,7 @@ void e116xsr_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_16k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_16k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e116xsr_init; break;
@ -5337,7 +5337,7 @@ void e132n_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_4k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_4k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132n_init; break;
@ -5360,7 +5360,7 @@ void e132t_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_4k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_4k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132t_init; break;
@ -5383,7 +5383,7 @@ void e132xn_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_8k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_8k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132xn_init; break;
@ -5406,7 +5406,7 @@ void e132xt_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_8k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_8k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132xt_init; break;
@ -5429,7 +5429,7 @@ void e132xs_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_16k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_16k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132xs_init; break;
@ -5452,7 +5452,7 @@ void e132xsr_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_16k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_16k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = e132xsr_init; break;
@ -5475,7 +5475,7 @@ void gms30c2116_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_4k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_4k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = gms30c2116_init; break;
@ -5498,7 +5498,7 @@ void gms30c2132_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_4k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_4k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = gms30c2132_init; break;
@ -5521,7 +5521,7 @@ void gms30c2216_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 16; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e116_8k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_e116_8k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = gms30c2216_init; break;
@ -5544,7 +5544,7 @@ void gms30c2232_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 32; break;
case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 32; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_e132_8k_iram_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_e132_8k_iram_map; break;
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_INIT: info->init = gms30c2232_init; break;

View File

@ -4101,9 +4101,9 @@ void h8_3002_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
// Internal maps
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_h8_3002_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_h8_3002_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map16 = NULL; break;
// CPU misc parameters
case CPUINFO_STR_NAME: strcpy(info->s, "H8/3002"); break;
@ -4150,7 +4150,7 @@ void h8_3044_get_info(UINT32 state, cpuinfo *info)
{
switch (state)
{
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_h8_3044_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_h8_3044_internal_map; break;
case CPUINFO_STR_NAME: strcpy(info->s, "H8/3044"); break;
default:
h8_3002_get_info(state,info);
@ -4161,7 +4161,7 @@ void h8_3007_get_info(UINT32 state, cpuinfo *info)
{
switch (state)
{
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_h8_3007_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_h8_3007_internal_map; break;
case CPUINFO_PTR_INIT: info->init = h8_3007_init; break;
case CPUINFO_STR_NAME: strcpy(info->s, "H8/3007"); break;
default:

View File

@ -2484,9 +2484,9 @@ void i8051_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &i8051_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map8 = NULL; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "I8051"); break;

View File

@ -2142,9 +2142,9 @@ void i960_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_LOGADDR_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break;
// Internal maps
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map32 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map32 = NULL; break;
// CPU misc parameters
case CPUINFO_STR_NAME: strcpy(info->s, "i960KB"); break;

View File

@ -1229,9 +1229,9 @@ void m37710_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m37710_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_m37710_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_m37710_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map8 = NULL; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "M37710"); break;

View File

@ -498,7 +498,7 @@ void m4510_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m4510_dasm; break;
#endif
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m4510_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_m4510_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map8 = address_map_m4510_mem; break;
case CPUINFO_PTR_TRANSLATE: info->translate = m4510_translate; break;
case CPUINFO_PTR_M6502_READINDEXED_CALLBACK: info->f = (genf *) m4510.rdmem_id; break;
case CPUINFO_PTR_M6502_WRITEINDEXED_CALLBACK: info->f = (genf *) m4510.wrmem_id; break;

View File

@ -834,7 +834,7 @@ void m6510_get_info(UINT32 state, cpuinfo *info)
#ifdef ENABLE_DEBUGGER
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6510_dasm; break;
#endif
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_m6510_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map8 = address_map_m6510_mem; break;
case CPUINFO_PTR_M6510_PORTREAD: info->f = (genf *) m6502.port_read; break;
case CPUINFO_PTR_M6510_PORTWRITE: info->f = (genf *) m6502.port_write; break;

View File

@ -376,7 +376,7 @@ void m6509_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6502_dasm; break;
#endif
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m6502_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_m6509_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map8 = address_map_m6509_mem; break;
case CPUINFO_PTR_M6502_READINDEXED_CALLBACK: info->f = (genf *) m6509.rdmem_id; break;
case CPUINFO_PTR_M6502_WRITEINDEXED_CALLBACK: info->f = (genf *) m6509.wrmem_id; break;

View File

@ -2766,7 +2766,7 @@ void m6803_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6803_dasm; break;
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_m6803_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = address_map_m6803_mem; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "M6803"); break;

View File

@ -47,7 +47,7 @@ static void program_write_qword_masked_32le(offs_t offset, UINT64 data, UINT64 m
PRIVATE GLOBAL VARIABLES
***************************************************************************/
static const memory_handlers be_memory =
static const memory_accessors be_memory =
{
program_read_byte_32be,
program_read_word_32be,
@ -64,7 +64,7 @@ static const memory_handlers be_memory =
program_write_qword_masked_32be
};
static const memory_handlers le_memory =
static const memory_accessors le_memory =
{
program_read_byte_32le,
program_read_word_32le,

View File

@ -145,8 +145,8 @@ typedef enum _mips3_flavor mips3_flavor;
***************************************************************************/
/* memory access function table */
typedef struct _memory_handlers memory_handlers;
struct _memory_handlers
typedef struct _memory_accessors memory_accessors;
struct _memory_accessors
{
UINT8 (*readbyte)(offs_t);
UINT16 (*readhalf)(offs_t);
@ -197,7 +197,7 @@ struct _mips3_state
/* memory accesses */
UINT8 bigendian;
memory_handlers memory;
memory_accessors memory;
/* cache memory */
UINT32 * icache;

View File

@ -119,12 +119,12 @@
typedef struct
{
UINT8 (*readbyte)(offs_t);
UINT16 (*readword)(offs_t);
UINT32 (*readlong)(offs_t);
UINT16 (*readword)(offs_t);
UINT32 (*readlong)(offs_t);
void (*writebyte)(offs_t, UINT8);
void (*writeword)(offs_t, UINT16);
void (*writelong)(offs_t, UINT32);
} memory_handlers;
} memory_accessors;
/* R3000 Registers */
typedef struct
@ -156,9 +156,9 @@ typedef struct
/* memory accesses */
UINT8 bigendian;
memory_handlers cur;
const memory_handlers *memory_hand;
const memory_handlers *cache_hand;
memory_accessors cur;
const memory_accessors *memory_hand;
const memory_accessors *cache_hand;
/* cache memory */
UINT32 * cache;
@ -215,25 +215,25 @@ static int r3000_icount;
static r3000_regs r3000;
static const memory_handlers be_memory =
static const memory_accessors be_memory =
{
program_read_byte_32be, program_read_word_32be, program_read_dword_32be,
program_write_byte_32be, program_write_word_32be, program_write_dword_32be
};
static const memory_handlers le_memory =
static const memory_accessors le_memory =
{
program_read_byte_32le, program_read_word_32le, program_read_dword_32le,
program_write_byte_32le, program_write_word_32le, program_write_dword_32le
};
static const memory_handlers be_cache =
static const memory_accessors be_cache =
{
readcache_be, readcache_be_word, readcache_be_dword,
writecache_be, writecache_be_word, writecache_be_dword
};
static const memory_handlers le_cache =
static const memory_accessors le_cache =
{
readcache_le, readcache_le_word, readcache_le_dword,
writecache_le, writecache_le_word, writecache_le_dword

View File

@ -1102,8 +1102,8 @@ void pic16C54_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = pic16C54_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_pic16c54_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_pic16c54_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_pic16c54_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = address_map_pic16c54_ram; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "PIC16C54"); break;
@ -1154,8 +1154,8 @@ void pic16C55_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = pic16C55_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_pic16c55_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_pic16c55_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_pic16c55_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = address_map_pic16c55_ram; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "PIC16C55"); break;
@ -1206,8 +1206,8 @@ void pic16C56_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = pic16C56_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_pic16c56_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_pic16c56_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_pic16c56_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = address_map_pic16c56_ram; break;
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 10; break;
@ -1263,8 +1263,8 @@ void pic16C57_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = pic16C57_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_pic16c57_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_pic16c57_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_pic16c57_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = address_map_pic16c57_ram; break;
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 11; break;
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 7; break;
@ -1321,8 +1321,8 @@ void pic16C58_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = pic16C58_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_pic16c58_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_pic16c58_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_pic16c58_rom; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map8 = address_map_pic16c58_ram; break;
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 11; break;
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 7; break;

View File

@ -5096,7 +5096,7 @@ void sh4_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break;
case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_sh4_internal_map; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map64 = address_map_sh4_internal_map; break;
case CPUINFO_INT_INPUT_STATE + SH4_IRL0: info->i = sh4.irq_line_state[SH4_IRL0]; break;
case CPUINFO_INT_INPUT_STATE + SH4_IRL1: info->i = sh4.irq_line_state[SH4_IRL1]; break;

View File

@ -1102,7 +1102,7 @@ static void sharc_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &sharc_icount; break;
case CPUINFO_PTR_READ: info->read = sharc_debug_read; break;
case CPUINFO_PTR_READOP: info->readop = sharc_debug_readop; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_internal_pgm; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map64 = address_map_internal_pgm; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "SHARC"); break;

View File

@ -823,8 +823,8 @@ void ssp1610_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &ssp1610_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map = 0; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = NULL; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_IO: info->internal_map16 = NULL; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "SSP1610 CPU"); break;

View File

@ -2788,7 +2788,7 @@ void tmp90840_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = t90_dasm; break;
#endif
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &t90_ICount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_tmp90840_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = address_map_tmp90840_mem; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
@ -2834,7 +2834,7 @@ void tmp90841_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_tmp90841_mem; return;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = address_map_tmp90841_mem; return;
/* --- the following bits of info are returned as NULL-terminated strings --- */
@ -2850,7 +2850,7 @@ void tmp91640_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_tmp91640_mem; return;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = address_map_tmp91640_mem; return;
/* --- the following bits of info are returned as NULL-terminated strings --- */
@ -2866,7 +2866,7 @@ void tmp91641_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_tmp91641_mem; return;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map8 = address_map_tmp91641_mem; return;
/* --- the following bits of info are returned as NULL-terminated strings --- */

View File

@ -934,7 +934,7 @@ void tms32010_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = tms32010_dasm; break;
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms32010_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_tms32010_ram; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = address_map_tms32010_ram; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "TMS32010"); break;

View File

@ -818,7 +818,7 @@ void tms32031_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = tms32031_dasm; break;
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms32031_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_internal_32031; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_internal_32031; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "TMS32031"); break;
@ -889,7 +889,7 @@ void tms32032_get_info(UINT32 state, cpuinfo *info)
{
/* --- the following bits of info are returned as pointers to data or functions --- */
case CPUINFO_PTR_RESET: info->reset = tms32032_reset; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_internal_32032; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map32 = address_map_internal_32032; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "TMS32032"); break;

View File

@ -633,8 +633,8 @@ static void tms_get_info(UINT32 state, cpuinfo *info)
#endif /* ENABLE_DEBUGGER */
case CPUINFO_PTR_READ: info->read = tms_debug_read; break;
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map = construct_map_internal_pgm; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map = construct_map_internal_data; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_PROGRAM: info->internal_map16 = address_map_internal_pgm; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACE_DATA: info->internal_map16 = address_map_internal_data; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "TMS3205x"); break;

View File

@ -337,7 +337,7 @@ void tms7000_get_info(UINT32 state, cpuinfo *info)
case CPUINFO_PTR_DISASSEMBLE: info->disassemble = tms7000_dasm; break;
#endif
case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms7000_icount; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_tms7000_mem; break;
case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map8 = address_map_tms7000_mem; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "TMS7000"); break;

View File

@ -258,7 +258,7 @@ struct _cpu_config
cpu_type type; /* index for the CPU type */
int flags; /* flags; see #defines below */
int clock; /* in Hertz */
construct_map_t construct_map[ADDRESS_SPACES][2]; /* 2 memory maps per address space */
const addrmap_token *address_map[ADDRESS_SPACES][2]; /* 2 memory maps per address space */
void (*vblank_interrupt)(running_machine *machine, int cpunum); /* for interrupts tied to VBLANK */
int vblank_interrupts_per_frame;/* usually 1 */
const char * vblank_interrupt_screen; /* the screen that causes the VBLANK interrupt */

View File

@ -130,7 +130,7 @@ enum
CPUINFO_PTR_READOP, /* R/O: int (*readop)(UINT32 offset, int size, UINT64 *value) */
CPUINFO_PTR_DEBUG_SETUP_COMMANDS, /* R/O: void (*setup_commands)(void) */
CPUINFO_PTR_INSTRUCTION_COUNTER, /* R/O: int *icount */
CPUINFO_PTR_INTERNAL_MEMORY_MAP, /* R/O: construct_map_t map */
CPUINFO_PTR_INTERNAL_MEMORY_MAP, /* R/O: const addrmap_token *map */
CPUINFO_PTR_INTERNAL_MEMORY_MAP_LAST = CPUINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACES - 1,
CPUINFO_PTR_DEBUG_REGISTER_LIST, /* R/O: int *list: list of registers for the debugger */
@ -238,7 +238,10 @@ union _cpuinfo
cpu_readop_func readop; /* CPUINFO_PTR_READOP */
cpu_setup_commands_func setup_commands; /* CPUINFO_PTR_DEBUG_SETUP_COMMANDS */
int * icount; /* CPUINFO_PTR_INSTRUCTION_COUNTER */
construct_map_t internal_map; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap8_token * internal_map8; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap16_token * internal_map16; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap32_token * internal_map32; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
const addrmap64_token * internal_map64; /* CPUINFO_PTR_INTERNAL_MEMORY_MAP */
};

View File

@ -2253,7 +2253,7 @@ static void input_port_detokenize(input_port_init_params *param, const input_por
#endif /* MESS */
default:
fatalerror("unknown port entry type");
fatalerror("Invalid token %d in input ports\n", entrytype);
break;
}
}

View File

@ -349,20 +349,20 @@ static void machine_config_detokenize(machine_config *config, const machine_conf
case MCONFIG_TOKEN_CPU_PROGRAM_MAP:
assert(cpu != NULL);
cpu->construct_map[ADDRESS_SPACE_PROGRAM][0] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->construct_map[ADDRESS_SPACE_PROGRAM][1] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->address_map[ADDRESS_SPACE_PROGRAM][0] = TOKEN_GET_PTR(tokens, addrmap);
cpu->address_map[ADDRESS_SPACE_PROGRAM][1] = TOKEN_GET_PTR(tokens, addrmap);
break;
case MCONFIG_TOKEN_CPU_DATA_MAP:
assert(cpu != NULL);
cpu->construct_map[ADDRESS_SPACE_DATA][0] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->construct_map[ADDRESS_SPACE_DATA][1] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->address_map[ADDRESS_SPACE_DATA][0] = TOKEN_GET_PTR(tokens, addrmap);
cpu->address_map[ADDRESS_SPACE_DATA][1] = TOKEN_GET_PTR(tokens, addrmap);
break;
case MCONFIG_TOKEN_CPU_IO_MAP:
assert(cpu != NULL);
cpu->construct_map[ADDRESS_SPACE_IO][0] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->construct_map[ADDRESS_SPACE_IO][1] = (construct_map_t)TOKEN_GET_PTR(tokens, voidptr);
cpu->address_map[ADDRESS_SPACE_IO][0] = TOKEN_GET_PTR(tokens, addrmap);
cpu->address_map[ADDRESS_SPACE_IO][1] = TOKEN_GET_PTR(tokens, addrmap);
break;
case MCONFIG_TOKEN_CPU_VBLANK_INT:
@ -522,6 +522,10 @@ static void machine_config_detokenize(machine_config *config, const machine_conf
sound->route[sound->routes].target = TOKEN_GET_STRING(tokens);
sound->routes++;
break;
default:
fatalerror("Invalid token %d in machine config\n", entrytype);
break;
}
}
}

View File

@ -162,6 +162,7 @@ union _machine_config_token
TOKEN_COMMON_FIELDS
const machine_config_token *tokenptr;
const gfx_decode_entry *gfxdecode;
const addrmap_token *addrmap;
device_type devtype;
void (*interrupt)(running_machine *machine, int cpunum);
driver_init_func driver_init;
@ -272,18 +273,18 @@ union _machine_config_token
#define MDRV_CPU_PROGRAM_MAP(_map1, _map2) \
TOKEN_UINT32_PACK1(MCONFIG_TOKEN_CPU_PROGRAM_MAP, 8), \
TOKEN_PTR(voidptr, construct_map_##_map1), \
TOKEN_PTR(voidptr, construct_map_##_map2), \
TOKEN_PTR(voidptr, address_map_##_map1), \
TOKEN_PTR(voidptr, address_map_##_map2), \
#define MDRV_CPU_DATA_MAP(_map1, _map2) \
TOKEN_UINT32_PACK1(MCONFIG_TOKEN_CPU_DATA_MAP, 8), \
TOKEN_PTR(voidptr, construct_map_##_map1), \
TOKEN_PTR(voidptr, construct_map_##_map2), \
TOKEN_PTR(voidptr, address_map_##_map1), \
TOKEN_PTR(voidptr, address_map_##_map2), \
#define MDRV_CPU_IO_MAP(_map1, _map2) \
TOKEN_UINT32_PACK1(MCONFIG_TOKEN_CPU_IO_MAP, 8), \
TOKEN_PTR(voidptr, construct_map_##_map1), \
TOKEN_PTR(voidptr, construct_map_##_map2), \
TOKEN_PTR(voidptr, address_map_##_map1), \
TOKEN_PTR(voidptr, address_map_##_map2), \
#define MDRV_CPU_VBLANK_INT(_tag, _func) \
TOKEN_UINT32_PACK1(MCONFIG_TOKEN_CPU_VBLANK_INT, 8), \

File diff suppressed because it is too large Load Diff

View File

@ -16,6 +16,7 @@
#include "mamecore.h"
#include "devintrf.h"
#include "tokenize.h"
@ -127,10 +128,6 @@ struct _data_accessors
declared within each driver.
***************************************************************************/
/* ----- definitions for the flags in the address maps ----- */
#define AM_FLAGS_EXTENDED 0x01 /* this is an extended entry with the below flags in the start field */
#define AM_FLAGS_END 0x02 /* this is the terminating entry in the array */
/* ----- definitions for the extended flags in the address maps ----- */
#define AMEF_SPECIFIES_SPACE 0x00000001 /* set if the address space is specified */
#define AMEF_SPECIFIES_ABITS 0x00000002 /* set if the number of address space bits is specified */
@ -545,10 +542,14 @@ typedef union _read_handlers read_handlers;
union _read_handlers
{
genf * handler;
read8_machine_func handler8;
read16_machine_func handler16;
read32_machine_func handler32;
read64_machine_func handler64;
read8_machine_func mhandler8;
read16_machine_func mhandler16;
read32_machine_func mhandler32;
read64_machine_func mhandler64;
read8_device_func dhandler8;
read16_device_func dhandler16;
read32_device_func dhandler32;
read64_device_func dhandler64;
};
/* ----- a union of all the different write handler types ----- */
@ -556,17 +557,29 @@ typedef union _write_handlers write_handlers;
union _write_handlers
{
genf * handler;
write8_machine_func handler8;
write16_machine_func handler16;
write32_machine_func handler32;
write64_machine_func handler64;
write8_machine_func mhandler8;
write16_machine_func mhandler16;
write32_machine_func mhandler32;
write64_machine_func mhandler64;
write8_device_func dhandler8;
write16_device_func dhandler16;
write32_device_func dhandler32;
write64_device_func dhandler64;
};
typedef union _memory_handlers memory_handlers;
union _memory_handlers
{
read_handlers read;
write_handlers write;
};
/* ----- a generic address map type ----- */
typedef struct _address_map address_map;
struct _address_map
typedef struct _address_map_entry address_map_entry;
struct _address_map_entry
{
UINT32 flags; /* flags and additional info about this entry */
address_map_entry * next; /* pointer to the next entry */
offs_t start, end; /* start/end values */
offs_t mirror; /* mirror bits */
offs_t mask; /* mask bits */
@ -578,12 +591,28 @@ struct _address_map
const char * write_name; /* write handler callback name */
device_type write_devtype; /* read device type for device references */
const char * write_devtag; /* read tag for the relevant device */
void * memory; /* pointer to memory backing this entry */
UINT32 share; /* index of a shared memory block */
void ** base; /* receives pointer to memory (optional) */
size_t * size; /* receives size of area in bytes (optional) */
void ** baseptr; /* receives pointer to memory (optional) */
size_t * sizeptr; /* receives size of area in bytes (optional) */
UINT32 baseptroffs_plus1; /* offset of base pointer within driver_data struct, plus 1 */
UINT32 sizeptroffs_plus1; /* offset of size pointer within driver_data struct, plus 1 */
UINT32 region; /* region containing the memory backing this entry */
offs_t region_offs; /* offset within the region */
void * memory; /* pointer to memory backing this entry */
offs_t bytestart, byteend; /* byte-adjusted start/end values */
offs_t bytemirror; /* byte-adjusted mirror bits */
offs_t bytemask; /* byte-adjusted mask bits */
};
typedef struct _address_map address_map;
struct _address_map
{
UINT8 spacenum; /* space number of the map */
UINT8 databits; /* data bits represented by the map */
UINT8 unmapval; /* unmapped memory value */
offs_t globalmask; /* global mask */
address_map_entry * entrylist; /* list of entries */
};
/* ----- structs to contain internal data ----- */
@ -599,134 +628,234 @@ struct _address_space
};
typedef union _addrmap_token addrmap_token;
union _addrmap_token
{
TOKEN_COMMON_FIELDS
const addrmap_token * tokenptr;
read_handlers read; /* generic read handlers */
write_handlers write; /* generic write handlers */
device_type devtype; /* device type */
UINT8 ** memptr; /* memory pointer */
size_t * sizeptr; /* size pointer */
};
typedef union _addrmap8_token addrmap8_token;
union _addrmap8_token
{
TOKEN_COMMON_FIELDS
const addrmap_token * tokenptr;
read8_machine_func mread; /* pointer to native machine read handler */
write8_machine_func mwrite; /* pointer to native machine write handler */
read8_device_func dread; /* pointer to native device read handler */
write8_device_func dwrite; /* pointer to native device write handler */
read_handlers read; /* generic read handlers */
write_handlers write; /* generic write handlers */
device_type devtype; /* device type */
UINT8 ** memptr; /* memory pointer */
size_t * sizeptr; /* size pointer */
};
typedef union _addrmap16_token addrmap16_token;
union _addrmap16_token
{
TOKEN_COMMON_FIELDS
const addrmap_token * tokenptr;
read16_machine_func mread; /* pointer to native read handler */
write16_machine_func mwrite; /* pointer to native write handler */
read16_device_func dread; /* pointer to native device read handler */
write16_device_func dwrite; /* pointer to native device write handler */
read8_machine_func mread8; /* pointer to 8-bit machine read handler */
write8_machine_func mwrite8; /* pointer to 8-bit machine write handler */
read_handlers read; /* generic read handlers */
write_handlers write; /* generic write handlers */
device_type devtype; /* device type */
UINT16 ** memptr; /* memory pointer */
size_t * sizeptr; /* size pointer */
};
typedef union _addrmap32_token addrmap32_token;
union _addrmap32_token
{
TOKEN_COMMON_FIELDS
const addrmap_token * tokenptr;
read32_machine_func mread; /* pointer to native read handler */
write32_machine_func mwrite; /* pointer to native write handler */
read32_device_func dread; /* pointer to native device read handler */
write32_device_func dwrite; /* pointer to native device write handler */
read8_machine_func mread8; /* pointer to 8-bit machine read handler */
write8_machine_func mwrite8; /* pointer to 8-bit machine write handler */
read16_machine_func mread16; /* pointer to 16-bit machine read handler */
write16_machine_func mwrite16; /* pointer to 16-bit machine write handler */
read_handlers read; /* generic read handlers */
write_handlers write; /* generic write handlers */
device_type devtype; /* device type */
UINT32 ** memptr; /* memory pointer */
size_t * sizeptr; /* size pointer */
};
typedef union _addrmap64_token addrmap64_token;
union _addrmap64_token
{
TOKEN_COMMON_FIELDS
const addrmap_token * tokenptr;
read64_machine_func mread; /* pointer to native read handler */
write64_machine_func mwrite; /* pointer to native write handler */
read64_device_func dread; /* pointer to native device read handler */
write64_device_func dwrite; /* pointer to native device write handler */
read8_machine_func mread8; /* pointer to 8-bit machine read handler */
write8_machine_func mwrite8; /* pointer to 8-bit machine write handler */
read16_machine_func mread16; /* pointer to 16-bit machine read handler */
write16_machine_func mwrite16; /* pointer to 16-bit machine write handler */
read32_machine_func mread32; /* pointer to 32-bit machine read handler */
write32_machine_func mwrite32; /* pointer to 32-bit machine write handler */
read_handlers read; /* generic read handlers */
write_handlers write; /* generic write handlers */
device_type devtype; /* device type */
UINT64 ** memptr; /* memory pointer */
size_t * sizeptr; /* size pointer */
};
/***************************************************************************
ADDRESS MAP ARRAY CONSTRUCTORS
***************************************************************************/
void construct_address_map(address_map *map, const machine_config *drv, int cpunum, int spacenum);
#define address_map_0 NULL
/* ----- a typedef for pointers to these functions ----- */
typedef address_map *(*construct_map_t)(running_machine *machine, address_map *map);
enum
{
ADDRMAP_TOKEN_INVALID,
/* use this to declare external references to a machine driver */
#define ADDRESS_MAP_EXTERN(_name) \
address_map *construct_map_##_name(running_machine *machine, address_map *map) \
ADDRMAP_TOKEN_START,
ADDRMAP_TOKEN_END,
ADDRMAP_TOKEN_INCLUDE,
ADDRMAP_TOKEN_GLOBAL_MASK,
ADDRMAP_TOKEN_UNMAP_VALUE,
/* ----- macros for starting, ending, and setting map flags ----- */
#define ADDRESS_MAP_START(_name,_space,_bits) \
address_map *construct_map_##_name(running_machine *machine, address_map *map) \
{ \
extern read##_bits##_machine_func port_tag_to_handler##_bits(const char *); \
typedef read##_bits##_machine_func _rmf_t; \
typedef write##_bits##_machine_func _wmf_t; \
typedef read##_bits##_device_func _rdf_t; \
typedef write##_bits##_device_func _wdf_t; \
_rmf_t readm; \
_wmf_t writem; \
_rdf_t readd; \
_wdf_t writed; \
_rmf_t (*port_tag_to_handler)(const char *) = port_tag_to_handler##_bits; \
UINT##_bits **base; \
\
(void)readm; (void)writem; (void)readd; (void)writed; (void)base; \
(void)port_tag_to_handler; \
map->flags = AM_FLAGS_EXTENDED; \
map->start = AMEF_DBITS(_bits) | AMEF_SPACE(_space); \
ADDRMAP_TOKEN_RANGE,
ADDRMAP_TOKEN_MASK,
ADDRMAP_TOKEN_MIRROR,
ADDRMAP_TOKEN_READ,
ADDRMAP_TOKEN_WRITE,
ADDRMAP_TOKEN_DEVICE_READ,
ADDRMAP_TOKEN_DEVICE_WRITE,
ADDRMAP_TOKEN_READ_PORT,
ADDRMAP_TOKEN_REGION,
ADDRMAP_TOKEN_SHARE,
ADDRMAP_TOKEN_BASEPTR,
ADDRMAP_TOKEN_BASE_MEMBER,
ADDRMAP_TOKEN_SIZEPTR,
ADDRMAP_TOKEN_SIZE_MEMBER
};
#define ADDRESS_MAP_FLAGS(_flags) \
map++; \
map->flags = AM_FLAGS_EXTENDED; \
map->start = (_flags); \
#define ADDRESS_MAP_END \
map++; \
map->flags = AM_FLAGS_END; \
return map; \
} \
/* start/end tags for the address map */
#define ADDRESS_MAP_START(_name, _space, _bits) \
const addrmap##_bits##_token address_map_##_name[] = { \
TOKEN_UINT32_PACK3(ADDRMAP_TOKEN_START, 8, _space, 8, _bits, 8),
/* ----- each map entry begins with one of these ----- */
#define AM_RANGE(_start,_end) \
map++; \
map->flags = 0; \
map->start = (_start); \
map->end = (_end); \
#define ADDRESS_MAP_END \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_END, 8) };
/* ----- these are optional entries after each map entry ----- */
#define AM_MASK(_mask) \
map->mask = (_mask); \
/* use this to declare external references to an address map */
#define ADDRESS_MAP_EXTERN(_name, _bits) \
extern const addrmap##_bits##_token address_map_##_name[]
#define AM_MIRROR(_mirror) \
map->mirror = (_mirror); \
#define AM_READ(_handler) \
map->read.handler = (genf *)(readm = _handler); \
map->read_name = #_handler; \
/* global controls */
#define ADDRESS_MAP_GLOBAL_MASK(_mask) \
TOKEN_UINT64_PACK2(ADDRMAP_TOKEN_GLOBAL_MASK, 8, _mask, 32),
#define AM_READ_PORT(_tag) \
AM_READ((*port_tag_to_handler)(_tag)) \
#define ADDRESS_MAP_UNMAP_LOW \
TOKEN_UINT32_PACK2(ADDRMAP_TOKEN_UNMAP_VALUE, 8, 0, 1),
#define AM_DEVREAD(_type, _tag, _handler) \
map->read.handler = (genf *)(readd = _handler); \
map->read_name = #_handler; \
map->read_devtype = _type; \
map->read_devtag = _tag; \
#define ADDRESS_MAP_UNMAP_HIGH \
TOKEN_UINT32_PACK2(ADDRMAP_TOKEN_UNMAP_VALUE, 8, 1, 1),
#define AM_WRITE(_handler) \
map->write.handler = (genf *)(writem = _handler); \
map->write_name = #_handler; \
#define AM_DEVWRITE(_type, _tag, _handler) \
map->write.handler = (genf *)(writed = _handler); \
map->write_name = #_handler; \
map->write_devtype = _type; \
map->write_devtag = _tag; \
/* importing data from other address maps */
#define AM_IMPORT_FROM(_name) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_INCLUDE, 8), \
TOKEN_PTR(tokenptr, address_map_##_name),
#define AM_REGION(_region, _offs) \
map->region = (_region); \
map->region_offs = (_offs); \
#define AM_SHARE(_index) \
map->share = _index; \
/* address ranges */
#define AM_RANGE(_start, _end) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_RANGE, 8), \
TOKEN_UINT64_PACK2(_start, 32, _end, 32),
#define AM_BASE(_base) \
map->base = (void **)(base = _base); \
#define AM_MASK(_mask) \
TOKEN_UINT64_PACK2(ADDRMAP_TOKEN_MASK, 8, _mask, 32),
#define AM_BASE_MEMBER(_struct, _member) \
if (machine != NULL && machine->driver_data != NULL) \
map->base = (void **)(base = &((_struct *)machine->driver_data)->_member);\
#define AM_MIRROR(_mirror) \
TOKEN_UINT64_PACK2(ADDRMAP_TOKEN_MIRROR, 8, _mirror, 32),
#define AM_SIZE(_size) \
map->size = _size; \
#define AM_READ(_handler) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_READ, 8), \
TOKEN_PTR(mread, _handler), \
TOKEN_STRING(#_handler),
#define AM_SIZE_MEMBER(_struct, _member) \
if (machine != NULL && machine->driver_data != NULL) \
map->size = &((_struct *)machine->driver_data)->_member; \
#define AM_WRITE(_handler) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_WRITE, 8), \
TOKEN_PTR(mwrite, _handler), \
TOKEN_STRING(#_handler),
#define AM_DEVREAD(_type, _tag, _handler) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_DEVICE_READ, 8), \
TOKEN_PTR(dread, _handler), \
TOKEN_STRING(#_handler), \
TOKEN_PTR(devtype, _type), \
TOKEN_STRING(_tag),
#define AM_DEVWRITE(_type, _tag, _handler) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_DEVICE_WRITE, 8), \
TOKEN_PTR(dwrite, _handler), \
TOKEN_STRING(#_handler), \
TOKEN_PTR(devtype, _type), \
TOKEN_STRING(_tag),
#define AM_READ_PORT(_tag) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_READ_PORT, 8), \
TOKEN_STRING(_tag),
#define AM_REGION(_region, _offs) \
TOKEN_UINT64_PACK3(ADDRMAP_TOKEN_REGION, 8, _region, 24, _offs, 32),
#define AM_SHARE(_index) \
TOKEN_UINT32_PACK2(ADDRMAP_TOKEN_SHARE, 8, _index, 24),
#define AM_BASE(_base) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_BASEPTR, 8), \
TOKEN_PTR(memptr, _base),
#define AM_BASE_MEMBER(_struct, _member) \
TOKEN_UINT32_PACK2(ADDRMAP_TOKEN_BASE_MEMBER, 8, offsetof(_struct, _member), 24),
#define AM_SIZE(_size) \
TOKEN_UINT32_PACK1(ADDRMAP_TOKEN_SIZEPTR, 8), \
TOKEN_PTR(sizeptr, _size),
#define AM_SIZE_MEMBER(_struct, _member) \
TOKEN_UINT32_PACK2(ADDRMAP_TOKEN_SIZE_MEMBER, 8, offsetof(_struct, _member), 24),
/* ----- common shortcuts ----- */
#define AM_READWRITE(_read,_write) AM_READ(_read) AM_WRITE(_write)
#define AM_DEVREADWRITE(_type,_tag,_read,_write) AM_DEVREAD(_type,_tag,_read) AM_DEVWRITE(_type,_tag,_write)
#define AM_ROM AM_READ((_rmf_t)STATIC_ROM)
#define AM_RAM AM_READWRITE((_rmf_t)STATIC_RAM, (_wmf_t)STATIC_RAM)
#define AM_WRITEONLY AM_WRITE((_wmf_t)STATIC_RAM)
#define AM_UNMAP AM_READWRITE((_rmf_t)STATIC_UNMAP, (_wmf_t)STATIC_UNMAP)
#define AM_ROMBANK(_bank) AM_READ((_rmf_t)(STATIC_BANK1 + (_bank) - 1))
#define AM_RAMBANK(_bank) AM_READWRITE((_rmf_t)(STATIC_BANK1 + (_bank) - 1), (_wmf_t)(STATIC_BANK1 + (_bank) - 1))
#define AM_NOP AM_READWRITE((_rmf_t)STATIC_NOP, (_wmf_t)STATIC_NOP)
#define AM_READNOP AM_READ((_rmf_t)STATIC_NOP)
#define AM_WRITENOP AM_WRITE((_wmf_t)STATIC_NOP)
/***************************************************************************
ADDRESS MAP ARRAY HELPER MACROS
***************************************************************************/
/* ----- macros for identifying address map struct markers ----- */
#define IS_AMENTRY_EXTENDED(ma) (((ma)->flags & AM_FLAGS_EXTENDED) != 0)
#define IS_AMENTRY_END(ma) (((ma)->flags & AM_FLAGS_END) != 0)
#define AM_EXTENDED_FLAGS(ma) ((ma)->start)
#define AM_ROM AM_READ((void *)STATIC_ROM)
#define AM_RAM AM_READWRITE((void *)STATIC_RAM, (void *)STATIC_RAM)
#define AM_WRITEONLY AM_WRITE((void *)STATIC_RAM)
#define AM_UNMAP AM_READWRITE((void *)STATIC_UNMAP, (void *)STATIC_UNMAP)
#define AM_ROMBANK(_bank) AM_READ((void *)(STATIC_BANK1 + (_bank) - 1))
#define AM_RAMBANK(_bank) AM_READWRITE((void *)(STATIC_BANK1 + (_bank) - 1), (void *)(STATIC_BANK1 + (_bank) - 1))
#define AM_NOP AM_READWRITE((void *)STATIC_NOP, (void *)STATIC_NOP)
#define AM_READNOP AM_READ((void *)STATIC_NOP)
#define AM_WRITENOP AM_WRITE((void *)STATIC_NOP)
@ -756,7 +885,6 @@ extern const char *const address_space_names[ADDRESS_SPACES];
#define LEVEL2_BITS (32 - LEVEL1_BITS) /* number of address bits in the level 2 table */
/* ----- other address map constants ----- */
#define MAX_ADDRESS_MAP_SIZE 256 /* maximum entries in an address map */
#define MAX_MEMORY_BLOCKS 1024 /* maximum memory blocks we can track */
#define MAX_SHARED_POINTERS 256 /* maximum number of shared pointers in memory maps */
#define MEMORY_BLOCK_SIZE 65536 /* size of allocated memory blocks */
@ -950,6 +1078,8 @@ void memory_init(running_machine *machine);
void memory_set_context(int activecpu);
/* ----- address map functions ----- */
address_map *address_map_alloc(const machine_config *drv, int cpunum, int spacenum);
void address_map_free(address_map *map);
const address_map *memory_get_map(int cpunum, int spacenum);
/* ----- opcode base control ---- */

View File

@ -644,123 +644,100 @@ static int validate_cpu(int drivnum, const machine_config *config, const UINT32
{
#define SPACE_SHIFT(a) ((addr_shift < 0) ? ((a) << -addr_shift) : ((a) >> addr_shift))
#define SPACE_SHIFT_END(a) ((addr_shift < 0) ? (((a) << -addr_shift) | ((1 << -addr_shift) - 1)) : ((a) >> addr_shift))
static const char *const spacename[] = { "program", "data", "I/O" };
int databus_width = cputype_databus_width(cpu->type, spacenum);
int addr_shift = cputype_addrbus_shift(cpu->type, spacenum);
int alignunit = databus_width/8;
address_map addrmap[MAX_ADDRESS_MAP_SIZE*2];
address_map_entry *entry;
address_map *map;
UINT32 flags;
/* check to see that the same map is not used twice */
if (cpu->construct_map[spacenum][0] && cpu->construct_map[spacenum][0] == cpu->construct_map[spacenum][1])
if (cpu->address_map[spacenum][0] != NULL && cpu->address_map[spacenum][0] == cpu->address_map[spacenum][1])
{
mame_printf_error("%s: %s uses identical memory maps for CPU #%d spacenum %d\n", driver->source_file, driver->name, cpunum, spacenum);
error = TRUE;
}
/* reset the address map, resetting the base address to a non-NULL value */
/* because the AM_REGION macro will query non-existant memory regions and */
/* product valid NULL results */
memset(addrmap, 0, sizeof(addrmap));
/* construct the maps */
map = addrmap;
construct_address_map(map, config, cpunum, spacenum);
map = address_map_alloc(config, cpunum, spacenum);
/* if this is an empty map, just skip it */
if (IS_AMENTRY_END(map))
continue;
/* make sure we start with a proper entry */
if (!IS_AMENTRY_EXTENDED(map))
if (map->entrylist == NULL)
{
mame_printf_error("%s: %s wrong MEMORY_READ_START for %s space\n", driver->source_file, driver->name, spacename[spacenum]);
address_map_free(map);
continue;
}
/* validate the global map parameters */
if (map->spacenum != spacenum)
{
mame_printf_error("%s: %s CPU #%d space %d has address space %d handlers!", driver->source_file, driver->name, cpunum, spacenum, map->spacenum);
error = TRUE;
}
if (map->databits != databus_width)
{
mame_printf_error("%s: %s cpu #%d uses wrong memory handlers for %s space! (width = %d, memory = %08x)\n", driver->source_file, driver->name, cpunum, address_space_names[spacenum], databus_width, map->databits);
error = TRUE;
}
/* loop over entries and look for errors */
for ( ; !IS_AMENTRY_END(map); map++)
if (!IS_AMENTRY_EXTENDED(map))
for (entry = map->entrylist; entry != NULL; entry = entry->next)
{
UINT32 start = SPACE_SHIFT(entry->start);
UINT32 end = SPACE_SHIFT_END(entry->end);
/* look for inverted start/end pairs */
if (end < start)
{
UINT32 start = SPACE_SHIFT(map->start);
UINT32 end = SPACE_SHIFT_END(map->end);
mame_printf_error("%s: %s wrong %s memory read handler start = %08x > end = %08x\n", driver->source_file, driver->name, address_space_names[spacenum], entry->start, entry->end);
error = TRUE;
}
/* look for inverted start/end pairs */
if (end < start)
/* look for misaligned entries */
if ((start & (alignunit-1)) != 0 || (end & (alignunit-1)) != (alignunit-1))
{
mame_printf_error("%s: %s wrong %s memory read handler start = %08x, end = %08x ALIGN = %d\n", driver->source_file, driver->name, address_space_names[spacenum], entry->start, entry->end, alignunit);
error = TRUE;
}
/* if this is a program space, auto-assign implicit ROM entries */
if ((FPTR)entry->read.handler == STATIC_ROM && !entry->region)
{
entry->region = REGION_CPU1 + cpunum;
entry->region_offs = entry->start;
}
/* if this entry references a memory region, validate it */
if (entry->region && entry->share == 0)
{
offs_t length = region_length[entry->region];
if (length == 0)
{
mame_printf_error("%s: %s wrong %s memory read handler start = %08x > end = %08x\n", driver->source_file, driver->name, spacename[spacenum], map->start, map->end);
mame_printf_error("%s: %s CPU %d space %d memory map entry %X-%X references non-existant region %d\n", driver->source_file, driver->name, cpunum, spacenum, entry->start, entry->end, entry->region);
error = TRUE;
}
/* look for misaligned entries */
if ((start & (alignunit-1)) != 0 || (end & (alignunit-1)) != (alignunit-1))
else if (entry->region_offs + (end - start + 1) > length)
{
mame_printf_error("%s: %s wrong %s memory read handler start = %08x, end = %08x ALIGN = %d\n", driver->source_file, driver->name, spacename[spacenum], map->start, map->end, alignunit);
error = TRUE;
}
/* if this is a program space, auto-assign implicit ROM entries */
if ((FPTR)map->read.handler == STATIC_ROM && !map->region)
{
map->region = REGION_CPU1 + cpunum;
map->region_offs = map->start;
}
/* if this entry references a memory region, validate it */
if (map->region && map->share == 0)
{
offs_t length = region_length[map->region];
if (length == 0)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry %X-%X references non-existant region %d\n", driver->source_file, driver->name, cpunum, spacenum, map->start, map->end, map->region);
error = TRUE;
}
else if (map->region_offs + (end - start + 1) > length)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry %X-%X extends beyond region %d size (%X)\n", driver->source_file, driver->name, cpunum, spacenum, map->start, map->end, map->region, length);
error = TRUE;
}
}
/* make sure all devices exist */
if (map->read_devtype != NULL && device_list_find_by_tag(config->devicelist, map->read_devtype, map->read_devtag) == NULL)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant device type %s, tag %s\n", driver->source_file, driver->name, cpunum, spacenum, devtype_name(map->read_devtype), map->read_devtag);
error = TRUE;
}
if (map->write_devtype != NULL && device_list_find_by_tag(config->devicelist, map->write_devtype, map->write_devtag) == NULL)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant device type %s, tag %s\n", driver->source_file, driver->name, cpunum, spacenum, devtype_name(map->write_devtype), map->write_devtag);
mame_printf_error("%s: %s CPU %d space %d memory map entry %X-%X extends beyond region %d size (%X)\n", driver->source_file, driver->name, cpunum, spacenum, entry->start, entry->end, entry->region, length);
error = TRUE;
}
}
else
{
flags = AM_EXTENDED_FLAGS(map);
if (flags & AMEF_SPECIFIES_SPACE)
{
int val = (flags & AMEF_SPACE_MASK) >> AMEF_SPACE_SHIFT;
if (val != spacenum)
{
mame_printf_error("%s: %s CPU #%d space %d has address space %d handlers!", driver->source_file, driver->name, cpunum, spacenum, val);
error = TRUE;
}
}
/* verify the type of memory handlers */
if (flags & AMEF_SPECIFIES_DBITS)
{
int val = (flags & AMEF_DBITS_MASK) >> AMEF_DBITS_SHIFT;
val = (val + 1) * 8;
if (val != databus_width)
{
mame_printf_error("%s: %s cpu #%d uses wrong memory handlers for %s space! (width = %d, memory = %08x)\n", driver->source_file, driver->name, cpunum, spacename[spacenum], databus_width, val);
error = TRUE;
}
}
/* make sure all devices exist */
if (entry->read_devtype != NULL && device_list_find_by_tag(config->devicelist, entry->read_devtype, entry->read_devtag) == NULL)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant device type %s, tag %s\n", driver->source_file, driver->name, cpunum, spacenum, devtype_name(entry->read_devtype), entry->read_devtag);
error = TRUE;
}
if (entry->write_devtype != NULL && device_list_find_by_tag(config->devicelist, entry->write_devtype, entry->write_devtag) == NULL)
{
mame_printf_error("%s: %s CPU %d space %d memory map entry references nonexistant device type %s, tag %s\n", driver->source_file, driver->name, cpunum, spacenum, devtype_name(entry->write_devtype), entry->write_devtag);
error = TRUE;
}
}
/* release the address map */
address_map_free(map);
/* validate the interrupts */
if (cpu->vblank_interrupt != NULL)

View File

@ -1495,7 +1495,10 @@ void video_frame_update(running_machine *machine, int debug)
{
/* reset partial updates if we're paused or if the debugger is active */
if (video_screen_exists(0) && (mame_is_paused(machine) || debug || mame_debug_is_active()))
scanline0_callback(machine, machine->screen[0].private_data, 0);
{
void *param = (void *)machine->primary_screen;
scanline0_callback(machine, param, 0);
}
/* otherwise, call the video EOF callback */
else if (machine->config->video_eof != NULL)

View File

@ -1538,7 +1538,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( demon_sound_ports, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_WRITE(z80ctc_0_w)
AM_RANGE(0x1c, 0x1f) AM_WRITE(z80ctc_0_w)
ADDRESS_MAP_END

View File

@ -478,18 +478,18 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( dcs2_2115_program_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x03ff) AM_RAM AM_BASE(&dcs_internal_program_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dcs2_2104_program_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x01ff) AM_RAM AM_BASE(&dcs_internal_program_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dcs2_2115_data_map, ADDRESS_SPACE_DATA, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
@ -501,7 +501,7 @@ static ADDRESS_MAP_START( dcs2_2115_data_map, ADDRESS_SPACE_DATA, 16 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( dcs2_2104_data_map, ADDRESS_SPACE_DATA, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
@ -521,13 +521,13 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( dsio_program_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_RAM AM_BASE(&dcs_internal_program_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( dsio_data_map, ADDRESS_SPACE_DATA, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x03ff) AM_RAMBANK(20)
AM_RANGE(0x0400, 0x3fdf) AM_RAM
AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
@ -535,7 +535,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dsio_io_map, ADDRESS_SPACE_IO, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)
@ -553,13 +553,13 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( denver_program_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_RAM AM_BASE(&dcs_internal_program_ram)
ADDRESS_MAP_END
static ADDRESS_MAP_START( denver_data_map, ADDRESS_SPACE_DATA, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_RAMBANK(20)
AM_RANGE(0x0800, 0x3fdf) AM_RAM
AM_RANGE(0x3fe0, 0x3fff) AM_READWRITE(adsp_control_r, adsp_control_w)
@ -567,7 +567,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( denver_io_map, ADDRESS_SPACE_IO, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0400, 0x0400) AM_READWRITE(input_latch_r, input_latch_ack_w)
AM_RANGE(0x0401, 0x0401) AM_WRITE(output_latch_w)
AM_RANGE(0x0402, 0x0402) AM_READWRITE(output_control_r, output_control_w)

View File

@ -821,7 +821,7 @@ static const struct CustomSound_interface venture_custom_interface =
static ADDRESS_MAP_START( venture_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x0780) AM_RAM
AM_RANGE(0x0800, 0x087f) AM_MIRROR(0x0780) AM_READWRITE(exidy_shriot_r, exidy_shriot_w)
AM_RANGE(0x1000, 0x1003) AM_MIRROR(0x07fc) AM_READWRITE(pia_1_r, pia_1_w)
@ -882,13 +882,13 @@ static READ8_HANDLER( mtrap_voiceio_r )
static ADDRESS_MAP_START( cvsd_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x3fff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( cvsd_iomap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0xff) AM_READWRITE(mtrap_voiceio_r, mtrap_voiceio_w)
ADDRESS_MAP_END

View File

@ -227,7 +227,7 @@ static const struct MSM5205interface irem_msm5205_interface_2 =
/* complete address map verified from Moon Patrol/10 Yard Fight schematics */
/* large map uses 8k ROMs, small map uses 4k ROMs; this is selected via a jumper */
static ADDRESS_MAP_START( m52_small_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x0fff) AM_WRITE(m52_adpcm_w)
AM_RANGE(0x1000, 0x1fff) AM_WRITE(sound_irq_ack_w)
AM_RANGE(0x2000, 0x7fff) AM_ROM

View File

@ -465,7 +465,7 @@ static const struct AY8910interface ssio_ay8910_interface_2 =
/* address map verified from schematics */
static ADDRESS_MAP_START( ssio_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x8000, 0x83ff) AM_MIRROR(0x0c00) AM_RAM
AM_RANGE(0x9000, 0x9003) AM_MIRROR(0x0ffc) AM_READ(ssio_data_r)
@ -585,7 +585,8 @@ void csdeluxe_reset_w(int state)
/* address map determined by PAL; not verified */
static ADDRESS_MAP_START( csdeluxe_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) | AMEF_ABITS(17) )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x1ffff)
AM_RANGE(0x000000, 0x007fff) AM_ROM
AM_RANGE(0x018000, 0x018007) AM_READWRITE(csdeluxe_pia_r, csdeluxe_pia_w)
AM_RANGE(0x01c000, 0x01cfff) AM_RAM
@ -688,7 +689,8 @@ void soundsgood_reset_w(int state)
/* address map determined by PAL; not verified */
static ADDRESS_MAP_START( soundsgood_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) | AMEF_ABITS(19) )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x7ffff)
AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x060000, 0x060007) AM_READWRITE(pia_1_msb_alt_r, pia_1_msb_alt_w)
AM_RANGE(0x070000, 0x070fff) AM_RAM
@ -780,7 +782,7 @@ void turbocs_reset_w(int state)
/* address map verified from schematics */
static ADDRESS_MAP_START( turbocs_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x3800) AM_RAM
AM_RANGE(0x4000, 0x4003) AM_MIRROR(0x3ffc) AM_READWRITE(pia_0_alt_r, pia_0_alt_w)
AM_RANGE(0x8000, 0xffff) AM_ROM
@ -906,7 +908,7 @@ void squawkntalk_reset_w(int state)
/* note that jumpers control the ROM sizes; if these are changed, use the alternate */
/* address map below */
static ADDRESS_MAP_START( squawkntalk_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x4f6c) AM_READWRITE(pia_0_r, pia_0_w)
AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x4f6c) AM_READWRITE(pia_1_r, pia_1_w)
@ -918,7 +920,7 @@ ADDRESS_MAP_END
/* ROM size of 2k */
#ifdef UNUSED_FUNCTION
ADDRESS_MAP_START( squawkntalk_alt_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x0000, 0x007f) AM_RAM /* internal RAM */
AM_RANGE(0x0080, 0x0083) AM_MIRROR(0x676c) AM_READWRITE(pia_0_r, pia_0_w)
AM_RANGE(0x0090, 0x0093) AM_MIRROR(0x676c) AM_READWRITE(pia_1_r, pia_1_w)

View File

@ -517,7 +517,7 @@ static MACHINE_RESET( helifire_sound )
static ADDRESS_MAP_START( n8080_sound_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(10) )
ADDRESS_MAP_GLOBAL_MASK(0x3ff)
AM_RANGE(0x0000, 0x03ff) AM_ROM
ADDRESS_MAP_END

View File

@ -5,9 +5,9 @@
#define CPUTAG_54XX "54XX"
ADDRESS_MAP_EXTERN( namco_54xx_map_program );
ADDRESS_MAP_EXTERN( namco_54xx_map_data );
ADDRESS_MAP_EXTERN( namco_54xx_map_io );
ADDRESS_MAP_EXTERN( namco_54xx_map_program, 8 );
ADDRESS_MAP_EXTERN( namco_54xx_map_data, 8 );
ADDRESS_MAP_EXTERN( namco_54xx_map_io, 8 );
void namco_54xx_write(UINT8 data);

View File

@ -13,9 +13,9 @@
#include "sound/c352.h"
#include "cpu/m37710/m37710.h"
ADDRESS_MAP_EXTERN(namcoc7x_mcu_map);
ADDRESS_MAP_EXTERN(namcoc7x_mcu_share_map);
ADDRESS_MAP_EXTERN(namcoc7x_mcu_io);
ADDRESS_MAP_EXTERN(namcoc7x_mcu_map, 16);
ADDRESS_MAP_EXTERN(namcoc7x_mcu_share_map, 16);
ADDRESS_MAP_EXTERN(namcoc7x_mcu_io, 8);
INTERRUPT_GEN( namcoc7x_interrupt );

View File

@ -134,7 +134,7 @@ static const struct AY8910interface redalert_ay8910_interface =
static ADDRESS_MAP_START( redalert_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x03ff) AM_MIRROR(0x0c00) AM_RAM
AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x0ffe) AM_READWRITE(MRA8_NOP, redalert_AY8910_w)
AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x0ffe) AM_READWRITE(redalert_ay8910_latch_1_r, redalert_ay8910_latch_2_w)
@ -303,7 +303,7 @@ static WRITE8_HANDLER( demoneye_ay8910_data_w )
static ADDRESS_MAP_START( demoneye_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x007f) AM_RAM
AM_RANGE(0x0500, 0x0503) AM_READWRITE(pia_0_r, pia_0_w)
AM_RANGE(0x2000, 0x3fff) AM_ROM

View File

@ -391,7 +391,7 @@ static ADDRESS_MAP_START( ad2083_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( ad2083_sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x01, 0x01) AM_WRITE(ad2083_tms5110_ctrl_w)
AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x20, 0x20) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)

View File

@ -29,10 +29,10 @@
#include "sound/okim6295.h"
#include "sound/custom.h"
ADDRESS_MAP_EXTERN(seibu_sound_map);
ADDRESS_MAP_EXTERN(seibu2_sound_map);
ADDRESS_MAP_EXTERN(seibu3_sound_map);
ADDRESS_MAP_EXTERN(seibu3_adpcm_sound_map);
ADDRESS_MAP_EXTERN(seibu_sound_map, 8);
ADDRESS_MAP_EXTERN(seibu2_sound_map, 8);
ADDRESS_MAP_EXTERN(seibu3_sound_map, 8);
ADDRESS_MAP_EXTERN(seibu3_adpcm_sound_map, 8);
READ16_HANDLER( seibu_main_word_r );
READ8_HANDLER( seibu_main_v30_r );

View File

@ -277,7 +277,7 @@ ADDRESS_MAP_END
// 40 W external ROM banking? (the only 0 bit enables a ROM)
// 50 W test mode status flags (bit 0 = ROM test fail, bit 1 = RAM test fail, bit 2 = YM2151 IRQ not received)
ADDRESS_MAP_START( t5182_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2151_register_port_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(YM2151_status_port_0_r, YM2151_data_port_0_w)
AM_RANGE(0x10, 0x10) AM_WRITE(t5182_sharedram_semaphore_snd_acquire_w)

View File

@ -1,8 +1,8 @@
#define CPUTAG_T5182 "T5182"
#define T5182COINPORT "T5182_COIN"
ADDRESS_MAP_EXTERN( t5182_map );
ADDRESS_MAP_EXTERN( t5182_io );
ADDRESS_MAP_EXTERN( t5182_map, 8 );
ADDRESS_MAP_EXTERN( t5182_io, 8 );
WRITE8_HANDLER( t5182_sound_irq_w );
READ8_HANDLER(t5182_sharedram_semaphore_snd_r);

View File

@ -23,6 +23,6 @@ void taito_f3_soundsystem_reset(void);
MDRV_SOUND_ROUTE(0, "left", 1.0) \
MDRV_SOUND_ROUTE(1, "right", 1.0) \
ADDRESS_MAP_EXTERN(f3_sound_map);
ADDRESS_MAP_EXTERN(f3_sound_map, 16);
extern const struct ES5505interface es5505_interface;

View File

@ -217,7 +217,7 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( 20pacgal_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x3f) AM_NOP /* Z180 internal registers */
AM_RANGE(0x40, 0x7f) AM_NOP /* Z180 internal registers */
AM_RANGE(0x80, 0x80) AM_READ(input_port_0_r)

View File

@ -801,7 +801,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_READWRITE(buggychl_68705_portA_r, buggychl_68705_portA_w)
AM_RANGE(0x0001, 0x0001) AM_READWRITE(buggychl_68705_portB_r, buggychl_68705_portB_w)
AM_RANGE(0x0002, 0x0002) AM_READWRITE(buggychl_68705_portC_r, buggychl_68705_portC_w)

View File

@ -85,7 +85,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(input_port_1_r)
AM_RANGE(0x02, 0x02) AM_READ(input_port_2_r)

View File

@ -274,7 +274,7 @@ static ADDRESS_MAP_START( acefruit_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( acefruit_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS(AMEF_ABITS(8))
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_NOP /* ? */
ADDRESS_MAP_END

View File

@ -225,7 +225,7 @@ static ADDRESS_MAP_START( pspikesc_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( karatblz_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(20) )
ADDRESS_MAP_GLOBAL_MASK(0xfffff)
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x080000, 0x081fff) AM_READWRITE(MRA16_RAM, aerofgt_bg1videoram_w) AM_BASE(&aerofgt_bg1videoram)
AM_RANGE(0x082000, 0x083fff) AM_READWRITE(MRA16_RAM, aerofgt_bg2videoram_w) AM_BASE(&aerofgt_bg2videoram)
@ -260,7 +260,7 @@ static ADDRESS_MAP_START( spinlbrk_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( turbofrc_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(20) )
ADDRESS_MAP_GLOBAL_MASK(0xfffff)
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
AM_RANGE(0x0d0000, 0x0d1fff) AM_READWRITE(MRA16_RAM, aerofgt_bg1videoram_w) AM_BASE(&aerofgt_bg1videoram)
@ -375,7 +375,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( turbofrc_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w)
AM_RANGE(0x14, 0x14) AM_READWRITE(soundlatch_r, pending_command_clear_w)
AM_RANGE(0x18, 0x18) AM_READWRITE(YM2610_status_port_0_A_r, YM2610_control_port_0_A_w)
@ -385,7 +385,7 @@ static ADDRESS_MAP_START( turbofrc_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( aerofgt_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(YM2610_status_port_0_A_r, YM2610_control_port_0_A_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2610_data_port_0_A_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(YM2610_status_port_0_B_r, YM2610_control_port_0_B_w)

View File

@ -375,7 +375,7 @@ static ADDRESS_MAP_START( master_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( master_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(master_bankswitch_w)
AM_RANGE(0x01, 0x01) AM_WRITENOP // ???
AM_RANGE(0x02, 0x02) AM_WRITE(master_nmi_trigger_w)
@ -395,7 +395,7 @@ static ADDRESS_MAP_START( slave_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( slave_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(slave_bankswitch_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(soundcommand2_r, soundcommand_w)
AM_RANGE(0x04, 0x0c) AM_WRITE(airbustr_scrollregs_w)
@ -414,7 +414,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(YM2203_status_port_0_r, YM2203_control_port_0_w)
AM_RANGE(0x03, 0x03) AM_READWRITE(YM2203_read_port_0_r, YM2203_write_port_0_w)

View File

@ -325,7 +325,7 @@ static void alg_cia_1_porta_w(UINT8 data)
*************************************/
static ADDRESS_MAP_START( main_map_r1, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK(1) AM_BASE(&amiga_chip_ram) AM_SIZE(&amiga_chip_ram_size)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_BASE(&amiga_custom_regs)
@ -338,7 +338,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_map_r2, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK(1) AM_BASE(&amiga_chip_ram) AM_SIZE(&amiga_chip_ram_size)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_BASE(&amiga_custom_regs)
@ -351,7 +351,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( main_map_picmatic, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK(1) AM_BASE(&amiga_chip_ram) AM_SIZE(&amiga_chip_ram_size)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_BASE(&amiga_custom_regs)

View File

@ -828,7 +828,7 @@ static ADDRESS_MAP_START( tnexspce_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(soundlatch_r, soundlatch_clear_w)
AM_RANGE(0x08, 0x08) AM_WRITE(DAC_0_signed_data_w)
AM_RANGE(0x0a, 0x0a) AM_WRITE(YM2413_register_port_0_w)
@ -839,7 +839,7 @@ static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( kyros_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x10) AM_WRITE(YM2203_control_port_0_w)
AM_RANGE(0x11, 0x11) AM_WRITE(YM2203_write_port_0_w)
AM_RANGE(0x80, 0x80) AM_WRITE(YM2203_write_port_1_w)
@ -849,7 +849,7 @@ static ADDRESS_MAP_START( kyros_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( jongbou_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)
AM_RANGE(0x02, 0x02) AM_WRITE(soundlatch_clear_w)
@ -857,7 +857,7 @@ static ADDRESS_MAP_START( jongbou_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( tnexspce_sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(YM3812_status_port_0_r, YM3812_control_port_0_w)
AM_RANGE(0x20, 0x20) AM_WRITE(YM3812_write_port_0_w)
AM_RANGE(0x3b, 0x3b) AM_READNOP // unknown read port

View File

@ -73,7 +73,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(AY8910_read_port_0_r, AY8910_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x80, 0x80) AM_READWRITE(AY8910_read_port_1_r, AY8910_control_port_1_w)

View File

@ -123,13 +123,13 @@ static ADDRESS_MAP_START( amidar_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( amidar_sound_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x20, 0x20) AM_READ(AY8910_read_port_0_r)
AM_RANGE(0x80, 0x80) AM_READ(AY8910_read_port_1_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( amidar_sound_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x20, 0x20) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x40, 0x40) AM_WRITE(AY8910_control_port_1_w)

View File

@ -513,7 +513,7 @@ static ADDRESS_MAP_START( ampoker2_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( ampoker2_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x08, 0x0f) AM_WRITENOP /* inexistent in the real hardware */
AM_RANGE(0x10, 0x10) AM_READ(input_port_0_r)
AM_RANGE(0x11, 0x11) AM_READ(input_port_1_r)

View File

@ -232,7 +232,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(MWA8_NOP) // 00 on start-up, not again
AM_RANGE(0x42, 0x42) AM_WRITE(angelkds_cpu_bank_write)
AM_RANGE(0x43, 0x43) AM_WRITE(MWA8_NOP) // 9a on start-up, not again
@ -256,7 +256,7 @@ static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sub_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(YM2203_status_port_0_r, YM2203_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2203_write_port_0_w)
AM_RANGE(0x40, 0x40) AM_READWRITE(YM2203_status_port_1_r, YM2203_control_port_1_w)

View File

@ -103,7 +103,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( main_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, SN76496_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, SN76496_1_w)
AM_RANGE(0x02, 0x02) AM_WRITE(SN76496_2_w)

View File

@ -182,14 +182,14 @@ static ADDRESS_MAP_START( snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( snd_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x01, 0x01) AM_READ(YM2151_status_port_0_r)
AM_RANGE(0x02, 0x02) AM_READ(aquarium_oki_r)
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( snd_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2151_register_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2151_data_port_0_w)
AM_RANGE(0x02, 0x02) AM_WRITE(aquarium_oki_w)

View File

@ -188,7 +188,7 @@ static void arcadia_reset_coins(void)
*************************************/
static ADDRESS_MAP_START( amiga_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_RAMBANK(1) AM_BASE(&amiga_chip_ram) AM_SIZE(&amiga_chip_ram_size)
AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE(amiga_cia_r, amiga_cia_w)
AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE(amiga_custom_r, amiga_custom_w) AM_BASE(&amiga_custom_regs)

View File

@ -455,19 +455,19 @@ static ADDRESS_MAP_START( sound_writemem_c, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readport_1, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(YM2203_status_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(YM2203_read_port_0_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writeport_1, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2203_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2203_write_port_0_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readport_2, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(YM2203_status_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(YM2203_read_port_0_r)
AM_RANGE(0x80, 0x80) AM_READ(YM2203_status_port_1_r)
@ -475,7 +475,7 @@ static ADDRESS_MAP_START( sound_readport_2, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writeport_2, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2203_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2203_write_port_0_w)
AM_RANGE(0x80, 0x80) AM_WRITE(YM2203_control_port_1_w)

View File

@ -511,7 +511,7 @@ static ADDRESS_MAP_START( bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_READWRITE(arkanoid_68705_portA_r, arkanoid_68705_portA_w)
AM_RANGE(0x0001, 0x0001) AM_READ(arkanoid_input_2_r)
AM_RANGE(0x0002, 0x0002) AM_READWRITE(arkanoid_68705_portC_r, arkanoid_68705_portC_w)

View File

@ -451,13 +451,13 @@ static READ8_HANDLER( soundlatch_clear_r )
}
static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x4, 0x4) AM_READ(soundlatch_clear_r)
AM_RANGE(0x6, 0x6) AM_READ(soundlatch_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x0, 0x0) AM_WRITE(YM3812_control_port_0_w)
AM_RANGE(0x1, 0x1) AM_WRITE(YM3812_write_port_0_w)
AM_RANGE(0x2, 0x2) AM_WRITE(DAC_0_signed_data_w)

View File

@ -163,7 +163,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(YM2203_status_port_0_r, YM2203_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(YM2203_read_port_0_r, YM2203_write_port_0_w)
AM_RANGE(0x02, 0x02) AM_WRITE(adpcm_data_w)

View File

@ -216,7 +216,7 @@ static WRITE8_HANDLER( llander_led_w )
*************************************/
static ADDRESS_MAP_START( asteroid_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x02ff) AM_RAM AM_RAMBANK(1) AM_BASE(&asteroid_ram1)
AM_RANGE(0x0300, 0x03ff) AM_RAM AM_RAMBANK(2) AM_BASE(&asteroid_ram2)
@ -237,7 +237,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( astdelux_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x02ff) AM_RAM AM_RAMBANK(1) AM_BASE(&asteroid_ram1)
AM_RANGE(0x0300, 0x03ff) AM_RAM AM_RAMBANK(2) AM_BASE(&asteroid_ram2)
@ -263,7 +263,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( llander_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x1f00)
AM_RANGE(0x2000, 0x2000) AM_READ(llander_IN0_r) /* IN0 */
AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r) /* IN1 */

View File

@ -315,7 +315,7 @@ static WRITE8_HANDLER( spaceint_sound2_w )
*************************************/
static ADDRESS_MAP_START( kamikaze_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x1bff) AM_ROM
AM_RANGE(0x1c00, 0x1fff) AM_RAM
AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
@ -330,13 +330,13 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( kamikaze_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0xff) AM_READWRITE(kamikaze_ppi_r, kamikaze_ppi_w)
ADDRESS_MAP_END
static ADDRESS_MAP_START( spaceint_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(input_port_1_r)
AM_RANGE(0x02, 0x02) AM_WRITE(spaceint_sound1_w)

View File

@ -708,7 +708,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tenpin_sub_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x90, 0x93) AM_READWRITE(z80ctc_0_r, z80ctc_0_w)
AM_RANGE(0x97, 0x97) AM_READ(soundlatch_r)
AM_RANGE(0x98, 0x98) AM_WRITE(AY8910_control_port_0_w)

View File

@ -516,8 +516,8 @@ static ADDRESS_MAP_START( astrof_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READWRITE(MRA8_NOP, astrof_video_control_2_w)
AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READWRITE(MRA8_NOP, astrof_audio_1_w)
AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_READWRITE(MRA8_NOP, astrof_audio_2_w)
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READWRITE(port_tag_to_handler("IN"), MWA8_NOP)
AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READWRITE(port_tag_to_handler("DSW"), MWA8_NOP)
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READWRITE(irq_ack_r, MWA8_NOP)
AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP
AM_RANGE(0xc000, 0xffff) AM_ROM
@ -535,8 +535,8 @@ static ADDRESS_MAP_START( spfghmk2_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x8005, 0x8005) AM_MIRROR(0x1ff8) AM_READWRITE(MRA8_NOP, spfghmk2_video_control_2_w)
AM_RANGE(0x8006, 0x8006) AM_MIRROR(0x1ff8) AM_READWRITE(MRA8_NOP, spfghmk2_audio_w)
AM_RANGE(0x8007, 0x8007) AM_MIRROR(0x1ff8) AM_NOP
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READWRITE(port_tag_to_handler("IN"), MWA8_NOP)
AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READWRITE(port_tag_to_handler("DSW"), MWA8_NOP)
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x1ff8) AM_READ_PORT("IN") AM_WRITENOP
AM_RANGE(0xa001, 0xa001) AM_MIRROR(0x1ff8) AM_READ_PORT("DSW") AM_WRITENOP
AM_RANGE(0xa002, 0xa002) AM_MIRROR(0x1ff8) AM_READWRITE(irq_ack_r, MWA8_NOP)
AM_RANGE(0xa003, 0xa007) AM_MIRROR(0x1ff8) AM_NOP
AM_RANGE(0xc000, 0xffff) AM_ROM

View File

@ -149,7 +149,7 @@ static PALETTE_INIT( atarifb )
*************************************/
static ADDRESS_MAP_START( atarifb_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x025f) AM_READWRITE(MRA8_RAM, atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
AM_RANGE(0x0260, 0x039f) AM_RAM
@ -170,7 +170,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( atarifb4_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x025f) AM_READWRITE(MRA8_RAM, atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
AM_RANGE(0x0260, 0x039f) AM_RAM
@ -192,7 +192,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( abaseb_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x025f) AM_READWRITE(MRA8_RAM, atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
AM_RANGE(0x0260, 0x039f) AM_RAM
@ -213,7 +213,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( soccer_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x025f) AM_READWRITE(MRA8_RAM, atarifb_alpha1_videoram_w) AM_BASE(&atarifb_alphap1_videoram)
AM_RANGE(0x0260, 0x039f) AM_RAM

View File

@ -1182,7 +1182,7 @@ static READ32_HANDLER( inputs_01_r )
*************************************/
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 32 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0xc80000, 0xc80fff) AM_RAM
AM_RANGE(0xca0000, 0xca0fff) AM_READWRITE(atarigx2_protection_r, atarigx2_protection_w) AM_BASE(&protection_base)

View File

@ -55,7 +55,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( master_map_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x04, 0x04) AM_READ(leland_80186_response_r)
AM_RANGE(0x05, 0x05) AM_WRITE(leland_80186_command_hi_w)
AM_RANGE(0x06, 0x06) AM_WRITE(leland_80186_command_lo_w)
@ -86,7 +86,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( slave_map_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x60, 0x7f) AM_READWRITE(ataxx_svram_port_r, ataxx_svram_port_w)
ADDRESS_MAP_END

View File

@ -83,7 +83,7 @@ static WRITE8_HANDLER(attckufo_io_w)
}
static ADDRESS_MAP_START( cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_BASE(&mainram)
AM_RANGE(0x1000, 0x100f) AM_READWRITE(attckufo_port_r, attckufo_port_w)
AM_RANGE(0x1400, 0x1403) AM_READWRITE(attckufo_io_r, attckufo_io_w)

View File

@ -129,7 +129,7 @@ static WRITE8_HANDLER( avalance_start_lamp_w )
*************************************/
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x1fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x0ffc) AM_READ(input_port_0_r)
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x0ffc) AM_READ(input_port_1_r)

View File

@ -257,12 +257,12 @@ static ADDRESS_MAP_START( pickin_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x0c, 0x0c) AM_READ(AY8910_read_port_0_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x08, 0x08) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x09, 0x09) AM_WRITE(AY8910_write_port_0_w)
//AM_RANGE(0x56, 0x56) AM_WRITE(MWA8_NOP)

View File

@ -270,7 +270,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu2_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x03) AM_READWRITE(balsente_counter_8253_r, balsente_counter_8253_w)
AM_RANGE(0x08, 0x0f) AM_READ(balsente_counter_state_r)
AM_RANGE(0x08, 0x09) AM_WRITE(balsente_counter_control_w)

View File

@ -125,7 +125,7 @@ static ADDRESS_MAP_START( bankp_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( bankp_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, SN76496_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, SN76496_1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, SN76496_2_w)

View File

@ -118,7 +118,8 @@ static WRITE16_HANDLER( latch_w )
/* addresses in the 1xxxxx region map to /WAIT */
/* addresses in the 2xxxxx region map to /WAIT2 */
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) | AMEF_ABITS(22) )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0x3fffff)
AM_RANGE(0x000000, 0x0bffff) AM_ROM
AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
AM_RANGE(0x120000, 0x120fff) AM_MIRROR(0x01f000) AM_READWRITE(atarigen_eeprom_r, atarigen_eeprom_w) AM_BASE(&atarigen_eeprom) AM_SIZE(&atarigen_eeprom_size)

View File

@ -75,7 +75,7 @@ static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(input_port_1_r)
AM_RANGE(0x02, 0x02) AM_READ(input_port_2_r)
@ -84,7 +84,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x10) AM_WRITE(battlex_flipscreen_w)
/* verify all of these */
AM_RANGE(0x22, 0x22) AM_WRITE(AY8910_write_port_0_w)

View File

@ -372,13 +372,13 @@ static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(YM2610_status_port_0_A_r)
AM_RANGE(0x02, 0x02) AM_READ(YM2610_status_port_0_B_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2610_control_port_0_A_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2610_data_port_0_A_w)
AM_RANGE(0x02, 0x02) AM_WRITE(YM2610_control_port_0_B_w)
@ -387,13 +387,13 @@ static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( sounda_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(YM2608_status_port_0_A_r)
AM_RANGE(0x02, 0x02) AM_READ(YM2608_status_port_0_B_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sounda_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(YM2608_control_port_0_A_w)
AM_RANGE(0x01, 0x01) AM_WRITE(YM2608_data_port_0_A_w)
AM_RANGE(0x02, 0x02) AM_WRITE(YM2608_control_port_0_B_w)

View File

@ -222,7 +222,7 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(controller_select_w) /* to be confirmed */
ADDRESS_MAP_END

View File

@ -583,7 +583,7 @@ ADDRESS_MAP_END
*************************************/
static ADDRESS_MAP_START( berzerk_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x3f) AM_NOP
AM_RANGE(0x40, 0x47) AM_READWRITE(berzerk_audio_r, berzerk_audio_w)
AM_RANGE(0x48, 0x48) AM_READWRITE(input_port_0_r, MWA8_NOP)

View File

@ -1090,7 +1090,7 @@ static ADDRESS_MAP_START( z80_prog_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( z80_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x23) AM_READWRITE(chipset_r, chipset_w)
AM_RANGE(0x24, 0x24) AM_WRITE(acia6850_0_ctrl_w)
AM_RANGE(0x25, 0x25) AM_WRITE(acia6850_0_data_w)

View File

@ -324,7 +324,7 @@ static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( bigevglf_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(MWA8_NOP) /* video ram enable ???*/
AM_RANGE(0x01, 0x01) AM_WRITE(bigevglf_gfxcontrol_w) /* plane select */
AM_RANGE(0x02, 0x02) AM_WRITE(beg_banking_w)
@ -334,7 +334,7 @@ static ADDRESS_MAP_START( bigevglf_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( bigevglf_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x06, 0x06) AM_READ(beg_status_r)
ADDRESS_MAP_END
@ -356,7 +356,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bigevglf_sub_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x08, 0x08) AM_WRITE(MWA8_NOP) /*coinlockout_w ???? watchdog ???? */
AM_RANGE(0x0c, 0x0c) AM_WRITE(bigevglf_mcu_w)
AM_RANGE(0x0e, 0x0e) AM_WRITE(MWA8_NOP) /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */
@ -381,7 +381,7 @@ static READ8_HANDLER( sub_cpu_mcu_coin_port_r )
}
static ADDRESS_MAP_START( bigevglf_sub_readport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(input_port_0_r)
AM_RANGE(0x01, 0x01) AM_READ(MRA8_NOP)
AM_RANGE(0x02, 0x02) AM_READ(input_port_4_r)
@ -426,7 +426,7 @@ ADDRESS_MAP_END
/* MCU */
static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_READ(bigevglf_68705_portA_r)
AM_RANGE(0x0001, 0x0001) AM_READ(bigevglf_68705_portB_r)
AM_RANGE(0x0002, 0x0002) AM_READ(bigevglf_68705_portC_r)
@ -435,7 +435,7 @@ static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_WRITE(bigevglf_68705_portA_w)
AM_RANGE(0x0001, 0x0001) AM_WRITE(bigevglf_68705_portB_w)
AM_RANGE(0x0002, 0x0002) AM_WRITE(bigevglf_68705_portC_w)

View File

@ -362,7 +362,7 @@ static READ8_HANDLER( soundlatch_clear_r )
}
static ADDRESS_MAP_START( soundport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x0, 0x0) AM_WRITE(YM3812_control_port_0_w)
AM_RANGE(0x1, 0x1) AM_WRITE(YM3812_write_port_0_w)
AM_RANGE(0x2, 0x2) AM_WRITE(DAC_0_signed_data_w)

View File

@ -257,7 +257,7 @@ static WRITE16_HANDLER( bishjan_coin_w )
*/
static ADDRESS_MAP_START( bishjan_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(24) )
ADDRESS_MAP_GLOBAL_MASK(0xffffff)
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM AM_REGION(REGION_CPU1, 0)
AM_RANGE( 0x080000, 0x0fffff ) AM_ROM AM_REGION(REGION_CPU1, 0)

View File

@ -124,7 +124,7 @@ static ADDRESS_MAP_START( bking_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( bking_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking_xld2_w)
@ -143,7 +143,7 @@ static ADDRESS_MAP_START( bking_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( bking3_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READWRITE(input_port_0_r, bking_xld1_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(input_port_1_r, bking_yld1_w)
AM_RANGE(0x02, 0x02) AM_READWRITE(input_port_2_r, bking_xld2_w)
@ -246,7 +246,7 @@ static READ8_HANDLER( bking3_68705_portC_r )
}
#endif
static ADDRESS_MAP_START( m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_READWRITE(buggychl_68705_portA_r, buggychl_68705_portA_w)
AM_RANGE(0x0001, 0x0001) AM_READWRITE(buggychl_68705_portB_r, buggychl_68705_portB_w)
AM_RANGE(0x0002, 0x0002) AM_READWRITE(buggychl_68705_portC_r, buggychl_68705_portC_w)

View File

@ -74,7 +74,7 @@ static ADDRESS_MAP_START( mem_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( port_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(soundlatch_w)
AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITE(blktiger_bankswitch_w)
AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")

View File

@ -83,7 +83,7 @@ static READ16_HANDLER( inputs_r )
/* full map verified from schematics */
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
ADDRESS_MAP_FLAGS( AMEF_UNMAP(1) )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x000000, 0x03ffff) AM_MIRROR(0x7c0000) AM_ROM
AM_RANGE(0xff8000, 0xff8001) AM_MIRROR(0x7f81fe) AM_WRITE(watchdog_reset16_w)
AM_RANGE(0xff8200, 0xff8201) AM_MIRROR(0x7f81fe) AM_WRITE(atarigen_scanline_int_ack_w)

View File

@ -176,7 +176,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bombjack_sound_writeport, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_WRITE(AY8910_write_port_0_w)
AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_control_port_1_w)

View File

@ -178,7 +178,7 @@ static WRITE8_HANDLER( boxer_led_w )
static ADDRESS_MAP_START( boxer_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM
AM_RANGE(0x0200, 0x03ff) AM_RAM AM_BASE(&boxer_tile_ram)
AM_RANGE(0x0800, 0x08ff) AM_READ(boxer_input_r)

View File

@ -72,7 +72,7 @@ static PALETTE_INIT( bsktball )
*************************************/
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x01ff) AM_RAM /* Zero Page RAM */
AM_RANGE(0x0800, 0x0800) AM_READ(bsktball_in0_r)
AM_RANGE(0x0802, 0x0802) AM_READ(input_port_5_r)

View File

@ -377,7 +377,7 @@ ADDRESS_MAP_END
// The 68705 is from a bootleg, the original MCU is a 6801U4
static ADDRESS_MAP_START( bootlegmcu_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x000, 0x000) AM_READWRITE(bublbobl_68705_portA_r, bublbobl_68705_portA_w)
AM_RANGE(0x001, 0x001) AM_READWRITE(bublbobl_68705_portB_r, bublbobl_68705_portB_w)
AM_RANGE(0x002, 0x002) AM_READ(input_port_0_r) // COIN

View File

@ -232,7 +232,7 @@ static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_READ(buggychl_68705_portA_r)
AM_RANGE(0x0001, 0x0001) AM_READ(buggychl_68705_portB_r)
AM_RANGE(0x0002, 0x0002) AM_READ(buggychl_68705_portC_r)
@ -241,7 +241,7 @@ static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(11) )
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
AM_RANGE(0x0000, 0x0000) AM_WRITE(buggychl_68705_portA_w)
AM_RANGE(0x0001, 0x0001) AM_WRITE(buggychl_68705_portB_w)
AM_RANGE(0x0002, 0x0002) AM_WRITE(buggychl_68705_portC_w)

View File

@ -311,7 +311,7 @@ static READ8_HANDLER( redbaron_joy_r )
*************************************/
static ADDRESS_MAP_START( bzone_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x03ff) AM_RAM
AM_RANGE(0x0800, 0x0800) AM_READ(bzone_IN0_r) /* IN0 */
AM_RANGE(0x0a00, 0x0a00) AM_READ(input_port_1_r) /* DSW1 */
@ -331,7 +331,7 @@ static ADDRESS_MAP_START( bzone_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( redbaron_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(15) )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x03ff) AM_RAM
AM_RANGE(0x0800, 0x0800) AM_READ(bzone_IN0_r) /* IN0 */
AM_RANGE(0x0a00, 0x0a00) AM_READ(input_port_1_r) /* DSW1 */

View File

@ -275,7 +275,7 @@ static ADDRESS_MAP_START( cabalbl_talk1_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( cabalbl_talk1_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch3_r)
AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_adpcm_0_w)
ADDRESS_MAP_END
@ -285,7 +285,7 @@ static ADDRESS_MAP_START( cabalbl_talk2_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( cabalbl_talk2_portmap, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_READ(soundlatch4_r)
AM_RANGE(0x01, 0x01) AM_WRITE(cabalbl_adpcm_1_w)
ADDRESS_MAP_END

View File

@ -224,7 +224,7 @@ static ADDRESS_MAP_START( calorie_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_END
static ADDRESS_MAP_START( calorie_sound_io_map, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(8) )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_WRITE(AY8910_control_port_0_w)
AM_RANGE(0x01, 0x01) AM_READWRITE(AY8910_read_port_0_r, AY8910_write_port_0_w)
AM_RANGE(0x10, 0x10) AM_WRITE(AY8910_control_port_1_w)

View File

@ -106,7 +106,7 @@ static WRITE8_HANDLER( canyon_led_w )
*************************************/
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
ADDRESS_MAP_FLAGS( AMEF_ABITS(14) )
ADDRESS_MAP_GLOBAL_MASK(0x3fff)
AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x100) AM_RAM
AM_RANGE(0x0400, 0x0401) AM_WRITE(canyon_motor_w)
AM_RANGE(0x0500, 0x0500) AM_WRITE(canyon_explode_w)

Some files were not shown because too many files have changed in this diff Show More