summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2017-11-14 19:48:08 -0500
committer GitHub <noreply@github.com>2017-11-14 19:48:08 -0500
commit487382c15fc0457c44b2e15c9494894cf9ec75f8 (patch)
treed7641bfa24e622666fd982de9a713b224c5e342c
parent3b0820e10ea2d45307a550903db55faff65f354c (diff)
parentc7091170c6d769f24a787643bb57e24ef74fabe7 (diff)
Merge pull request #2793 from ajrhacker/3blind
mice: Split into separate sets for each CPU-specific monitor program
-rw-r--r--src/mame/drivers/mice.cpp131
-rw-r--r--src/mame/mame.lst6
2 files changed, 117 insertions, 20 deletions
diff --git a/src/mame/drivers/mice.cpp b/src/mame/drivers/mice.cpp
index 85b317b71c8..907ae395520 100644
--- a/src/mame/drivers/mice.cpp
+++ b/src/mame/drivers/mice.cpp
@@ -8,12 +8,20 @@ Microtek International Inc MICE (Micro-In-Circuit Emulator)
This is a CPU emulator for development work.
-Each CPU has a plugin card with various chips. The usual complement is
- the selected CPU, a 8085, 8255/8251/8155/6116, eproms and crystals.
+Each emulated CPU has its own plugin "personality" card, containing the CPU
+itself, an XTAL clock and enough latches, buffers and gates to allow total
+control to be exercised over its bus activity.
-The connection to the outside world is via RS232 to a terminal.
+In the original MICE system, the MCP-85 main control card could be reused
+with different CPU cards after replacing the EPROMs. The more spaciously
+designed MICE-II eliminated this as a separate board and moved its primary
+components (8085/8255/8251/8155/6116/ROMs/6.144 XTAL) onto the CEP (Control
+Emulation Processor) card for each CPU; however, the RTT (Real-time Trace)
+board (providing extra I/O ports) and UEM (Universal Emulation Memory)
+boards could be shared between CEP cards.
-No schematic available. This driver is guesswork.
+The connection to the outside world is via a RS-232C port to a terminal.
+The serial protocol is configurable through a 6-position DIP switch.
There's a mistake in the boot rom: if the test of the 8155 or 8255 fail, it
attempts to write a suitable message to the screen, but as the 8251 hasn't
@@ -44,7 +52,7 @@ private:
static ADDRESS_MAP_START(mice_mem, AS_PROGRAM, 8, mice_state)
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("mice_6502", 0)
+ AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("mcp", 0)
AM_RANGE(0x4400, 0x47ff) AM_RAM //(U13)
AM_RANGE(0x6000, 0x60ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w)
ADDRESS_MAP_END
@@ -58,6 +66,29 @@ static ADDRESS_MAP_START(mice_io, AS_IO, 8, mice_state)
AM_RANGE(0x70, 0x73) AM_DEVREADWRITE("ppi", i8255_device, read, write)
ADDRESS_MAP_END
+static ADDRESS_MAP_START(mice2_mem, AS_PROGRAM, 8, mice_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("cep", 0)
+ AM_RANGE(0x9000, 0x90ff) AM_DEVREADWRITE("rpt", i8155_device, memory_r, memory_w)
+ AM_RANGE(0xb000, 0xb7ff) AM_RAM
+ AM_RANGE(0xe800, 0xe8ff) AM_DEVREADWRITE("rtt8155", i8155_device, memory_r, memory_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(mice2_io, AS_IO, 8, mice_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w)
+ AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w)
+ AM_RANGE(0x90, 0x97) AM_DEVREADWRITE("rpt", i8155_device, io_r, io_w)
+ AM_RANGE(0xa0, 0xa3) AM_DEVREADWRITE("ppi", i8255_device, read, write)
+ AM_RANGE(0xc0, 0xc3) AM_DEVREADWRITE("rttppi1", i8255_device, read, write)
+ AM_RANGE(0xc8, 0xcb) AM_DEVREADWRITE("rttppi2", i8255_device, read, write)
+ AM_RANGE(0xd0, 0xd3) AM_DEVREADWRITE("rttppi3", i8255_device, read, write)
+ AM_RANGE(0xd8, 0xdb) AM_DEVREADWRITE("rttppi4", i8255_device, read, write)
+ AM_RANGE(0xe0, 0xe3) AM_DEVREADWRITE("rttppi5", i8255_device, read, write)
+ AM_RANGE(0xe8, 0xed) AM_DEVREADWRITE("rtt8155", i8155_device, io_r, io_w)
+ADDRESS_MAP_END
+
/* Input ports */
static INPUT_PORTS_START( mice )
PORT_START("BAUD")
@@ -80,7 +111,28 @@ static INPUT_PORTS_START( mice )
// "The number of stop bits is permanently set to one; and the communication is full duplex." (manual, p. 6)
INPUT_PORTS_END
-static DEVICE_INPUT_DEFAULTS_START( terminal )
+static INPUT_PORTS_START( micev3 )
+ PORT_START("BAUD")
+ PORT_DIPNAME(0x07, 0x02, "Baud Rate") PORT_DIPLOCATION("U17:1,2,3")
+ PORT_DIPSETTING(0x06, "150")
+ PORT_DIPSETTING(0x05, "300")
+ PORT_DIPSETTING(0x04, "600")
+ PORT_DIPSETTING(0x03, "1200")
+ PORT_DIPSETTING(0x02, "2400")
+ PORT_DIPSETTING(0x01, "4800")
+ PORT_DIPSETTING(0x00, "9600")
+ PORT_DIPSETTING(0x07, "19200") // 110 baud on older firmware versions
+ PORT_DIPNAME(0x08, 0x00, "Data Bits") PORT_DIPLOCATION("U17:4")
+ PORT_DIPSETTING(0x00, "7")
+ PORT_DIPSETTING(0x08, "8")
+ PORT_DIPNAME(0x30, 0x30, "Parity") PORT_DIPLOCATION("U17:5,6")
+ PORT_DIPSETTING(0x00, DEF_STR(None))
+ PORT_DIPSETTING(0x30, "Even")
+ PORT_DIPSETTING(0x10, "Odd")
+ // "The number of stop bits is permanently set at two; and the communication is full duplex." (manual, p. 2-7)
+INPUT_PORTS_END
+
+static DEVICE_INPUT_DEFAULTS_START( mice_terminal )
DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_2400 )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_2400 )
DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 )
@@ -89,6 +141,15 @@ static DEVICE_INPUT_DEFAULTS_START( terminal )
DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_1 )
DEVICE_INPUT_DEFAULTS_END
+static DEVICE_INPUT_DEFAULTS_START( mice2_terminal )
+ DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_2400 )
+ DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_2400 )
+ DEVICE_INPUT_DEFAULTS( "RS232_STARTBITS", 0xff, RS232_STARTBITS_1 )
+ DEVICE_INPUT_DEFAULTS( "RS232_DATABITS", 0xff, RS232_DATABITS_7 )
+ DEVICE_INPUT_DEFAULTS( "RS232_PARITY", 0xff, RS232_PARITY_EVEN )
+ DEVICE_INPUT_DEFAULTS( "RS232_STOPBITS", 0xff, RS232_STOPBITS_2 )
+DEVICE_INPUT_DEFAULTS_END
+
static MACHINE_CONFIG_START( mice )
/* basic machine hardware */
@@ -107,7 +168,7 @@ static MACHINE_CONFIG_START( mice )
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd))
MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", i8251_device, write_cts))
- MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal)
+ MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", mice_terminal)
MCFG_DEVICE_ADD("rpt", I8155, XTAL_6_144MHz / 2)
MCFG_I8155_IN_PORTC_CB(IOPORT("BAUD"))
@@ -117,30 +178,62 @@ static MACHINE_CONFIG_START( mice )
MCFG_DEVICE_ADD("ppi", I8255, 0)
MACHINE_CONFIG_END
-/* ROM definition */
-ROM_START( mice )
- ROM_REGION( 0x10000, "mice2_z80b", 0 )
+static MACHINE_CONFIG_DERIVED( mice2, mice )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(mice2_mem)
+ MCFG_CPU_IO_MAP(mice2_io)
+
+ MCFG_DEVICE_MODIFY("rs232")
+ MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", mice2_terminal)
+
+ MCFG_DEVICE_ADD("rttppi1", I8255, 0)
+ MCFG_DEVICE_ADD("rttppi2", I8255, 0)
+ MCFG_DEVICE_ADD("rttppi3", I8255, 0)
+ MCFG_DEVICE_ADD("rttppi4", I8255, 0)
+ MCFG_DEVICE_ADD("rttppi5", I8255, 0)
+ MCFG_DEVICE_ADD("rtt8155", I8155, 0)
+MACHINE_CONFIG_END
+
+/* ROM definitions */
+ROM_START( mice_6502 )
+ ROM_REGION( 0x4000, "mcp", 0 )
+ ROM_LOAD( "6502_u10_v.2.0", 0x2000, 0x1000, CRC(496c53a7) SHA1(f28cddef18ab3e0eca1fea125dd678a54817c9df) )
+ ROM_LOAD( "6502_u11_v.2.0", 0x1000, 0x1000, CRC(8d655bd2) SHA1(94936553f1692ede0934e3c7b599f3ad6adb6aec) )
+ ROM_LOAD( "6502_u12_v.2.0", 0x0000, 0x1000, CRC(cee810ee) SHA1(ab642cda73f4b3f715ddc2909ba2b48cbd474d4d) )
+ROM_END
+
+ROM_START( mice2_z80 )
+ ROM_REGION( 0x8000, "cep", 0 )
ROM_LOAD( "z80_u2_v.3.0", 0x4000, 0x2000, CRC(992b1b53) SHA1(f7b66c49ab26a9f97b2e6ebe45d162daa66d8a67) )
ROM_LOAD( "z80_u3_v.3.0", 0x2000, 0x2000, CRC(48d0be9b) SHA1(602af21868b1b5e6d488706a831259d78fefad6f) )
ROM_LOAD( "z80_u4_v.3.0", 0x0000, 0x2000, CRC(4fe2d08d) SHA1(902b98357b8f2e61f68dd171478368a3ac47af6e) )
- ROM_REGION( 0x10000, "mice2_6502", 0 )
+ROM_END
+
+ROM_START( mice2_6502 )
+ ROM_REGION( 0x8000, "cep", 0 )
ROM_LOAD( "6502_u1_v.3.2", 0x6000, 0x2000, CRC(0ba10943) SHA1(e7590e2c1d9d2b1ff8cca0f5da366650ea4d50e3) )
ROM_LOAD( "6502_u2_v.3.2", 0x4000, 0x2000, CRC(f3169423) SHA1(a588a2e1894f523cf11c34d036beadbfe5b10538) )
ROM_LOAD( "6502_u3_v.3.2", 0x2000, 0x2000, CRC(d5c77c3f) SHA1(71439735ed62db07bee713775ee2189120d1a1e7) )
ROM_LOAD( "6502_u4_v.3.2", 0x0000, 0x2000, CRC(6acfc3a1) SHA1(3572a4798873c21a247a43da8419e7b9a181c67d) )
- ROM_REGION( 0x10000, "mice2_8085", 0 )
+ROM_END
+
+ROM_START( mice2_8085 )
+ ROM_REGION( 0x8000, "cep", 0 )
ROM_LOAD( "8085_u2_v.3.1", 0x4000, 0x2000, CRC(2fce00a5) SHA1(0611f928be663a9279781d9f496fc950fd4ee7e2) )
ROM_LOAD( "8085_u3_v.3.1", 0x2000, 0x2000, CRC(16ee3018) SHA1(9e215504bcea2c5ebfb7578ecf371eec45cbe5d7) )
ROM_LOAD( "8085_u4_v.3.1", 0x0000, 0x2000, CRC(5798f2b5) SHA1(e0fe9411394bded8a77bc6a0f71519aad7800125) )
- ROM_REGION( 0x10000, "mice2_6809", 0 )
+ROM_END
+
+ROM_START( mice2_6809 )
+ ROM_REGION( 0x8000, "cep", 0 )
ROM_LOAD( "6809_u1_v.3.4", 0x0000, 0x8000, CRC(b94d043d) SHA1(822697485f064286155f2a66cdbdcb0bd66ddb8c) )
- ROM_REGION( 0x10000, "mice_6502", 0 )
- ROM_LOAD( "6502_u10_v.2.0", 0x2000, 0x1000, CRC(496c53a7) SHA1(f28cddef18ab3e0eca1fea125dd678a54817c9df) )
- ROM_LOAD( "6502_u11_v.2.0", 0x1000, 0x1000, CRC(8d655bd2) SHA1(94936553f1692ede0934e3c7b599f3ad6adb6aec) )
- ROM_LOAD( "6502_u12_v.2.0", 0x0000, 0x1000, CRC(cee810ee) SHA1(ab642cda73f4b3f715ddc2909ba2b48cbd474d4d) )
ROM_END
/* Driver */
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1981, mice, 0, 0, mice, mice, mice_state, 0, "Microtek International Inc", "Mice", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1981, mice_6502, 0, 0, mice, mice, mice_state, 0, "Microtek International", "MICE 6502 (Rev-A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1984, mice2_z80, 0, 0, mice2, micev3, mice_state, 0, "Microtek International", "MICE-II Z80 (Rev-F)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1987, mice2_6502, mice2_z80, 0, mice2, micev3, mice_state, 0, "Microtek International", "MICE-II 6502 (Rev-F)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1987, mice2_8085, mice2_z80, 0, mice2, micev3, mice_state, 0, "Microtek International", "MICE-II 8085 (Rev-M)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1987, mice2_6809, mice2_z80, 0, mice2, micev3, mice_state, 0, "Microtek International", "MICE-II 6809(E) (Rev-L)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index a39e07b946b..72e4a9bd251 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -20717,7 +20717,11 @@ mhavocp // 136025 (c) 1983
mhavocrv // (hack)
@source:mice.cpp
-mice //
+mice_6502 // (c) 1981 Microtek International, Inc.
+mice2_z80 // (c) 1986 Microtek International, Inc.
+mice2_6502 // (c) 1986 Microtek International, Inc.
+mice2_8085 // (c) 1986 Microtek International, Inc.
+mice2_6809 // (c) 1986 Microtek International, Inc.
@source:micral.cpp
micral //