diff --git a/.gitattributes b/.gitattributes index c325646d782..b9ac51d8c81 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6613,6 +6613,7 @@ src/mess/drivers/trs80.c svneol=native#text/plain src/mess/drivers/trs80m2.c svneol=native#text/plain src/mess/drivers/ts802.c svneol=native#text/plain src/mess/drivers/ts803.c svneol=native#text/plain +src/mess/drivers/ts816.c svneol=native#text/plain src/mess/drivers/tsispch.c svneol=native#text/plain src/mess/drivers/tutor.c svneol=native#text/plain src/mess/drivers/tvc.c svneol=native#text/plain diff --git a/src/mess/drivers/ts816.c b/src/mess/drivers/ts816.c new file mode 100644 index 00000000000..d9daafd0884 --- /dev/null +++ b/src/mess/drivers/ts816.c @@ -0,0 +1,109 @@ +/*************************************************************************** + + 2013-09-10 Skeleton driver for Televideo ts816 + + TODO: + - Everything - this is just a skeleton + + +****************************************************************************/ + +#include "emu.h" +#include "cpu/z80/z80.h" +#include "machine/terminal.h" + + +class ts816_state : public driver_device +{ +public: + ts816_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_terminal(*this, TERMINAL_TAG) + { } + + DECLARE_WRITE8_MEMBER(kbd_put); + DECLARE_READ8_MEMBER(keyin_r); + DECLARE_READ8_MEMBER(status_r); + +private: + UINT8 m_term_data; + UINT8 m_status; + virtual void machine_reset(); + required_device m_maincpu; + required_device m_terminal; +}; + +static ADDRESS_MAP_START(ts816_mem, AS_PROGRAM, 8, ts816_state) + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x0000, 0x0fff) AM_ROM + AM_RANGE(0x1000, 0xffff) AM_RAM +ADDRESS_MAP_END + +static ADDRESS_MAP_START(ts816_io, AS_IO, 8, ts816_state) + ADDRESS_MAP_GLOBAL_MASK(0xff) + AM_RANGE(0x50, 0x50) AM_READ(keyin_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write) + AM_RANGE(0x52, 0x52) AM_READ(status_r) +ADDRESS_MAP_END + + +/* Input ports */ +static INPUT_PORTS_START( ts816 ) +INPUT_PORTS_END + + +READ8_MEMBER( ts816_state::keyin_r ) +{ + UINT8 ret = m_term_data; + m_term_data = 0; + return ret; +} + +READ8_MEMBER( ts816_state::status_r ) +{ + if (m_status) + { + m_status--; + return 5; + } + else + return 4; +} + +WRITE8_MEMBER( ts816_state::kbd_put ) +{ + m_term_data = data; + m_status = 3; +} + +static GENERIC_TERMINAL_INTERFACE( terminal_intf ) +{ + DEVCB_DRIVER_MEMBER(ts816_state, kbd_put) +}; + +void ts816_state::machine_reset() +{ + m_term_data = 0; + m_status = 1; +} + +static MACHINE_CONFIG_START( ts816, ts816_state ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, 4000000) + MCFG_CPU_PROGRAM_MAP(ts816_mem) + MCFG_CPU_IO_MAP(ts816_io) + + /* video hardware */ + MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf) +MACHINE_CONFIG_END + +/* ROM definition */ +ROM_START( ts816 ) + ROM_REGION(0x10000, "maincpu", 0) + ROM_LOAD( "81640v11.rom", 0x0000, 0x1000, CRC(295a15e7) SHA1(6f49078ab3cd49aecd2afafcbed3af0e3bcfd48c) ) +ROM_END + +/* Driver */ + +/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ +COMP( 1980, ts816, 0, 0, ts816, ts816, driver_device, 0, "Televideo", "TS816", GAME_IS_SKELETON ) diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 9eb50fe6f75..f364ca47887 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2232,6 +2232,7 @@ merlin ts802 ts802h ts803h +ts816 modellot tim100 pencil2 diff --git a/src/mess/mess.mak b/src/mess/mess.mak index 61146cdb474..88b7799826f 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -2449,6 +2449,7 @@ $(MESSOBJ)/skeleton.a: \ $(MESS_DRIVERS)/tricep.o \ $(MESS_DRIVERS)/ts802.o \ $(MESS_DRIVERS)/ts803.o \ + $(MESS_DRIVERS)/ts816.o \ $(MESS_DRIVERS)/tsispch.o \ $(MESS_DRIVERS)/unior.o \ $(MESS_DRIVERS)/unistar.o \