summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/intelfsh.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/intelfsh.h')
-rw-r--r--src/devices/machine/intelfsh.h172
1 files changed, 105 insertions, 67 deletions
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index 168b5e7baa0..5db03effe96 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -22,7 +22,7 @@ protected:
intelfsh_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint8_t bits, uint32_t size, uint8_t maker_id, uint16_t device_id);
// device-level overrides
- virtual void device_start() override;
+ virtual void device_start() override ATTR_COLD;
// device_nvram_interface overrides
virtual void nvram_default() override;
@@ -42,12 +42,14 @@ protected:
uint8_t m_bits;
uint32_t m_addrmask;
uint16_t m_device_id;
+ uint16_t m_device_id2;
+ uint16_t m_device_id3;
uint8_t m_maker_id;
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;
+ uint16_t m_page_size;
// internal state
std::unique_ptr<uint8_t[]> m_data;
@@ -57,7 +59,8 @@ protected:
bool m_flash_master_lock;
emu_timer * m_timer;
int32_t m_bank;
- uint8_t m_byte_count;
+ uint16_t m_byte_count;
+ bool m_sdp;
uint8_t m_write_buffer[32];
uint32_t m_write_buffer_start_address;
@@ -136,12 +139,6 @@ 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:
@@ -178,28 +175,22 @@ public:
amd_29f800t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
-class amd_29f800b_16bit_device : public intelfsh16_device
-{
-public:
- amd_29f800b_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
-};
-
class amd_29lv200t_device : public intelfsh8_device
{
public:
amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
-class sharp_lh28f016s_device : public intelfsh8_device
+class atmel_29c020_device : public intelfsh8_device
{
public:
- sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ atmel_29c020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
-class sharp_lh28f016s_16bit_device : public intelfsh16_device
+class sharp_lh28f016s_device : public intelfsh8_device
{
public:
- sharp_lh28f016s_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ sharp_lh28f016s_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
class intel_e28f008sa_device : public intelfsh8_device
@@ -214,6 +205,12 @@ public:
macronix_29f008tc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class macronix_29f1610mc_device : public intelfsh8_device
+{
+public:
+ macronix_29f1610mc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
class macronix_29l001mc_device : public intelfsh8_device
{
public:
@@ -226,6 +223,12 @@ public:
macronix_29lv160tmc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class st_m29w640gb_device : public intelfsh8_device
+{
+public:
+ st_m29w640gb_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
class panasonic_mn63f805mnp_device : public intelfsh8_device
{
public:
@@ -244,6 +247,12 @@ public:
sst_28sf040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class sst_39sf010_device : public intelfsh8_device
+{
+public:
+ sst_39sf010_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
class sst_39sf040_device : public intelfsh8_device
{
public:
@@ -268,6 +277,12 @@ public:
tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class cat28f020_device : public intelfsh8_device
+{
+public:
+ cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
// 16-bit variants
class fujitsu_29f160te_16bit_device : public intelfsh16_device
{
@@ -347,63 +362,86 @@ public:
atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
-class cat28f020_device : public intelfsh8_device
+class tc58fvt800_device : public intelfsh16_device
{
public:
- cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ tc58fvt800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
-class tc58fvt800_device : public intelfsh16_device
+class fujitsu_29lv800b_device : public intelfsh16_device
{
public:
- tc58fvt800_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+ fujitsu_29lv800b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
+class amd_29f800b_16bit_device : public intelfsh16_device
+{
+public:
+ amd_29f800b_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
+class sharp_lh28f016s_16bit_device : public intelfsh16_device
+{
+public:
+ sharp_lh28f016s_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
+class macronix_29f1610mc_16bit_device : public intelfsh16_device
+{
+public:
+ macronix_29f1610mc_16bit_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
// device type definition
-DECLARE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device)
-DECLARE_DEVICE_TYPE(SHARP_LH28F016S, sharp_lh28f016s_device)
-DECLARE_DEVICE_TYPE(SHARP_LH28F016S_16BIT, sharp_lh28f016s_16bit_device)
-DECLARE_DEVICE_TYPE(ATMEL_29C010, atmel_29c010_device)
-DECLARE_DEVICE_TYPE(AMD_29F010, amd_29f010_device)
-DECLARE_DEVICE_TYPE(AMD_29F040, amd_29f040_device)
-DECLARE_DEVICE_TYPE(AMD_29F080, amd_29f080_device)
-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_29F160TE, fujitsu_29f160te_device)
-DECLARE_DEVICE_TYPE(FUJITSU_29F160TE_16BIT,fujitsu_29f160te_16bit_device)
-DECLARE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_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_29F008TC, macronix_29f008tc_device)
-DECLARE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc_device)
-DECLARE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device)
-DECLARE_DEVICE_TYPE(TMS_29F040, tms_29f040_device)
-
-DECLARE_DEVICE_TYPE(PANASONIC_MN63F805MNP, panasonic_mn63f805mnp_device)
-DECLARE_DEVICE_TYPE(SANYO_LE26FV10N1TS, sanyo_le26fv10n1ts_device)
-DECLARE_DEVICE_TYPE(SST_28SF040, sst_28sf040_device)
-DECLARE_DEVICE_TYPE(SST_39SF040, sst_39sf040_device)
-DECLARE_DEVICE_TYPE(SST_39VF020, sst_39vf020_device)
-DECLARE_DEVICE_TYPE(SST_49LF020, sst_49lf020_device)
-
-DECLARE_DEVICE_TYPE(SHARP_LH28F400, sharp_lh28f400_device)
-DECLARE_DEVICE_TYPE(INTEL_E28F008SA, intel_e28f008sa_device)
-DECLARE_DEVICE_TYPE(INTEL_TE28F160, intel_te28f160_device)
-DECLARE_DEVICE_TYPE(SHARP_LH28F160S3, sharp_lh28f160s3_device)
-DECLARE_DEVICE_TYPE(INTEL_TE28F320, intel_te28f320_device)
-DECLARE_DEVICE_TYPE(SPANSION_S29GL064S, spansion_s29gl064s_device)
-DECLARE_DEVICE_TYPE(SHARP_LH28F320BF, sharp_lh28f320bf_device)
-DECLARE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device)
-DECLARE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device)
-DECLARE_DEVICE_TYPE(INTEL_28F640J5, intel_28f640j5_device)
-DECLARE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device)
-DECLARE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device)
-DECLARE_DEVICE_TYPE(CAT28F020, cat28f020_device)
-DECLARE_DEVICE_TYPE(TC58FVT800, tc58fvt800_device)
+DECLARE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F016S, sharp_lh28f016s_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F016S_16BIT, sharp_lh28f016s_16bit_device)
+DECLARE_DEVICE_TYPE(ATMEL_29C010, atmel_29c010_device)
+DECLARE_DEVICE_TYPE(ATMEL_29C020, atmel_29c020_device)
+DECLARE_DEVICE_TYPE(AMD_29F010, amd_29f010_device)
+DECLARE_DEVICE_TYPE(AMD_29F040, amd_29f040_device)
+DECLARE_DEVICE_TYPE(AMD_29F080, amd_29f080_device)
+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_29F160TE, fujitsu_29f160te_device)
+DECLARE_DEVICE_TYPE(FUJITSU_29F160TE_16BIT, fujitsu_29f160te_16bit_device)
+DECLARE_DEVICE_TYPE(FUJITSU_29F016A, fujitsu_29f016a_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_29F008TC, macronix_29f008tc_device)
+DECLARE_DEVICE_TYPE(MACRONIX_29F1610MC, macronix_29f1610mc_device)
+DECLARE_DEVICE_TYPE(MACRONIX_29F1610MC_16BIT,macronix_29f1610mc_16bit_device)
+DECLARE_DEVICE_TYPE(MACRONIX_29L001MC, macronix_29l001mc_device)
+DECLARE_DEVICE_TYPE(MACRONIX_29LV160TMC, macronix_29lv160tmc_device)
+DECLARE_DEVICE_TYPE(ST_M29W640GB, st_m29w640gb_device)
+DECLARE_DEVICE_TYPE(TMS_29F040, tms_29f040_device)
+
+DECLARE_DEVICE_TYPE(PANASONIC_MN63F805MNP, panasonic_mn63f805mnp_device)
+DECLARE_DEVICE_TYPE(SANYO_LE26FV10N1TS, sanyo_le26fv10n1ts_device)
+DECLARE_DEVICE_TYPE(SST_28SF040, sst_28sf040_device)
+DECLARE_DEVICE_TYPE(SST_39SF010, sst_39sf010_device)
+DECLARE_DEVICE_TYPE(SST_39SF040, sst_39sf040_device)
+DECLARE_DEVICE_TYPE(SST_39VF020, sst_39vf020_device)
+DECLARE_DEVICE_TYPE(SST_49LF020, sst_49lf020_device)
+
+DECLARE_DEVICE_TYPE(SHARP_LH28F400, sharp_lh28f400_device)
+DECLARE_DEVICE_TYPE(INTEL_E28F008SA, intel_e28f008sa_device)
+DECLARE_DEVICE_TYPE(INTEL_TE28F160, intel_te28f160_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F160S3, sharp_lh28f160s3_device)
+DECLARE_DEVICE_TYPE(INTEL_TE28F320, intel_te28f320_device)
+DECLARE_DEVICE_TYPE(SPANSION_S29GL064S, spansion_s29gl064s_device)
+DECLARE_DEVICE_TYPE(SHARP_LH28F320BF, sharp_lh28f320bf_device)
+DECLARE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device)
+DECLARE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device)
+DECLARE_DEVICE_TYPE(INTEL_28F640J5, intel_28f640j5_device)
+DECLARE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device)
+DECLARE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device)
+DECLARE_DEVICE_TYPE(CAT28F020, cat28f020_device)
+DECLARE_DEVICE_TYPE(TC58FVT800, tc58fvt800_device)
#endif // MAME_MACHINE_INTELFSH_H