From 48bae3f40cf4874a735457c4c2051e20fe9e6cfc Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Mon, 3 Jan 2022 13:52:18 +0100 Subject: New machines marked as NOT_WORKING ---------------------------------- Falco TS-28 [Bitsavers] --- scripts/target/mame/mess.lua | 10 +- src/mame/drivers/falcots28.cpp | 213 +++++++++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 4 files changed, 225 insertions(+), 2 deletions(-) create mode 100644 src/mame/drivers/falcots28.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index db3b3f69b86..5174922f8dc 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1275,6 +1275,7 @@ function linkProjects_mame_mess(_target, _subtarget) "exorterm", "fairch", "fairlight", + "falco", "fidelity", "force", "francedr", @@ -2466,6 +2467,13 @@ files { MAME_DIR .. "src/mame/machine/cmi_mkbd.h", } +createMESSProjects(_target, _subtarget, "falco") +files { + MAME_DIR .. "src/mame/drivers/falco5220.cpp", + MAME_DIR .. "src/mame/drivers/falcots.cpp", + MAME_DIR .. "src/mame/drivers/falcots28.cpp", +} + createMESSProjects(_target, _subtarget, "fidelity") files { MAME_DIR .. "src/mame/machine/fidel_clockdiv.cpp", @@ -4605,8 +4613,6 @@ files { MAME_DIR .. "src/mame/drivers/eurocom2.cpp", MAME_DIR .. "src/mame/drivers/excali64.cpp", MAME_DIR .. "src/mame/drivers/facit4440.cpp", - MAME_DIR .. "src/mame/drivers/falco5220.cpp", - MAME_DIR .. "src/mame/drivers/falcots.cpp", MAME_DIR .. "src/mame/drivers/fanucs15.cpp", MAME_DIR .. "src/mame/drivers/fanucspmg.cpp", MAME_DIR .. "src/mame/drivers/fc100.cpp", diff --git a/src/mame/drivers/falcots28.cpp b/src/mame/drivers/falcots28.cpp new file mode 100644 index 00000000000..b53fc315c73 --- /dev/null +++ b/src/mame/drivers/falcots28.cpp @@ -0,0 +1,213 @@ +// license: BSD-3-Clause +// copyright-holders: Dirk Best +/*************************************************************************** + + Falco TS-28 (aka FM-II or Endura?) + + VT100/VT102/VT132 terminal + + Hardware: + - Z80A (Z8400A PS) + - 6116 + - SY2128-3 x2 (and two empty sockets) + - 2x 2764 (and one empty socket) + - 1x 2732 (chargen) + - Z80ACTC + - SCN2672 with SCB2673 + - Z80ADART + - XTAL unreadable (xx.xxx MHz) + - Bell + + TODO: + - Everything + + Notes: + - Coretron keyboard? + +***************************************************************************/ + +#include "emu.h" +#include "bus/rs232/rs232.h" +#include "cpu/z80/z80.h" +#include "machine/z80ctc.h" +#include "machine/z80sio.h" +#include "video/scn2674.h" +#include "emupal.h" +#include "screen.h" + + +namespace { + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class ts28_state : public driver_device +{ +public: + ts28_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_pvtc(*this, "pvtc"), + m_chargen(*this, "chargen") + { } + + void ts28(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + +private: + required_device m_maincpu; + required_device m_screen; + required_device m_palette; + required_device m_pvtc; + required_region_ptr m_chargen; + + void mem_map(address_map &map); + void io_map(address_map &map); + + void char_map(address_map &map); + void attr_map(address_map &map); + SCN2672_DRAW_CHARACTER_MEMBER(draw_character); +}; + + +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** + +void ts28_state::mem_map(address_map &map) +{ + map(0x0000, 0x3fff).rom().region("maincpu", 0); + map(0x8000, 0x8800).ram(); + map(0xa000, 0xafff).ram().share("charram"); + map(0xb000, 0xbfff).ram().share("attrram"); +} + +void ts28_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0xe8, 0xef).rw(m_pvtc, FUNC(scn2672_device::read), FUNC(scn2672_device::write)); +} + + +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +void ts28_state::char_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("charram"); +} + +void ts28_state::attr_map(address_map &map) +{ + map(0x0000, 0x0fff).ram().share("attrram"); +} + +SCN2672_DRAW_CHARACTER_MEMBER( ts28_state::draw_character ) +{ + uint16_t data = m_chargen[charcode << 4 | linecount]; + const pen_t *const pen = m_palette->pens(); + + if (cursor) + data = ~data; + + // foreground/background colors + rgb_t fg = pen[1]; + rgb_t bg = pen[0]; + + // draw 9 pixels of the character + for (int i = 0; i < 9; i++) + bitmap.pix(y, x + i) = BIT(data, i) ? fg : bg; +} + +static const gfx_layout char_layout = +{ + 8, 16, + RGN_FRAC(1,1), + 1, + { 0 }, + { 7, 6, 5, 4, 3, 2, 1, 0 }, + { STEP16(0, 8) }, + 8 * 16 +}; + +static GFXDECODE_START(chars) + GFXDECODE_ENTRY("chargen", 0, char_layout, 0, 1) +GFXDECODE_END + + +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +void ts28_state::machine_start() +{ +} + +void ts28_state::machine_reset() +{ +} + + +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** + +void ts28_state::ts28(machine_config &config) +{ + Z80(config, m_maincpu, 4000000); // unknown clock + m_maincpu->set_addrmap(AS_PROGRAM, &ts28_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &ts28_state::io_map); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_color(rgb_t::amber()); // unknown color + m_screen->set_raw(16537000, 864, 0, 720, 319, 0, 300); // unknown clock + m_screen->set_screen_update(m_pvtc, FUNC(scn2672_device::screen_update)); + + PALETTE(config, m_palette, palette_device::MONOCHROME); + + GFXDECODE(config, "gfxdecode", m_palette, chars); + + SCN2672(config, m_pvtc, 1500000); // unknown clock + m_pvtc->set_screen("screen"); + m_pvtc->set_character_width(9); // unknown + m_pvtc->set_display_callback(FUNC(ts28_state::draw_character)); + m_pvtc->set_addrmap(0, &ts28_state::char_map); + m_pvtc->set_addrmap(1, &ts28_state::attr_map); +} + + +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** + +ROM_START( ts28 ) + ROM_REGION(0x8000, "maincpu", 0) + ROM_LOAD("endura_v100_0.e27", 0x0000, 0x2000, CRC(2fd1ea7f) SHA1(711e09b843ecf2e463bd2b193a66842261512fa4)) + ROM_LOAD("endura_v100_1.e28", 0x2000, 0x2000, CRC(4de83d27) SHA1(a1c0858debfb0c1e82b44c620855a13dc1626302)) + + ROM_REGION(0x1000, "chargen", 0) + ROM_LOAD("chargen.f3", 0x0000, 0x1000, CRC(f0764798) SHA1(3d4826bfe1f1e533ee2134ad9ae6c2512edbb069)) + + ROM_REGION(0x40, "prom", 0) + ROM_LOAD("82s123.f3", 0x00, 0x20, CRC(862b9680) SHA1(0d19266cb9680e0e5dd92d230b64a5ee86bf6046)) + ROM_LOAD("82s123.h7", 0x00, 0x20, CRC(275a4436) SHA1(e986454f6f0f93f72b1c43a49ff3ded41630e38b)) +ROM_END + + +} // anonymous namespace + + +//************************************************************************** +// SYSTEM DRIVERS +//************************************************************************** + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1983, ts28, 0, 0, ts28, 0, ts28_state, empty_init, "Falco", "TS-28", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f2705172359..38f7d0a11c2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -13750,6 +13750,9 @@ falco5220s // 1989 ts1 // 1980 ts2624 // 1982 +@source:falcots28.cpp +ts28 // 1983 + @source:falgas_m89.cpp cbully // (c) 1991 Falgas diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 98534c5f647..d0953273662 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -309,6 +309,7 @@ f387x.cpp facit4440.cpp falco5220.cpp falcots.cpp +falcots28.cpp fanucs15.cpp fanucspmg.cpp fb01.cpp -- cgit v1.2.3