summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/it8671f.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/it8671f.cpp')
-rw-r--r--src/devices/machine/it8671f.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/devices/machine/it8671f.cpp b/src/devices/machine/it8671f.cpp
index c911db06bf5..0022e3c34c9 100644
--- a/src/devices/machine/it8671f.cpp
+++ b/src/devices/machine/it8671f.cpp
@@ -221,7 +221,7 @@ void it8661f_device::remap(int space_id, offs_t start, offs_t end)
// can't map below 0x100
if (m_activate[3] & 1 && m_lpt_address & 0xf00)
{
- m_isa->install_device(m_lpt_address, m_lpt_address + 3, read8sm_delegate(*m_lpt, FUNC(pc_lpt_device::read)), write8sm_delegate(*m_lpt, FUNC(pc_lpt_device::write)));
+ m_isa->install_device(m_lpt_address, m_lpt_address + 3, *m_lpt, &pc_lpt_device::isa_map);
}
// TODO: GPIO (with a variable configuration ID because IT8671F moves around)
@@ -236,6 +236,7 @@ void it8661f_device::port_map(address_map &map)
map(0x0a79, 0x0a79).w(FUNC(it8661f_device::pnp_write_data_w));
}
+// TODO: implement extra LFSR writes for ISA PnP mode
void it8661f_device::pnp_address_w(offs_t offset, u8 data)
{
if (m_config_phase == config_phase_t::WAIT_FOR_KEY)
@@ -472,13 +473,16 @@ void it8661f_device::config_map(address_map &map)
m_logical_view[0](0x31, 0x31).rw(FUNC(it8661f_device::iorange_check_r<0>), FUNC(it8661f_device::iorange_check_w<0>));
m_logical_view[0](0x60, 0x61).lrw8(
NAME([this] (offs_t offset) {
- return (m_fdc_address >> (offset * 8)) & 0xff;
+ if (offset)
+ return m_fdc_address & 0xf8;
+
+ return (m_fdc_address >> 8) & 0xf;
}),
NAME([this] (offs_t offset, u8 data) {
const u8 shift = offset * 8;
m_fdc_address &= 0xff << shift;
m_fdc_address |= data << (shift ^ 8);
- m_fdc_address &= ~0xf007;
+ m_fdc_address &= 0x0ff8;
LOG("LDN0 (FDC): remap %04x ([%d] %02x)\n", m_fdc_address, offset, data);
remap(AS_IO, 0, 0xfff);