diff options
Diffstat (limited to 'src/devices/bus/isa/p1_fdc.cpp')
-rw-r--r-- | src/devices/bus/isa/p1_fdc.cpp | 38 |
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))); } |