summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/sun1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/sun1.cpp')
-rw-r--r--src/mame/drivers/sun1.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/mame/drivers/sun1.cpp b/src/mame/drivers/sun1.cpp
index a9bd3436faf..a43554c4cc0 100644
--- a/src/mame/drivers/sun1.cpp
+++ b/src/mame/drivers/sun1.cpp
@@ -52,6 +52,7 @@
#include "emu.h"
#include "bus/rs232/rs232.h"
#include "cpu/m68000/m68000.h"
+#include "machine/am9513.h"
#include "machine/z80sio.h"
@@ -79,8 +80,8 @@ static ADDRESS_MAP_START(sun1_mem, AS_PROGRAM, 16, sun1_state)
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // 512 KB RAM / ROM at boot
AM_RANGE(0x00200000, 0x00203fff) AM_ROM AM_REGION("user1",0)
- AM_RANGE(0x00600000, 0x006000ff) AM_DEVREADWRITE8("iouart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00)
- AM_RANGE(0x00800000, 0x008000ff) AM_UNMAP // AM9513 timer at 5MHz
+ AM_RANGE(0x00600000, 0x00600007) AM_MIRROR(0x1ffff8) AM_DEVREADWRITE8("iouart", upd7201_new_device, ba_cd_r, ba_cd_w, 0xff00)
+ AM_RANGE(0x00800000, 0x00800003) AM_MIRROR(0x1ffffc) AM_DEVREADWRITE("timer", am9513_device, read16, write16)
AM_RANGE(0x00a00000, 0x00bfffff) AM_UNMAP // page map
AM_RANGE(0x00c00000, 0x00dfffff) AM_UNMAP // segment map
AM_RANGE(0x00e00000, 0x00ffffff) AM_UNMAP // context register
@@ -106,8 +107,17 @@ static MACHINE_CONFIG_START( sun1 )
MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
MCFG_CPU_PROGRAM_MAP(sun1_mem)
- // UART is actually clocked by AM9513 (channel 4 = port A, channel 5 = port B)
- MCFG_UPD7201_ADD("iouart", 0, 9600*16, 9600*16, 9600*16, 9600*16)
+ MCFG_DEVICE_ADD("timer", AM9513, 3993600) // actually XTAL_10MHz / 2
+ MCFG_AM9513_FOUT_CALLBACK(DEVWRITELINE("timer", am9513_device, gate1_w))
+ MCFG_AM9513_OUT1_CALLBACK(NOOP) // Watchdog; generates BERR/Reset
+ MCFG_AM9513_OUT2_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_6)) // User timer
+ MCFG_AM9513_OUT3_CALLBACK(INPUTLINE("maincpu", M68K_IRQ_7)) // Refresh timer
+ MCFG_AM9513_OUT4_CALLBACK(DEVWRITELINE("iouart", upd7201_new_device, rxca_w))
+ MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("iouart", upd7201_new_device, txca_w))
+ MCFG_AM9513_OUT5_CALLBACK(DEVWRITELINE("iouart", upd7201_new_device, rxcb_w))
+ MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("iouart", upd7201_new_device, txcb_w))
+
+ MCFG_UPD7201_ADD("iouart", 0, 0, 0, 0, 0)
MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_DTRA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_dtr))
MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts))