summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/adm23.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/adm23.cpp')
-rw-r--r--src/mame/drivers/adm23.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/mame/drivers/adm23.cpp b/src/mame/drivers/adm23.cpp
new file mode 100644
index 00000000000..4d957aef7c4
--- /dev/null
+++ b/src/mame/drivers/adm23.cpp
@@ -0,0 +1,86 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/***************************************************************************
+
+ Skeleton driver for ADM 23 terminal.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/z8/z8.h"
+#include "video/mc6845.h"
+#include "screen.h"
+
+class adm23_state : public driver_device
+{
+public:
+ adm23_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_chargen(*this, "chargen")
+ {
+ }
+
+ void adm23(machine_config &config);
+
+private:
+ MC6845_UPDATE_ROW(update_row);
+ MC6845_ON_UPDATE_ADDR_CHANGED(addr_changed);
+
+ void mem_map(address_map &map);
+
+ required_region_ptr<u8> m_chargen;
+};
+
+MC6845_UPDATE_ROW(adm23_state::update_row)
+{
+}
+
+MC6845_ON_UPDATE_ADDR_CHANGED(adm23_state::addr_changed)
+{
+}
+
+void adm23_state::mem_map(address_map &map)
+{
+ map(0x0800, 0x1fff).rom().region("program", 0x0800);
+ map(0x2020, 0x2020).nopr();
+ map(0x2080, 0x2080).rw("crtc", FUNC(mc6845_device::status_r), FUNC(mc6845_device::address_w));
+ map(0x2081, 0x2081).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0xc080, 0xc080).nopw();
+ map(0xd080, 0xd080).nopr();
+}
+
+
+static INPUT_PORTS_START(adm23)
+INPUT_PORTS_END
+
+
+void adm23_state::adm23(machine_config &config)
+{
+ z8_device &maincpu(Z8682(config, "maincpu", 14.7428_MHz_XTAL / 2));
+ maincpu.set_addrmap(AS_PROGRAM, &adm23_state::mem_map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_raw(14.7428_MHz_XTAL, 873, 0, 720, 281, 0, 264);
+ screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+
+ mc6845_device &crtc(SY6545_1(config, "crtc", 14.7428_MHz_XTAL / 9));
+ crtc.set_char_width(9);
+ crtc.set_show_border_area(false);
+ crtc.set_screen("screen");
+ crtc.set_update_row_callback(FUNC(adm23_state::update_row), this);
+ crtc.set_on_update_addr_change_callback(FUNC(adm23_state::addr_changed), this);
+}
+
+ROM_START(adm23)
+ ROM_REGION(0x2000, "program", 0) // CPU is clearly a Z8682, though its location is labeled "Z8 8681"
+ ROM_LOAD("136261-083_u9.bin", 0x0000, 0x2000, CRC(85da07e7) SHA1(a1305d0f06c7e3c6075b05ca0f11c53a901b5013))
+
+ ROM_REGION(0x0800, "chargen", 0)
+ ROM_LOAD("chr_u10.bin", 0x0000, 0x0800, CRC(cd053232) SHA1(6b4136a91d0dcd9cb5df92c54c9c30b1cb5f1974))
+
+ ROM_REGION(0x0020, "proms", 0)
+ ROM_LOAD("129253-61_u3.bin", 0x0000, 0x0020, NO_DUMP) // N82S123N at location labeled "S288"
+ROM_END
+
+
+COMP(1982, adm23, 0, 0, adm23, adm23, adm23_state, empty_init, "Lear Siegler", "ADM 23 Smart Terminal", MACHINE_IS_SKELETON)