summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/adm11.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/adm11.cpp')
-rw-r--r--src/mame/drivers/adm11.cpp196
1 files changed, 0 insertions, 196 deletions
diff --git a/src/mame/drivers/adm11.cpp b/src/mame/drivers/adm11.cpp
deleted file mode 100644
index 98b87d21fd4..00000000000
--- a/src/mame/drivers/adm11.cpp
+++ /dev/null
@@ -1,196 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:AJR
-/****************************************************************************
-
- Skeleton driver for ADM 11 and related terminals by Lear Siegler, Inc.
-
- * ADM 11 (June 1983): LSI's first terminal to use the "High Touch"
- enclosure shared by the rest of its family and other LSI terminals.
- Its detachable typewriter-style keyboard has only 4 function keys
- (8 with shifting). Display is one 24x80 page plus a status line.
- Font supports "business graphics" as well as ASCII characters.
- * ADM 12 (March 1984): Expanded version of ADM 11 implementing block
- mode and many more editing functions. 2 pages of text are available
- in 80x24 mode, and there are also 80x48 and 158x24 modes.
- * ADM 11G & ADM 12G (March 1984): ADM 11 and ADM 12 enhanced with
- Tektronix Plot 10-like graphics.
- * ADM 1178 (March 1984): Emulates the keyboard and communications of the
- IBM 3278, though an external protocol converter is also required for
- network compatibility.
- * ADM 1278 (March 1984): Block mode version of the ADM 1178.
- * ADM 12plus (February 1985): Later version of the ADM 12, with 132-
- column and horizontal split display options. Up to 4 pages of display
- memory are supported.
- * ADM 11plus (June 1985): Later version of ADM 11 with more function
- keys and character and line insertion/deletion.
-
-****************************************************************************/
-
-#include "emu.h"
-//#include "bus/rs232/rs232.h"
-#include "cpu/mcs51/mcs51.h"
-#include "machine/eeprompar.h"
-#include "video/scn2674.h"
-#include "screen.h"
-
-class adm11_state : public driver_device
-{
-public:
- adm11_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_avdc(*this, "avdc")
- , m_charram(*this, "charram")
- , m_attrram(*this, "attrram")
- , m_chargen(*this, "chargen")
- , m_mbc(false)
- , m_latched_attr(0)
- {
- }
-
- void adm12(machine_config &config);
-
-protected:
- virtual void machine_start() override;
-
-private:
- void prog_map(address_map &map);
- void ext_map(address_map &map);
- void char_map(address_map &map);
- void attr_map(address_map &map);
-
- SCN2674_DRAW_CHARACTER_MEMBER(draw_character);
- DECLARE_WRITE_LINE_MEMBER(mbc_w);
-
- u8 p1_r();
- void p1_w(u8 data);
- void char_latched_attr_w(offs_t offset, u8 data);
- void attr_latch_w(u8 data);
-
- required_device<mcs51_cpu_device> m_maincpu;
- required_device<scn2674_device> m_avdc;
- required_shared_ptr<u8> m_charram;
- required_shared_ptr<u8> m_attrram;
- required_region_ptr<u8> m_chargen;
-
- bool m_mbc;
- u8 m_latched_attr;
-};
-
-
-void adm11_state::machine_start()
-{
- save_item(NAME(m_mbc));
-}
-
-SCN2674_DRAW_CHARACTER_MEMBER(adm11_state::draw_character)
-{
- u16 dots = m_chargen[charcode << 4 | linecount];
- dots |= (dots & 0x80) << 1;
-
- if (BIT(attrcode, 2))
- dots ^= 0x1ff;
-
- for (int i = 0; i < 9; i++)
- {
- bitmap.pix32(y, x++) = BIT(dots, 8) ? rgb_t::white() : rgb_t::black();
- dots <<= 1;
- }
-}
-
-WRITE_LINE_MEMBER(adm11_state::mbc_w)
-{
- m_mbc = state;
-}
-
-u8 adm11_state::p1_r()
-{
- // Bit 0 low = display busy?
- return 0xfe | (m_mbc ? 0 : 1);
-}
-
-void adm11_state::p1_w(u8 data)
-{
-}
-
-void adm11_state::char_latched_attr_w(offs_t offset, u8 data)
-{
- m_charram[offset] = data;
- m_attrram[offset] = m_latched_attr;
-}
-
-void adm11_state::attr_latch_w(u8 data)
-{
- m_latched_attr = data;
-}
-
-void adm11_state::prog_map(address_map &map)
-{
- map(0x0000, 0x1fff).rom().region("program", 0);
-}
-
-void adm11_state::ext_map(address_map &map)
-{
- map(0x0000, 0x07ff).ram();
- map(0x2000, 0x21ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write));
- map(0x4000, 0x4fff).mirror(0x1000).ram().share("charram");
- map(0x6000, 0x6fff).mirror(0x1000).w(FUNC(adm11_state::char_latched_attr_w));
- map(0x8000, 0x8fff).mirror(0x1000).ram().share("attrram");
- map(0xa000, 0xa000).mirror(0x1fff).w(FUNC(adm11_state::attr_latch_w));
- map(0xe000, 0xe007).rw(m_avdc, FUNC(scn2674_device::read), FUNC(scn2674_device::write));
-}
-
-void adm11_state::char_map(address_map &map)
-{
- map.global_mask(0x0fff);
- map(0x0000, 0x0fff).ram().share("charram");
-}
-
-void adm11_state::attr_map(address_map &map)
-{
- map.global_mask(0x0fff);
- map(0x0000, 0x0fff).ram().share("attrram");
-}
-
-
-static INPUT_PORTS_START(adm12)
-INPUT_PORTS_END
-
-void adm11_state::adm12(machine_config &config)
-{
- I8031(config, m_maincpu, 11.0592_MHz_XTAL); // P8031AH
- m_maincpu->set_addrmap(AS_PROGRAM, &adm11_state::prog_map);
- m_maincpu->set_addrmap(AS_IO, &adm11_state::ext_map);
- m_maincpu->port_in_cb<1>().set(FUNC(adm11_state::p1_r));
- m_maincpu->port_out_cb<1>().set(FUNC(adm11_state::p1_w));
- // TODO: RXD/TXD are serial communications; INT0 is serial keyboard data
-
- EEPROM_2804(config, "eeprom"); // X2804AP
-
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_color(rgb_t::green());
- screen.set_raw(15.93_MHz_XTAL, 900, 0, 720, 295, 0, 275); // 17.7 kHz horizontal
- screen.set_screen_update("avdc", FUNC(scn2674_device::screen_update));
-
- SCN2674(config, m_avdc, 15.93_MHz_XTAL / 9); // SCN2674B
- m_avdc->set_screen("screen");
- m_avdc->set_character_width(9); // 6 in 158-column mode?
- m_avdc->set_addrmap(0, &adm11_state::char_map);
- m_avdc->set_addrmap(1, &adm11_state::attr_map);
- m_avdc->set_display_callback(FUNC(adm11_state::draw_character));
- m_avdc->intr_callback().set_inputline(m_maincpu, MCS51_INT1_LINE);
- m_avdc->mbc_callback().set(FUNC(adm11_state::mbc_w));
-}
-
-// "MEM2764" silkscreened next to all memories, only one of which is an actual 2764 (most are SY2128-4 SRAMs)
-ROM_START(adm12)
- ROM_REGION(0x2000, "program", 0)
- ROM_LOAD("u13.bin", 0x0000, 0x2000, CRC(3c928176) SHA1(dd741c620da2ced9979456296c2af0387461cdf1)) // MBM2764-30
-
- // Keyboard MCU might be a COP420, as with the ADM 11
-
- ROM_REGION(0x1000, "chargen", 0)
- ROM_LOAD("u35.bin", 0x0000, 0x1000, CRC(66d7bc44) SHA1(cd839839f29657207098d85900cb570285be91a6)) // HN462732-P
-ROM_END
-
-COMP(1984, adm12, 0, 0, adm12, adm12, adm11_state, empty_init, "Lear Siegler", "ADM 12 Video Display Terminal", MACHINE_IS_SKELETON)