summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-02-10 10:24:17 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-02-10 10:24:17 +0000
commit216632da3b0be5009726b1f0facd50d1beb13825 (patch)
tree3e31280e4bef25fa8a4a2d1e75dd157bf61b0b71 /src
parentaf49118ec0ad5beaf52c7333d93fa02335f8373b (diff)
(MESS) Superslave : connected to terminal
Diffstat (limited to 'src')
-rw-r--r--src/mess/drivers/superslave.c55
-rw-r--r--src/mess/includes/superslave.h14
2 files changed, 63 insertions, 6 deletions
diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c
index 6dd2195ec03..9b9defe53ef 100644
--- a/src/mess/drivers/superslave.c
+++ b/src/mess/drivers/superslave.c
@@ -1,10 +1,22 @@
-/*
+/**************************************************************************
+
+Monitor commands
+Dxxxx,yyyy = Dump memory
+Fxxxx,yyyy,zz = Fill memory
+Gxxxx = Goto
+Ixx = In port
+Lxxxx = Load
+Mxxxx,yyyy,zzzz = Move x-y to z
+Oxx,yy = Out port
+- = Edit memory
+. = Edit memory
+
TODO:
- all
-*/
+****************************************************************************/
#include "includes/superslave.h"
@@ -19,6 +31,8 @@
//-------------------------------------------------
static ADDRESS_MAP_START( superslave_mem, AS_PROGRAM, 8, superslave_state )
+ AM_RANGE(0x0000, 0x07FF) AM_ROM AM_REGION(Z80_TAG, 0)
+ AM_RANGE(0x0800, 0xFFFF) AM_RAM
ADDRESS_MAP_END
@@ -27,6 +41,10 @@ ADDRESS_MAP_END
//-------------------------------------------------
static ADDRESS_MAP_START( superslave_io, AS_IO, 8, superslave_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x00) AM_READ(port00_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write)
+ AM_RANGE(0x01, 0x01) AM_READ(port01_r)
+ AM_RANGE(0x1f, 0x1f) AM_READ(port1f_r)
ADDRESS_MAP_END
@@ -78,9 +96,35 @@ void superslave_state::machine_start()
void superslave_state::machine_reset()
{
+ m_term_data = 0;
+}
+
+READ8_MEMBER( superslave_state::port00_r )
+{
+ UINT8 ret = m_term_data;
+ m_term_data = 0;
+ return ret;
+}
+
+READ8_MEMBER( superslave_state::port01_r )
+{
+ return (m_term_data) ? 5 : 4;
}
+READ8_MEMBER( superslave_state::port1f_r )
+{
+ return 1;
+}
+
+WRITE8_MEMBER( superslave_state::kbd_put )
+{
+ m_term_data = data;
+}
+static GENERIC_TERMINAL_INTERFACE( terminal_intf )
+{
+ DEVCB_DRIVER_MEMBER(superslave_state, kbd_put)
+};
//**************************************************************************
// MACHINE DRIVERS
@@ -96,6 +140,9 @@ static MACHINE_CONFIG_START( superslave, superslave_state )
MCFG_CPU_PROGRAM_MAP(superslave_mem)
MCFG_CPU_IO_MAP(superslave_io)
MCFG_CPU_CONFIG(superslave_daisy_chain)
+
+ /* video hardware */
+ MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
MACHINE_CONFIG_END
@@ -119,5 +166,5 @@ ROM_END
// SYSTEM DRIVERS
//**************************************************************************
-// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1983, superslv, 0, 0, superslave, superslave, driver_device, 0, "Advanced Digital Corporation", "Super Slave", GAME_IS_SKELETON )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1983, superslv, 0, 0, superslave, superslave, driver_device, 0, "Advanced Digital Corporation", "Super Slave", GAME_IS_SKELETON )
diff --git a/src/mess/includes/superslave.h b/src/mess/includes/superslave.h
index 85d23ef6b75..c341b7ea015 100644
--- a/src/mess/includes/superslave.h
+++ b/src/mess/includes/superslave.h
@@ -6,6 +6,8 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/z80/z80daisy.h"
+#include "machine/terminal.h"
+
#define Z80_TAG "z80"
@@ -13,14 +15,22 @@ class superslave_state : public driver_device
{
public:
superslave_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, Z80_TAG)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, Z80_TAG)
+ , m_terminal(*this, TERMINAL_TAG)
{ }
required_device<cpu_device> m_maincpu;
+ required_device<generic_terminal_device> m_terminal;
virtual void machine_start();
virtual void machine_reset();
+ DECLARE_READ8_MEMBER(port00_r);
+ DECLARE_READ8_MEMBER(port01_r);
+ DECLARE_READ8_MEMBER(port1f_r);
+ DECLARE_WRITE8_MEMBER(kbd_put);
+ UINT8 m_term_data;
+
};
#endif