From 1d5063a8c3391d1dd168e1380372181c35711406 Mon Sep 17 00:00:00 2001 From: angelosa Date: Sat, 2 Mar 2024 17:35:17 +0100 Subject: [PATCH] machine/sis85c496: fix PIC and RTC mapping --- src/devices/machine/sis85c496.cpp | 12 ++++++------ src/devices/machine/sis85c496.h | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/devices/machine/sis85c496.cpp b/src/devices/machine/sis85c496.cpp index 45cc3c9ae66..4a6f494229f 100644 --- a/src/devices/machine/sis85c496.cpp +++ b/src/devices/machine/sis85c496.cpp @@ -43,14 +43,15 @@ void sis85c496_host_device::internal_io_map(address_map &map) { pci_host_device::io_configuration_access_map(map); map(0x0000, 0x001f).rw("dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); - map(0x0020, 0x003f).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x0020, 0x0021).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); +// map(0x0022, 0x0023) 85C497 super I/O map(0x0040, 0x005f).rw("pit8254", FUNC(pit8254_device::read), FUNC(pit8254_device::write)); map(0x0060, 0x0063).rw(FUNC(sis85c496_host_device::at_keybc_r), FUNC(sis85c496_host_device::at_keybc_w)); map(0x0064, 0x0067).rw("keybc", FUNC(at_keyboard_controller_device::status_r), FUNC(at_keyboard_controller_device::command_w)); - map(0x0070, 0x007f).w(FUNC(sis85c496_host_device::rtc_nmi_w)).umask32(0x00ff00ff); - map(0x0070, 0x007f).rw("rtc", FUNC(ds12885_device::data_r), FUNC(ds12885_device::data_w)).umask32(0xff00ff00); + map(0x0070, 0x0070).lr8(NAME([this] () { return m_ds12885->get_address(); })).w(FUNC(sis85c496_host_device::rtc_address_nmi_w)); + map(0x0071, 0x0071).rw("rtc", FUNC(ds12885_device::data_r), FUNC(ds12885_device::data_w)); map(0x0080, 0x009f).rw(FUNC(sis85c496_host_device::at_page8_r), FUNC(sis85c496_host_device::at_page8_w)); - map(0x00a0, 0x00bf).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); + map(0x00a0, 0x00a1).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)); map(0x00c0, 0x00df).rw(FUNC(sis85c496_host_device::at_dma8237_2_r), FUNC(sis85c496_host_device::at_dma8237_2_w)); map(0x00e0, 0x00ef).noprw(); } @@ -617,8 +618,7 @@ void sis85c496_host_device::at_keybc_w(offs_t offset, uint8_t data) } } - -void sis85c496_host_device::rtc_nmi_w(uint8_t data) +void sis85c496_host_device::rtc_address_nmi_w(uint8_t data) { m_nmi_enabled = BIT(data,7); //m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0)); diff --git a/src/devices/machine/sis85c496.h b/src/devices/machine/sis85c496.h index 1636b2177e0..2a5ec791dba 100644 --- a/src/devices/machine/sis85c496.h +++ b/src/devices/machine/sis85c496.h @@ -152,7 +152,8 @@ private: void at_dma8237_2_w(offs_t offset, uint8_t data); uint8_t at_keybc_r(offs_t offset); void at_keybc_w(offs_t offset, uint8_t data); - void rtc_nmi_w(uint8_t data); + u8 rtc_address_r(); + void rtc_address_nmi_w(uint8_t data); uint8_t pc_dma_read_byte(offs_t offset); void pc_dma_write_byte(offs_t offset, uint8_t data); uint8_t pc_dma_read_word(offs_t offset);