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)