From dbdef6bf0b943738ad2a3b6b95019942d6151d9c Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Sat, 29 Mar 2014 21:51:12 +0400 Subject: isa_hdc: add DIPs, make ROM optional --- src/emu/bus/isa/hdc.c | 37 +++++++++++++++++++++++++++++++++++-- src/emu/bus/isa/hdc.h | 2 ++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/emu/bus/isa/hdc.c b/src/emu/bus/isa/hdc.c index 59ff19d3432..68fee6cce57 100644 --- a/src/emu/bus/isa/hdc.c +++ b/src/emu/bus/isa/hdc.c @@ -121,6 +121,29 @@ ROM_START( hdc ) ROM_LOAD("wdbios.rom", 0x00000, 0x02000, CRC(8e9e2bd4) SHA1(601d7ceab282394ebab50763c267e915a6a2166a)) /* WDC IDE Superbios 2.0 (06/28/89) Expansion Rom C8000-C9FFF */ ROM_END +static INPUT_PORTS_START( isa_hdc ) + PORT_START("HDD") + PORT_BIT( 0xb0, 0xb0, IPT_UNUSED ) + PORT_DIPNAME( 0x40, 0x40, "IRQ level") + PORT_DIPSETTING( 0x40, "5" ) + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPNAME( 0x0c, 0x0c, "Type of 1st drive") + PORT_DIPSETTING( 0x0c, "0" ) + PORT_DIPSETTING( 0x08, "1" ) + PORT_DIPSETTING( 0x04, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPNAME( 0x03, 0x03, "Type of 2nd drive") + PORT_DIPSETTING( 0x03, "0" ) + PORT_DIPSETTING( 0x02, "1" ) + PORT_DIPSETTING( 0x01, "2" ) + PORT_DIPSETTING( 0x00, "3" ) + + PORT_START("ROM") + PORT_DIPNAME( 0x01, 0x01, "Install ROM?") + PORT_DIPSETTING( 0x01, DEF_STR(Yes) ) + PORT_DIPSETTING( 0x00, DEF_STR(No) ) +INPUT_PORTS_END + //************************************************************************** // GLOBAL VARIABLES //************************************************************************** @@ -146,6 +169,15 @@ const rom_entry *isa8_hdc_device::device_rom_region() const return ROM_NAME( hdc ); } +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor isa8_hdc_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( isa_hdc ); +} + //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -167,7 +199,6 @@ isa8_hdc_device::isa8_hdc_device(const machine_config &mconfig, const char *tag, void isa8_hdc_device::device_start() { set_isa_device(); - m_isa->install_rom(this, 0xc8000, 0xc9fff, 0, 0, "hdc", "hdc"); m_isa->install_device(0x0320, 0x0323, 0, 0, read8_delegate( FUNC(isa8_hdc_device::pc_hdc_r), this ), write8_delegate( FUNC(isa8_hdc_device::pc_hdc_w), this ) ); m_isa->set_dma_channel(3, this, FALSE); buffer.resize(17*4*512); @@ -203,8 +234,10 @@ void isa8_hdc_device::device_reset() csb = 0; status = 0; error = 0; - dip = 0xff; + dip = ioport("HDD")->read(); + if (ioport("ROM")->read() == 1) + m_isa->install_rom(this, 0xc8000, 0xc9fff, 0, 0, "hdc", "hdc"); } hard_disk_file *isa8_hdc_device::pc_hdc_file(int id) diff --git a/src/emu/bus/isa/hdc.h b/src/emu/bus/isa/hdc.h index 0f9118dafa4..71ba0710c3b 100644 --- a/src/emu/bus/isa/hdc.h +++ b/src/emu/bus/isa/hdc.h @@ -31,6 +31,8 @@ public: virtual const rom_entry *device_rom_region() const; DECLARE_READ8_MEMBER(pc_hdc_r); DECLARE_WRITE8_MEMBER(pc_hdc_w); + virtual ioport_constructor device_input_ports() const; + protected: // device-level overrides virtual void device_start(); -- cgit v1.2.3