New working clones

------------------
Elite Avant Garde (prototype on Elite A/S board)
This commit is contained in:
hap 2024-06-18 20:43:28 +02:00
parent 7d6306549a
commit 4b8c464305
4 changed files with 77 additions and 27 deletions

View File

@ -24,14 +24,14 @@ matches (they won it in 1983). A/S stands for auto sensory, it's the 1st
Fidelity board with magnet sensors. The magnetic chessboard was licensed from
AVE Micro Systems, in fact, the PC model board is the same one as in AVE's ARB.
hardware overview:
- 8*8 magnet sensors, 11 buttons, 8*(8+1) LEDs + 4*7seg LEDs
Hardware notes:
- PCB label: FIDELITY ELECTRONICS, 510-1071A01, copyright 1983
- R65C02P4 or R6502BP CPU, default frequency 3MHz*
- 4KB RAM (2*HM6116), 24KB ROM
- TSI S14001A + speech ROM
- I/O with 8255 PPI and bunch of TTL
- 8*8 magnet sensors, 11 buttons, 8*(8+1) LEDs + 4*7seg LEDs
- module slot and printer port
- PCB label 510-1071A01
*In West Germany, some distributors released it with overclocked CPUs,
advertised as 3.2, 3.6, or 4MHz. Unmodified EAS PCB photos show only a 3MHz XTAL.
@ -51,13 +51,22 @@ I was at an internal sales meeting. No one could figure out how to start a new g
Sid turned to me with a questioning look. I showed him how to do it (multiple key
presses as I recall) and explained about Kathy. He said, don't let them do it again."
Prestige Challenger (PC) hardware is very similar. It was released before EAS,
it doesn't have the 8255 PPI, but has more RAM(7*TMM2016P). Some were released at
3.6MHz instead of 4MHz, maybe due to hardware instability? Opening module PC16 was
included by default, this module is the same as CB16 but at different form factor.
Prestige Challenger (model PC, 1982 510-1050A01 PCB) hardware is very similar. It
was released before EAS, it doesn't have the 8255 PPI, but has more RAM (7*TMM2016P).
Some were released at 3.6MHz instead of 4MHz, maybe due to hardware instability?
Opening module PC16 was included by default, this module is the same as CB16 but
at different form factor.
Elite Avant Garde (models 6081,6088,6089) is on similar hardware as EAS. Level B8
starts a self-test and displays ROM checksums, press CL to advance.
There's also an unreleased prototype on a newer 1985 PCB revision (Fidelity Computer
Products, 510-1071B01 PCB). It has 16KB RAM (2*HM6264LP-15), a 5MHz CPU, IRQ is via
a 556 timer instead of a 38.4kHz resonator. This board came from Peter Reckwitz's
inventory, he was a Fidelity representative in West Germany at the time. Considering
the "EXP" (experimental?) EPROM labels, it can be speculated that this version
competed in one of the chess computer tournaments.
Elite Avant Garde (models 6081,6088,6089, Fidelity International, 510-1071C01 PCB)
is nearly the same as the 510-1071B01 PCB above, with one extra 7seg panel. Level
B8 starts a self-test and displays ROM checksums, press CL to advance.
Fidelity Elite Private Line were EAS/EAG conversions released by Fidelity Deutschland.
The "Elite Privat" was probably for the local market and the "Private Line" for
@ -118,6 +127,7 @@ public:
void eas(machine_config &config);
void ewc(machine_config &config);
void easc(machine_config &config);
void eagp(machine_config &config);
DECLARE_INPUT_CHANGED_MEMBER(change_cpu_freq);
@ -143,6 +153,7 @@ protected:
// address maps
void eas_map(address_map &map);
void eag_map(address_map &map);
void pc_map(address_map &map);
// I/O handlers
@ -195,11 +206,9 @@ protected:
virtual void machine_reset() override;
private:
// address maps
void eag_map(address_map &map);
void eag2100_map(address_map &map);
// I/O handlers
// board is rotated 90 degrees
virtual u8 board_r() override { return m_board->read_rank(m_inp_mux); }
};
@ -355,15 +364,15 @@ void elite_state::eas_map(address_map &map)
map(0xc000, 0xffff).rom();
}
void eag_state::eag_map(address_map &map)
void elite_state::eag_map(address_map &map)
{
map.unmap_value_high();
map(0x0000, 0x1fff).ram().share("nvram.ic8");
map(0x2000, 0x5fff).r("cartslot", FUNC(generic_slot_device::read_rom));
map(0x7000, 0x7003).rw(m_ppi8255, FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x7020, 0x7027).w(FUNC(eag_state::segment_w)).nopr();
map(0x7030, 0x7037).w(FUNC(eag_state::led_w)).nopr();
map(0x7050, 0x7050).r(FUNC(eag_state::input_r));
map(0x7020, 0x7027).w(FUNC(elite_state::segment_w)).nopr();
map(0x7030, 0x7037).w(FUNC(elite_state::led_w)).nopr();
map(0x7050, 0x7050).r(FUNC(elite_state::input_r));
map(0x8000, 0x9fff).ram().share("nvram.ic6");
map(0xa000, 0xffff).rom();
}
@ -432,6 +441,13 @@ static INPUT_PORTS_START( pc )
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Reset") // led display still says - G C -
INPUT_PORTS_END
static INPUT_PORTS_START( eagp )
PORT_INCLUDE( eas )
PORT_MODIFY("CPU") // 5MHz
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
static INPUT_PORTS_START( eag )
PORT_INCLUDE( fidel_clockdiv_4 )
@ -460,7 +476,7 @@ INPUT_PORTS_END
void elite_state::pc(machine_config &config)
{
// basic machine hardware
R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P4
R65C02(config, m_maincpu, 4_MHz_XTAL); // R65C02P3/4
m_maincpu->set_addrmap(AS_PROGRAM, &elite_state::pc_map);
auto &irq_clock(CLOCK(config, "irq_clock", 38.4_kHz_XTAL/64)); // through 4060 IC, 600Hz
@ -522,13 +538,13 @@ void elite_state::easc(machine_config &config)
m_maincpu->set_clock(4_MHz_XTAL);
}
void eag_state::eag(machine_config &config)
void elite_state::eagp(machine_config &config)
{
eas(config);
// basic machine hardware
m_maincpu->set_clock(5_MHz_XTAL); // R65C02P4
m_maincpu->set_addrmap(AS_PROGRAM, &eag_state::eag_map);
m_maincpu->set_clock(5_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &elite_state::eag_map);
auto &irq_clock(CLOCK(config.replace(), "irq_clock", 600)); // from 556 timer (22nF, 82K+pot, 1K), ideal frequency is 600Hz
irq_clock.set_pulse_width(attotime::from_nsec(15250)); // active for 15.25us
@ -537,6 +553,11 @@ void eag_state::eag(machine_config &config)
config.device_remove("nvram");
NVRAM(config, "nvram.ic8", nvram_device::DEFAULT_ALL_0);
NVRAM(config, "nvram.ic6", nvram_device::DEFAULT_ALL_0);
}
void eag_state::eag(machine_config &config)
{
eagp(config);
// video hardware
m_display->set_segmask(0x1ef, 0x7f);
@ -655,15 +676,15 @@ ROM_END
ROM_START( feasgla )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("4.0_86", 0x8000, 0x0800, CRC(32784e2d) SHA1(dae060a5c49cc1993a78db293cd80464adfd892d) )
ROM_LOAD("4.0_8_6", 0x8000, 0x0800, CRC(32784e2d) SHA1(dae060a5c49cc1993a78db293cd80464adfd892d) )
ROM_CONTINUE( 0x9000, 0x0800 )
ROM_CONTINUE( 0x8800, 0x0800 )
ROM_CONTINUE( 0x9800, 0x0800 )
ROM_LOAD("c5", 0xc000, 0x0800, CRC(ddb80412) SHA1(b1d9435d9a71b8eb241a2169bfbaa0499f510769) )
ROM_LOAD("4.0_c_5", 0xc000, 0x0800, CRC(ddb80412) SHA1(b1d9435d9a71b8eb241a2169bfbaa0499f510769) )
ROM_CONTINUE( 0xd000, 0x0800 )
ROM_CONTINUE( 0xc800, 0x0800 )
ROM_CONTINUE( 0xd800, 0x0800 )
ROM_LOAD("4.0_e4", 0xe000, 0x0800, CRC(62a5305a) SHA1(a361bd9a54b903d7b0fbacabe55ea5ccbbc1dc51) )
ROM_LOAD("4.0_e_4", 0xe000, 0x0800, CRC(62a5305a) SHA1(a361bd9a54b903d7b0fbacabe55ea5ccbbc1dc51) )
ROM_CONTINUE( 0xf000, 0x0800 )
ROM_CONTINUE( 0xe800, 0x0800 )
ROM_CONTINUE( 0xf800, 0x0800 )
@ -1022,6 +1043,33 @@ ROM_START( feag ) // model 6081, aka "Mobile Master" - checksum BE41 9B27 E959 4
ROMX_LOAD("101-64106.ic16", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
ROM_END
ROM_START( feagp ) // 510-1071B01 PCB
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("exp_8000_6", 0xa000, 0x2000, CRC(b555c5ab) SHA1(d85ae44f0c13e2bfafbc3cadf829e74c7f4ba2e3) ) // Seeq DQ5133-25
ROM_LOAD("exp_c000_5", 0xc000, 0x2000, CRC(fd8471e3) SHA1(e684ded8ed4934bc5ef0cc4ae37dc5d12496d39e) ) // "
ROM_LOAD("exp_e000_4", 0xe000, 0x2000, CRC(19c36d83) SHA1(33438c316284182ebe195a383bb2d96d3524c88d) ) // "
// speech ROM
ROM_DEFAULT_BIOS("en")
ROM_SYSTEM_BIOS(0, "en", "English")
ROM_SYSTEM_BIOS(1, "de", "German")
ROM_SYSTEM_BIOS(2, "fr", "French")
ROM_SYSTEM_BIOS(3, "sp", "Spanish")
ROM_REGION( 1, "language", 0 )
ROMX_FILL(0, 1, 3, ROM_BIOS(0) )
ROMX_FILL(0, 1, 2, ROM_BIOS(1) )
ROMX_FILL(0, 1, 1, ROM_BIOS(2) )
ROMX_FILL(0, 1, 0, ROM_BIOS(3) )
ROM_REGION( 0x2000, "speech", 0 )
ROMX_LOAD("101-32107", 0x0000, 0x1000, CRC(f35784f9) SHA1(348e54a7fa1e8091f89ac656b4da22f28ca2e44d), ROM_BIOS(0) )
ROM_RELOAD( 0x1000, 0x1000)
ROMX_LOAD("101-64101", 0x0000, 0x2000, CRC(6c85e310) SHA1(20d1d6543c1e6a1f04184a2df2a468f33faec3ff), ROM_BIOS(1) )
ROMX_LOAD("101-64105", 0x0000, 0x2000, CRC(fe8c5c18) SHA1(2b64279ab3747ee81c86963c13e78321c6cfa3a3), ROM_BIOS(2) )
ROMX_LOAD("101-64106", 0x0000, 0x2000, CRC(8766e128) SHA1(78c7413bf240159720b131ab70bfbdf4e86eb1e9), ROM_BIOS(3) )
ROM_END
ROM_START( feag2100 ) // checksum F234 9D4A 2373 B2F1
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD("el2100_2.ic5", 0xc000, 0x2000, CRC(76fec42f) SHA1(34660edb8458919fd179e93fdab3fe428a6625d0) )
@ -1106,5 +1154,7 @@ SYST( 1983, fpresbu, fpres, 0, pc, pc, elite_state, empty_init,
SYST( 1984, fpresgla, fpres, 0, pc, pc, elite_state, empty_init, "Fidelity Electronics", "Prestige Challenger (Glasgow program)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, feag, 0, 0, eag, eag, eag_state, empty_init, "Fidelity International", "Elite Avant Garde (model 6081)", MACHINE_SUPPORTS_SAVE )
SYST( 1985, feagp, feag, 0, eagp, eagp, elite_state, empty_init, "Fidelity Computer Products", "Elite Avant Garde (prototype on Elite A/S board)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, feag2100, feag, 0, eag2100, eag, eag_state, init_eag2100, "Fidelity International", "Elite Avant Garde 2100 (set 1)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, feag2100a, feag, 0, eag2100, eag, eag_state, init_eag2100, "Fidelity International", "Elite Avant Garde 2100 (set 2)", MACHINE_SUPPORTS_SAVE )

View File

@ -561,6 +561,6 @@ SYST( 1985, fexcela, fexcel, 0, fexcel, fexcel, excel_state, empty_in
SYST( 1986, fexcelp, 0, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity International", "The Par Excellence", MACHINE_SUPPORTS_SAVE )
SYST( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity International", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE )
SYST( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (RCS)", "Granit S", MACHINE_SUPPORTS_SAVE )
SYST( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (Remote Control Systems)", "Granit S", MACHINE_SUPPORTS_SAVE )
SYST( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, excel_state, empty_init, "Fidelity International", "Designer 2000", MACHINE_SUPPORTS_SAVE )
SYST( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, excel_state, empty_init, "Fidelity International", "Designer 2100", MACHINE_SUPPORTS_SAVE )

View File

@ -9997,9 +9997,8 @@ ROM_END
* Sharp SM510 under epoxy (die label MJ1)
* lcd screen with custom segments, 1-bit sound
TODO or BTANB?: Energy and weapon power bars are swapped. Not verified on the
handheld. The manual does show them correctly, but looking at the LCD segment
ID groupings, the SVG is not wrong.
BTANB: Energy and weapon power bars are the wrong way around. The manual does
show them correctly, but it appears to be a doctored picture.
*******************************************************************************/

View File

@ -18052,6 +18052,7 @@ feasglab //
feag //
feag2100 //
feag2100a //
feagp //
fpres //
fpresa //
fpresb //