summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2014-10-27 09:37:57 -0500
committer cracyc <cracyc@users.noreply.github.com>2014-10-27 09:37:57 -0500
commit1e49bea0a57d1ef85b7b08650b6ae9ed54c19b0c (patch)
tree290d85964a52bf875afab46bbd8a14834bd42752
parent88d9135bac5226fa1b35955f52f7e87b42e6346c (diff)
(mess) hdc: xenix 8086 hates this so isolate it (nw)
-rw-r--r--src/emu/bus/isa/hdc.c16
-rw-r--r--src/emu/bus/isa/hdc.h14
-rw-r--r--src/emu/bus/isa/xsu_cards.c2
3 files changed, 30 insertions, 2 deletions
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<isa8_hdc_device>;
+const device_type ISA8_HDC_EC1841 = &device_creator<isa8_hdc_ec1841_device>;
//-------------------------------------------------
// 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)