AM_RANGE(0x00000, 0x3fffff) AM_RAM ADDRESS_MAP_END //************************************************************************** // LIVE DEVICE //************************************************************************** //------------------------------------------------- // intelfsh_device - constructor //------------------------------------------------- intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant) : device_t(mconfig, type, name, tag, owner, clock), device_memory_interface(mconfig, *this), device_nvram_interface(mconfig, *this), m_type(variant), m_size(0), m_bits(8), m_device_id(0), m_maker_id(0), m_sector_is_4k(false), m_status(0x80), m_erase_sector(0), m_flash_mode(FM_NORMAL), m_flash_master_lock(false), m_timer(NULL), m_bank(0) { address_map_constructor map = NULL; switch( variant ) { case FLASH_INTEL_28F016S5: case FLASH_SHARP_LH28F016S: m_bits = 8; m_size = 0x200000; m_maker_id = MFG_INTEL; m_device_id = 0xaa; map = ADDRESS_MAP_NAME( memory_map8_16Mb ); break; case FLASH_ATMEL_29C010: m_bits = 8; m_size = 0x20000; m_page_size = 0x80; m_maker_id = MFG_ATMEL; m_device_id = 0xd5; map = ADDRESS_MAP_NAME( memory_map8_1Mb ); break; case FLASH_AMD_29F040: m_bits = 8; m_size = 0x80000; m_maker_id = MFG_AMD; m_device_id = 0xa4; map = ADDRESS_MAP_NAME( memory_map8_4Mb ); break; case FLASH_AMD_29F080: m_bits = 8; m_size = 0x100000; m_maker_id = MFG_AMD; m_device_id = 0xd5; map = ADDRESS_MAP_NAME( memory_map8_8Mb ); break; case FLASH_INTEL_28F320J3D: m_bits = 16; m_size = 0x400000; m_maker_id = MFG_INTEL; m_device_id = 0x16; m_sector_is_4k = true; map = ADDRESS_MAP_NAME( memory_map16_32Mb ); break; case FLASH_SHARP_LH28F400: case FLASH_INTEL_E28F400: m_bits = 16; m_size = 0x80000; m_maker_id = MFG_SHARP; m_device_id = 0xed; map = ADDRESS_MAP_NAME( memory_map16_4Mb ); break; case FLASH_FUJITSU_29F016A: m_bits = 8; m_size = 0x200000; m_maker_id = MFG_FUJITSU; m_device_id = 0xad; map = ADDRESS_MAP_NAME( memory_map8_16Mb ); break; case FLASH_FUJITSU_29DL16X: m_bits = 8; m_size = 0x200000; m_maker_id = MFG_FUJITSU; m_device_id = 0x35; map = ADDRESS_MAP_NAME( memory_map8_16Mb ); break; case FLASH_INTEL_E28F008SA: m_bits = 8; m_size = 0x100000; m_maker_id = MFG_INTEL; m_device_id = 0xa2; map = ADDRESS_MAP_NAME( memory_map8_8Mb ); break; case FLASH_INTEL_TE28F160: m_bits = 16; m_size = 0x200000; m_maker_id = MFG_SHARP; m_device_id = 0xd0; map = ADDRESS_MAP_NAME( memory_map16_16Mb ); break; case FLASH_SHARP_UNK128MBIT: m_bits = 16; m_size = 0x800000; m_maker_id = MFG_SHARP; m_device_id = 0xb0; map = ADDRESS_MAP_NAME( memory_map16_64Mb ); break; case FLASH_MACRONIX_29L001MC: m_bits = 8; m_size = 0x20000; m_maker_id = MFG_MACRONIX; m_device_id = 0x51; map = ADDRESS_MAP_NAME( memory_map8_1Mb ); break; case FLASH_PANASONIC_MN63F805MNP: m_bits = 8; m_size = 0x10000; m_maker_id = MFG_PANASONIC; m_device_id = 0x1b; m_sector_is_4k = true; map = ADDRESS_MAP_NAME( memory_map8_512Kb ); break; case FLASH_SANYO_LE26FV10N1TS: m_bits = 8; m_size = 0x20000; m_maker_id = MFG_SANYO; m_device_id = 0x13; m_sector_is_4k = true; map = ADDRESS_MAP_NAME( memory_map8_1Mb ); break; } int addrbits; for (addrbits = 24; addrbits > 0; addrbits--) if ((m_size & (1 << addrbits)) != 0) break; m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits, (m_bits == 8) ? 0 : -1, map); }
AM_RANGE(0x00000, 0x3fffff) AM_RAM ADDRESS_MAP_END //************************************************************************** // DEVICE CONFIGURATION //************************************************************************** //------------------------------------------------- // intelfsh_device_config - constructor //------------------------------------------------- intelfsh_device_config::intelfsh_device_config(const machine_config &mconfig, device_type type, const char *name, const char *tag, const device_config *owner, UINT32 clock, UINT32 variant) : device_config(mconfig, type, name, tag, owner, clock), device_config_memory_interface(mconfig, *this), device_config_nvram_interface(mconfig, *this), m_type(variant), m_size(0), m_bits(8), m_device_id(0), m_maker_id(0), m_sector_is_4k(false) { address_map_constructor map = NULL; switch( variant ) { case FLASH_INTEL_28F016S5: case FLASH_SHARP_LH28F016S: m_bits = 8; m_size = 0x200000; m_maker_id = 0x89; m_device_id = 0xaa; map = ADDRESS_MAP_NAME( memory_map8_16Mb ); break; case FLASH_SHARP_LH28F400: case FLASH_INTEL_E28F400: m_bits = 16; m_size = 0x80000; m_maker_id = 0xb0; m_device_id = 0xed; map = ADDRESS_MAP_NAME( memory_map16_4Mb ); break; case FLASH_FUJITSU_29F016A: m_bits = 8; m_size = 0x200000; m_maker_id = 0x04; m_device_id = 0xad; map = ADDRESS_MAP_NAME( memory_map8_16Mb ); break; case FLASH_INTEL_E28F008SA: m_bits = 8; m_size = 0x100000; m_maker_id = 0x89; m_device_id = 0xa2; map = ADDRESS_MAP_NAME( memory_map8_8Mb ); break; case FLASH_INTEL_TE28F160: m_bits = 16; m_size = 0x200000; m_maker_id = 0xb0; m_device_id = 0xd0; map = ADDRESS_MAP_NAME( memory_map16_16Mb ); break; case FLASH_SHARP_UNK128MBIT: m_bits = 16; m_size = 0x800000; m_maker_id = 0xb0; m_device_id = 0xb0; map = ADDRESS_MAP_NAME( memory_map16_64Mb ); break; case FLASH_MACRONIX_29L001MC: m_bits = 8; m_size = 0x20000; m_maker_id = 0xc2; m_device_id = 0x51; map = ADDRESS_MAP_NAME( memory_map8_1Mb ); break; case FLASH_PANASONIC_MN63F805MNP: m_bits = 8; m_size = 0x10000; m_maker_id = 0x32; m_device_id = 0x1b; m_sector_is_4k = true; map = ADDRESS_MAP_NAME( memory_map8_512Kb ); break; case FLASH_SANYO_LE26FV10N1TS: m_bits = 8; m_size = 0x20000; m_maker_id = 0x62; m_device_id = 0x13; m_sector_is_4k = true; map = ADDRESS_MAP_NAME( memory_map8_1Mb ); break; } int addrbits; for (addrbits = 24; addrbits > 0; addrbits--) if ((m_size & (1 << addrbits)) != 0) break; m_space_config = address_space_config("flash", ENDIANNESS_BIG, m_bits, addrbits, (m_bits == 8) ? 0 : -1, map); }
void at28c16_device::device_config_complete() { m_space_config = address_space_config( "at28c16", ENDIANNESS_BIG, 8, 12, 0, *ADDRESS_MAP_NAME( at28c16_map8 ) ); }
void address_map_bank_device::device_config_complete() { m_program_config = address_space_config( "program", m_endianness, m_databus_width, m_addrbus_width ); }