diff --git a/src/emu/bus/isa/hdc.c b/src/emu/bus/isa/hdc.c index 0d866e4580b..79dc7185d00 100644 --- a/src/emu/bus/isa/hdc.c +++ b/src/emu/bus/isa/hdc.c @@ -149,6 +149,7 @@ INPUT_PORTS_END //************************************************************************** const device_type ISA8_HDC = &device_creator; +const device_type ISA8_HDC_EC1841 = &device_creator; //------------------------------------------------- // machine_config_additions - device-specific @@ -190,6 +191,19 @@ isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t(mconfig, ISA8_HDC, "Fixed Disk Controller Card", tag, owner, clock, "hdc", __FILE__), device_isa8_card_interface(mconfig, *this) { + m_type = STANDARD; +} + +isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_isa8_card_interface(mconfig, *this) +{ +} + +isa8_hdc_ec1841_device::isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + isa8_hdc_device( mconfig, ISA8_HDC_EC1841, "EC1841 HDC", tag, owner, clock, "hdc_ec1841", __FILE__) +{ + m_type = EC1841; } //------------------------------------------------- @@ -750,7 +764,7 @@ void isa8_hdc_device::pc_hdc_data_w(int data) *buffer_ptr++ = data; // XXX ec1841 wants this - if (buffer[0] == CMD_SETPARAM && data_cnt == 9) { + if (buffer[0] == CMD_SETPARAM && data_cnt == 9 && (m_type == EC1841)) { status &= ~STA_READY; } else { status |= STA_READY; diff --git a/src/emu/bus/isa/hdc.h b/src/emu/bus/isa/hdc.h index 7aadb51ea32..7fdf067bc96 100644 --- a/src/emu/bus/isa/hdc.h +++ b/src/emu/bus/isa/hdc.h @@ -25,6 +25,7 @@ class isa8_hdc_device : public: // construction/destruction isa8_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + isa8_hdc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); // optional information overrides virtual machine_config_constructor device_mconfig_additions() const; @@ -89,6 +90,12 @@ protected: void get_drive(); void get_chsn(); int test_ready(); + + enum { + STANDARD, + EC1841 + }; + int m_type; public: void hdc_command(); void pc_hdc_data_w(int data); @@ -101,7 +108,14 @@ public: }; +class isa8_hdc_ec1841_device : public isa8_hdc_device +{ +public: + isa8_hdc_ec1841_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); +}; + // device type definition extern const device_type ISA8_HDC; +extern const device_type ISA8_HDC_EC1841; #endif /* ISA_HDC_H */ diff --git a/src/emu/bus/isa/xsu_cards.c b/src/emu/bus/isa/xsu_cards.c index f32a21ce907..992eaf222d6 100644 --- a/src/emu/bus/isa/xsu_cards.c +++ b/src/emu/bus/isa/xsu_cards.c @@ -48,7 +48,7 @@ SLOT_INTERFACE_START( ec184x_isa8_cards ) SLOT_INTERFACE("ec1841.0004", ISA8_EC1841_0004) // BSC-like serial ports + parallel port */ SLOT_INTERFACE("mda", ISA8_MDA) - SLOT_INTERFACE("hdc", ISA8_HDC) + SLOT_INTERFACE("hdc", ISA8_HDC_EC1841) SLOT_INTERFACE("pccom", ISA8_COM) SLOT_INTERFACE("pclpt", ISA8_LPT) SLOT_INTERFACE("xtide", ISA8_XTIDE)