mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +03:00
fidel6502: put excellence in its own file (nw)
This commit is contained in:
parent
95f817b54d
commit
058f7c0ae3
@ -2133,6 +2133,7 @@ files {
|
|||||||
MAME_DIR .. "src/mame/includes/fidelbase.h",
|
MAME_DIR .. "src/mame/includes/fidelbase.h",
|
||||||
MAME_DIR .. "src/mame/drivers/fidel_desdis.cpp",
|
MAME_DIR .. "src/mame/drivers/fidel_desdis.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/fidel_eag68k.cpp",
|
MAME_DIR .. "src/mame/drivers/fidel_eag68k.cpp",
|
||||||
|
MAME_DIR .. "src/mame/drivers/fidel_excel.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/fidel_sc6.cpp",
|
MAME_DIR .. "src/mame/drivers/fidel_sc6.cpp",
|
||||||
MAME_DIR .. "src/mame/drivers/fidel6502.cpp",
|
MAME_DIR .. "src/mame/drivers/fidel6502.cpp",
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
Currently, a dummy timer workaround is needed, or it's much worse.
|
Currently, a dummy timer workaround is needed, or it's much worse.
|
||||||
Is the problem here is due to timing of CPU addressbus changes? We can only 'sense'
|
Is the problem here is due to timing of CPU addressbus changes? We can only 'sense'
|
||||||
the addressbus at read or write accesses.
|
the addressbus at read or write accesses.
|
||||||
- granits gives error beeps at start, need to press clear to play
|
|
||||||
- granits buttons seem too sensitive
|
|
||||||
- finish fphantom emulation
|
- finish fphantom emulation
|
||||||
|
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
@ -280,132 +278,6 @@ The keypad is read through a 74HC251, where S0,1,2 is from CPU A0,1,2, Y is conn
|
|||||||
If control Q4 is set, printer data can be read from I0.
|
If control Q4 is set, printer data can be read from I0.
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************
|
|
||||||
|
|
||||||
Voice Excellence (model 6092)
|
|
||||||
----------------
|
|
||||||
PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
|
|
||||||
CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
|
|
||||||
2 rows of LEDs on the side: 1*8 green, 1*8 red
|
|
||||||
|
|
||||||
PCB 2: 510.1117A01
|
|
||||||
Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
|
|
||||||
Dip Switches set ROM A13 and ROM A14, on the side of the board
|
|
||||||
|
|
||||||
ROM A12 is tied to S14001A's A11 (yuck)
|
|
||||||
ROM A11 is however tied to the CPU's XYZ
|
|
||||||
|
|
||||||
0000_07FF - Spanish 1/4
|
|
||||||
0800_0FFF - Spanish 3/4
|
|
||||||
1000_17FF - Spanish 2/4
|
|
||||||
1800_1FFF - Spanish 4/4
|
|
||||||
|
|
||||||
2000_27FF - French 1/4
|
|
||||||
2800_2FFF - French 3/4
|
|
||||||
3000_3FFF - French 2/4
|
|
||||||
3800_3FFF - French 4/4
|
|
||||||
|
|
||||||
4000_47FF - German 1/4
|
|
||||||
4800_4FFF - German 3/4
|
|
||||||
5000_57FF - German 2/4
|
|
||||||
5800_5FFF - German 4/4
|
|
||||||
|
|
||||||
6000_67FF - English 1/2
|
|
||||||
6800_6FFF - Bridge Challenger 1/2
|
|
||||||
7000_77FF - English 2/2
|
|
||||||
7800_7FFF - Bridge Challenger 2/2
|
|
||||||
|
|
||||||
------------------
|
|
||||||
RE info by hap, based on PCB photos
|
|
||||||
|
|
||||||
Memory map:
|
|
||||||
-----------
|
|
||||||
0000-3FFF: 8K RAM (SRM2264)
|
|
||||||
4000-7FFF: control (R/W)
|
|
||||||
8000-FFFF: 32K ROM (M27256 compatible)
|
|
||||||
|
|
||||||
control (W):
|
|
||||||
------------
|
|
||||||
CPU A0-A2 to 3*74259, CPU Dx to D (_C unused)
|
|
||||||
|
|
||||||
CPU D0:
|
|
||||||
- Q4,Q5: led commons
|
|
||||||
- Q6,Q7,Q2,Q1: 7seg panel digit select
|
|
||||||
- Q0-Q3: 7442 A0-A3
|
|
||||||
+ 0-7: led data
|
|
||||||
+ 0-8: keypad mux
|
|
||||||
+ 9: buzzer out
|
|
||||||
|
|
||||||
CPU D1: (model 6093)
|
|
||||||
- Q0-Q7: 7seg data
|
|
||||||
|
|
||||||
CPU D2: (model 6092)
|
|
||||||
- Q0-Q5: TSI C0-C5
|
|
||||||
- Q6: TSI START pin
|
|
||||||
- Q7: TSI ROM A11
|
|
||||||
|
|
||||||
A11 from TSI is tied to TSI ROM A12(!)
|
|
||||||
TSI ROM A13,A14 are hardwired to the 2 language switches.
|
|
||||||
Sound comes from the Audio out pin, digital out pins are N/C.
|
|
||||||
|
|
||||||
control (R):
|
|
||||||
------------
|
|
||||||
CPU A0-A2 to 2*74251, CPU Dx to output
|
|
||||||
|
|
||||||
CPU D7 to Y:
|
|
||||||
- D0-D7: keypad row data
|
|
||||||
|
|
||||||
CPU D6 to W: (model 6092, tied to VCC otherwise)
|
|
||||||
- D0,D1: language switches
|
|
||||||
- D2-D6: VCC
|
|
||||||
- D7: TSI BUSY
|
|
||||||
|
|
||||||
------------------
|
|
||||||
One interesting clone of The Excellence is the Computerchess Playmate-2. It was
|
|
||||||
produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
|
|
||||||
ROM is identical to Excellence EP12. All internal circuitry is the same, the only
|
|
||||||
difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
|
|
||||||
|
|
||||||
What makes it unique is the addition of a chess clock.
|
|
||||||
|
|
||||||
connector pinout from main pcb:
|
|
||||||
1) 5V
|
|
||||||
2) GND
|
|
||||||
3) 74HC259.pin9 (Q4) = Row LED driving
|
|
||||||
4) 74HC259.pin10 (Q5) = Column LED driving
|
|
||||||
5) 74HC259.pin12 (Q7) = Bat. Low signal
|
|
||||||
6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
|
|
||||||
|
|
||||||
The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
|
|
||||||
VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
|
|
||||||
presumedly for using the blinking led as seconds counter. It only tracks player time,
|
|
||||||
not of the opponent. And it obviously doesn't show chessmove coordinates either.
|
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************
|
|
||||||
|
|
||||||
Designer series:
|
|
||||||
|
|
||||||
Designer 2000 (model 6102)
|
|
||||||
----------------
|
|
||||||
8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01)
|
|
||||||
Ricoh RP65C02G CPU, 3MHz XTAL
|
|
||||||
PCB label 510.1129A01
|
|
||||||
basically same as (Par) Excellence hardware, reskinned board
|
|
||||||
|
|
||||||
Designer 2100 (model 6103): exactly same, but running at 5MHz
|
|
||||||
|
|
||||||
Designer 2100 Display (model 6106)
|
|
||||||
----------------
|
|
||||||
8KB RAM(MS6264L-10), 2*32KB ROM(27C256)
|
|
||||||
WDC W65C02P-6 CPU, 6MHz XTAL
|
|
||||||
4-digit LCD panel
|
|
||||||
PCB label 510.1130A01
|
|
||||||
|
|
||||||
Designer 2000 Display (model 6105): same hardware, no bookrom, 3MHz
|
|
||||||
|
|
||||||
Designer 1500 is on 80C50 hardware
|
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
|
|
||||||
@ -457,11 +329,8 @@ I/O is via TTL, very similar to Designer Display
|
|||||||
#include "fidel_as12.lh" // clickable
|
#include "fidel_as12.lh" // clickable
|
||||||
#include "fidel_chesster.lh" // clickable
|
#include "fidel_chesster.lh" // clickable
|
||||||
#include "fidel_csc.lh" // clickable, with preliminary boardpieces simulation
|
#include "fidel_csc.lh" // clickable, with preliminary boardpieces simulation
|
||||||
#include "fidel_des.lh" // clickable
|
|
||||||
#include "fidel_eag.lh" // clickable
|
#include "fidel_eag.lh" // clickable
|
||||||
#include "fidel_eas.lh" // clickable
|
#include "fidel_eas.lh" // clickable
|
||||||
#include "fidel_ex.lh" // clickable
|
|
||||||
#include "fidel_exd.lh" // clickable
|
|
||||||
#include "fidel_pc.lh" // clickable
|
#include "fidel_pc.lh" // clickable
|
||||||
#include "fidel_playmatic.lh" // clickable
|
#include "fidel_playmatic.lh" // clickable
|
||||||
#include "fidel_rsc_v2.lh" // clickable
|
#include "fidel_rsc_v2.lh" // clickable
|
||||||
@ -617,32 +486,6 @@ void sc9c_state::sc9c_set_cpu_freq()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class excel_state : public fidelbase_state
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
excel_state(const machine_config &mconfig, device_type type, const char *tag) :
|
|
||||||
fidelbase_state(mconfig, type, tag)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
void fexcel(machine_config &config);
|
|
||||||
void fexcelb(machine_config &config);
|
|
||||||
void fexcel4(machine_config &config);
|
|
||||||
void fexceld(machine_config &config);
|
|
||||||
void fexcelv(machine_config &config);
|
|
||||||
void fexcelp(machine_config &config);
|
|
||||||
void granits(machine_config &config);
|
|
||||||
void fdes2100(machine_config &config);
|
|
||||||
void fdes2000(machine_config &config);
|
|
||||||
DECLARE_INPUT_CHANGED_MEMBER(fexcelv_bankswitch);
|
|
||||||
|
|
||||||
private:
|
|
||||||
DECLARE_READ8_MEMBER(fexcelv_speech_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(fexcel_ttl_w);
|
|
||||||
DECLARE_READ8_MEMBER(fexcelb_ttl_r);
|
|
||||||
void fexcel_map(address_map &map);
|
|
||||||
void fexcelb_map(address_map &map);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class chesster_state : public fidelbase_state
|
class chesster_state : public fidelbase_state
|
||||||
{
|
{
|
||||||
@ -1133,91 +976,6 @@ READ8_MEMBER(fidel6502_state::as12_input_r)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
Excellence
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
// misc handlers
|
|
||||||
|
|
||||||
INPUT_CHANGED_MEMBER(excel_state::fexcelv_bankswitch)
|
|
||||||
{
|
|
||||||
// tied to speech ROM highest bits
|
|
||||||
m_speech->force_update();
|
|
||||||
m_speech_bank = (m_speech_bank & 1) | newval << 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER(excel_state::fexcelv_speech_r)
|
|
||||||
{
|
|
||||||
// TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
|
|
||||||
offset = (offset & 0x7ff) | (offset << 1 & 0x1000);
|
|
||||||
return m_speech_rom[offset | (m_speech_bank << 11 & 0x800) | (~m_speech_bank << 12 & 0x6000)];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TTL
|
|
||||||
|
|
||||||
WRITE8_MEMBER(excel_state::fexcel_ttl_w)
|
|
||||||
{
|
|
||||||
// a0-a2,d0: 74259(1)
|
|
||||||
u8 mask = 1 << offset;
|
|
||||||
m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
|
|
||||||
|
|
||||||
// 74259 Q0-Q3: 7442 a0-a3
|
|
||||||
// 7442 0-8: led data, input mux
|
|
||||||
u16 sel = 1 << (m_led_select & 0xf) & 0x3ff;
|
|
||||||
u8 led_data = sel & 0xff;
|
|
||||||
m_inp_mux = sel & 0x1ff;
|
|
||||||
|
|
||||||
// 7442 9: speaker out
|
|
||||||
m_dac->write(BIT(sel, 9));
|
|
||||||
|
|
||||||
// 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
|
|
||||||
u8 led_sel = ~bitswap<8>(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
|
|
||||||
|
|
||||||
// a0-a2,d1: digit segment data (model 6093)
|
|
||||||
m_7seg_data = (m_7seg_data & ~mask) | ((data & 2) ? mask : 0);
|
|
||||||
u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
|
|
||||||
|
|
||||||
// update display: 4 7seg leds, 2*8 chessboard leds
|
|
||||||
for (int i = 0; i < 6; i++)
|
|
||||||
m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
|
|
||||||
|
|
||||||
set_display_size(8, 2+4);
|
|
||||||
set_display_segmask(0x3c, 0x7f);
|
|
||||||
display_update();
|
|
||||||
|
|
||||||
// speech (model 6092)
|
|
||||||
if (m_speech != nullptr)
|
|
||||||
{
|
|
||||||
// a0-a2,d2: 74259(2) to speech board
|
|
||||||
m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
|
|
||||||
|
|
||||||
// 74259 Q6: TSI ROM A11
|
|
||||||
m_speech->force_update(); // update stream to now
|
|
||||||
m_speech_bank = (m_speech_bank & ~1) | (m_speech_data >> 6 & 1);
|
|
||||||
|
|
||||||
// Q0-Q5: TSI C0-C5
|
|
||||||
// Q7: TSI START line
|
|
||||||
m_speech->data_w(space, 0, m_speech_data & 0x3f);
|
|
||||||
m_speech->start_w(m_speech_data >> 7 & 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER(excel_state::fexcelb_ttl_r)
|
|
||||||
{
|
|
||||||
u8 d7 = 0x80;
|
|
||||||
|
|
||||||
// 74259(1) Q7 + 74251 I0: battery status
|
|
||||||
if (m_inp_matrix[10] != nullptr && m_inp_mux == 1 && ~m_led_select & 0x80)
|
|
||||||
d7 = m_inp_matrix[10]->read() & 0x80;
|
|
||||||
|
|
||||||
// a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
|
|
||||||
u8 d6 = (m_inp_matrix[9].read_safe(0xff) >> offset & 1) ? 0x40 : 0;
|
|
||||||
|
|
||||||
// a0-a2,d7: multiplexed inputs (active low)
|
|
||||||
return ((read_inputs(9) >> offset & 1) ? 0 : d7) | d6 | 0x3f;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1411,22 +1169,7 @@ void fidel6502_state::as12_map(address_map &map)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Excellence
|
|
||||||
|
|
||||||
void excel_state::fexcel_map(address_map &map)
|
|
||||||
{
|
|
||||||
map(0x0000, 0x07ff).mirror(0x3800).ram();
|
|
||||||
map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::fexcelb_ttl_r), FUNC(excel_state::fexcel_ttl_w));
|
|
||||||
//map(0x8000, 0x8000).nopr(); // checks for opening book module, but hw doesn't have a module slot
|
|
||||||
map(0xc000, 0xffff).rom();
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexcelb_map(address_map &map)
|
|
||||||
{
|
|
||||||
map(0x0000, 0x1fff).mirror(0x2000).ram();
|
|
||||||
map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::fexcelb_ttl_r), FUNC(excel_state::fexcel_ttl_w));
|
|
||||||
map(0x8000, 0xffff).rom();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Designer Display, Phantom, Chesster
|
// Designer Display, Phantom, Chesster
|
||||||
@ -1736,49 +1479,6 @@ static INPUT_PORTS_START( sc9c )
|
|||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( fexcelb )
|
|
||||||
PORT_INCLUDE( fidel_cb_buttons )
|
|
||||||
|
|
||||||
PORT_START("IN.8")
|
|
||||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
|
|
||||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
|
|
||||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
|
|
||||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
|
|
||||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
|
|
||||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
|
|
||||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
|
|
||||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( fexcelv )
|
|
||||||
PORT_INCLUDE( fexcelb )
|
|
||||||
|
|
||||||
PORT_START("IN.9")
|
|
||||||
PORT_CONFNAME( 0x03, 0x00, DEF_STR( Language ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, excel_state, fexcelv_bankswitch, 0)
|
|
||||||
PORT_CONFSETTING( 0x00, DEF_STR( English ) )
|
|
||||||
PORT_CONFSETTING( 0x01, DEF_STR( German ) )
|
|
||||||
PORT_CONFSETTING( 0x02, DEF_STR( French ) )
|
|
||||||
PORT_CONFSETTING( 0x03, DEF_STR( Spanish ) )
|
|
||||||
PORT_BIT(0x7c, IP_ACTIVE_HIGH, IPT_UNUSED)
|
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("speech", s14001a_device, busy_r)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( fexcel )
|
|
||||||
PORT_INCLUDE( fexcelb )
|
|
||||||
|
|
||||||
PORT_START("IN.10")
|
|
||||||
PORT_CONFNAME( 0x80, 0x00, "Battery Status" )
|
|
||||||
PORT_CONFSETTING( 0x80, "Low" )
|
|
||||||
PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( fdes )
|
|
||||||
PORT_INCLUDE( fexcel )
|
|
||||||
|
|
||||||
PORT_MODIFY("IN.10")
|
|
||||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // no low-voltage detection circuit (still works in software though)
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( chesster )
|
static INPUT_PORTS_START( chesster )
|
||||||
PORT_INCLUDE( fidel_cb_buttons )
|
PORT_INCLUDE( fidel_cb_buttons )
|
||||||
@ -2065,105 +1765,6 @@ void fidel6502_state::as12(machine_config &config)
|
|||||||
config.set_default_layout(layout_fidel_as12);
|
config.set_default_layout(layout_fidel_as12);
|
||||||
}
|
}
|
||||||
|
|
||||||
void excel_state::fexcel(machine_config &config)
|
|
||||||
{
|
|
||||||
/* basic machine hardware */
|
|
||||||
M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
|
|
||||||
|
|
||||||
const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
|
|
||||||
TIMER(config, m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
|
||||||
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
|
|
||||||
TIMER(config, "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
|
||||||
|
|
||||||
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
|
|
||||||
config.set_default_layout(layout_fidel_ex);
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
SPEAKER(config, "speaker").front_center();
|
|
||||||
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
|
||||||
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
|
|
||||||
vref.set_output(5.0);
|
|
||||||
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexcel4(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcel(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexcelb(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcel(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexcelp(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcel(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::granits(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcelp(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
m_maincpu->set_clock(8_MHz_XTAL); // overclocked
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fdes2100(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcel(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
|
||||||
|
|
||||||
// change irq timer frequency
|
|
||||||
const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
|
|
||||||
TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
|
||||||
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
|
|
||||||
TIMER(config.replace(), "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
|
||||||
|
|
||||||
config.set_default_layout(layout_fidel_des);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fdes2000(machine_config &config)
|
|
||||||
{
|
|
||||||
fdes2100(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
|
|
||||||
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexcelv(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcelb(config);
|
|
||||||
|
|
||||||
/* sound hardware */
|
|
||||||
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
|
|
||||||
m_speech->ext_read().set(FUNC(excel_state::fexcelv_speech_r));
|
|
||||||
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
|
|
||||||
}
|
|
||||||
|
|
||||||
void excel_state::fexceld(machine_config &config)
|
|
||||||
{
|
|
||||||
fexcelb(config);
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
|
||||||
config.set_default_layout(layout_fidel_exd);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void fidel6502_state::fphantom(machine_config &config)
|
void fidel6502_state::fphantom(machine_config &config)
|
||||||
@ -2653,65 +2254,6 @@ ROM_START( feleg ) // model AS12(or 6085), PCB label 510-1084B01
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
ROM_START( fexcel ) // model 6080(B), PCB label 510.1117A02
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexceld ) // model 6093, PCB label 510.1117A02
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // same rom as fexcel
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexcelv ) // model 6092, PCB label 510.1117A02, sound PCB 510.1117A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256, same rom as fexcel
|
|
||||||
|
|
||||||
ROM_REGION( 0x8000, "speech", 0 )
|
|
||||||
ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) ) // PCB2, M27256
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexcel12 ) // model EP12, PCB label 510-1099A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexcel124 ) // model EP12, PCB label 510-1099A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexcela ) // model 6080, PCB label 510-1099A01(manuf.1985) or 510-1099B01(manuf.1986)
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1072b01.ic5", 0xc000, 0x4000, CRC(fd2f6064) SHA1(f84bb98bdb9565a04891eb6820597d7aecc90c21) ) // RCA
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
|
|
||||||
ROM_START( fexcelp ) // model 6083, PCB label 510-1099A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fexcelpb ) // model 6083, PCB label 510-1099B01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label, only 1 byte difference, assume bugfix in bookrom
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( granits ) // modified SC12 board, overclocked Par Excellence program
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("granit_s-4", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fdes2000 ) // model 6102, PCB label 510.1129A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI, same label as fexcelp
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( fdes2100 ) // model 6103, PCB label 510.1129A01
|
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
|
||||||
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // same as fdes2000
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
|
|
||||||
ROM_START( fphantom ) // model 6100, PCB label 510.1128A01
|
ROM_START( fphantom ) // model 6100, PCB label 510.1128A01
|
||||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
@ -2798,19 +2340,6 @@ CONS( 1984, fscc12b, fscc12, 0, sc12b, sc12b, fidel6502_state, empt
|
|||||||
|
|
||||||
CONS( 1985, feleg, 0, 0, as12, as12, fidel6502_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
CONS( 1985, feleg, 0, 0, as12, as12, fidel6502_state, empty_init, "Fidelity Electronics", "Elegance Chess Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_IMPERFECT_TIMING )
|
||||||
|
|
||||||
CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, excel_state, empty_init, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, excel_state, empty_init, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // 1st version of The Excellence
|
|
||||||
CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
|
|
||||||
CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (RCS)", "Granit 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
|
||||||
|
|
||||||
CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, init_fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
CONS( 1988, fphantom, 0, 0, fphantom, fphantom, fidel6502_state, init_fphantom, "Fidelity Electronics", "Phantom (Fidelity)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
|
||||||
|
|
||||||
CONS( 1990, chesster, 0, 0, chesster, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Chesster Challenger (V1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
CONS( 1990, chesster, 0, 0, chesster, chesster, chesster_state, init_chesster, "Fidelity Electronics", "Chesster Challenger (V1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
@ -57,6 +57,7 @@ public:
|
|||||||
fidelbase_state(mconfig, type, tag)
|
fidelbase_state(mconfig, type, tag)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
// machine drivers
|
||||||
void fdes2000d(machine_config &config);
|
void fdes2000d(machine_config &config);
|
||||||
void fdes2100d(machine_config &config);
|
void fdes2100d(machine_config &config);
|
||||||
|
|
||||||
@ -78,12 +79,14 @@ public:
|
|||||||
desdis_state(mconfig, type, tag)
|
desdis_state(mconfig, type, tag)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
// machine drivers
|
||||||
void fdes2265(machine_config &config);
|
void fdes2265(machine_config &config);
|
||||||
void fdes2325(machine_config &config);
|
void fdes2325(machine_config &config);
|
||||||
|
|
||||||
void init_fdes2265();
|
void init_fdes2265();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// address maps
|
||||||
void fdes2265_map(address_map &map);
|
void fdes2265_map(address_map &map);
|
||||||
void fdes2325_map(address_map &map);
|
void fdes2325_map(address_map &map);
|
||||||
|
|
||||||
@ -214,7 +217,6 @@ void desmas_state::fdes2325_map(address_map &map)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Input Ports
|
Input Ports
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -177,6 +177,7 @@ public:
|
|||||||
m_ram(*this, "ram")
|
m_ram(*this, "ram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
// machine drivers
|
||||||
void eag_base(machine_config &config);
|
void eag_base(machine_config &config);
|
||||||
void eag(machine_config &config);
|
void eag(machine_config &config);
|
||||||
void eagv5(machine_config &config);
|
void eagv5(machine_config &config);
|
||||||
@ -191,6 +192,7 @@ protected:
|
|||||||
// devices/pointers
|
// devices/pointers
|
||||||
optional_device<ram_device> m_ram;
|
optional_device<ram_device> m_ram;
|
||||||
|
|
||||||
|
// address maps
|
||||||
void eag_map(address_map &map);
|
void eag_map(address_map &map);
|
||||||
void eagv7_map(address_map &map);
|
void eagv7_map(address_map &map);
|
||||||
void eagv11_map(address_map &map);
|
void eagv11_map(address_map &map);
|
||||||
@ -212,11 +214,13 @@ public:
|
|||||||
eag_state(mconfig, type, tag)
|
eag_state(mconfig, type, tag)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
// machine drivers
|
||||||
void fex68k(machine_config &config);
|
void fex68k(machine_config &config);
|
||||||
void fex68km2(machine_config &config);
|
void fex68km2(machine_config &config);
|
||||||
void fex68km3(machine_config &config);
|
void fex68km3(machine_config &config);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// address maps
|
||||||
void fex68k_map(address_map &map);
|
void fex68k_map(address_map &map);
|
||||||
void fex68km2_map(address_map &map);
|
void fex68km2_map(address_map &map);
|
||||||
void fex68km3_map(address_map &map);
|
void fex68km3_map(address_map &map);
|
||||||
|
522
src/mame/drivers/fidel_excel.cpp
Normal file
522
src/mame/drivers/fidel_excel.cpp
Normal file
@ -0,0 +1,522 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:hap
|
||||||
|
// thanks-to:Berger,yoyo_chessboard
|
||||||
|
/******************************************************************************
|
||||||
|
|
||||||
|
Fidelity Excellence series hardware (for Excel 68000, see fidel_eag68k.cpp)
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- granits gives error beeps at start, need to press clear to play
|
||||||
|
- granits buttons seem too sensitive
|
||||||
|
|
||||||
|
******************************************************************************
|
||||||
|
|
||||||
|
Voice Excellence (model 6092)
|
||||||
|
----------------
|
||||||
|
PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
|
||||||
|
CPU: GTE G65SC102P-3, 32 KB PRG ROM: AMI 101-1080A01(IC5), 8192x8 SRAM SRM2264C10(IC6)
|
||||||
|
2 rows of LEDs on the side: 1*8 green, 1*8 red
|
||||||
|
|
||||||
|
PCB 2: 510.1117A01
|
||||||
|
Speech: TSI S14001A, 32 KB ROM: AMI 101-1081A01(IC2)
|
||||||
|
Dip Switches set ROM A13 and ROM A14, on the side of the board
|
||||||
|
|
||||||
|
ROM A12 is tied to S14001A's A11 (yuck)
|
||||||
|
ROM A11 is however tied to the CPU's XYZ
|
||||||
|
|
||||||
|
0000_07FF - Spanish 1/4
|
||||||
|
0800_0FFF - Spanish 3/4
|
||||||
|
1000_17FF - Spanish 2/4
|
||||||
|
1800_1FFF - Spanish 4/4
|
||||||
|
|
||||||
|
2000_27FF - French 1/4
|
||||||
|
2800_2FFF - French 3/4
|
||||||
|
3000_3FFF - French 2/4
|
||||||
|
3800_3FFF - French 4/4
|
||||||
|
|
||||||
|
4000_47FF - German 1/4
|
||||||
|
4800_4FFF - German 3/4
|
||||||
|
5000_57FF - German 2/4
|
||||||
|
5800_5FFF - German 4/4
|
||||||
|
|
||||||
|
6000_67FF - English 1/2
|
||||||
|
6800_6FFF - Bridge Challenger 1/2
|
||||||
|
7000_77FF - English 2/2
|
||||||
|
7800_7FFF - Bridge Challenger 2/2
|
||||||
|
|
||||||
|
------------------
|
||||||
|
RE info by hap, based on PCB photos
|
||||||
|
|
||||||
|
Memory map:
|
||||||
|
-----------
|
||||||
|
0000-3FFF: 8K RAM (SRM2264)
|
||||||
|
4000-7FFF: control (R/W)
|
||||||
|
8000-FFFF: 32K ROM (M27256 compatible)
|
||||||
|
|
||||||
|
control (W):
|
||||||
|
------------
|
||||||
|
CPU A0-A2 to 3*74259, CPU Dx to D (_C unused)
|
||||||
|
|
||||||
|
CPU D0:
|
||||||
|
- Q4,Q5: led commons
|
||||||
|
- Q6,Q7,Q2,Q1: 7seg panel digit select
|
||||||
|
- Q0-Q3: 7442 A0-A3
|
||||||
|
+ 0-7: led data
|
||||||
|
+ 0-8: keypad mux
|
||||||
|
+ 9: buzzer out
|
||||||
|
|
||||||
|
CPU D1: (model 6093)
|
||||||
|
- Q0-Q7: 7seg data
|
||||||
|
|
||||||
|
CPU D2: (model 6092)
|
||||||
|
- Q0-Q5: TSI C0-C5
|
||||||
|
- Q6: TSI START pin
|
||||||
|
- Q7: TSI ROM A11
|
||||||
|
|
||||||
|
A11 from TSI is tied to TSI ROM A12(!)
|
||||||
|
TSI ROM A13,A14 are hardwired to the 2 language switches.
|
||||||
|
Sound comes from the Audio out pin, digital out pins are N/C.
|
||||||
|
|
||||||
|
control (R):
|
||||||
|
------------
|
||||||
|
CPU A0-A2 to 2*74251, CPU Dx to output
|
||||||
|
|
||||||
|
CPU D7 to Y:
|
||||||
|
- D0-D7: keypad row data
|
||||||
|
|
||||||
|
CPU D6 to W: (model 6092, tied to VCC otherwise)
|
||||||
|
- D0,D1: language switches
|
||||||
|
- D2-D6: VCC
|
||||||
|
- D7: TSI BUSY
|
||||||
|
|
||||||
|
------------------
|
||||||
|
One interesting clone of The Excellence is the Computerchess Playmate-2. It was
|
||||||
|
produced in 1989 by SPS(Bulgaria) and RRR(Riga Radio Factory). The chess program
|
||||||
|
ROM is identical to Excellence EP12. All internal circuitry is the same, the only
|
||||||
|
difference is the capacitor driving the 555 for IRQ is 10nf instead of 22nf.
|
||||||
|
|
||||||
|
What makes it unique is the addition of a chess clock.
|
||||||
|
|
||||||
|
connector pinout from main pcb:
|
||||||
|
1) 5V
|
||||||
|
2) GND
|
||||||
|
3) 74HC259.pin9 (Q4) = Row LED driving
|
||||||
|
4) 74HC259.pin10 (Q5) = Column LED driving
|
||||||
|
5) 74HC259.pin12 (Q7) = Bat. Low signal
|
||||||
|
6) 74HC42.pin4 (Q3) = Col-D/Row-4 -> 'White Move' if D-LED blinks
|
||||||
|
|
||||||
|
The extra board has a 7474, a К1016ХЛ1 (RTC, or MCU clock driver), a 4-digit
|
||||||
|
VFD display, and some buttons for controlling the clock. IRQ frequency is doubled
|
||||||
|
presumedly for using the blinking led as seconds counter. It only tracks player time,
|
||||||
|
not of the opponent. And it obviously doesn't show chessmove coordinates either.
|
||||||
|
|
||||||
|
******************************************************************************
|
||||||
|
|
||||||
|
Designer 2000 (model 6102)
|
||||||
|
----------------
|
||||||
|
8KB RAM(KM6264AL-10), 32KB ROM(AMI 101.1077A01)
|
||||||
|
Ricoh RP65C02G CPU, 3MHz XTAL
|
||||||
|
PCB label 510.1129A01
|
||||||
|
basically same as (Par) Excellence hardware, reskinned board
|
||||||
|
|
||||||
|
Designer 2100 (model 6103): exactly same, but running at 5MHz
|
||||||
|
|
||||||
|
(Designer 1500 is on 80C50 hardware)
|
||||||
|
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "includes/fidelbase.h"
|
||||||
|
|
||||||
|
#include "cpu/m6502/r65c02.h"
|
||||||
|
#include "cpu/m6502/m65sc02.h"
|
||||||
|
#include "sound/volt_reg.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
|
// internal artwork
|
||||||
|
#include "fidel_des.lh" // clickable
|
||||||
|
#include "fidel_ex.lh" // clickable
|
||||||
|
#include "fidel_exd.lh" // clickable
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class excel_state : public fidelbase_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
excel_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
fidelbase_state(mconfig, type, tag)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
// machine drivers
|
||||||
|
void fexcel(machine_config &config);
|
||||||
|
void fexcelb(machine_config &config);
|
||||||
|
void fexcel4(machine_config &config);
|
||||||
|
void fexceld(machine_config &config);
|
||||||
|
void fexcelv(machine_config &config);
|
||||||
|
void fexcelp(machine_config &config);
|
||||||
|
void granits(machine_config &config);
|
||||||
|
void fdes2100(machine_config &config);
|
||||||
|
void fdes2000(machine_config &config);
|
||||||
|
|
||||||
|
DECLARE_INPUT_CHANGED_MEMBER(lan_bankswitch);
|
||||||
|
|
||||||
|
private:
|
||||||
|
// address maps
|
||||||
|
void fexcel_map(address_map &map);
|
||||||
|
void fexcelb_map(address_map &map);
|
||||||
|
|
||||||
|
// I/O handlers
|
||||||
|
DECLARE_READ8_MEMBER(speech_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(ttl_w);
|
||||||
|
DECLARE_READ8_MEMBER(ttl_r);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Devices, I/O
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
// misc handlers
|
||||||
|
|
||||||
|
INPUT_CHANGED_MEMBER(excel_state::lan_bankswitch)
|
||||||
|
{
|
||||||
|
// tied to speech ROM highest bits
|
||||||
|
m_speech->force_update();
|
||||||
|
m_speech_bank = (m_speech_bank & 1) | newval << 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
READ8_MEMBER(excel_state::speech_r)
|
||||||
|
{
|
||||||
|
// TSI A11 is A12, program controls A11, user controls A13,A14(language switches)
|
||||||
|
offset = (offset & 0x7ff) | (offset << 1 & 0x1000);
|
||||||
|
return m_speech_rom[offset | (m_speech_bank << 11 & 0x800) | (~m_speech_bank << 12 & 0x6000)];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// TTL
|
||||||
|
|
||||||
|
WRITE8_MEMBER(excel_state::ttl_w)
|
||||||
|
{
|
||||||
|
// a0-a2,d0: 74259(1)
|
||||||
|
u8 mask = 1 << offset;
|
||||||
|
m_led_select = (m_led_select & ~mask) | ((data & 1) ? mask : 0);
|
||||||
|
|
||||||
|
// 74259 Q0-Q3: 7442 a0-a3
|
||||||
|
// 7442 0-8: led data, input mux
|
||||||
|
u16 sel = 1 << (m_led_select & 0xf) & 0x3ff;
|
||||||
|
u8 led_data = sel & 0xff;
|
||||||
|
m_inp_mux = sel & 0x1ff;
|
||||||
|
|
||||||
|
// 7442 9: speaker out
|
||||||
|
m_dac->write(BIT(sel, 9));
|
||||||
|
|
||||||
|
// 74259 Q4-Q7,Q2,Q1: digit/led select (active low)
|
||||||
|
u8 led_sel = ~bitswap<8>(m_led_select,0,3,1,2,7,6,5,4) & 0x3f;
|
||||||
|
|
||||||
|
// a0-a2,d1: digit segment data (model 6093)
|
||||||
|
m_7seg_data = (m_7seg_data & ~mask) | ((data & 2) ? mask : 0);
|
||||||
|
u8 seg_data = bitswap<8>(m_7seg_data,0,1,3,2,7,5,6,4);
|
||||||
|
|
||||||
|
// update display: 4 7seg leds, 2*8 chessboard leds
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
m_display_state[i] = (led_sel >> i & 1) ? ((i < 2) ? led_data : seg_data) : 0;
|
||||||
|
|
||||||
|
set_display_size(8, 2+4);
|
||||||
|
set_display_segmask(0x3c, 0x7f);
|
||||||
|
display_update();
|
||||||
|
|
||||||
|
// speech (model 6092)
|
||||||
|
if (m_speech != nullptr)
|
||||||
|
{
|
||||||
|
// a0-a2,d2: 74259(2) to speech board
|
||||||
|
m_speech_data = (m_speech_data & ~mask) | ((data & 4) ? mask : 0);
|
||||||
|
|
||||||
|
// 74259 Q6: TSI ROM A11
|
||||||
|
m_speech->force_update(); // update stream to now
|
||||||
|
m_speech_bank = (m_speech_bank & ~1) | (m_speech_data >> 6 & 1);
|
||||||
|
|
||||||
|
// Q0-Q5: TSI C0-C5
|
||||||
|
// Q7: TSI START line
|
||||||
|
m_speech->data_w(space, 0, m_speech_data & 0x3f);
|
||||||
|
m_speech->start_w(m_speech_data >> 7 & 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
READ8_MEMBER(excel_state::ttl_r)
|
||||||
|
{
|
||||||
|
u8 d7 = 0x80;
|
||||||
|
|
||||||
|
// 74259(1) Q7 + 74251 I0: battery status
|
||||||
|
if (m_inp_matrix[10] != nullptr && m_inp_mux == 1 && ~m_led_select & 0x80)
|
||||||
|
d7 = m_inp_matrix[10]->read() & 0x80;
|
||||||
|
|
||||||
|
// a0-a2,d6: from speech board: language switches and TSI BUSY line, otherwise tied to VCC
|
||||||
|
u8 d6 = (m_inp_matrix[9].read_safe(0xff) >> offset & 1) ? 0x40 : 0;
|
||||||
|
|
||||||
|
// a0-a2,d7: multiplexed inputs (active low)
|
||||||
|
return ((read_inputs(9) >> offset & 1) ? 0 : d7) | d6 | 0x3f;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Address Maps
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void excel_state::fexcel_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0000, 0x07ff).mirror(0x3800).ram();
|
||||||
|
map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::ttl_r), FUNC(excel_state::ttl_w));
|
||||||
|
//map(0x8000, 0x8000).nopr(); // checks for opening book module, but hw doesn't have a module slot
|
||||||
|
map(0xc000, 0xffff).rom();
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexcelb_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0000, 0x1fff).mirror(0x2000).ram();
|
||||||
|
map(0x4000, 0x4007).mirror(0x3ff8).rw(FUNC(excel_state::ttl_r), FUNC(excel_state::ttl_w));
|
||||||
|
map(0x8000, 0xffff).rom();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Input Ports
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( fexcelb )
|
||||||
|
PORT_INCLUDE( fidel_cb_buttons )
|
||||||
|
|
||||||
|
PORT_START("IN.8")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Clear")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Move / Pawn")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Hint / Knight")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Take Back / Bishop")
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Level / Rook")
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Options / Queen")
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Verify / King")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("New Game")
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( fexcelv )
|
||||||
|
PORT_INCLUDE( fexcelb )
|
||||||
|
|
||||||
|
PORT_START("IN.9")
|
||||||
|
PORT_CONFNAME( 0x03, 0x00, DEF_STR( Language ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, excel_state, lan_bankswitch, 0)
|
||||||
|
PORT_CONFSETTING( 0x00, DEF_STR( English ) )
|
||||||
|
PORT_CONFSETTING( 0x01, DEF_STR( German ) )
|
||||||
|
PORT_CONFSETTING( 0x02, DEF_STR( French ) )
|
||||||
|
PORT_CONFSETTING( 0x03, DEF_STR( Spanish ) )
|
||||||
|
PORT_BIT(0x7c, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("speech", s14001a_device, busy_r)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( fexcel )
|
||||||
|
PORT_INCLUDE( fexcelb )
|
||||||
|
|
||||||
|
PORT_START("IN.10")
|
||||||
|
PORT_CONFNAME( 0x80, 0x00, "Battery Status" )
|
||||||
|
PORT_CONFSETTING( 0x80, "Low" )
|
||||||
|
PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( fdes )
|
||||||
|
PORT_INCLUDE( fexcel )
|
||||||
|
|
||||||
|
PORT_MODIFY("IN.10")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED) // no low-voltage detection circuit (still works in software though)
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Machine Drivers
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void excel_state::fexcel(machine_config &config)
|
||||||
|
{
|
||||||
|
/* basic machine hardware */
|
||||||
|
M65SC02(config, m_maincpu, 12_MHz_XTAL/4); // G65SC102P-3, 12.0M ceramic resonator
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
|
||||||
|
|
||||||
|
const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
|
||||||
|
TIMER(config, m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
||||||
|
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
|
||||||
|
TIMER(config, "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
||||||
|
|
||||||
|
TIMER(config, "display_decay").configure_periodic(FUNC(fidelbase_state::display_decay_tick), attotime::from_msec(1));
|
||||||
|
config.set_default_layout(layout_fidel_ex);
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
SPEAKER(config, "speaker").front_center();
|
||||||
|
DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25);
|
||||||
|
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
|
||||||
|
vref.set_output(5.0);
|
||||||
|
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexcel4(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcel(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
R65C02(config.replace(), m_maincpu, 4_MHz_XTAL); // R65C02P4
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcel_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexcelb(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcel(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexcelp(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcel(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
R65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // R65C02P4
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::granits(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcelp(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
m_maincpu->set_clock(8_MHz_XTAL); // overclocked
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fdes2100(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcel(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
M65C02(config.replace(), m_maincpu, 5_MHz_XTAL); // WDC 65C02
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
||||||
|
|
||||||
|
// change irq timer frequency
|
||||||
|
const attotime irq_period = attotime::from_hz(630); // from 556 timer (22nF, 102K, 1K)
|
||||||
|
TIMER(config.replace(), m_irq_on).configure_periodic(FUNC(excel_state::irq_on<M6502_IRQ_LINE>), irq_period);
|
||||||
|
m_irq_on->set_start_delay(irq_period - attotime::from_nsec(15250)); // active for 15.25us
|
||||||
|
TIMER(config.replace(), "irq_off").configure_periodic(FUNC(excel_state::irq_off<M6502_IRQ_LINE>), irq_period);
|
||||||
|
|
||||||
|
config.set_default_layout(layout_fidel_des);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fdes2000(machine_config &config)
|
||||||
|
{
|
||||||
|
fdes2100(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
R65C02(config.replace(), m_maincpu, 3_MHz_XTAL); // RP65C02G
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &excel_state::fexcelb_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexcelv(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcelb(config);
|
||||||
|
|
||||||
|
/* sound hardware */
|
||||||
|
S14001A(config, m_speech, 25000); // R/C circuit, around 25khz
|
||||||
|
m_speech->ext_read().set(FUNC(excel_state::speech_r));
|
||||||
|
m_speech->add_route(ALL_OUTPUTS, "speaker", 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
|
void excel_state::fexceld(machine_config &config)
|
||||||
|
{
|
||||||
|
fexcelb(config);
|
||||||
|
|
||||||
|
/* basic machine hardware */
|
||||||
|
config.set_default_layout(layout_fidel_exd);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
ROM Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
ROM_START( fexcel ) // model 6080(B), PCB label 510.1117A02
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexceld ) // model 6093, PCB label 510.1117A02
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // same rom as fexcel
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexcelv ) // model 6092, PCB label 510.1117A02, sound PCB 510.1117A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1080a01.ic5", 0x8000, 0x8000, CRC(846f8e40) SHA1(4e1d5b08d5ff3422192b54fa82cb3f505a69a971) ) // PCB1, M27256, same rom as fexcel
|
||||||
|
|
||||||
|
ROM_REGION( 0x8000, "speech", 0 )
|
||||||
|
ROM_LOAD("101-1081a01.ic2", 0x0000, 0x8000, CRC(c8ae1607) SHA1(6491ce6be60ed77f3dd931c0ca17616f13af943e) ) // PCB2, M27256
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexcel12 ) // model EP12, PCB label 510-1099A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1072a01.ic5", 0xc000, 0x4000, CRC(212b006d) SHA1(242ff851b0841cbec66bbada6a730da021010e2c) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexcel124 ) // model EP12, PCB label 510-1099A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1073a01.ic5", 0xc000, 0x4000, CRC(3e221534) SHA1(7516bc6a8aab9d8ac30ac1a9317630a6aa9ac1a0) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexcela ) // model 6080, PCB label 510-1099A01(manuf.1985) or 510-1099B01(manuf.1986)
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1072b01.ic5", 0xc000, 0x4000, CRC(fd2f6064) SHA1(f84bb98bdb9565a04891eb6820597d7aecc90c21) ) // RCA
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
ROM_START( fexcelp ) // model 6083, PCB label 510-1099A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fexcelpb ) // model 6083, PCB label 510-1099B01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("par_ex.ic5", 0x8000, 0x8000, CRC(0d17b0f0) SHA1(3a6070fd4718c62b62ff0f08637bb6eb84eb9a1c) ) // GI 27C256, no label, only 1 byte difference, assume bugfix in bookrom
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( granits ) // modified SC12 board, overclocked Par Excellence program
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("granit_s-4", 0x8000, 0x8000, CRC(274d6aff) SHA1(c8d943b2f15422ac62f539b568f5509cbce568a3) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fdes2000 ) // model 6102, PCB label 510.1129A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // AMI, same label as fexcelp
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( fdes2100 ) // model 6103, PCB label 510.1129A01
|
||||||
|
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||||
|
ROM_LOAD("101-1077a01.ic5", 0x8000, 0x8000, CRC(62006320) SHA1(1d6370973dbae42c54639b261cc81e32cdfc1d5d) ) // same as fdes2000
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/******************************************************************************
|
||||||
|
Drivers
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS
|
||||||
|
CONS( 1987, fexcel, 0, 0, fexcelb, fexcelb, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1987, fexcelv, fexcel, 0, fexcelv, fexcelv, excel_state, empty_init, "Fidelity Electronics", "Voice Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1987, fexceld, fexcel, 0, fexceld, fexcelb, excel_state, empty_init, "Fidelity Electronics", "Excel Display", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1985, fexcel12, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS ) // 1st version of The Excellence
|
||||||
|
CONS( 1985, fexcel124, fexcel, 0, fexcel4, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model EP12, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1985, fexcela, fexcel, 0, fexcel, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Excellence (model 6080)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
|
||||||
|
CONS( 1986, fexcelp, 0, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1986, fexcelpb, fexcelp, 0, fexcelp, fexcel, excel_state, empty_init, "Fidelity Electronics", "The Par Excellence (rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1986, granits, fexcelp, 0, granits, fexcel, excel_state, empty_init, "hack (RCS)", "Granit 'S'", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1988, fdes2000, fexcelp, 0, fdes2000, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2000", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
||||||
|
CONS( 1988, fdes2100, fexcelp, 0, fdes2100, fdes, excel_state, empty_init, "Fidelity Electronics", "Designer 2100", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_IMPERFECT_CONTROLS )
|
@ -12870,6 +12870,19 @@ fex68kb //
|
|||||||
fex68km2 //
|
fex68km2 //
|
||||||
fex68km3 //
|
fex68km3 //
|
||||||
|
|
||||||
|
@source:fidel_excel.cpp
|
||||||
|
fdes2000 //
|
||||||
|
fdes2100 //
|
||||||
|
fexcel //
|
||||||
|
fexcel12 //
|
||||||
|
fexcel124 //
|
||||||
|
fexcela //
|
||||||
|
fexceld //
|
||||||
|
fexcelp //
|
||||||
|
fexcelpb //
|
||||||
|
fexcelv //
|
||||||
|
granits // RCS
|
||||||
|
|
||||||
@source:fidel_sc6.cpp
|
@source:fidel_sc6.cpp
|
||||||
fscc6 //
|
fscc6 //
|
||||||
|
|
||||||
@ -12881,8 +12894,6 @@ csc // CSC: Champion Sensory Chess Challenger (Engli
|
|||||||
cscfr // * French
|
cscfr // * French
|
||||||
cscg // * German
|
cscg // * German
|
||||||
cscsp // * Spanish
|
cscsp // * Spanish
|
||||||
fdes2000 //
|
|
||||||
fdes2100 //
|
|
||||||
feasbu // EAS: Elite A/S Challenger (Budapest program, English)
|
feasbu // EAS: Elite A/S Challenger (Budapest program, English)
|
||||||
feasbufr // * French
|
feasbufr // * French
|
||||||
feasbug // * German
|
feasbug // * German
|
||||||
@ -12896,14 +12907,6 @@ feag2100fr // * French
|
|||||||
feag2100g // * German
|
feag2100g // * German
|
||||||
feag2100sp // * Spanish
|
feag2100sp // * Spanish
|
||||||
feleg //
|
feleg //
|
||||||
fexcel //
|
|
||||||
fexcel12 //
|
|
||||||
fexcel124 //
|
|
||||||
fexcela //
|
|
||||||
fexceld //
|
|
||||||
fexcelp //
|
|
||||||
fexcelpb //
|
|
||||||
fexcelv //
|
|
||||||
fphantom //
|
fphantom //
|
||||||
fpres //
|
fpres //
|
||||||
fpressp //
|
fpressp //
|
||||||
@ -12919,7 +12922,6 @@ fscc9c //
|
|||||||
fscc9ps //
|
fscc9ps //
|
||||||
fscc12 //
|
fscc12 //
|
||||||
fscc12b //
|
fscc12b //
|
||||||
granits // RCS
|
|
||||||
reversic //
|
reversic //
|
||||||
super9cc // SU9: Super 9 Sensory Chess Challenger (English)
|
super9cc // SU9: Super 9 Sensory Chess Challenger (English)
|
||||||
super9ccfr // * French
|
super9ccfr // * French
|
||||||
|
@ -243,6 +243,7 @@ fccpu20.cpp
|
|||||||
fccpu30.cpp
|
fccpu30.cpp
|
||||||
fidel_desdis.cpp
|
fidel_desdis.cpp
|
||||||
fidel_eag68k.cpp
|
fidel_eag68k.cpp
|
||||||
|
fidel_excel.cpp
|
||||||
fidel_sc6.cpp
|
fidel_sc6.cpp
|
||||||
fidel6502.cpp
|
fidel6502.cpp
|
||||||
fidelbase.cpp
|
fidelbase.cpp
|
||||||
|
Loading…
Reference in New Issue
Block a user