summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2022-01-03 13:52:18 +0100
committer Dirk Best <mail@dirk-best.de>2022-01-03 13:53:15 +0100
commit48bae3f40cf4874a735457c4c2051e20fe9e6cfc (patch)
tree1cc2d3155b8dbead0ac1cd79ced6f3ffa922dec9
parentf18242aa11fe73811cda60fe9692687cc35a3786 (diff)
New machines marked as NOT_WORKING
---------------------------------- Falco TS-28 [Bitsavers]
-rw-r--r--scripts/target/mame/mess.lua10
-rw-r--r--src/mame/drivers/falcots28.cpp213
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
4 files changed, 225 insertions, 2 deletions
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<z80_device> m_maincpu;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_device<scn2672_device> m_pvtc;
+ required_region_ptr<uint8_t> 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