summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit6deb0d35e38ff52dacc0e916e10022eb86b680d7 (patch)
treec4560148ee22381164a15446a9c8a6145fcee6e9
parentec753a153a91622b56e49e7583cfa7ac98d11fd5 (diff)
unixpc.cpp: Add FDC reset; slight conceptual cleanup (nw)
-rw-r--r--src/mame/drivers/unixpc.cpp13
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);