diff options
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 |
commit | 216632da3b0be5009726b1f0facd50d1beb13825 (patch) | |
tree | 3e31280e4bef25fa8a4a2d1e75dd157bf61b0b71 /src | |
parent | af49118ec0ad5beaf52c7333d93fa02335f8373b (diff) |
(MESS) Superslave : connected to terminal
Diffstat (limited to 'src')
-rw-r--r-- | src/mess/drivers/superslave.c | 55 | ||||
-rw-r--r-- | src/mess/includes/superslave.h | 14 |
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 |