summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/jpms80.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/jpms80.cpp')
-rw-r--r--src/mame/drivers/jpms80.cpp56
1 files changed, 51 insertions, 5 deletions
diff --git a/src/mame/drivers/jpms80.cpp b/src/mame/drivers/jpms80.cpp
index 43968eccf46..37c6f314cff 100644
--- a/src/mame/drivers/jpms80.cpp
+++ b/src/mame/drivers/jpms80.cpp
@@ -26,6 +26,7 @@ System80 is based on the SRU platform, but with more outputs and finally a separ
#include "emu.h"
#include "cpu/tms9900/tms9995.h"
#include "sound/ay8910.h"
+#include "machine/74259.h"
#include "machine/tms9902.h"
#include "speaker.h"
@@ -55,6 +56,11 @@ public:
{ }
virtual void machine_reset() override;
+ DECLARE_WRITE_LINE_MEMBER(int1_enable_w);
+ DECLARE_WRITE_LINE_MEMBER(int2_enable_w);
+ DECLARE_WRITE_LINE_MEMBER(watchdog_w);
+ DECLARE_WRITE_LINE_MEMBER(io_enable_w);
+
protected:
// devices
@@ -63,6 +69,22 @@ public:
DECLARE_DRIVER_INIT(jpms80);
};
+WRITE_LINE_MEMBER(jpms80_state::int1_enable_w)
+{
+}
+
+WRITE_LINE_MEMBER(jpms80_state::int2_enable_w)
+{
+}
+
+WRITE_LINE_MEMBER(jpms80_state::watchdog_w)
+{
+}
+
+WRITE_LINE_MEMBER(jpms80_state::io_enable_w)
+{
+}
+
static ADDRESS_MAP_START( jpms80_map, AS_PROGRAM, 8, jpms80_state )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_RAM
@@ -70,11 +92,18 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( jpms80_io_map, AS_IO, 8, jpms80_state )
ADDRESS_MAP_GLOBAL_MASK(0x1ff)
-// AM_RANGE(0x0000, 0x000f) // I/O & Optic (in) / Reels (out)
-// AM_RANGE(0x0050, 0x0050) // INT1 enable (lv3)
-// AM_RANGE(0x0051, 0x0051) // INT2 enable (lv4)
-// AM_RANGE(0x0052, 0x0052) // Watchdog
-// AM_RANGE(0x0053, 0x0053) // I/O Enable
+// AM_RANGE(0x0000, 0x001f) // I/O & Optic (in)
+ AM_RANGE(0x0000, 0x0007) AM_DEVWRITE("outlatch0", ls259_device, write_d0)
+ AM_RANGE(0x0008, 0x000f) AM_DEVWRITE("outlatch1", ls259_device, write_d0)
+ AM_RANGE(0x0010, 0x0017) AM_DEVWRITE("outlatch2", ls259_device, write_d0)
+ AM_RANGE(0x0018, 0x001f) AM_DEVWRITE("outlatch3", ls259_device, write_d0)
+ AM_RANGE(0x0020, 0x0027) AM_DEVWRITE("outlatch4", ls259_device, write_d0)
+ AM_RANGE(0x0028, 0x002f) AM_DEVWRITE("outlatch5", ls259_device, write_d0)
+ AM_RANGE(0x0030, 0x0037) AM_DEVWRITE("outlatch6", ls259_device, write_d0)
+ AM_RANGE(0x0038, 0x003f) AM_DEVWRITE("outlatch7", ls259_device, write_d0)
+ AM_RANGE(0x0040, 0x0047) AM_DEVWRITE("outlatch8", ls259_device, write_d0)
+ AM_RANGE(0x0048, 0x004f) AM_DEVWRITE("outlatch9", ls259_device, write_d0)
+ AM_RANGE(0x0050, 0x0057) AM_DEVWRITE("outlatch10", ls259_device, write_d0)
// AM_RANGE(0x0140, 0x015f) // AY
AM_RANGE(0x01e0, 0x01ff) AM_DEVREADWRITE("tms9902duart", tms9902_device, cruread, cruwrite)
// Lamps, Meters etc. can move around
@@ -100,6 +129,23 @@ static MACHINE_CONFIG_START( jpms80 )
MCFG_TMS99xx_ADD("maincpu", TMS9995, MAIN_CLOCK, jpms80_map, jpms80_io_map)
MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_DEVICE_ADD("outlatch0", LS259, 0) // I/O IC5
+ MCFG_DEVICE_ADD("outlatch1", LS259, 0) // I/O IC6
+ MCFG_DEVICE_ADD("outlatch2", LS259, 0) // I/O IC7
+ MCFG_DEVICE_ADD("outlatch3", LS259, 0) // I/O IC8
+ MCFG_DEVICE_ADD("outlatch4", LS259, 0) // I/O IC9
+ MCFG_DEVICE_ADD("outlatch5", LS259, 0) // I/O IC10
+ MCFG_DEVICE_ADD("outlatch6", LS259, 0) // I/O IC11
+ MCFG_DEVICE_ADD("outlatch7", LS259, 0) // I/O IC12
+ MCFG_DEVICE_ADD("outlatch8", LS259, 0) // I/O IC13
+ MCFG_DEVICE_ADD("outlatch9", LS259, 0) // I/O IC14
+
+ MCFG_DEVICE_ADD("outlatch10", LS259, 0) // I/O IC15
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(jpms80_state, int1_enable_w)) // 50 - INT1 enable (lv3)
+ MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(jpms80_state, int2_enable_w)) // 51 - INT2 enable (lv4)
+ MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(jpms80_state, watchdog_w)) // 52 - Watchdog
+ MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(jpms80_state, io_enable_w)) // 53 - I/O Enable
+
MCFG_DEVICE_ADD("tms9902duart", TMS9902, DUART_CLOCK)
MCFG_SOUND_ADD("aysnd", AY8910, 2000000)