summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/alphatpx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/alphatpx.cpp')
-rw-r--r--src/mame/drivers/alphatpx.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index fb0bcda9e58..a5953069988 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -66,10 +66,12 @@
#include "emu.h"
#include "cpu/i8085/i8085.h"
+#include "cpu/i86/i86.h"
#include "cpu/mcs48/mcs48.h"
#include "machine/bankdev.h"
#include "machine/i8251.h"
#include "machine/wd_fdc.h"
+#include "machine/pic8259.h"
#include "video/tms9927.h"
#include "sound/beep.h"
#include "screen.h"
@@ -157,6 +159,7 @@ public:
m_crtc(*this, "crtc"),
m_fdc (*this, "fdc"),
m_floppy(*this, "fdc:%u", 0),
+ m_i8088(*this, "i8088"),
m_beep(*this, "beeper"),
m_keycols(*this, "COL.%u", 0),
m_palette(*this, "palette"),
@@ -182,8 +185,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(fdchld_w);
DECLARE_WRITE8_MEMBER(beep_w);
DECLARE_WRITE8_MEMBER(bank_w);
+ DECLARE_READ8_MEMBER(start88_r);
void alphatp3(machine_config &config);
+ void alphatp30(machine_config &config);
protected:
virtual void machine_start() override;
@@ -194,6 +199,7 @@ protected:
required_device<crt5037_device> m_crtc;
required_device<fd1791_device> m_fdc;
required_device_array<floppy_connector, 2> m_floppy;
+ optional_device<cpu_device> m_i8088;
required_device<beep_device> m_beep;
required_ioport_array<16> m_keycols;
@@ -267,11 +273,27 @@ static ADDRESS_MAP_START( alphatp3_io, AS_IO, 8, alphatp_34_state )
AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w)
AM_RANGE(0x12, 0x12) AM_WRITE(beep_w)
+ AM_RANGE(0x40, 0x40) AM_READ(start88_r)
AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w)
AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w)
AM_RANGE(0x78, 0x78) AM_WRITE(bank_w)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( alphatp30_8088_map, AS_PROGRAM, 8, alphatp_34_state )
+ AM_RANGE(0x00000, 0x1ffff) AM_RAM
+ AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION("16bit", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( alphatp30_8088_io, AS_IO, 8, alphatp_34_state )
+ AM_RANGE(0xffe0, 0xffe1) AM_DEVREADWRITE("pic8259", pic8259_device, read, write)
+ADDRESS_MAP_END
+
+READ8_MEMBER(alphatp_34_state::start88_r)
+{
+ if(m_i8088)
+ m_i8088->resume(SUSPEND_REASON_DISABLE);
+ return 0;
+}
WRITE8_MEMBER(alphatp_34_state::bank_w)
{
@@ -1118,7 +1140,17 @@ MACHINE_CONFIG_START(alphatp_34_state::alphatp3)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp3_floppies, "525qd", floppy_image_device::default_floppy_formats)
MACHINE_CONFIG_END
+MACHINE_CONFIG_DERIVED(alphatp_34_state::alphatp30, alphatp3)
+ MCFG_CPU_ADD("i8088", I8088, 6000000) // unknown clock
+ MCFG_CPU_PROGRAM_MAP(alphatp30_8088_map)
+ MCFG_CPU_IO_MAP(alphatp30_8088_io)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+ MCFG_DEVICE_DISABLE()
+ MCFG_DEVICE_ADD("pic8259", PIC8259, 0)
+ MCFG_PIC8259_OUT_INT_CB(INPUTLINE("i8088", 0))
+ MCFG_PIC8259_IN_SP_CB(GND)
+MACHINE_CONFIG_END
//**************************************************************************
// ROM DEFINITIONS
@@ -1222,4 +1254,4 @@ COMP( 198?, alphatp1, alphatp2, 0, alphatp2, alphatp2, alphatp_12_state, 0,
COMP( 198?, alphatp2, 0, 0, alphatp2, alphatp2, alphatp_12_state, 0, "Triumph-Adler", "alphatronic P2", MACHINE_NOT_WORKING )
COMP( 198?, alphatp2u, alphatp2, 0, alphatp2u,alphatp3, alphatp_12_state, 0, "Triumph-Adler", "alphatronic P2U", MACHINE_NOT_WORKING )
COMP( 1982, alphatp3, 0, 0, alphatp3, alphatp3, alphatp_34_state, 0, "Triumph-Adler", "alphatronic P3", MACHINE_NOT_WORKING )
-COMP( 198?, alphatp30, alphatp3, 0, alphatp3, alphatp3, alphatp_34_state, 0, "Triumph-Adler", "alphatronic P30",MACHINE_NOT_WORKING )
+COMP( 198?, alphatp30, alphatp3, 0, alphatp30, alphatp3, alphatp_34_state, 0, "Triumph-Adler", "alphatronic P30",MACHINE_NOT_WORKING )