diff options
Diffstat (limited to 'src/mame/drivers/mod8.cpp')
-rw-r--r-- | src/mame/drivers/mod8.cpp | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/src/mame/drivers/mod8.cpp b/src/mame/drivers/mod8.cpp deleted file mode 100644 index 262ded69e62..00000000000 --- a/src/mame/drivers/mod8.cpp +++ /dev/null @@ -1,178 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Miodrag Milanovic -/*************************************************************************** - -Microsystems International Limited MOD-8 - -M.I.L. was formed in 1968 from a joint venture between the Canadian -Government and Northern Telecom. It produced a variety of computer -chips, eproms, etc, plus parts for the telephone company. It folded -in 1975. -(Info from http://www.cse.yorku.ca/museum/v_tour/artifacts/artifacts.htm) - - - 2009-11-18 Skeleton driver. - 2009-12-02 Working driver [Miodrag Milanovic] - 2011-06-14 Modernised & above notes added. - -Commands: -All commands consist of 3 uppercase letters. If further info is required -then a * prompt is printed on a new line, where you will enter the data. -All numbers are OCTAL (3/6 digits with leading zeros). Since a teletypewriter -is being used, there is no cursor. Do NOT press Enter except after these -commands, otherwise things get confusing. - -LOC - set current location pointer (the CLP) -DLP - display CLP -DPS - dump symbolic -LDO - load octal -DPO - dump octal -LBF - load BNPF format -DBF - dump BNPF format -EDT - enter Edit Mode -XQT - initiate program execution -CPY - copy routine -TRN - translate routine -SBP - set breakpoint -CBP - clear breakpoint -PRG - program PROM - -Pressing Ctrl-A will escape back to the monitor. You will see 8 dashes. - -Commands in the Edit Mode: -When you enter the Edit Mode it displays the CLP followed by a slash. - -nnn - enter a new value into this memory location and increment the CLP -` (tic) - decrement CLP -@ - same as XQT -R - return to monitor -*nnnnnn - change CLP to this value -space - display current contents of memory - -While in 'space' mode, press a letter to increment CLP, or shift-delete -(underscore character) followed by a new byte for this location. - -****************************************************************************/ - -#include "emu.h" -#include "cpu/i8008/i8008.h" -#include "machine/teleprinter.h" - -class mod8_state : public driver_device -{ -public: - mod8_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_teleprinter(*this, TELEPRINTER_TAG) - , m_maincpu(*this, "maincpu") - { } - - void mod8(machine_config &config); - -private: - DECLARE_WRITE8_MEMBER(out_w); - DECLARE_WRITE8_MEMBER(tty_w); - void kbd_put(u8 data); - DECLARE_READ8_MEMBER(tty_r); - IRQ_CALLBACK_MEMBER(mod8_irq_callback); - void mod8_io(address_map &map); - void mod8_mem(address_map &map); - - uint16_t m_tty_data; - uint8_t m_tty_key_data; - int m_tty_cnt; - virtual void machine_reset() override; - required_device<teleprinter_device> m_teleprinter; - required_device<cpu_device> m_maincpu; -}; - -WRITE8_MEMBER( mod8_state::out_w ) -{ - m_tty_data >>= 1; - m_tty_data |= BIT(data, 0) ? 0x8000 : 0; - m_tty_cnt++; - - if (m_tty_cnt == 10) - { - m_teleprinter->write((m_tty_data >> 7) & 0x7f); - m_tty_cnt = 0; - } -} - -WRITE8_MEMBER( mod8_state::tty_w ) -{ - m_tty_data = 0; - m_tty_cnt = 0; -} - -READ8_MEMBER( mod8_state::tty_r ) -{ - uint8_t d = m_tty_key_data & 1; - m_tty_key_data >>= 1; - return d; -} - -void mod8_state::mod8_mem(address_map &map) -{ - map.unmap_value_high(); - map(0x000, 0x6ff).rom(); - map(0x700, 0xfff).ram(); -} - -void mod8_state::mod8_io(address_map &map) -{ - map.unmap_value_high(); - map(0x00, 0x00).r(FUNC(mod8_state::tty_r)); - map(0x0a, 0x0a).w(FUNC(mod8_state::out_w)); - map(0x0b, 0x0b).w(FUNC(mod8_state::tty_w)); -} - -/* Input ports */ -static INPUT_PORTS_START( mod8 ) -INPUT_PORTS_END - -IRQ_CALLBACK_MEMBER(mod8_state::mod8_irq_callback) -{ - return 0xC0; // LAA - NOP equivalent -} - -void mod8_state::machine_reset() -{ -} - -void mod8_state::kbd_put(u8 data) -{ - m_tty_key_data = data ^ 0xff; - m_maincpu->set_input_line(0, HOLD_LINE); -} - -void mod8_state::mod8(machine_config &config) -{ - /* basic machine hardware */ - I8008(config, m_maincpu, 800000); - m_maincpu->set_addrmap(AS_PROGRAM, &mod8_state::mod8_mem); - m_maincpu->set_addrmap(AS_IO, &mod8_state::mod8_io); - m_maincpu->set_irq_acknowledge_callback(FUNC(mod8_state::mod8_irq_callback)); - - /* video hardware */ - TELEPRINTER(config, m_teleprinter, 0); - m_teleprinter->set_keyboard_callback(FUNC(mod8_state::kbd_put)); -} - - -/* ROM definition */ -ROM_START( mod8 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_LOAD( "mon8.001", 0x0000, 0x0100, CRC(b82ac6b8) SHA1(fbea5a6dd4c779ca1671d84089f857a3f548ffcb)) - ROM_LOAD( "mon8.002", 0x0100, 0x0100, CRC(8b82bc3c) SHA1(66222511527b27e56a5a1f9656d424d407eac7d3)) - ROM_LOAD( "mon8.003", 0x0200, 0x0100, CRC(679ae913) SHA1(22423efcb9051c9812fcbac9a27af70415d0dd81)) - ROM_LOAD( "mon8.004", 0x0300, 0x0100, CRC(2a4e580f) SHA1(8b0cb9660fde3cacd299faaa31724e4f3262d77f)) - ROM_LOAD( "mon8.005", 0x0400, 0x0100, CRC(e281bb1a) SHA1(cc7c2746e075512dbf5eed88ae3aea009558dbd0)) - ROM_LOAD( "mon8.006", 0x0500, 0x0100, CRC(b7e2f585) SHA1(5408adabc3df6e6ea8dcfb2327b2883b435ab85e)) - ROM_LOAD( "mon8.007", 0x0600, 0x0100, CRC(49a5c626) SHA1(66c1865db9151818d3b20ec3c68dd793cb98a221)) -ROM_END - -/* Driver */ - -// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS -COMP( 1974, mod8, 0, 0, mod8, mod8, mod8_state, empty_init, "Microsystems International Ltd", "MOD-8", MACHINE_NO_SOUND_HW ) |