mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
fidel6502: added SC12 cartridge handling
This commit is contained in:
parent
a1629ac21b
commit
8cbabcd9ad
20
hash/fidel_scc.xml
Normal file
20
hash/fidel_scc.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
|
||||
<softwarelist name="fidel_scc" description="Fidelity SCC Modules">
|
||||
|
||||
<!-- Sensory Chess Challenger: 9, 12, A/S, .. -->
|
||||
|
||||
<software name="cb16">
|
||||
<description>Challenger Book Openings 2</description>
|
||||
<year>1982</year>
|
||||
<publisher>Fidelity Electronics</publisher>
|
||||
<part name="cart" interface="fidel_scc">
|
||||
<dataarea name="rom" size="0x4000">
|
||||
<rom name="101-1042a01" size="0x2000" crc="591b3e4a" sha1="f75ae850f2f70808b5423f847ff12ee890752bf8" offset="0x0000" />
|
||||
<rom name="101-1042a02" size="0x2000" crc="1bdf0a21" sha1="1c6f673c0bf846e705d15c802f433ac1dc9b153c" offset="0x2000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
@ -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<pia6821_device> m_6821pia;
|
||||
optional_device<generic_slot_device> m_cart;
|
||||
optional_device<speaker_sound_device> m_speaker;
|
||||
optional_device<timer_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 )
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user