diff --git a/.gitattributes b/.gitattributes index 0f422209182..e19b43b2a3f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -6736,7 +6736,6 @@ src/mess/includes/z80ne.h svneol=native#text/plain src/mess/includes/z88.h svneol=native#text/plain src/mess/includes/zx.h svneol=native#text/plain src/mess/layout/4004clk.lay svneol=native#text/plain -src/mess/layout/abc.lay svneol=native#text/plain src/mess/layout/abc1600.lay svneol=native#text/plain src/mess/layout/acrnsys1.lay svneol=native#text/plain src/mess/layout/aim65.lay svneol=native#text/plain @@ -6752,6 +6751,7 @@ src/mess/layout/babbage.lay svneol=native#text/plain src/mess/layout/beta.lay svneol=native#text/plain src/mess/layout/bob85.lay svneol=native#text/plain src/mess/layout/borisdpl.lay svneol=native#text/plain +src/mess/layout/bridgec3.lay svneol=native#text/plain src/mess/layout/c80.lay svneol=native#text/plain src/mess/layout/chessmst.lay svneol=native#text/plain src/mess/layout/chesstrv.lay svneol=native#text/plain diff --git a/src/mess/drivers/fidelz80.c b/src/mess/drivers/fidelz80.c index b31d50e079f..3712ec03d27 100644 --- a/src/mess/drivers/fidelz80.c +++ b/src/mess/drivers/fidelz80.c @@ -8,7 +8,7 @@ * TODO: * * Figure out why it says the first speech line twice; it shouldn't. (It sometimes does this on the sensory chess challenger real hardware) * * Get rom locations from pcb (done for UVC, VCC is probably similar) -* * correctly hook up VBC/ABC speech so that the z80 is halted while words are being spoken +* * correctly hook up VBC and 7014/bridgec3 speech so that the z80 is halted while words are being spoken * *********************************************************************** @@ -151,13 +151,16 @@ PC.7 - button column D (W) ****************************************************************************** Voice Bridge Challenger (VBC) -and Advanced Bridge Challenger (ABC) +and Bridge Challenger 3 (7014) -------------------------------- This unit is similar in construction kinda to the chess challengers, however it has an 8041 which does ALL of the system I/O. The Z80 has NO IO AT ALL other than what is performed through the 8041! +Note: The Bridge Challenger 3 does not actually have the 8 LEDs nor the +latches which operate them populated, but they do work if manually added. + The main CPU is a Z80 running at 2.5MHz INT connects to VCC (not used) @@ -585,7 +588,7 @@ expect that the software reads these once on startup only. #include "includes/fidelz80.h" #include "fidelz80.lh" #include "vsc.lh" -#include "abc.lh" +#include "bridgec3.lh" //#include "debugger.h" @@ -841,7 +844,7 @@ static Z80PIO_INTERFACE( vsc_z80pio_intf ) }; /****************************************************************************** - I8041 MCU, for VBC and ABC + I8041 MCU, for VBC and bridgec3/7014 ******************************************************************************/ WRITE8_MEMBER(fidelz80_state::kp_matrix_w) @@ -989,7 +992,7 @@ READ8_MEMBER(fidelz80_state::mcu_status_r) return upi41_master_r(m_i8041, 1); } -WRITE8_MEMBER( fidelz80_state::abc_speech_w ) +WRITE8_MEMBER( fidelz80_state::bridgec_speech_w ) { // todo: HALT THE z80 here, and set up a callback to poll the s14001a DONE line to resume z80 s14001a_set_volume(m_speech, 15); // hack, s14001a core should assume a volume of 15 unless otherwise stated... @@ -1037,13 +1040,13 @@ static ADDRESS_MAP_START(vsc_mem, AS_PROGRAM, 8, fidelz80_state) AM_RANGE(0x6000, 0x7fff) AM_RAM AM_MIRROR(0x1c00) // 1k ram (2114*2) mirrored 8 times ADDRESS_MAP_END -static ADDRESS_MAP_START(abc_z80_mem, AS_PROGRAM, 8, fidelz80_state) +static ADDRESS_MAP_START(bridgec_z80_mem, AS_PROGRAM, 8, fidelz80_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE(0x0000, 0x1fff) AM_ROM // 8k rom AM_RANGE(0x2000, 0x3fff) AM_ROM // 8k rom AM_RANGE(0x4000, 0x5fff) AM_ROM // 8k rom AM_RANGE(0x6000, 0x63ff) AM_RAM AM_MIRROR(0x1c00) // 1k ram (2114*2) mirrored 8 times - AM_RANGE(0xE000, 0xE000) AM_WRITE(abc_speech_w) AM_MIRROR(0x1FFF) // write to speech chip, halts cpu + AM_RANGE(0xE000, 0xE000) AM_WRITE(bridgec_speech_w) AM_MIRROR(0x1FFF) // write to speech chip, halts cpu ADDRESS_MAP_END static ADDRESS_MAP_START(fidel_z80_io, AS_IO, 8, fidelz80_state) @@ -1059,14 +1062,14 @@ static ADDRESS_MAP_START(vsc_io, AS_IO, 8, fidelz80_state) AM_RANGE(0x08, 0x0b) AM_MIRROR(0xf0) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) ADDRESS_MAP_END -static ADDRESS_MAP_START(abc_z80_io, AS_IO, 8, fidelz80_state) +static ADDRESS_MAP_START(bridgec_z80_io, AS_IO, 8, fidelz80_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_READWRITE(mcu_data_r, mcu_data_w) AM_RANGE(0x01, 0x01) AM_READWRITE(mcu_status_r, mcu_command_w) ADDRESS_MAP_END -static ADDRESS_MAP_START(abc_mcu_io, AS_IO, 8, fidelz80_state) +static ADDRESS_MAP_START(bridgec_mcu_io, AS_IO, 8, fidelz80_state) ADDRESS_MAP_UNMAP_LOW AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kp_matrix_w) AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(exp_i8243_p2_r, exp_i8243_p2_w) @@ -1086,7 +1089,7 @@ INPUT_CHANGED_MEMBER(fidelz80_state::fidelz80_trigger_reset) m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); } -INPUT_CHANGED_MEMBER(fidelz80_state::abc_trigger_reset) +INPUT_CHANGED_MEMBER(fidelz80_state::bridgec_trigger_reset) { m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); m_i8041->set_input_line(INPUT_LINE_RESET, newval ? CLEAR_LINE : ASSERT_LINE); @@ -1219,7 +1222,7 @@ static INPUT_PORTS_START( vsc ) PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("ST") PORT_CODE(KEYCODE_S) INPUT_PORTS_END -static INPUT_PORTS_START( abc ) +static INPUT_PORTS_START( bridgec ) PORT_START("LINE1") PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED) PORT_UNUSED PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("A") PORT_CODE(KEYCODE_A) @@ -1271,7 +1274,7 @@ static INPUT_PORTS_START( abc ) PORT_START("LINE8") PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_UNUSED) PORT_UNUSED - PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, abc_trigger_reset, 0) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) PORT_CHANGED_MEMBER(DEVICE_SELF, fidelz80_state, bridgec_trigger_reset, 0) PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("BR") PORT_CODE(KEYCODE_T) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("DL") PORT_CODE(KEYCODE_L) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Clubs") PORT_CODE(KEYCODE_4_PAD) @@ -1340,19 +1343,19 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END -static MACHINE_CONFIG_START( abc, fidelz80_state ) +static MACHINE_CONFIG_START( bridgec, fidelz80_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz/2) // 2.5MHz - MCFG_CPU_PROGRAM_MAP(abc_z80_mem) - MCFG_CPU_IO_MAP(abc_z80_io) + MCFG_CPU_PROGRAM_MAP(bridgec_z80_mem) + MCFG_CPU_IO_MAP(bridgec_z80_io) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ - MCFG_DEFAULT_LAYOUT(layout_abc) + MCFG_DEFAULT_LAYOUT(layout_bridgec3) /* other hardware */ MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) // 5MHz - MCFG_CPU_IO_MAP(abc_mcu_io) + MCFG_CPU_IO_MAP(bridgec_mcu_io) MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state,digit_w)) @@ -1403,28 +1406,29 @@ ROM_END ROM_START(vbc) ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("101-64108.bin", 0x0000, 0x2000, CRC(08472223) SHA1(859865B13C908DBB474333263DC60F6A32461141)) - ROM_LOAD("101-64109.bin", 0x2000, 0x2000, CRC(320AFA0F) SHA1(90EDFE0AC19B108D232CDA376B03A3A24BEFAD4C)) - ROM_LOAD("101-64110.bin", 0x4000, 0x2000, CRC(3040D0BD) SHA1(CAA55FC8D9196E408FB41E7171A68E5099519813)) + ROM_LOAD("101-64108.g3", 0x0000, 0x2000, CRC(08472223) SHA1(859865B13C908DBB474333263DC60F6A32461141)) + ROM_LOAD("101-64109.f3", 0x2000, 0x2000, CRC(320AFA0F) SHA1(90EDFE0AC19B108D232CDA376B03A3A24BEFAD4C)) + ROM_LOAD("101-64110.e3", 0x4000, 0x2000, CRC(3040D0BD) SHA1(CAA55FC8D9196E408FB41E7171A68E5099519813)) ROM_REGION(0x1000, "mcu", 0) - ROM_LOAD("100-1009.bin", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a)) + ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a)) ROM_REGION(0x2000, "speech", 0) - ROM_LOAD("101-32118.bin", 0x0000, 0x1000, CRC(A0B8BB8F) SHA1(F56852108928D5C6CACCFC8166FA347D6760A740)) + ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(A0B8BB8F) SHA1(F56852108928D5C6CACCFC8166FA347D6760A740)) ROM_END -ROM_START(abc) +ROM_START(bridgec3) // 510-1016 Rev.1 PCB has neither locations nor ic labels, so I declare the big heatsink is at C1, numbers count on the shorter length of pcb ROM_REGION(0x10000, "maincpu", 0) - ROM_LOAD("bridge_w.bin", 0x0000, 0x2000, CRC(eb1620ef) SHA1(987a9abc8c685f1a68678ea4ee65ec4a99419179)) - ROM_LOAD("bridge_r.bin", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49)) - ROM_LOAD("bridge_b.bin", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a)) + // these 3 roms are TMM2764AD-20 chips with tiny hole-punch sized colored stickers (mostly) covering the quartz windows. + ROM_LOAD("7014_white.g3", 0x0000, 0x2000, CRC(eb1620ef) SHA1(987a9abc8c685f1a68678ea4ee65ec4a99419179)) // white sticker + ROM_LOAD("7014_red.f3", 0x2000, 0x2000, CRC(74af0019) SHA1(8dc05950c254ca050b95b93e5d0cf48f913a6d49)) // red sticker + ROM_LOAD("7014_blue.e3", 0x4000, 0x2000, CRC(341d9ca6) SHA1(370876573bb9408e75f4fc797304b6c64af0590a)) // blue sticker ROM_REGION(0x1000, "mcu", 0) - ROM_LOAD("100-1009.bin", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a)) + ROM_LOAD("100-1009.a3", 0x0000, 0x0400, CRC(60eb343f) SHA1(8a63e95ebd62e123bdecc330c0484a47c354bd1a)) // "NEC P07021-027 || D8041C 563 100-1009" ROM_REGION(0x2000, "speech", 0) - ROM_LOAD("101-32118.bin", 0x0000, 0x1000, CRC(A0B8BB8F) SHA1(F56852108928D5C6CACCFC8166FA347D6760A740)) + ROM_LOAD("101-32118.i2", 0x0000, 0x1000, CRC(A0B8BB8F) SHA1(F56852108928D5C6CACCFC8166FA347D6760A740)) // "ea 101-32118 || (C) 1980 || EA 8332A247-4 || 8034" ROM_END /****************************************************************************** @@ -1434,7 +1438,7 @@ ROM_END /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ COMP( 1978, cc10, 0, 0, cc10, fidelz80, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (Model CC10/BCC)", GAME_NOT_WORKING ) COMP( 1979, vcc, 0, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Talking Chess Challenger (model VCC)", GAME_NOT_WORKING ) -COMP( 1979, vbc, 0, 0, abc, abc, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBC)", GAME_NOT_WORKING ) +COMP( 1979, vbc, 0, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBC)", GAME_NOT_WORKING ) COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Talking Chess Challenger (model UVC)", GAME_NOT_WORKING ) -COMP( 1980, abc, vbc, 0, abc, abc, driver_device, 0, "Fidelity Electronics", "Advanced Bridge Challenger (model ABC)", GAME_NOT_WORKING ) +COMP( 1980, bridgec3, vbc, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger 3 (model 7014)", GAME_NOT_WORKING ) COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Sensory Chess Challenger (model VSC)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK ) diff --git a/src/mess/includes/fidelz80.h b/src/mess/includes/fidelz80.h index fb4e40fe9e4..a871752eead 100644 --- a/src/mess/includes/fidelz80.h +++ b/src/mess/includes/fidelz80.h @@ -47,8 +47,8 @@ public: DECLARE_READ8_MEMBER( vcc_portb_r ); DECLARE_WRITE8_MEMBER( vcc_porta_w ); - //model ABC/VBC - DECLARE_WRITE8_MEMBER( abc_speech_w ); + //model 7014 and VBC + DECLARE_WRITE8_MEMBER(bridgec_speech_w ); DECLARE_WRITE8_MEMBER(kp_matrix_w); DECLARE_READ8_MEMBER(unknown_r); DECLARE_READ8_MEMBER(exp_i8243_p2_r); @@ -58,6 +58,7 @@ public: DECLARE_WRITE8_MEMBER(mcu_command_w); DECLARE_READ8_MEMBER(mcu_data_r); DECLARE_READ8_MEMBER(mcu_status_r); + DECLARE_INPUT_CHANGED_MEMBER(bridgec_trigger_reset); //model VSC DECLARE_WRITE8_MEMBER(vsc_porta_w); @@ -67,7 +68,6 @@ public: DECLARE_READ8_MEMBER(vsc_pio_portb_r); DECLARE_WRITE8_MEMBER(vsc_pio_portb_w); DECLARE_INPUT_CHANGED_MEMBER(fidelz80_trigger_reset); - DECLARE_INPUT_CHANGED_MEMBER(abc_trigger_reset); TIMER_DEVICE_CALLBACK_MEMBER(nmi_timer); DECLARE_WRITE8_MEMBER(digit_w); diff --git a/src/mess/layout/abc.lay b/src/mess/layout/bridgec3.lay similarity index 100% rename from src/mess/layout/abc.lay rename to src/mess/layout/bridgec3.lay diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 73d5852d1ca..ea0b6fe1a69 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -2054,7 +2054,7 @@ codata rvoicepc vcc uvc -abc +bridgec3 vbc vsc victor9k diff --git a/src/mess/mess.mak b/src/mess/mess.mak index 60f7177451a..dd65ecfacc7 100644 --- a/src/mess/mess.mak +++ b/src/mess/mess.mak @@ -2504,7 +2504,7 @@ $(MESS_MACHINE)/esqvfd.o: $(MESS_LAYOUT)/esq2by40.lh \ $(MESS_DRIVERS)/et3400.o: $(MESS_LAYOUT)/et3400.lh $(MESS_DRIVERS)/ex800.o: $(MESS_LAYOUT)/ex800.lh $(MESS_DRIVERS)/fidelz80.o: $(MESS_LAYOUT)/fidelz80.lh \ - $(MESS_LAYOUT)/abc.lh \ + $(MESS_LAYOUT)/bridgec3.lh \ $(MESS_LAYOUT)/vsc.lh $(MESS_DRIVERS)/glasgow.o: $(MESS_LAYOUT)/glasgow.lh $(MESS_DRIVERS)/h8.o: $(MESS_LAYOUT)/h8.lh