diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2019-06-02 00:25:37 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2019-06-02 00:25:41 -0400 |
commit | 6deb0d35e38ff52dacc0e916e10022eb86b680d7 (patch) | |
tree | c4560148ee22381164a15446a9c8a6145fcee6e9 | |
parent | ec753a153a91622b56e49e7583cfa7ac98d11fd5 (diff) |
unixpc.cpp: Add FDC reset; slight conceptual cleanup (nw)
-rw-r--r-- | src/mame/drivers/unixpc.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/mame/drivers/unixpc.cpp b/src/mame/drivers/unixpc.cpp index 78f552b3caa..afabad85aba 100644 --- a/src/mame/drivers/unixpc.cpp +++ b/src/mame/drivers/unixpc.cpp @@ -69,7 +69,7 @@ private: virtual void machine_reset() override; DECLARE_READ16_MEMBER(line_printer_r); - DECLARE_WRITE16_MEMBER(disk_control_w); + void disk_control_w(uint8_t data); DECLARE_WRITE16_MEMBER(gcr_w); DECLARE_WRITE_LINE_MEMBER(romlmap_w); DECLARE_WRITE_LINE_MEMBER(error_enable_w); @@ -159,8 +159,7 @@ void unixpc_state::machine_start() void unixpc_state::machine_reset() { - // force ROM into lower mem on reset - m_ramrombank->set_bank(0); + disk_control_w(0); } WRITE_LINE_MEMBER(unixpc_state::error_enable_w) @@ -257,9 +256,9 @@ WRITE16_MEMBER(unixpc_state::diskdma_ptr_w) FLOPPY ***************************************************************************/ -WRITE16_MEMBER(unixpc_state::disk_control_w) +void unixpc_state::disk_control_w(uint8_t data) { - logerror("disk_control_w: %04x\n", data); + logerror("disk_control_w: %02x\n", data); // TODO: bits 0-2 = head select @@ -275,6 +274,8 @@ WRITE16_MEMBER(unixpc_state::disk_control_w) m_wd2797->set_floppy(m_floppy); else m_wd2797->set_floppy(nullptr); + + m_wd2797->mr_w(BIT(data, 7)); } WRITE_LINE_MEMBER(unixpc_state::wd2797_intrq_w) @@ -331,7 +332,7 @@ void unixpc_state::unixpc_mem(address_map &map) map(0x490000, 0x490001).select(0x7000).w(FUNC(unixpc_state::tcr_w)); map(0x4a0000, 0x4a0000).w("mreg", FUNC(output_latch_device::bus_w)); map(0x4d0000, 0x4d7fff).w(FUNC(unixpc_state::diskdma_ptr_w)); - map(0x4e0000, 0x4e0001).w(FUNC(unixpc_state::disk_control_w)); + map(0x4e0001, 0x4e0001).w(FUNC(unixpc_state::disk_control_w)).cswidth(16); map(0x4f0001, 0x4f0001).w("printlatch", FUNC(output_latch_device::bus_w)); map(0xe00000, 0xe0000f).rw(m_hdc, FUNC(wd1010_device::read), FUNC(wd1010_device::write)).umask16(0x00ff); map(0xe10000, 0xe10007).rw(m_wd2797, FUNC(wd_fdc_device_base::read), FUNC(wd_fdc_device_base::write)).umask16(0x00ff); |