mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
intelfsh: Fujitsu updates (nw)
- Add MBM29LV800B type - Identify MBM29F160TE and MBM29DL164BD types more specifically - Correct device ID for MBM29F160TE
This commit is contained in:
parent
a1d23edb66
commit
41843b8f76
@ -89,10 +89,11 @@ DEFINE_DEVICE_TYPE(AMD_29F400T, amd_29f400t_device, "amd_29f
|
||||
DEFINE_DEVICE_TYPE(AMD_29F800T, amd_29f800t_device, "amd_29f800t", "AMD 29F800T Flash")
|
||||
DEFINE_DEVICE_TYPE(AMD_29F800B_16BIT, amd_29f800b_16bit_device, "amd_29f800b_16bit", "AMD 29F800B Flash used in 16 bit mode")
|
||||
DEFINE_DEVICE_TYPE(AMD_29LV200T, amd_29lv200t_device, "amd_29lv200t", "AMD 29LV200T Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29F160T, fujitsu_29f160t_device, "fujitsu_29f160t", "Fujitsu 29F160T Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_device, "fujitsu_29f016a", "Fujitsu 29F016A Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29DL16X, fujitsu_29dl16x_device, "fujitsu_29dl16x", "Fujitsu 29DL16X Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29LV002TC, fujitsu_29lv002tc_device, "fujitsu_29lv002tc", "Fujitsu 29LV002TC Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29F160TE, fujitsu_29f160te_device, "mbm29f160te", "Fujitsu MBM29F160TE Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_device, "mbm29f016a", "Fujitsu MBM29F016A Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29DL164BD, fujitsu_29dl164bd_device, "mbm29dl164bd", "Fujitsu MBM29DL164BD Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29LV002TC, fujitsu_29lv002tc_device, "mbm29lv002tc", "Fujitsu MBM29LV002TC Flash")
|
||||
DEFINE_DEVICE_TYPE(FUJITSU_29LV800B, fujitsu_29lv800b_device, "mbm29lv800b", "Fujitsu MBM29LV800B Flash")
|
||||
DEFINE_DEVICE_TYPE(INTEL_E28F400B, intel_e28f400b_device, "intel_e28f400b", "Intel E28F400B Flash")
|
||||
DEFINE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc_device, "macronix_29l001mc", "Macronix 29L001MC Flash")
|
||||
DEFINE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device, "macronix_29lv160tmc", "Macronix 29LV160TMC Flash")
|
||||
@ -142,6 +143,7 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_sector_is_4k(false),
|
||||
m_sector_is_16k(false),
|
||||
m_top_boot_sector(false),
|
||||
m_bot_boot_sector(false),
|
||||
m_status(0x80),
|
||||
m_erase_sector(0),
|
||||
m_flash_mode(FM_NORMAL),
|
||||
@ -285,11 +287,11 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x4471;
|
||||
break;
|
||||
case FLASH_FUJITSU_29F160T:
|
||||
case FLASH_FUJITSU_29F160TE:
|
||||
m_bits = 8;
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0xad;
|
||||
m_device_id = 0xd2;
|
||||
m_top_boot_sector = true;
|
||||
break;
|
||||
case FLASH_FUJITSU_29F016A:
|
||||
@ -298,7 +300,7 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0xad;
|
||||
break;
|
||||
case FLASH_FUJITSU_29DL16X:
|
||||
case FLASH_FUJITSU_29DL164BD:
|
||||
m_bits = 8;
|
||||
m_size = 0x200000;
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
@ -310,6 +312,13 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0x40;
|
||||
break;
|
||||
case FLASH_FUJITSU_29LV800B:
|
||||
m_bits = 16;
|
||||
m_size = 0x100000;
|
||||
m_maker_id = MFG_FUJITSU;
|
||||
m_device_id = 0x225b;
|
||||
m_bot_boot_sector = true;
|
||||
break;
|
||||
case FLASH_INTEL_E28F008SA:
|
||||
m_bits = 8;
|
||||
m_size = 0x100000;
|
||||
@ -393,18 +402,21 @@ intelfsh16_device::intelfsh16_device(const machine_config &mconfig, device_type
|
||||
intel_28f016s5_device::intel_28f016s5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, INTEL_28F016S5, tag, owner, clock, FLASH_INTEL_28F016S5) { }
|
||||
|
||||
fujitsu_29f160t_device::fujitsu_29f160t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29F160T, tag, owner, clock, FLASH_FUJITSU_29F160T) { }
|
||||
fujitsu_29f160te_device::fujitsu_29f160te_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29F160TE, tag, owner, clock, FLASH_FUJITSU_29F160TE) { }
|
||||
|
||||
fujitsu_29f016a_device::fujitsu_29f016a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29F016A, tag, owner, clock, FLASH_FUJITSU_29F016A) { }
|
||||
|
||||
fujitsu_29dl16x_device::fujitsu_29dl16x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29DL16X, tag, owner, clock, FLASH_FUJITSU_29DL16X) { }
|
||||
fujitsu_29dl164bd_device::fujitsu_29dl164bd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29DL164BD, tag, owner, clock, FLASH_FUJITSU_29DL164BD) { }
|
||||
|
||||
fujitsu_29lv002tc_device::fujitsu_29lv002tc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, FUJITSU_29LV002TC, tag, owner, clock, FLASH_FUJITSU_29LV002TC) { }
|
||||
|
||||
fujitsu_29lv800b_device::fujitsu_29lv800b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh16_device(mconfig, FUJITSU_29LV800B, tag, owner, clock, FLASH_FUJITSU_29LV800B) { }
|
||||
|
||||
sharp_lh28f016s_device::sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: intelfsh8_device(mconfig, SHARP_LH28F016S, tag, owner, clock, FLASH_SHARP_LH28F016S) { }
|
||||
|
||||
@ -979,6 +991,27 @@ void intelfsh_device::write_full(uint32_t address, uint32_t data)
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
}
|
||||
else if(m_bot_boot_sector && address < (64*1024))
|
||||
{
|
||||
if (address < (16*1024))
|
||||
{
|
||||
memset(&m_data[base & ~0x3fff], 0xff, 16 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x1fff : ~0x3fff);
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
else if (address < (32*1024))
|
||||
{
|
||||
memset(&m_data[base & ~0x1fff], 0xff, 8 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0xfff : ~0x1fff);
|
||||
m_timer->adjust( attotime::from_msec( 250 ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
memset(&m_data[base & ~0x7fff], 0xff, 32 * 1024);
|
||||
m_erase_sector = address & ((m_bits == 16) ? ~0x3fff : ~0x7fff);
|
||||
m_timer->adjust( attotime::from_msec( 500 ) );
|
||||
}
|
||||
}
|
||||
else if (m_maker_id == MFG_FUJITSU && m_device_id == 0x40)
|
||||
{
|
||||
constexpr u32 sectors[] = { 0x10000, 0x10000, 0x10000, 0x08000, 0x02000, 0x02000, 0x4000 };
|
||||
|
@ -17,10 +17,11 @@ public:
|
||||
{
|
||||
// 8-bit variants
|
||||
FLASH_INTEL_28F016S5 = 0x0800,
|
||||
FLASH_FUJITSU_29F160T,
|
||||
FLASH_FUJITSU_29F160TE,
|
||||
FLASH_FUJITSU_29F016A,
|
||||
FLASH_FUJITSU_29DL16X,
|
||||
FLASH_FUJITSU_29DL164BD,
|
||||
FLASH_FUJITSU_29LV002TC,
|
||||
FLASH_FUJITSU_29LV800B,
|
||||
FLASH_ATMEL_29C010,
|
||||
FLASH_AMD_29F010,
|
||||
FLASH_AMD_29F040,
|
||||
@ -87,6 +88,7 @@ protected:
|
||||
bool m_sector_is_4k;
|
||||
bool m_sector_is_16k;
|
||||
bool m_top_boot_sector;
|
||||
bool m_bot_boot_sector;
|
||||
uint8_t m_page_size;
|
||||
|
||||
// internal state
|
||||
@ -146,10 +148,10 @@ public:
|
||||
intel_28f016s5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class fujitsu_29f160t_device : public intelfsh8_device
|
||||
class fujitsu_29f160te_device : public intelfsh8_device
|
||||
{
|
||||
public:
|
||||
fujitsu_29f160t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
fujitsu_29f160te_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class fujitsu_29f016a_device : public intelfsh8_device
|
||||
@ -158,10 +160,10 @@ public:
|
||||
fujitsu_29f016a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class fujitsu_29dl16x_device : public intelfsh8_device
|
||||
class fujitsu_29dl164bd_device : public intelfsh8_device
|
||||
{
|
||||
public:
|
||||
fujitsu_29dl16x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
fujitsu_29dl164bd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class fujitsu_29lv002tc_device : public intelfsh8_device
|
||||
@ -170,6 +172,12 @@ public:
|
||||
fujitsu_29lv002tc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class fujitsu_29lv800b_device : public intelfsh16_device
|
||||
{
|
||||
public:
|
||||
fujitsu_29lv800b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||
};
|
||||
|
||||
class atmel_29c010_device : public intelfsh8_device
|
||||
{
|
||||
public:
|
||||
@ -370,10 +378,11 @@ DECLARE_DEVICE_TYPE(AMD_29F400T, amd_29f400t_device)
|
||||
DECLARE_DEVICE_TYPE(AMD_29F800T, amd_29f800t_device)
|
||||
DECLARE_DEVICE_TYPE(AMD_29F800B_16BIT, amd_29f800b_16bit_device)
|
||||
DECLARE_DEVICE_TYPE(AMD_29LV200T, amd_29lv200t_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29F160T, fujitsu_29f160t_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29F160TE, fujitsu_29f160te_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29DL16X, fujitsu_29dl16x_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29DL164BD, fujitsu_29dl164bd_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29LV002TC, fujitsu_29lv002tc_device)
|
||||
DECLARE_DEVICE_TYPE(FUJITSU_29LV800B, fujitsu_29lv800b_device)
|
||||
DECLARE_DEVICE_TYPE(INTEL_E28F400B, intel_e28f400b_device)
|
||||
DECLARE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc_device)
|
||||
DECLARE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device)
|
||||
|
@ -947,10 +947,10 @@ void rex6000_state::rex6000(machine_config &config)
|
||||
by the flash emulation and I have split every bank into a separate
|
||||
device in order to have similar behavior.
|
||||
*/
|
||||
FUJITSU_29DL16X(config, m_flash0a); //bank 0 of first flash
|
||||
FUJITSU_29DL16X(config, m_flash0b); //bank 1 of first flash
|
||||
FUJITSU_29DL16X(config, m_flash1a); //bank 0 of second flash
|
||||
FUJITSU_29DL16X(config, m_flash1b); //bank 1 of second flash
|
||||
FUJITSU_29DL164BD(config, m_flash0a); //bank 0 of first flash
|
||||
FUJITSU_29DL164BD(config, m_flash0b); //bank 1 of first flash
|
||||
FUJITSU_29DL164BD(config, m_flash1a); //bank 0 of second flash
|
||||
FUJITSU_29DL164BD(config, m_flash1b); //bank 1 of second flash
|
||||
|
||||
/* internal ram */
|
||||
RAM(config, RAM_TAG).set_default_size("32K");
|
||||
|
@ -716,7 +716,7 @@ void ti85_state::ti83pse(machine_config &config)
|
||||
m_membank[3]->set_map(&ti85_state::ti83pse_banked_mem);
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(ti85_state, ti83pse )
|
||||
FUJITSU_29F160T(config.replace(), m_flash, 0);
|
||||
FUJITSU_29F160TE(config.replace(), m_flash, 0);
|
||||
}
|
||||
|
||||
void ti85_state::ti84p(machine_config &config)
|
||||
|
Loading…
Reference in New Issue
Block a user