From ca9de0f13d2fe581eebdd70356fa2edc8ded36e8 Mon Sep 17 00:00:00 2001 From: hap Date: Sat, 8 Jul 2017 17:54:26 +0200 Subject: [PATCH] New working clones added ------------- Fidelity Excel 68000 Mach II (rev. C+) [CB-Emu] Fidelity Excel 68000 Mach III [CB-Emu] --- src/mame/drivers/fidel68k.cpp | 89 +++++++++++++++++++++++++++-------- src/mame/mame.lst | 4 +- 2 files changed, 72 insertions(+), 21 deletions(-) diff --git a/src/mame/drivers/fidel68k.cpp b/src/mame/drivers/fidel68k.cpp index 36e4c65f0d6..b2e5ded41d4 100644 --- a/src/mame/drivers/fidel68k.cpp +++ b/src/mame/drivers/fidel68k.cpp @@ -11,6 +11,7 @@ such as Arena(in editmode). TODO: + - fex68km3 addressmap RAM mirror? PCB has 2*32K RAM, emulated has 16K+64K - how does dual-CPU work? - USART is not emulated - V9(68030 @ 32MHz) is faster than V10(68040 @ 25MHz) but it should be the other @@ -23,11 +24,14 @@ Excel 68000 (model 6094) ------------------------ -16KB RAM(2*SRM2264C-10), 64KB ROM(2*AT27C256-15DC) +16KB RAM(2*SRM2264C-10 @ U8/U9), 64KB ROM(2*AT27C256-15DC @ U6/U7) HD68HC000P12 CPU, 12MHz XTAL PCB label 510-1129A01 PCB has edge connector for module, but no external slot +There's room for 2 SIMMs at U22 and U23. Unpopulated in Excel 68000, used for +128KB hashtable RAM in Mach II. Mach III has wire mods to U8/U9(2*32KB). + I/O is via TTL, overall very similar to EAG. @@ -181,7 +185,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(irq_off) { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); } // Excel 68000 - DECLARE_WRITE8_MEMBER(fexcel68k_mux_w); + DECLARE_WRITE8_MEMBER(fex68k_mux_w); // EAG(6114/6117) DECLARE_DRIVER_INIT(eag); @@ -202,7 +206,7 @@ public: Excel 68000 ******************************************************************************/ -WRITE8_MEMBER(fidel68k_state::fexcel68k_mux_w) +WRITE8_MEMBER(fidel68k_state::fex68k_mux_w) { // a1-a3,d0: 74259 u8 mask = 1 << offset; @@ -282,13 +286,23 @@ READ8_MEMBER(fidel68k_state::eag_cart_r) // Excel 68000 -static ADDRESS_MAP_START( fexcel68k_map, AS_PROGRAM, 16, fidel68k_state ) +static ADDRESS_MAP_START( fex68k_map, AS_PROGRAM, 16, fidel68k_state ) AM_RANGE(0x000000, 0x00ffff) AM_ROM AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_leds_w, 0x00ff) AM_RANGE(0x000000, 0x00000f) AM_MIRROR(0x00fff0) AM_WRITE8(eag_7seg_w, 0xff00) AM_RANGE(0x044000, 0x047fff) AM_RAM AM_RANGE(0x100000, 0x10000f) AM_MIRROR(0x03fff0) AM_READ8(eag_input1_r, 0x00ff) - AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fexcel68k_mux_w, 0x00ff) + AM_RANGE(0x140000, 0x14000f) AM_MIRROR(0x03fff0) AM_WRITE8(fex68k_mux_w, 0x00ff) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( fex68km2_map, AS_PROGRAM, 16, fidel68k_state ) + AM_RANGE(0x200000, 0x21ffff) AM_RAM + AM_IMPORT_FROM( fex68k_map ) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( fex68km3_map, AS_PROGRAM, 16, fidel68k_state ) + AM_RANGE(0x200000, 0x20ffff) AM_RAM + AM_IMPORT_FROM( fex68k_map ) ADDRESS_MAP_END @@ -345,7 +359,7 @@ ADDRESS_MAP_END Input Ports ******************************************************************************/ -static INPUT_PORTS_START( fexcel68k ) +static INPUT_PORTS_START( fex68k ) PORT_INCLUDE( fidel_cb_buttons ) PORT_START("IN.8") @@ -389,11 +403,11 @@ INPUT_PORTS_END Machine Drivers ******************************************************************************/ -static MACHINE_CONFIG_START( fexcel68k ) +static MACHINE_CONFIG_START( fex68k ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL_12MHz) // HD68HC000P12 - MCFG_CPU_PROGRAM_MAP(fexcel68k_map) + MCFG_CPU_PROGRAM_MAP(fex68k_map) MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_on", fidel68k_state, irq_on, attotime::from_hz(618)) // theoretical frequency from 556 timer (22nF, 91K + 20K POT @ 14.8K, 0.1K), measurement was 580Hz MCFG_TIMER_START_DELAY(attotime::from_hz(618) - attotime::from_nsec(1525)) // active for 1.525us MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_off", fidel68k_state, irq_off, attotime::from_hz(618)) @@ -408,6 +422,21 @@ static MACHINE_CONFIG_START( fexcel68k ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( fex68km2, fex68k ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(fex68km2_map) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( fex68km3, fex68k ) + + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_DEVICE_CLOCK(XTAL_16MHz) // factory overclock + MCFG_CPU_PROGRAM_MAP(fex68km3_map) +MACHINE_CONFIG_END + static MACHINE_CONFIG_START( eag ) /* basic machine hardware */ @@ -479,10 +508,22 @@ MACHINE_CONFIG_END ROM Definitions ******************************************************************************/ -ROM_START( fexcel68k ) // model 6094, PCB label 510.1120B01 +ROM_START( fex68k ) // model 6094, PCB label 510.1120B01 ROM_REGION16_BE( 0x10000, "maincpu", 0 ) ROM_LOAD16_BYTE("e3_yellow.u6", 0x00000, 0x08000, CRC(a8a27714) SHA1(bc42a561eb39dd389c7831f1a25ad260510085d8) ) // AT27C256-15 - ROM_LOAD16_BYTE("04_red.u7", 0x00001, 0x08000, CRC(560a14b7) SHA1(11f2375255bfa229314697f103e891ba1cf0c715) ) // " + ROM_LOAD16_BYTE("o4_red.u7", 0x00001, 0x08000, CRC(560a14b7) SHA1(11f2375255bfa229314697f103e891ba1cf0c715) ) // " +ROM_END + +ROM_START( fex68km2 ) // model 6097, PCB label 510.1120B01 + ROM_REGION16_BE( 0x10000, "maincpu", 0 ) + ROM_LOAD16_BYTE("fex68km2.u6", 0x00000, 0x08000, CRC(2e65e7ad) SHA1(4f3aec12041c9014d5d700909bac66bae1f9eadf) ) + ROM_LOAD16_BYTE("fex68km2.u7", 0x00001, 0x08000, CRC(4c20334a) SHA1(2e575b88c41505cc89599d2fc13e1e84fe474469) ) +ROM_END + +ROM_START( fex68km3 ) // model 6098, PCB label 510.1120B01 + ROM_REGION16_BE( 0x10000, "maincpu", 0 ) + ROM_LOAD16_BYTE("me_white.u6", 0x00000, 0x08000, CRC(4b14cd9f) SHA1(4d41196900a71bf0699dae50f4726acc0ed3dced) ) // 27c256 + ROM_LOAD16_BYTE("mo_yellow.u7", 0x00001, 0x08000, CRC(b96b0b5f) SHA1(281145be802efb38ed764aecb26b511dcd71cb87) ) // " ROM_END @@ -510,6 +551,14 @@ ROM_START( feagv9 ) ROM_LOAD16_BYTE("eag-v9a", 0x00001, 0x10000, CRC(255c63c0) SHA1(8aa0397bdb3731002f5b066cd04ec62531267e22) ) ROM_END +ROM_START( feagv10 ) + ROM_REGION( 0x20000, "maincpu", 0 ) + ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256 + ROM_LOAD32_BYTE("17", 0x00001, 0x08000, CRC(bfd14916) SHA1(115af6dfd29ddd8ad6d2ce390f8ecc4d60de6fce) ) // " + ROM_LOAD32_BYTE("18", 0x00002, 0x08000, CRC(9341dcaf) SHA1(686bd4799e89ffaf11a813d4cf5a2aedd4c2d97a) ) // " + ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // " +ROM_END + ROM_START( feagv11 ) ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD32_BYTE("16", 0x00000, 0x08000, CRC(8375d61f) SHA1(e042f6f01480c59ee09a458cf34f135664479824) ) // 27c256 @@ -518,20 +567,20 @@ ROM_START( feagv11 ) ROM_LOAD32_BYTE("19", 0x00003, 0x08000, CRC(a70c5468) SHA1(7f6b4f46577d5cfdaa84d387c7ce35d941e5bbc7) ) // " ROM_END -#define rom_feagv10 rom_feagv11 - /****************************************************************************** Drivers ******************************************************************************/ -// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS -CONS( 1987, fexcel68k, 0, 0, fexcel68k, fexcel68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS +CONS( 1987, fex68k, 0, 0, fex68k, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, fex68km2, fex68k, 0, fex68km2, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach II (rev. C+)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1988, fex68km3, fex68k, 0, fex68km3, fex68k, fidel68k_state, 0, "Fidelity Electronics", "Excel 68000 Mach III", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2, 0, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1989, feagv2a, feagv2, 0, eag, eag, fidel68k_state, eag, "Fidelity Electronics", "Elite Avant Garde (model 6114-2/3/4, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv7, feagv2, 0, eagv7, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv9, feagv2, 0, eagv9, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-9)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 1990, feagv10, feagv2, 0, eagv10, eag, fidel68k_state, 0, "Fidelity Electronics", "Elite Avant Garde (model 6117-10)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) +CONS( 2002, feagv11, feagv2, 0, eagv11, eag, fidel68k_state, 0, "hack (Wilfried Bucke)", "Elite Avant Garde (model 6117-11)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e7cdc33039b..1f63bae7c30 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -12490,7 +12490,9 @@ feagv2 // feagv2a // feagv7 // feagv9 // -fexcel68k // +fex68k // +fex68km2 // +fex68km3 // @source:fidelmcs48.cpp fscc6 //