From 3d666945e08d1a28c4b6a9b48052c25f6150f976 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Tue, 7 Dec 2021 10:38:26 +0100 Subject: [PATCH] New machines marked as NOT_WORKING ---------------------------------- Human Designed Systems HDS200 [Bitsavers] --- scripts/target/mame/mess.lua | 6 ++ src/emu/xtal.cpp | 2 + src/mame/drivers/hds200.cpp | 176 +++++++++++++++++++++++++++++++++++ src/mame/mame.lst | 3 + src/mame/mess.flt | 1 + 5 files changed, 188 insertions(+) create mode 100644 src/mame/drivers/hds200.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 441521e7e3a..a828abdb146 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1283,6 +1283,7 @@ function linkProjects_mame_mess(_target, _subtarget) "grundy", "h01x", "hartung", + "hds", "heathkit", "hec2hrp", "hegener", @@ -2569,6 +2570,11 @@ files { MAME_DIR .. "src/mame/drivers/gmaster.cpp", } +createMESSProjects(_target, _subtarget, "hds") +files { + MAME_DIR .. "src/mame/drivers/hds200.cpp", +} + createMESSProjects(_target, _subtarget, "heathkit") files { MAME_DIR .. "src/mame/drivers/et3400.cpp", diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index 16178a2bfc7..f36d0fe8fc2 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -327,6 +327,7 @@ const double XTAL::known_xtals[] = { 22'464'000, /* 22.464_MHz_XTAL CIT-101 132-column display clock */ 22'579'000, /* 22.579_MHz_XTAL Sega System H1 SCSP clock */ 22'656'000, /* 22.656_MHz_XTAL Super Pinball Action (~1440x NTSC line rate) */ + 22'680'000, /* 22.680_MHz_XTAL HDS200 80-columns display clock */ 22'896'000, /* 22.896_MHz_XTAL DEC VT220 132-column display clock */ 23'200'000, /* 23.2_MHz_XTAL Roland JV-80 & JV-880 PCM clock */ 23'814'000, /* 23.814_MHz_XTAL TeleVideo TVI-912, 920 & 950 */ @@ -402,6 +403,7 @@ const double XTAL::known_xtals[] = { 34'000'000, /* 34_MHz_XTAL Gaelco PCBs */ 34'291'712, /* 34.291712_MHz_XTAL Fairlight CMI master card */ 34'846'000, /* 34.846_MHz_XTAL Visual 550 */ + 35'640'000, /* 35.640_MHz_XTAL HDS200 132-column display clock */ 35'834'400, /* 35.8344_MHz_XTAL Tab Products E-22 132-column display clock */ 35'840'000, /* 35.84_MHz_XTAL Akai MPC 60 voice PCB */ 35'904'000, /* 35.904_MHz_XTAL Used on HP98543 graphics board */ diff --git a/src/mame/drivers/hds200.cpp b/src/mame/drivers/hds200.cpp new file mode 100644 index 00000000000..0d349b5c997 --- /dev/null +++ b/src/mame/drivers/hds200.cpp @@ -0,0 +1,176 @@ +// license: BSD-3-Clause +// copyright-holders: Dirk Best +/*************************************************************************** + + Human Designed Systems HDS200 + + ANSI/DEC-compatbile terminal + + Hardware: + - Z80A (Z8400APS) + - Z80A DMA (Z8410APS) + - 2x SCN2681A + - SCN2674B + - 2x TMM2016BP-90 (2k) + - 1x TMM2016AP-10 (2k) + - MK48Z02B-25 (2k) + - XTAL 3.6864 MHz (next go DUARTs) + - XTAL 8 MHz (CPU) + - XTAL 22.680 MHz and 35.640 MHz (video) + + TODO: + - Everything + + Notes: + - + +***************************************************************************/ + +#include "emu.h" +#include "cpu/z80/z80.h" +#include "machine/mc68681.h" +#include "machine/z80dma.h" +#include "machine/nvram.h" +#include "video/scn2674.h" +#include "emupal.h" +#include "screen.h" + + +namespace { + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class hds200_state : public driver_device +{ +public: + hds200_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_avdc(*this, "avdc") + { } + + void hds200(machine_config &config); + +protected: + virtual void machine_start() override; + +private: + void mem_map(address_map &map); + void io_map(address_map &map); + + required_device m_maincpu; + required_device m_screen; + required_device m_avdc; +}; + + +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** + +void hds200_state::mem_map(address_map &map) +{ + map(0x0000, 0x5fff).rom().region("maincpu", 0); + map(0x6000, 0x7fff).ram(); + map(0x8000, 0x9fff).ram(); + map(0xa000, 0xbfff).ram(); +} + +void hds200_state::io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x60, 0x67).rw(m_avdc, FUNC(scn2674_device::read), FUNC(scn2674_device::write)); +} + + +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +static const gfx_layout char_layout = +{ + 8,16, + RGN_FRAC(1,1), + 1, + { 0 }, + { STEP8(0,1) }, + { STEP16(0,8) }, + 8*16 +}; + +static GFXDECODE_START(chars) + GFXDECODE_ENTRY("chargen", 0, char_layout, 0, 1) +GFXDECODE_END + + +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +void hds200_state::machine_start() +{ +} + + +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** + +void hds200_state::hds200(machine_config &config) +{ + Z80(config, m_maincpu, 8_MHz_XTAL / 2); // divider not verified + m_maincpu->set_addrmap(AS_PROGRAM, &hds200_state::mem_map); + m_maincpu->set_addrmap(AS_IO, &hds200_state::io_map); + +// NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + Z80DMA(config, "z80dma", 8_MHz_XTAL / 2); // divider not verified + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_color(rgb_t::amber()); + m_screen->set_raw(22.680_MHz_XTAL, 1008, 0, 720, 375, 0, 350); // 80-column mode + m_screen->set_screen_update(m_avdc, FUNC(scn2674_device::screen_update)); + + PALETTE(config, "palette", palette_device::MONOCHROME); + + GFXDECODE(config, "gfxdecode", "palette", chars); + + SCN2674(config, m_avdc, 22.680_MHz_XTAL / 9); + m_avdc->set_character_width(9); + m_avdc->set_screen("screen"); + + SCN2681(config, "duart1", 3.6864_MHz_XTAL); + + SCN2681(config, "duart2", 3.6864_MHz_XTAL); +} + + +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** + +ROM_START( hds200 ) + ROM_REGION(0x8000, "maincpu", 0) + ROM_LOAD("u78.bin", 0x0000, 0x2000, CRC(518cfeb7) SHA1(3c214dede545a2a991fdd77311b3474b01b2123f)) + ROM_LOAD("u79.bin", 0x2000, 0x2000, CRC(3a765c8a) SHA1(8ffb5fb07b086ac725f22c2643ecd2e061130b57)) + ROM_LOAD("u80.bin", 0x4000, 0x2000, CRC(f72dfeeb) SHA1(7e09b8f0df8384f6b5c4d29cd59fa31f743de8b8)) + ROM_LOAD("u81.bin", 0x6000, 0x2000, CRC(b3f430be) SHA1(dd5503de46c7f00f2e376104dff13224026f5870)) + + ROM_REGION(0x2000, "chargen", ROMREGION_INVERT) + ROM_LOAD("u56.bin", 0x0000, 0x2000, CRC(cd268bff) SHA1(42f2aa3f51ae53e5cbcb57f974e99b24bca5f56f)) +ROM_END + + +} // anonymous namespace + + +//************************************************************************** +// SYSTEM DRIVERS +//************************************************************************** + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 198?, hds200, 0, 0, hds200, 0, hds200_state, empty_init, "Human Designed Systems", "HDS200", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 99cef71a8e5..f5ce643a127 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16281,6 +16281,9 @@ hcastle // GX768 (c) 1988 hcastlee // GX768 (c) 1988 hcastlek // GX768 (c) 1988 +@source:hds200.cpp +hds200 // (c) Human Developed Systems + @source:headonb.cpp blackhol foolrace // bootleg diff --git a/src/mame/mess.flt b/src/mame/mess.flt index ebb1b8afafe..d922d0119fa 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -395,6 +395,7 @@ harriet.cpp hawk.cpp hazeltin.cpp hazl1420.cpp +hds200.cpp hec2hrp.cpp hektor.cpp hhtiger.cpp