summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/altos8600.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/altos8600.cpp')
-rw-r--r--src/mame/drivers/altos8600.cpp29
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)