diff --git a/hash/fidel_scc.xml b/hash/fidel_scc.xml
new file mode 100644
index 00000000000..d6afe1e7d07
--- /dev/null
+++ b/hash/fidel_scc.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ Challenger Book Openings 2
+ 1982
+ Fidelity Electronics
+
+
+
+
+
+
+
+
+
diff --git a/src/mame/drivers/fidel6502.cpp b/src/mame/drivers/fidel6502.cpp
index 2a17baa6590..8ccf47506a9 100644
--- a/src/mame/drivers/fidel6502.cpp
+++ b/src/mame/drivers/fidel6502.cpp
@@ -16,6 +16,9 @@
#include "cpu/m6502/m65sc02.h"
#include "machine/6821pia.h"
#include "sound/speaker.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+#include "softlist.h"
#include "includes/fidelz80.h"
@@ -32,12 +35,14 @@ public:
fidel6502_state(const machine_config &mconfig, device_type type, const char *tag)
: fidelz80base_state(mconfig, type, tag),
m_6821pia(*this, "6821pia"),
+ m_cart(*this, "cartslot"),
m_speaker(*this, "speaker"),
m_irq_off(*this, "irq_off")
{ }
// devices/pointers
optional_device m_6821pia;
+ optional_device m_cart;
optional_device m_speaker;
optional_device m_irq_off;
@@ -57,6 +62,8 @@ public:
DECLARE_READ_LINE_MEMBER(csc_pia1_cb1_r);
// model SC12
+ DECLARE_MACHINE_START(sc12);
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER(scc_cartridge);
TIMER_DEVICE_CALLBACK_MEMBER(irq_off);
TIMER_DEVICE_CALLBACK_MEMBER(sc12_irq);
DECLARE_WRITE8_MEMBER(sc12_control_w);
@@ -203,6 +210,34 @@ WRITE_LINE_MEMBER(fidel6502_state::csc_pia1_ca2_w)
SC12
******************************************************************************/
+// cartridge
+
+DEVICE_IMAGE_LOAD_MEMBER(fidel6502_state, scc_cartridge)
+{
+ UINT32 size = m_cart->common_get_size("rom");
+
+ // max size is 16KB
+ if (size > 0x4000)
+ {
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
+ return IMAGE_INIT_FAIL;
+ }
+
+ m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
+ m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
+
+ return IMAGE_INIT_PASS;
+}
+
+MACHINE_START_MEMBER(fidel6502_state, sc12)
+{
+ if (m_cart->exists())
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x5fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
+
+ fidelz80base_state::machine_start();
+}
+
+
// interrupt handling
TIMER_DEVICE_CALLBACK_MEMBER(fidel6502_state::irq_off)
@@ -331,7 +366,7 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD)
- PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L) // level
+ PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV") PORT_CODE(KEYCODE_L)
PORT_START("IN.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD)
@@ -384,8 +419,8 @@ static INPUT_PORTS_START( csc )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Bishop") PORT_CODE(KEYCODE_4)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("Queen") PORT_CODE(KEYCODE_5)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("King") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) // clear
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
PORT_BIT(0x100,IP_ACTIVE_HIGH, IPT_UNUSED) PORT_UNUSED
INPUT_PORTS_END
@@ -477,8 +512,8 @@ static INPUT_PORTS_START( sc12 )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("LV / Rook") PORT_CODE(KEYCODE_4)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PV / Queen") PORT_CODE(KEYCODE_5)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("PB / King") PORT_CODE(KEYCODE_6)
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL) // clear
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R) // reset
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("CL") PORT_CODE(KEYCODE_DEL)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_NAME("RE") PORT_CODE(KEYCODE_R)
INPUT_PORTS_END
@@ -533,10 +568,19 @@ static MACHINE_CONFIG_START( sc12, fidel6502_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelz80base_state, display_decay_tick, attotime::from_msec(1))
MCFG_DEFAULT_LAYOUT(layout_fidel_sc12)
+ MCFG_MACHINE_START_OVERRIDE(fidel6502_state, sc12)
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ /* cartridge */
+ MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "fidel_scc")
+ MCFG_GENERIC_EXTENSIONS("bin,dat")
+ MCFG_GENERIC_LOAD(fidel6502_state, scc_cartridge)
+
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "fidel_scc")
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( fev, fidel6502_state )
diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp
index 6e3e5cb725e..8c5c3fdbf5d 100644
--- a/src/mame/drivers/fidelz80.cpp
+++ b/src/mame/drivers/fidelz80.cpp
@@ -3,18 +3,41 @@
/******************************************************************************
Fidelity Electronics Z80 based board driver
- for 6502 based boards, see drivers/fidel6502.cpp
-
- Detailed RE work done by Kevin 'kevtris' Horton, except where noted
+ for 6502 based boards, see drivers/fidel6502.cpp (documentation is in this driver)
TODO:
- Figure out why it says the first speech line twice; it shouldn't?
It sometimes does this on Voice Sensory Chess Challenger real hardware.
It can also be heard on Advanced Voice Chess Challenger real hardware, but not the whole line:
"I I am Fidelity's chess challenger", instead.
- - Get rom locations from pcb (done for UVC, VCC is probably similar)
- correctly hook up VBRC speech so that the z80 is halted while words are being spoken
+ Read the official manual(s) on how to play.
+
+ Keypad legend:
+ - RE: Reset
+ - CL: Clear
+ - EN: Enter
+ - PB: Problem Mode
+ - PV: Position Verification
+ - LV: Playing Levels
+ - TB: Take Back
+ - DM: Display Move/Double Move
+ - RV: Reverse
+
+ Peripherals, compatible with various boards:
+ - Fidelity Challenger Printer - thermal printer, MCU=?
+
+ Program/data cartridges, for various boards, some cross-compatible:
+ - CG6: Greatest Chess Games 1
+ - CAC: Challenger Advanced Chess - 8KB 101-1038A01
+ - CB9: Challenger Book Openings 1 - 8KB?
+ - CB16: Challenger Book Openings 2 - 8+8KB 101-1042A01,02
+ - others are alt. titles of these?
+
+ Board hardware descriptions below.
+ Detailed RE work done by Kevin 'kevtris' Horton, except where noted
+
***********************************************************************
Voice Chess Challenger (VCC) (version A and B?)
@@ -305,7 +328,7 @@ A detailed description of the hardware can be found also in the patent 4,373,719
******************************************************************************
-Champion Sensory Chess Challenger (CSC) (6502 based -> fidel6502.cpp driver)
+Champion Sensory Chess Challenger (CSC)
---------------------------------------
Memory map:
@@ -594,10 +617,11 @@ expect that the software reads these once on startup only.
******************************************************************************
-Sensory Chess Challenger (SC12-B) (6502 based -> fidel6502.cpp driver)
+Sensory Chess Challenger (SC12-B)
+4 versions are known to exist: A,B,C, and X, with increasing CPU speed.
---------------------------------
-RE information by Berger
+RE information from netlist by Berger
8*(8+1) buttons, 8+8+2 red LEDs
DIN 41524C printer port
@@ -637,7 +661,7 @@ If control Q4 is set, printer data can be read from I0.
******************************************************************************
-Voice Excellence (FEV, model 6092) (6502 based -> fidel6502.cpp driver)
+Voice Excellence (FEV, model 6092)
----------------------------------
PCB 1: 510.1117A02, appears to be identical to other "Excellence" boards
diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp
index 9670ab8be9f..d87600f8326 100644
--- a/src/mame/drivers/hh_tms1k.cpp
+++ b/src/mame/drivers/hh_tms1k.cpp
@@ -14,15 +14,19 @@
@CP0904A TMS0970 1977, Milton Bradley Comp IV
@MP0905B TMS0970 1977, Parker Brothers Codename Sector
*MP0057 TMS1000 1978, APH Student Speech+ (same ROM contents as TSI Speech+?)
+ *MP0158 TMS1000 1979, Entex Soccer
*MP0168 TMS1000? 1979, Conic Basketball
+ *MP0170 TMS1000? 1979, E.R.S. Football
@MP0914 TMS1000 1979, Entex Baseball 1
@MP0923 TMS1000 1979, Entex Baseball 2
@MP1030 TMS1100 1980, APF Mathemagician
@MP1133 TMS1470 1979, Kosmos Astro
@MP1180 TMS1100 1980, Tomy Power House Pinball
+ *MP1181 TMS1100 1979, Conic Football 2
@MP1204 TMS1100 1980, Entex Baseball 3 (6007)
@MP1211 TMS1100 1980, Entex Space Invader
@MP1218 TMS1100 1980, Entex Basketball 2 (6010)
+ *MP1219 TMS1100 1980, U.S. Games Super Sports 4
@MP1221 TMS1100 1980, Entex Raise The Devil
*MP1296 TMS1100? 1982, Entex Black Knight
*MP1312 TMS1100 198?, Tandy/RadioShack Science Fair Microcomputer Trainer
@@ -59,6 +63,7 @@
MP3496 TMS1100 1980, MicroVision cartridge: Sea Duel
M34009 TMS1100 1981, MicroVision cartridge: Alien Raiders (note: MP3498, MP3499, M3400x..)
@M34012 TMS1100 1980, Mattel Dungeons & Dragons - Computer Labyrinth Game
+ *M34014 TMS1100 1981, Coleco Bowlatronic
M34017 TMS1100 1981, MicroVision cartridge: Cosmic Hunter
M34047 TMS1100 1982, MicroVision cartridge: Super Blockbuster
*M34078A TMS1100 1983, Milton Bradley Arcade Mania