diff options
Diffstat (limited to 'src/mame/includes/interpro.h')
-rw-r--r-- | src/mame/includes/interpro.h | 192 |
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 |