diff options
Diffstat (limited to 'src/mame/drivers/fidel_cc7.cpp')
-rw-r--r-- | src/mame/drivers/fidel_cc7.cpp | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/src/mame/drivers/fidel_cc7.cpp b/src/mame/drivers/fidel_cc7.cpp deleted file mode 100644 index fc7088a872d..00000000000 --- a/src/mame/drivers/fidel_cc7.cpp +++ /dev/null @@ -1,282 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:hap -// thanks-to:Berger -/****************************************************************************** - -Fidelity Chess Challenger 7 (CC7, BCC) ------------------------- -It was Fidelity's most sold chess computer. model CC7 is an older version. -CC7 known serial numbers range from 1979 to 1980. BCC from 1980 to 1983. - -Zilog Z80A, 3.579MHz from XTAL -Z80 IRQ/NMI unused, no timer IC. -This is a cost-reduced design from CC10, no special I/O chips. - -Backgammon Challenger (BKC) is the same PCB, with the speaker connection going -to the display panel instead. - -CC7 (BCC) was also bootlegged around 1981 by Splice Industria Brasileira, -as "Byte XD-300". Mostek MK3880N-4 @ 4MHz, ROM contents is same as BCC REVB. - -RE information from netlist by Berger (a BCC model) - -Memory map: ------------ -0000-0FFF: 4K 2332 ROM CN19103N BCC-REVB. -2000-2FFF: ROM/RAM bus conflict! -3000-3FFF: 256 bytes RAM (2111 SRAM x2) -4000-FFFF: Z80 A14/A15 not connected - -Port map (Write): ---------- -D0-D3: digit select and keypad mux -D4: CHECK led -D5: LOSE led -A0-A2: NE591 A0-A2 -D7: NE591 D (_C not used) -NE591 Q0-Q6: digit segments A-G -NE591 Q7: buzzer - -Port map (Read): ---------- -D0-D3: keypad row - -******************************************************************************/ - -#include "emu.h" -#include "cpu/z80/z80.h" -#include "sound/dac.h" -#include "sound/volt_reg.h" -#include "video/pwm.h" -#include "speaker.h" - -// internal artwork -#include "fidel_bcc.lh" // clickable -#include "fidel_bkc.lh" // clickable - - -namespace { - -class bcc_state : public driver_device -{ -public: - bcc_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_display(*this, "display"), - m_dac(*this, "dac"), - m_inputs(*this, "IN.%u", 0) - { } - - // machine drivers - void bcc(machine_config &config); - void bkc(machine_config &config); - -protected: - virtual void machine_start() override; - -private: - // devices/pointers - required_device<cpu_device> m_maincpu; - required_device<pwm_display_device> m_display; - optional_device<dac_bit_interface> m_dac; - required_ioport_array<4> m_inputs; - - // address maps - void main_map(address_map &map); - void main_io(address_map &map); - - // I/O handlers - DECLARE_READ8_MEMBER(input_r); - DECLARE_WRITE8_MEMBER(control_w); - - u8 m_inp_mux = 0; - u8 m_7seg_data = 0; -}; - -void bcc_state::machine_start() -{ - // register for savestates - save_item(NAME(m_inp_mux)); - save_item(NAME(m_7seg_data)); -} - - - -/****************************************************************************** - I/O -******************************************************************************/ - -// TTL - -WRITE8_MEMBER(bcc_state::control_w) -{ - // a0-a2,d7: digit segment data via NE591 - u8 mask = 1 << (offset & 7); - m_7seg_data = (m_7seg_data & ~mask) | ((data & 0x80) ? mask : 0); - - // BCC: NE591 Q7 is speaker out - if (m_dac != nullptr) - m_dac->write(BIT(m_7seg_data, 7)); - - // d0-d3: led select, input mux - // d4,d5: upper leds(direct) - m_display->matrix(data & 0x3f, m_7seg_data); - m_inp_mux = data & 0xf; -} - -READ8_MEMBER(bcc_state::input_r) -{ - u8 data = 0; - - // d0-d3: multiplexed inputs - for (int i = 0; i < 4; i++) - if (BIT(m_inp_mux, i)) - data |= m_inputs[i]->read(); - - return data; -} - - - -/****************************************************************************** - Address Maps -******************************************************************************/ - -void bcc_state::main_map(address_map &map) -{ - map.unmap_value_high(); - map.global_mask(0x3fff); - map(0x0000, 0x0fff).rom(); - map(0x3000, 0x30ff).mirror(0x0f00).ram(); -} - -void bcc_state::main_io(address_map &map) -{ - map.global_mask(0x07); - map(0x00, 0x07).rw(FUNC(bcc_state::input_r), FUNC(bcc_state::control_w)); -} - - - -/****************************************************************************** - Input Ports -******************************************************************************/ - -static INPUT_PORTS_START( bcc ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("D4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_D) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("H8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_H) - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("C3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_C) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("G7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_G) - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CB") PORT_CODE(KEYCODE_SPACE) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("DM") PORT_CODE(KEYCODE_M) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("B2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_B) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("F6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_F) - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("A1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_A) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("E5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_CODE(KEYCODE_E) -INPUT_PORTS_END - -static INPUT_PORTS_START( bkc ) - PORT_START("IN.0") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("EN") PORT_CODE(KEYCODE_ENTER) PORT_CODE(KEYCODE_ENTER_PAD) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) - - PORT_START("IN.1") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) PORT_CODE(KEYCODE_BACKSPACE) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CODE(KEYCODE_8_PAD) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) - - PORT_START("IN.2") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("GM") PORT_CODE(KEYCODE_SPACE) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CODE(KEYCODE_7_PAD) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) - - PORT_START("IN.3") - PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) - PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB") PORT_CODE(KEYCODE_O) - PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV") PORT_CODE(KEYCODE_V) - PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) -INPUT_PORTS_END - - - -/****************************************************************************** - Machine Drivers -******************************************************************************/ - -void bcc_state::bkc(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, 3.579545_MHz_XTAL); - m_maincpu->set_addrmap(AS_PROGRAM, &bcc_state::main_map); - m_maincpu->set_addrmap(AS_IO, &bcc_state::main_io); - - /* video hardware */ - PWM_DISPLAY(config, m_display).set_size(6, 8); - m_display->set_segmask(0xf, 0x7f); - config.set_default_layout(layout_fidel_bkc); -} - -void bcc_state::bcc(machine_config &config) -{ - bkc(config); - config.set_default_layout(layout_fidel_bcc); - - /* sound hardware */ - SPEAKER(config, "speaker").front_center(); - DAC_1BIT(config, m_dac).add_route(ALL_OUTPUTS, "speaker", 0.25); - VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); -} - - - -/****************************************************************************** - ROM Definitions -******************************************************************************/ - -ROM_START( cc7 ) // model BCC - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "cn19103n_bcc-revb", 0x0000, 0x1000, CRC(a397d471) SHA1(9b12bc442fccee40f4d8500c792bc9d886c5e1a5) ) // 2332 -ROM_END - -ROM_START( cc7o ) // model CC7, PCB label 510-380 - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "101-32016", 0x0000, 0x1000, CRC(b9076c52) SHA1(09b17ac6cd6a1c5c62aea3649f3367bcf4405598) ) // 2332 -ROM_END - - -ROM_START( backgamc ) // model BKC, PCB label P-380A-5 - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "cn19255n_101-32012", 0x0000, 0x1000, CRC(0a8a19b7) SHA1(d6f0dd44b33c9b79570cf0ceac02a036ec91ba57) ) // 2332 -ROM_END - -} // anonymous namespace - - - -/****************************************************************************** - Drivers -******************************************************************************/ - -// YEAR NAME PARENT CMP MACHINE INPUT STATE INIT COMPANY, FULLNAME, FLAGS -CONS( 1979, cc7, 0, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model BCC, rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) -CONS( 1979, cc7o, cc7, 0, bcc, bcc, bcc_state, empty_init, "Fidelity Electronics", "Chess Challenger 7 (model CC7)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK ) // 2nd revision of model CC7? - -CONS( 1979, backgamc, 0, 0, bkc, bkc, bcc_state, empty_init, "Fidelity Electronics", "Backgammon Challenger", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK | MACHINE_NO_SOUND_HW ) |