diff options
Diffstat (limited to 'src/mame/drivers/altos8600.cpp')
-rw-r--r-- | src/mame/drivers/altos8600.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/mame/drivers/altos8600.cpp b/src/mame/drivers/altos8600.cpp index cc0801353e7..c5c5d23867b 100644 --- a/src/mame/drivers/altos8600.cpp +++ b/src/mame/drivers/altos8600.cpp @@ -10,6 +10,7 @@ #include "machine/i8255.h" #include "machine/z80sio.h" #include "machine/wd_fdc.h" +#include "machine/acs8600_ics.h" #include "bus/rs232/rs232.h" class altos8600_state : public driver_device @@ -25,6 +26,7 @@ public: m_uart8274(*this, "uart8274"), m_fdc(*this, "fd1797"), m_ram(*this, RAM_TAG), + m_ics(*this, "ics"), m_bios(*this, "bios") {} DECLARE_READ16_MEMBER(cpuram_r); @@ -55,8 +57,8 @@ public: DECLARE_WRITE8_MEMBER(romport_w); DECLARE_WRITE16_MEMBER(mode_w); DECLARE_WRITE_LINE_MEMBER(cpuif_w); - DECLARE_WRITE_LINE_MEMBER(tmr0_w); DECLARE_WRITE_LINE_MEMBER(fddrq_w); + DECLARE_WRITE8_MEMBER(ics_attn_w); protected: virtual void machine_start() override; virtual void machine_reset() override; @@ -73,6 +75,7 @@ private: required_device<i8274_new_device> m_uart8274; required_device<fd1797_device> m_fdc; required_device<ram_device> m_ram; + required_device<acs8600_ics_device> m_ics; required_memory_region m_bios; u8 m_mmuaddr[256], m_romport[4], m_dmamplex; u16 m_mmuflags[256], m_mmuerr, m_mode, m_mmueaddr[2]; @@ -93,12 +96,6 @@ void altos8600_state::machine_reset() m_nmistat = false; } -WRITE_LINE_MEMBER(altos8600_state::tmr0_w) -{ - m_uart8274->rxca_w(state); - m_uart8274->txca_w(state); -} - WRITE_LINE_MEMBER(altos8600_state::cpuif_w) { if(m_user) @@ -218,6 +215,15 @@ WRITE8_MEMBER(altos8600_state::romport_w) } } +WRITE8_MEMBER(altos8600_state::ics_attn_w) +{ + if(!offset) + { + m_ics->attn_w(ASSERT_LINE); + m_ics->attn_w(CLEAR_LINE); + } +} + WRITE16_MEMBER(altos8600_state::mode_w) { m_mode = data; @@ -420,6 +426,7 @@ static ADDRESS_MAP_START(dmac_io, AS_IO, 16, altos8600_state) AM_RANGE(0x0060, 0x0067) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0x00ff) AM_RANGE(0x0068, 0x006f) AM_DEVREADWRITE8("pic8259_3", pic8259_device, read, write, 0x00ff) AM_RANGE(0x0070, 0x0077) AM_NOP + AM_RANGE(0x0078, 0x0079) AM_WRITE8(ics_attn_w, 0xffff) AM_RANGE(0x0200, 0x03ff) AM_READWRITE(mmuflags_r, mmuflags_w) AM_RANGE(0x0400, 0x05ff) AM_READWRITE(mmuaddr_r, mmuaddr_w) AM_RANGE(0x0000, 0xffff) AM_READWRITE(nmi_r, nmi_w) @@ -497,7 +504,8 @@ static MACHINE_CONFIG_START(altos8600) MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_PIT8253_CLK0(1228800) - MCFG_PIT8253_OUT0_HANDLER(WRITELINE(altos8600_state, tmr0_w)) + MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, rxca_w)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart8274", i8274_new_device, txca_w)) MCFG_PIT8253_CLK1(1228800) MCFG_PIT8253_OUT1_HANDLER(DEVWRITELINE("uart8274", i8274_new_device, rxtxcb_w)) MCFG_PIT8253_CLK2(1228800) @@ -510,6 +518,11 @@ static MACHINE_CONFIG_START(altos8600) MCFG_FLOPPY_DRIVE_ADD("fd1797:1", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fd1797:2", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fd1797:3", altos8600_floppies, "8dd", floppy_image_device::default_floppy_formats) + + MCFG_DEVICE_ADD("ics", ACS8600_ICS, 0) + MCFG_ACS8600_ICS_MAINCPU(":maincpu") + MCFG_ACS8600_ICS_IRQ1(DEVWRITELINE("pic8259_1", pic8259_device, ir5_w)) + MCFG_ACS8600_ICS_IRQ2(DEVWRITELINE("pic8259_1", pic8259_device, ir6_w)) MACHINE_CONFIG_END ROM_START(altos8600) |