summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/adm23.cpp
blob: 04b1c4195906bc7411cc24ff3f38c960983e0c04 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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));
	crtc.set_on_update_addr_change_callback(FUNC(adm23_state::addr_changed));
}

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)