diff options
Diffstat (limited to 'src/mame/drivers/fidel6502.cpp')
-rw-r--r-- | src/mame/drivers/fidel6502.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp index 46c144b0db0..47cb3612e95 100644 --- a/src/mame/drivers/fidel6502.cpp +++ b/src/mame/drivers/fidel6502.cpp @@ -351,6 +351,27 @@ CPU D6 to W: (model 6092, tied to VCC otherwise) - 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. + ****************************************************************************** @@ -560,7 +581,7 @@ WRITE8_MEMBER(fidel6502_state::csc_pia0_pa_w) m_speech->data_w(space, 0, data & 0x3f); // d0-d7: data for the 4 7seg leds, bits are ABFGHCDE (H is extra led) - m_7seg_data = BITSWAP8(data,0,1,5,6,7,2,3,4); + m_7seg_data = bitswap<8>(data,0,1,5,6,7,2,3,4); csc_prepare_display(); } @@ -666,7 +687,7 @@ WRITE8_MEMBER(fidel6502_state::eas_segment_w) { // a0-a2,d7: digit segment m_7seg_data = (data & 0x80) >> offset; - m_7seg_data = BITSWAP8(m_7seg_data,7,6,4,5,0,2,1,3); + m_7seg_data = bitswap<8>(m_7seg_data,7,6,4,5,0,2,1,3); eas_prepare_display(); } @@ -891,11 +912,11 @@ WRITE8_MEMBER(fidel6502_state::fexcel_ttl_w) m_dac->write(BIT(sel, 9)); // 74259 Q4-Q7,Q2,Q1: digit/led select (active low) - u8 led_sel = ~BITSWAP8(m_led_select,0,3,1,2,7,6,5,4) & 0x3f; + 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 = BITSWAP8(m_7seg_data,0,1,3,2,7,5,6,4); + 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++) @@ -988,7 +1009,7 @@ WRITE8_MEMBER(fidel6502_state::fdesdis_control_w) WRITE8_MEMBER(fidel6502_state::fdesdis_lcd_w) { // a0-a2,d0-d3: 4*74259 to lcd digit segments - u32 mask = BITSWAP8(1 << offset,3,7,6,0,1,2,4,5); + u32 mask = bitswap<8>(1 << offset,3,7,6,0,1,2,4,5); for (int i = 0; i < 4; i++) { m_7seg_data = (m_7seg_data & ~mask) | ((data >> i & 1) ? 0 : mask); |