summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/p1_fdc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/isa/p1_fdc.cpp')
-rw-r--r--src/devices/bus/isa/p1_fdc.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp
index 9b62451e65a..651262b4110 100644
--- a/src/devices/bus/isa/p1_fdc.cpp
+++ b/src/devices/bus/isa/p1_fdc.cpp
@@ -10,7 +10,6 @@
#include "p1_fdc.h"
#include "cpu/i86/i86.h"
-#include "formats/pc_dsk.h"
//**************************************************************************
@@ -19,10 +18,6 @@
DEFINE_DEVICE_TYPE(P1_FDC, p1_fdc_device, "p1_fdc", "Poisk-1 floppy B504")
-FLOPPY_FORMATS_MEMBER( p1_fdc_device::floppy_formats )
- FLOPPY_PC_FORMAT
-FLOPPY_FORMATS_END
-
static void poisk1_floppies(device_slot_interface &device)
{
device.option_add("525qd", FLOPPY_525_QD);
@@ -55,8 +50,8 @@ void p1_fdc_device::device_add_mconfig(machine_config &config)
FD1793(config, m_fdc, 16_MHz_XTAL / 16);
m_fdc->intrq_wr_callback().set(FUNC(p1_fdc_device::p1_fdc_irq_drq));
m_fdc->drq_wr_callback().set(FUNC(p1_fdc_device::p1_fdc_irq_drq));
- FLOPPY_CONNECTOR(config, "fdc:0", poisk1_floppies, "525qd", p1_fdc_device::floppy_formats);
- FLOPPY_CONNECTOR(config, "fdc:1", poisk1_floppies, "525qd", p1_fdc_device::floppy_formats);
+ FLOPPY_CONNECTOR(config, "fdc:0", poisk1_floppies, "525qd", floppy_image_device::default_pc_floppy_formats);
+ FLOPPY_CONNECTOR(config, "fdc:1", poisk1_floppies, "525qd", floppy_image_device::default_pc_floppy_formats);
}
//-------------------------------------------------
@@ -81,13 +76,11 @@ uint8_t p1_fdc_device::p1_wd17xx_motor_r()
uint8_t p1_fdc_device::p1_wd17xx_aux_r()
{
- cpu_device *maincpu = machine().device<cpu_device>("maincpu");
-
if (!m_fdc->drq_r() && !m_fdc->intrq_r())
{
// fake cpu wait by resetting PC one insn back
- maincpu->set_state_int(I8086_IP, maincpu->state_int(I8086_IP) - 2);
- maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_cpu->set_state_int(I8086_IP, m_cpu->state_int(I8086_IP) - 2);
+ m_isa->set_ready(ASSERT_LINE); // assert I/O CH RDY
}
return m_fdc->drq_r();
@@ -109,7 +102,8 @@ void p1_fdc_device::p1_wd17xx_aux_w(int data)
floppy_image_device *floppy1 = m_fdc->subdevice<floppy_connector>("1")->get_device();
floppy_image_device *floppy = ((data & 2) ? floppy1 : floppy0);
- if (!BIT(data, 6)) m_fdc->reset();
+ if (!BIT(data, 6))
+ m_fdc->reset();
m_fdc->set_floppy(floppy);
@@ -120,14 +114,13 @@ void p1_fdc_device::p1_wd17xx_aux_w(int data)
floppy1->mon_w(!(data & 8));
}
-WRITE_LINE_MEMBER(p1_fdc_device::p1_fdc_irq_drq)
+void p1_fdc_device::p1_fdc_irq_drq(int state)
{
- cpu_device *maincpu = machine().device<cpu_device>("maincpu");
-
- if (state) maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ if (state)
+ m_isa->set_ready(CLEAR_LINE); // deassert I/O CH RDY
}
-READ8_MEMBER(p1_fdc_device::p1_fdc_r)
+uint8_t p1_fdc_device::p1_fdc_r(offs_t offset)
{
uint8_t data = 0xff;
@@ -144,7 +137,7 @@ READ8_MEMBER(p1_fdc_device::p1_fdc_r)
return data;
}
-WRITE8_MEMBER(p1_fdc_device::p1_fdc_w)
+void p1_fdc_device::p1_fdc_w(offs_t offset, uint8_t data)
{
switch (offset)
{
@@ -162,6 +155,7 @@ p1_fdc_device::p1_fdc_device(const machine_config &mconfig, const char *tag, dev
: device_t(mconfig, P1_FDC, tag, owner, clock)
, device_isa8_card_interface(mconfig, *this)
, m_fdc(*this, "fdc")
+ , m_cpu(*this, finder_base::DUMMY_TAG)
{
}
@@ -173,11 +167,9 @@ p1_fdc_device::p1_fdc_device(const machine_config &mconfig, const char *tag, dev
void p1_fdc_device::device_start()
{
set_isa_device();
- m_isa->install_rom(this, 0xe0000, 0xe07ff, "XXX", "p1_fdc");
- m_isa->install_device(0x00c0, 0x00c3,
- read8sm_delegate(FUNC(fd1793_device::read), m_fdc.target()),
- write8sm_delegate(FUNC(fd1793_device::write), m_fdc.target()));
- m_isa->install_device(0x00c4, 0x00c7, read8_delegate( FUNC(p1_fdc_device::p1_fdc_r), this ), write8_delegate( FUNC(p1_fdc_device::p1_fdc_w), this ) );
+ m_isa->install_rom(this, 0xe0000, 0xe07ff, "p1_fdc");
+ m_isa->install_device(0x00c0, 0x00c3, read8sm_delegate(*m_fdc, FUNC(fd1793_device::read)), write8sm_delegate(*m_fdc, FUNC(fd1793_device::write)));
+ m_isa->install_device(0x00c4, 0x00c7, read8sm_delegate(*this, FUNC(p1_fdc_device::p1_fdc_r)), write8sm_delegate(*this, FUNC(p1_fdc_device::p1_fdc_w)));
}