summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/interpro.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/interpro.h')
-rw-r--r--src/mame/includes/interpro.h192
1 files changed, 139 insertions, 53 deletions
diff --git a/src/mame/includes/interpro.h b/src/mame/includes/interpro.h
index 0832f3bcc36..0dac4f4403b 100644
--- a/src/mame/includes/interpro.h
+++ b/src/mame/includes/interpro.h
@@ -79,7 +79,7 @@ public:
, m_scsibus(*this, INTERPRO_SCSI_TAG)
, m_eth(*this, INTERPRO_ETH_TAG)
, m_ioga(*this, INTERPRO_IOGA_TAG)
- , m_led(*this, "digit0")
+ , m_diag_led(*this, "digit0")
{
}
@@ -98,7 +98,10 @@ public:
void init_common();
- enum sreg_error_mask
+ virtual DECLARE_READ32_MEMBER(unmapped_r);
+ virtual DECLARE_WRITE32_MEMBER(unmapped_w);
+
+ enum error_mask : u16
{
ERROR_BPID4 = 0x0001,
ERROR_SRXMMBE = 0x0002,
@@ -110,11 +113,11 @@ public:
ERROR_BG = 0x0070,
ERROR_BUSHOG = 0x0080
};
- DECLARE_READ16_MEMBER(sreg_error_r);
+ DECLARE_READ16_MEMBER(error_r);
- DECLARE_WRITE16_MEMBER(sreg_led_w);
+ DECLARE_WRITE16_MEMBER(led_w);
- enum sreg_status_mask
+ enum status_mask : u16
{
STATUS_YELLOW_ZONE = 0x0001,
STATUS_SRNMI = 0x0002,
@@ -122,38 +125,12 @@ public:
STATUS_RED_ZONE = 0x0008,
STATUS_BP = 0x00f0
};
- DECLARE_READ16_MEMBER(sreg_status_r) { return m_sreg_status; }
+ DECLARE_READ16_MEMBER(status_r) { return m_status; }
- enum sreg_ctrl1_mask
- {
- CTRL1_FLOPLOW = 0x0001, // 0 = 5.25" floppy selected
- CTRL1_FLOPRDY = 0x0002, // 1 = plotter fifo empty?
- CTRL1_LEDENA = 0x0004, // 0 = led display disabled
- CTRL1_LEDDP = 0x0008, // 0 = led right decimal point disabled
- CTRL1_ETHLOOP = 0x0010, // 1 = mmbe enabled
- CTRL1_ETHDTR = 0x0020, // 0 = modem dtr pin activated
- CTRL1_ETHRMOD = 0x0040, // 0 = sytem configured for remote modems
- CTRL1_FIFOACTIVE = 0x0080 // 0 = plotter fifos reset
- };
- DECLARE_READ16_MEMBER(sreg_ctrl1_r) { return m_sreg_ctrl1; }
- DECLARE_WRITE16_MEMBER(sreg_ctrl1_w);
-
- enum sreg_ctrl2_mask
- {
- CTRL2_PWRUP = 0x0003, // 3 = power supply voltage adjusted up by 5%
- CTRL2_HOLDOFF = 0x0004, // 0 = power supply will shut down 0.33 seconds after switch is turned off
- CTRL2_EXTNMIENA = 0x0008, // 0 = power nmi disabled
- CTRL2_COLDSTART = 0x0010, // 1 = cold start flag
- CTRL2_RESET = 0x0020, // 0 = soft reset
- CTRL2_BUSENA = 0x0040, // 0 = clear bus grant error
- CTRL2_FLASHEN = 0x0080, // 0 = flash eprom writes disabled
-
- CTRL2_MASK = 0x004d
- };
- DECLARE_READ16_MEMBER(sreg_ctrl2_r) { return m_sreg_ctrl2; }
- virtual DECLARE_WRITE16_MEMBER(sreg_ctrl2_w);
- DECLARE_READ16_MEMBER(sreg_ctrl3_r) { return m_sreg_ctrl3; }
- DECLARE_WRITE16_MEMBER(sreg_ctrl3_w) { m_sreg_ctrl3 = data; }
+ virtual DECLARE_READ16_MEMBER(ctrl1_r) = 0;
+ virtual DECLARE_WRITE16_MEMBER(ctrl1_w) = 0;
+ virtual DECLARE_READ16_MEMBER(ctrl2_r) = 0;
+ virtual DECLARE_WRITE16_MEMBER(ctrl2_w) = 0;
DECLARE_READ8_MEMBER(nodeid_r);
@@ -164,6 +141,7 @@ public:
void interpro_scc2(machine_config &config);
void interpro(machine_config &config);
static void interpro_scsi_adapter(device_t *device);
+ static void interpro_cdrom(device_t *device);
void interpro_boot_map(address_map &map);
void interpro_common_map(address_map &map);
@@ -171,16 +149,12 @@ protected:
virtual void machine_start() override;
virtual void machine_reset() override;
- output_finder<> m_led;
+ output_finder<> m_diag_led;
emu_timer *m_reset_timer;
- u16 m_sreg_error;
- u16 m_sreg_status;
- u16 m_sreg_led;
- u16 m_sreg_ctrl1;
- u16 m_sreg_ctrl2;
-
- u16 m_sreg_ctrl3;
+ u16 m_error;
+ u16 m_status;
+ u16 m_led;
};
class emerald_state : public interpro_state
@@ -194,7 +168,38 @@ public:
{
}
- DECLARE_WRITE8_MEMBER(sreg_error_w) { m_sreg_error = data; }
+ DECLARE_WRITE8_MEMBER(error_w) { m_error = data; }
+
+ enum ctrl1_mask : u16
+ {
+ CTRL1_FLOPLOW = 0x0001, // 3.5" floppy select
+ CTRL1_FLOPRDY = 0x0002, // floppy ready enable?
+ CTRL1_LEDENA = 0x0004, // led display enable
+ CTRL1_LEDDP = 0x0008, // led right decimal point enable
+ CTRL1_ETHLOOP = 0x0010, // ethernet loopback enable?
+ CTRL1_ETHDTR = 0x0020, // modem dtr pin enable?
+ CTRL1_ETHRMOD = 0x0040, // remote modem configured (read)?
+ CTRL1_CLIPRESET = 0x0040, // hard reset (write)?
+ CTRL1_FIFOACTIVE = 0x0080 // plotter fifo active?
+ };
+ DECLARE_READ16_MEMBER(ctrl1_r) override { return m_ctrl1; }
+ DECLARE_WRITE16_MEMBER(ctrl1_w) override;
+
+ enum ctrl2_mask : u16
+ {
+ CTRL2_PWRUP = 0x0001, // power supply voltage adjust?
+ CRTL2_PWRENA = 0x0002, // ?
+ CTRL2_HOLDOFF = 0x0004, // power supply shut down delay
+ CTRL2_EXTNMIENA = 0x0008, // power nmi enable
+ CTRL2_COLDSTART = 0x0010, // cold start flag
+ CTRL2_RESET = 0x0020, // soft reset
+ CTRL2_BUSENA = 0x0040, // clear bus grant error
+ CTRL2_FRCPARITY = 0x0080, // ?
+
+ CTRL2_WMASK = 0x000f
+ };
+ DECLARE_READ16_MEMBER(ctrl2_r) override { return m_ctrl2; }
+ DECLARE_WRITE16_MEMBER(ctrl2_w) override;
required_device<cammu_c3_device> m_d_cammu;
required_device<cammu_c3_device> m_i_cammu;
@@ -206,6 +211,14 @@ public:
void emerald_base_map(address_map &map);
void emerald_main_map(address_map &map);
void emerald_io_map(address_map &map);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ u16 m_ctrl1;
+ u16 m_ctrl2;
};
class turquoise_state : public interpro_state
@@ -219,7 +232,38 @@ public:
{
}
- DECLARE_WRITE8_MEMBER(sreg_error_w) { m_sreg_error = data; }
+ DECLARE_WRITE8_MEMBER(error_w) { m_error = data; }
+
+ enum ctrl1_mask : u16
+ {
+ CTRL1_FLOPLOW = 0x0001, // 3.5" floppy select
+ CTRL1_FLOPRDY = 0x0002, // floppy ready enable?
+ CTRL1_LEDENA = 0x0004, // led display enable
+ CTRL1_LEDDP = 0x0008, // led right decimal point enable
+ CTRL1_ETHLOOP = 0x0010, // ethernet loopback enable?
+ CTRL1_ETHDTR = 0x0020, // modem dtr pin enable?
+ CTRL1_ETHRMOD = 0x0040, // remote modem configured (read)?
+ CTRL1_CLIPRESET = 0x0040, // hard reset (write)?
+ CTRL1_FIFOACTIVE = 0x0080 // plotter fifo active?
+ };
+ DECLARE_READ16_MEMBER(ctrl1_r) override { return m_ctrl1; }
+ DECLARE_WRITE16_MEMBER(ctrl1_w) override;
+
+ enum ctrl2_mask : u16
+ {
+ CTRL2_PWRUP = 0x0001, // power supply voltage adjust?
+ CRTL2_PWRENA = 0x0002, // ?
+ CTRL2_HOLDOFF = 0x0004, // power supply shut down delay
+ CTRL2_EXTNMIENA = 0x0008, // power nmi enable
+ CTRL2_COLDSTART = 0x0010, // cold start flag
+ CTRL2_RESET = 0x0020, // soft reset
+ CTRL2_BUSENA = 0x0040, // clear bus grant error
+ CTRL2_FRCPARITY = 0x0080, // ?
+
+ CTRL2_WMASK = 0x000f
+ };
+ DECLARE_READ16_MEMBER(ctrl2_r) override { return m_ctrl2; }
+ DECLARE_WRITE16_MEMBER(ctrl2_w) override;
required_device<cammu_c3_device> m_d_cammu;
required_device<cammu_c3_device> m_i_cammu;
@@ -231,6 +275,14 @@ public:
void turquoise_base_map(address_map &map);
void turquoise_main_map(address_map &map);
void turquoise_io_map(address_map &map);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ u16 m_ctrl1;
+ u16 m_ctrl2;
};
class sapphire_state : public interpro_state
@@ -241,20 +293,46 @@ public:
, m_mmu(*this, INTERPRO_MMU_TAG)
, m_scsi(*this, INTERPRO_SCSI_DEVICE_TAG)
, m_arbga(*this, INTERPRO_ARBGA_TAG)
- , m_flash_lo(*this, INTERPRO_FLASH_TAG "_lo")
- , m_flash_hi(*this, INTERPRO_FLASH_TAG "_hi")
+ , m_flash_lsb(*this, INTERPRO_FLASH_TAG "_lsb")
+ , m_flash_msb(*this, INTERPRO_FLASH_TAG "_msb")
{
}
- virtual DECLARE_WRITE16_MEMBER(sreg_ctrl2_w) override;
- DECLARE_READ32_MEMBER(unmapped_r);
- DECLARE_WRITE32_MEMBER(unmapped_w);
+ virtual DECLARE_READ32_MEMBER(unmapped_r) override;
+ virtual DECLARE_WRITE32_MEMBER(unmapped_w) override;
+
+ enum ctrl1_mask : u16
+ {
+ CTRL1_FLOPLOW = 0x0001, // 3.5" floppy select
+ // unused
+ CTRL1_LEDENA = 0x0004, // led display enable
+ CTRL1_LEDDP = 0x0008, // led right decimal point enable
+ CTRL1_MMBE = 0x0010, // mmbe enable
+ CTRL1_ETHDTR = 0x0020, // modem dtr pin enable
+ CTRL1_ETHRMOD = 0x0040, // 0 = sytem configured for remote modems
+ CTRL1_FIFOACTIVE = 0x0080 // 0 = plotter fifos reset
+ };
+ DECLARE_READ16_MEMBER(ctrl1_r) override { return m_ctrl1; }
+ DECLARE_WRITE16_MEMBER(ctrl1_w) override;
+
+ enum ctrl2_mask : u16
+ {
+ CTRL2_PWRUP = 0x0003, // power supply voltage adjust
+ CTRL2_HOLDOFF = 0x0004, // power supply shut down delay
+ CTRL2_EXTNMIENA = 0x0008, // power nmi enable
+ CTRL2_COLDSTART = 0x0010, // cold start flag
+ CTRL2_RESET = 0x0020, // soft reset
+ CTRL2_BUSENA = 0x0040, // clear bus grant error
+ CTRL2_FLASHEN = 0x0080, // flash eprom write enable
+ };
+ DECLARE_READ16_MEMBER(ctrl2_r) override { return m_ctrl2; }
+ DECLARE_WRITE16_MEMBER(ctrl2_w) override;
required_device<cammu_c4_device> m_mmu;
required_device<ncr53c94_device> m_scsi;
required_device<interpro_arbga_device> m_arbga;
- required_device<intel_28f010_device> m_flash_lo;
- required_device<intel_28f010_device> m_flash_hi;
+ required_device<intel_28f010_device> m_flash_lsb;
+ required_device<intel_28f010_device> m_flash_msb;
void sapphire(machine_config &config);
void ip2500(machine_config &config);
@@ -269,6 +347,14 @@ public:
void sapphire_base_map(address_map &map);
void sapphire_main_map(address_map &map);
void sapphire_io_map(address_map &map);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+private:
+ u16 m_ctrl1;
+ u16 m_ctrl2;
};
#endif // MAME_INCLUDES_INTERPRO_H