From d650a6e2bdef2388a611e3b8841dfc33bb1405b5 Mon Sep 17 00:00:00 2001 From: AJR Date: Fri, 31 May 2019 15:13:40 -0400 Subject: [PATCH] New machines marked as NOT_WORKING ---------------------------------- Systel System 100 [Al Kossow, Bitsavers] --- scripts/target/mame/mess.lua | 1 + src/emu/xtal.cpp | 1 + src/mame/drivers/systel1.cpp | 134 +++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 5 files changed, 140 insertions(+) create mode 100644 src/mame/drivers/systel1.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 0c5d956db6e..d58992be0a1 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4002,6 +4002,7 @@ files { MAME_DIR .. "src/mame/drivers/sys2900.cpp", MAME_DIR .. "src/mame/drivers/sys9002.cpp", MAME_DIR .. "src/mame/drivers/systec.cpp", + MAME_DIR .. "src/mame/drivers/systel1.cpp", MAME_DIR .. "src/mame/drivers/talkingbb.cpp", MAME_DIR .. "src/mame/drivers/talkingfb.cpp", MAME_DIR .. "src/mame/drivers/tavernie.cpp", diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index d1266e0fb9e..5445d9ffac1 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -160,6 +160,7 @@ const double XTAL::known_xtals[] = { 10'733'000, /* 10.733_MHz_XTAL The Fairyland Story */ 10'738'635, /* 10.738635_MHz_XTAL TMS9918 family (3x NTSC subcarrier) */ 10'816'000, /* 10.816_MHz_XTAL Universal 1979-1980 (Cosmic Alien, etc) */ + 10'886'400, /* 10.8864_MHz_XTAL Systel System 100 */ 10'920'000, /* 10.92_MHz_XTAL ADDS Viewpoint 60, Viewpoint A2 */ 11'000'000, /* 11_MHz_XTAL Mario I8039 sound */ 11'004'000, /* 11.004_MHz_XTAL TI 911 VDT */ diff --git a/src/mame/drivers/systel1.cpp b/src/mame/drivers/systel1.cpp new file mode 100644 index 00000000000..899358a8b7a --- /dev/null +++ b/src/mame/drivers/systel1.cpp @@ -0,0 +1,134 @@ +// license:BSD-3-Clause +// copyright-holders:AJR +/*************************************************************************** + + Skeleton driver for Systel System 1/System 100 computer. + + This minimalistic luggable computer has a green-screen monitor and + 5ΒΌ-inch floppy drive (Shugart SA455) built into the unit. The detached + keyboard may be replaced with a standard electric typewriter. There is + a TYPE/WP switch on the front of the unit. + +***************************************************************************/ + +#include "emu.h" +#include "cpu/z80/z80.h" +#include "machine/clock.h" +#include "machine/i8251.h" +#include "machine/i8257.h" +#include "machine/wd_fdc.h" +#include "video/i8275.h" +#include "screen.h" + +class systel1_state : public driver_device +{ +public: + systel1_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_dmac(*this, "dmac") + , m_chargen(*this, "chargen") + { + } + + void systel1(machine_config &config); + +private: + DECLARE_WRITE_LINE_MEMBER(hrq_w); + u8 memory_r(offs_t offset); + void memory_w(offs_t offset, u8 data); + + I8275_DRAW_CHARACTER_MEMBER(draw_character); + + void mem_map(address_map &map); + void io_map(address_map &map); + + required_device m_maincpu; + required_device m_dmac; + required_region_ptr m_chargen; +}; + +WRITE_LINE_MEMBER(systel1_state::hrq_w) +{ + m_maincpu->set_input_line(INPUT_LINE_HALT, state); + m_dmac->hlda_w(state); +} + +u8 systel1_state::memory_r(offs_t offset) +{ + return m_maincpu->space(AS_PROGRAM).read_byte(offset); +} + +void systel1_state::memory_w(offs_t offset, u8 data) +{ + m_maincpu->space(AS_PROGRAM).write_byte(offset, data); +} + +I8275_DRAW_CHARACTER_MEMBER(systel1_state::draw_character) +{ +} + +void systel1_state::mem_map(address_map &map) +{ + map(0x0000, 0x07ff).rom().region("program", 0); + map(0x4000, 0xffff).ram(); +} + +void systel1_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x00).portr("JUMPERS"); + map(0x10, 0x11).rw("usart", FUNC(i8251_device::read), FUNC(i8251_device::write)); + map(0x20, 0x29).rw(m_dmac, FUNC(i8257_device::read), FUNC(i8257_device::write)); + map(0x40, 0x41).rw("crtc", FUNC(i8276_device::read), FUNC(i8276_device::write)); +} + +static INPUT_PORTS_START(systel1) + PORT_START("JUMPERS") // probably at J6 + PORT_DIPNAME(0x02, 0x00, "Screen Refresh") + PORT_DIPSETTING(0x02, "50 Hz") + PORT_DIPSETTING(0x00, "60 Hz") +INPUT_PORTS_END + +void systel1_state::systel1(machine_config &config) +{ + Z80(config, m_maincpu, 2_MHz_XTAL); // Z8400A; clock not verified + m_maincpu->set_addrmap(AS_PROGRAM, &systel1_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &systel1_state::io_map); + + I8257(config, m_dmac, 2_MHz_XTAL); // P8257-5 + m_dmac->out_hrq_cb().set(FUNC(systel1_state::hrq_w)); + m_dmac->in_memr_cb().set(FUNC(systel1_state::memory_r)); + m_dmac->out_memw_cb().set(FUNC(systel1_state::memory_w)); + m_dmac->out_iow_cb<2>().set("crtc", FUNC(i8276_device::dack_w)); + + I8251(config, "usart", 2_MHz_XTAL); // AMD P8251A + + clock_device &baudclock(CLOCK(config, "baudclock", 2_MHz_XTAL / 13)); // rate not verified, but also probably fixed + baudclock.signal_handler().set("usart", FUNC(i8251_device::write_rxc)); + baudclock.signal_handler().append("usart", FUNC(i8251_device::write_txc)); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_color(rgb_t::green()); + screen.set_raw(10.8864_MHz_XTAL, 672, 0, 560, 270, 0, 250); + screen.set_screen_update("crtc", FUNC(i8276_device::screen_update)); + + i8276_device &crtc(I8276(config, "crtc", 10.8864_MHz_XTAL / 7)); // WD8276PL-00 + crtc.set_character_width(7); + crtc.set_display_callback(FUNC(systel1_state::draw_character)); + crtc.drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq2_w)); + + FD1797(config, "fdc", 2_MHz_XTAL); +} + +// XTALs: 10.8864 (Y1), 2.000 (Y2) +// Silkscreened on PCB: "SYSTEL / SYSTEM 1 / 1031-3101-00 REV H" +ROM_START(systel100) + ROM_REGION(0x800, "program", 0) // TMS2716JL-45 + ROM_LOAD("u11.bin", 0x000, 0x800, CRC(29f1414a) SHA1(c87adfaaec45d0e5f4cf5946d2f04de0332b3413)) + + ROM_REGION(0x800, "chargen", 0) // TMS2516JL-45 + ROM_LOAD("u16.bin", 0x000, 0x800, CRC(61a8d742) SHA1(69dada638a17353f91bff34a1e2319a35d8a3ebf)) +ROM_END + +COMP(198?, systel100, 0, 0, systel1, systel1, systel1_state, empty_init, "Systel Computer", "System 100", MACHINE_IS_SKELETON) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 3545277576f..2e629524847 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -36847,6 +36847,9 @@ sys9002 // @source:systec.cpp systec // +@source:systel1.cpp +systel100 // + @source:system1.cpp 4dwarrio // 834-5918 (c) 1985 Coreland / Sega (S1) blockgal // 834-6303 (S1) diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 0de387b734e..c8788e7a7c7 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -762,6 +762,7 @@ symbolics.cpp sys2900.cpp sys9002.cpp systec.cpp +systel1.cpp talkingbb.cpp talkingfb.cpp tamag1.cpp