move fidelity SC6 rom externally to softwarelist, as in original machine (nw)

This commit is contained in:
hap 2019-02-16 17:34:05 +01:00
parent 08cd611026
commit 3f2d50c4a2
3 changed files with 57 additions and 4 deletions

19
hash/fidel_sc6.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="fidel_sc6" description="Fidelity SC6 Modules">
<!-- Sensory Chess Challenger 6 -->
<software name="sc6">
<description>SC6: original program</description>
<year>1982</year>
<publisher>Fidelity Electronics</publisher>
<part name="cart" interface="fidel_sc6">
<dataarea name="rom" size="0x1000">
<rom name="101-1035a01" size="0x1000" crc="0024971f" sha1="76b16364913ada2fb94b9e6a8524b924e6832ddf" offset="0x0000" /> <!-- 2332 -->
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -21,6 +21,13 @@ Sensory Chess Challenger 6 (model SC6):
- external 4KB ROM 2332 101-1035A01, in module slot
- buzzer, 2 7seg LEDs, 8*8 chessboard buttons
released modules, * denotes not dumped yet:
- *BO6: Book Openings I
- *CG6: Greatest Chess Games 1
- SC6: pack-in, original program
SC6 program is contained in BO6 and CG6.
******************************************************************************/
#include "emu.h"
@ -52,6 +59,7 @@ private:
DECLARE_READ_LINE_MEMBER(sc6_input6_r);
DECLARE_READ_LINE_MEMBER(sc6_input7_r);
void sc6_map(address_map &map);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(sc6_cartridge);
};
@ -62,6 +70,26 @@ private:
SC6
******************************************************************************/
// cartridge
DEVICE_IMAGE_LOAD_MEMBER(fidelmcs48_state, sc6_cartridge)
{
u32 size = m_cart->common_get_size("rom");
// 4KB ROM only?
if (size != 0x1000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid file size");
return image_init_result::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_result::PASS;
}
// MCU ports/generic
void fidelmcs48_state::sc6_prepare_display()
@ -120,7 +148,7 @@ READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r)
void fidelmcs48_state::sc6_map(address_map &map)
{
map(0x0000, 0x0fff).rom();
map(0x0000, 0x0fff).r("cartslot", FUNC(generic_slot_device::read_rom));
}
@ -169,6 +197,13 @@ void fidelmcs48_state::sc6(machine_config &config)
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
/* cartridge */
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "fidel_sc6", "bin"));
cartslot.set_device_load(device_image_load_delegate(&fidelmcs48_state::device_image_load_sc6_cartridge, this));
cartslot.set_must_be_loaded(true);
SOFTWARE_LIST(config, "cart_list").set_original("fidel_sc6");
}
@ -178,8 +213,8 @@ void fidelmcs48_state::sc6(machine_config &config)
******************************************************************************/
ROM_START( fscc6 )
ROM_REGION( 0x1000, "maincpu", 0 )
ROM_LOAD("101-1035a01", 0x0000, 0x1000, CRC(0024971f) SHA1(76b16364913ada2fb94b9e6a8524b924e6832ddf) ) // 2332
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
// none here, it's in the module slot
ROM_END

View File

@ -37,7 +37,6 @@
- Fidelity Challenger Printer - thermal printer, MCU=D8048C243
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 (label not known)
- CB16: Challenger Book Openings 2 - 8+8KB 101-1042A01,02