diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index a462b5ea6f9..d5a30b83edd 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -2601,6 +2601,7 @@ files { createMESSProjects(_target, _subtarget, "informer") files { + MAME_DIR .. "src/mame/drivers/informer_207_100.cpp", MAME_DIR .. "src/mame/drivers/informer_207_376.cpp", MAME_DIR .. "src/mame/machine/informer_207_376_kbd.cpp", MAME_DIR .. "src/mame/machine/informer_207_376_kbd.h", diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index cb67952852d..5b8b763ab2f 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -289,6 +289,7 @@ const double XTAL::known_xtals[] = { 19'602'000, /* 19.602_MHz_XTAL Ampex 210+ 80-column display clock */ 19'660'800, /* 19.6608_MHz_XTAL Euro League (bootleg), labeled as "UKI 19.6608 20PF" */ 19'661'400, /* 19.6614_MHz_XTAL Wyse WY-30 */ + 19'718'400, /* 19.7184_MHz_XTAL Informer 207/100 */ 19'923'000, /* 19.923_MHz_XTAL Cinematronics vectors */ 19'968'000, /* 19.968_MHz_XTAL Used mostly by some Taito games */ 20'000'000, /* 20_MHz_XTAL - */ diff --git a/src/mame/drivers/informer_207_100.cpp b/src/mame/drivers/informer_207_100.cpp new file mode 100644 index 00000000000..00bdf4d1b0d --- /dev/null +++ b/src/mame/drivers/informer_207_100.cpp @@ -0,0 +1,190 @@ +// license: BSD-3-Clause +// copyright-holders: Dirk Best +/*************************************************************************** + + Informer 207/100 + + VT-100 compatible terminal + + Hardware: + - HD68B09EP + - 3x HM6116LP-4 (+ 3 empty sockets), 2x TC5517BPL-20 + - R6545-1AP CRTC + - MC2681P DUART + - MC68B50P ACIA + - M58321 RTC + - 19.7184 MHz XTAL, 3.6864 MHz XTAL + + TODO: + - Redump ROM 207_100_2.bin + +***************************************************************************/ + +#include "emu.h" +#include "cpu/m6809/m6809.h" +#include "machine/6850acia.h" +#include "machine/mc68681.h" +#include "machine/msm58321.h" +#include "video/mc6845.h" +#include "emupal.h" +#include "screen.h" + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class informer_207_100_state : public driver_device +{ +public: + informer_207_100_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_crtc(*this, "crtc"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_duart(*this, "duart"), + m_acia(*this, "acia"), + m_rtc(*this, "rtc"), + m_ram(*this, "ram"), + m_chargen(*this, "chargen") + { } + + void informer_207_100(machine_config &config); + +protected: + void machine_start() override; + void machine_reset() override; + +private: + required_device m_maincpu; + required_device m_crtc; + required_device m_screen; + required_device m_palette; + required_device m_duart; + required_device m_acia; + required_device m_rtc; + required_shared_ptr m_ram; + required_region_ptr m_chargen; + + void mem_map(address_map &map); + + MC6845_UPDATE_ROW(crtc_update_row); +}; + + +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** + +void informer_207_100_state::mem_map(address_map &map) +{ + map(0x0000, 0x27ff).ram().share("ram"); + map(0xc000, 0xffff).rom().region("maincpu", 0); +} + + +//************************************************************************** +// INPUT PORT DEFINITIONS +//************************************************************************** + +static INPUT_PORTS_START( informer_207_100 ) +INPUT_PORTS_END + + +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +MC6845_UPDATE_ROW( informer_207_100_state::crtc_update_row ) +{ +} + +static const gfx_layout char_layout = +{ + 8,12, + RGN_FRAC(1,1), + 1, + { 0 }, + { 0, 1, 2, 3, 4, 5, 6, 7 }, + { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8 }, + 8*16 +}; + +static GFXDECODE_START(chars) + GFXDECODE_ENTRY("chargen", 0, char_layout, 0, 1) +GFXDECODE_END + + +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +void informer_207_100_state::machine_start() +{ +} + +void informer_207_100_state::machine_reset() +{ +} + + +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** + +void informer_207_100_state::informer_207_100(machine_config &config) +{ + MC6809(config, m_maincpu, 19.7184_MHz_XTAL / 4); // unknown clock divisor + m_maincpu->set_addrmap(AS_PROGRAM, &informer_207_100_state::mem_map); + + ACIA6850(config, m_acia, 0); // unknown clock + + SCN2681(config, m_duart, 0); // unknown clock + + MSM58321(config, m_rtc, 32.768_kHz_XTAL); + + // video + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_color(rgb_t::green()); + m_screen->set_size(640, 480); + m_screen->set_visarea_full(); + m_screen->set_refresh_hz(60); +// m_screen->set_raw(19.7184_MHz_XTAL, 0, 0, 0, 0, 0, 0); + m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update)); + + PALETTE(config, m_palette, palette_device::MONOCHROME); + + GFXDECODE(config, "gfxdecode", m_palette, chars); + + R6545_1(config, m_crtc, 19.7184_MHz_XTAL / 8); // unknown clock divisor + m_crtc->set_screen("screen"); + m_crtc->set_show_border_area(false); + m_crtc->set_char_width(8); + m_crtc->set_update_row_callback(FUNC(informer_207_100_state::crtc_update_row)); +} + + +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** + +ROM_START( in207100 ) + ROM_REGION(0x4000, "maincpu", 0) + // 79505-001 V2.00 + ROM_LOAD("79505-001.bin", 0x0000, 0x2000, CRC(272ebfac) SHA1(b6b9dc523028ace9e5a210e908de2260f36dde4a)) + //