abc80: Refactor ABC Memory Card to use generic slots. [Curt Coder]

New working software list items
-------------------------------
abc80_rom: ABC-DOS, ABC-DOS DD, UFD-DOS v.20, IEC Option 4027 v1.02.4b, Printer option 9704, Printer option 9704 0.1 [Curt Coder]
This commit is contained in:
Curt Coder 2023-03-29 07:24:07 +03:00
parent f2b71f7eac
commit 9759222381
4 changed files with 101 additions and 38 deletions

83
hash/abc80_rom.xml Normal file
View File

@ -0,0 +1,83 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0-1.0
-->
<softwarelist name="abc80_rom" description="Luxor ABC 80 memory card ROMs">
<software name="abcdos">
<!-- Scandia Metric FD2 -->
<description>ABC-DOS</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_dos">
<dataarea name="rom" size="0x1000">
<rom name="abcdos.3d" size="0x1000" crc="2cb2192f" sha1="a6b3a9587714f8db807c05bee6c71c0684363744"/>
</dataarea>
</part>
</software>
<software name="dosdd80">
<!-- ABC 830 -->
<description>ABC-DOS DD</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_dos">
<dataarea name="rom" size="0x1000">
<rom name="abcdos.3d" size="0x1000" crc="36db4c15" sha1="ae462633f3a9c142bb029beb14749a84681377fa"/>
</dataarea>
</part>
</software>
<software name="ufd20">
<!-- ABC 830 -->
<description>UFD-DOS v.20</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_dos">
<dataarea name="rom" size="0x1000">
<rom name="abcdos.3d" size="0x1000" crc="69b09c0b" sha1="403997a06cf6495b8fa13dc74eff6a64ef7aa53e"/>
</dataarea>
</part>
</software>
<software name="iec">
<description>IEC option 4027 v1.02.4b</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_iec">
<dataarea name="rom" size="0x400">
<rom name="abc80-iec-option-4027-ver1.02.4b" size="0x400" crc="b4998599" sha1="1d46d1334599c31025cc8481daa4d38d470a7b48"/>
</dataarea>
</part>
</software>
<software name="prn">
<description>Printer option 9704</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_prn">
<dataarea name="rom" size="0x400">
<rom name="abc80-printer-option-9704.3b" size="0x400" crc="f2f0d808" sha1="6355495542e77411137426effbe1059532735bb2"/>
</dataarea>
</part>
</software>
<software name="prna" cloneof="prn">
<description>Printer option 9704 0.1</description>
<year>19??</year>
<publisher>unknown</publisher>
<part name="rom" interface="abc80_prn">
<dataarea name="rom" size="0x400">
<rom name="abc80-printer-option-9704-0.1.3b" size="0x400" crc="5bfaee54" sha1="fc62d8c27c69c7ca0870faa922ccd7aa1b650ecf"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -67,38 +67,15 @@ DEFINE_DEVICE_TYPE(ABC_MEMORY_CARD, abc_memory_card_device, "abc_memcard", "ABC
//-------------------------------------------------
// ROM( abc_dos )
// device_add_mconfig - add device configuration
//-------------------------------------------------
ROM_START( abc_dos )
ROM_REGION( 0x1000, "dos", 0 )
ROM_DEFAULT_BIOS("ufd20")
ROM_SYSTEM_BIOS( 0, "abcdos", "ABC-DOS" ) // Scandia Metric FD2
ROMX_LOAD( "abcdos.3d", 0x0000, 0x1000, CRC(2cb2192f) SHA1(a6b3a9587714f8db807c05bee6c71c0684363744), ROM_BIOS(0) )
ROM_SYSTEM_BIOS( 1, "dosdd80", "ABC-DOS DD" ) // ABC 830
ROMX_LOAD( "dosdd80.3d", 0x0000, 0x1000, CRC(36db4c15) SHA1(ae462633f3a9c142bb029beb14749a84681377fa), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 2, "ufd20", "UFD-DOS v.20" ) // ABC 830
ROMX_LOAD( "ufddos20.3d", 0x0000, 0x1000, CRC(69b09c0b) SHA1(403997a06cf6495b8fa13dc74eff6a64ef7aa53e), ROM_BIOS(2) )
ROM_REGION( 0x400, "iec", 0 )
ROM_LOAD( "abc80-iec-option-4027-ver1.02.4b", 0x000, 0x400, CRC(b4998599) SHA1(1d46d1334599c31025cc8481daa4d38d470a7b48) )
ROM_REGION( 0x400, "opt", 0 )
ROM_LOAD_OPTIONAL( "spare.4a", 0x000, 0x400, NO_DUMP )
ROM_REGION( 0x400, "prn", 0 )
ROM_LOAD( "abc80-printer-option-9704.3b", 0x000, 0x400, CRC(f2f0d808) SHA1(6355495542e77411137426effbe1059532735bb2) )
ROM_LOAD( "abc80-printer-option-9704-0.1.3b", 0x000, 0x400, CRC(5bfaee54) SHA1(fc62d8c27c69c7ca0870faa922ccd7aa1b650ecf) )
ROM_END
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const tiny_rom_entry *abc_memory_card_device::device_rom_region() const
void abc_memory_card_device::device_add_mconfig(machine_config & config)
{
return ROM_NAME( abc_dos );
GENERIC_SOCKET(config, m_dos_rom, generic_plain_slot, "abc80_dos", "bin");
GENERIC_SOCKET(config, m_iec_rom, generic_plain_slot, "abc80_iec", "bin");
GENERIC_SOCKET(config, m_opt_rom, generic_plain_slot, "abc80_opt", "bin");
GENERIC_SOCKET(config, m_prn_rom, generic_plain_slot, "abc80_prn", "bin");
}
@ -146,19 +123,19 @@ uint8_t abc_memory_card_device::abcbus_xmemfl(offs_t offset)
if (offset >= 0x6000 && offset < 0x7000)
{
data = m_dos_rom->base()[offset & 0xfff];
data = m_dos_rom->read_rom(offset & 0xfff);
}
if (offset >= 0x7000 && offset < 0x7400)
{
data = m_iec_rom->base()[offset & 0x3ff];
data = m_iec_rom->read_rom(offset & 0x3ff);
}
if (offset >= 0x7400 && offset < 0x7800)
{
data = m_opt_rom->base()[offset & 0x3ff];
data = m_opt_rom->read_rom(offset & 0x3ff);
}
if (offset >= 0x7800 && offset < 0x7c00)
{
data = m_prn_rom->base()[offset & 0x3ff];
data = m_prn_rom->read_rom(offset & 0x3ff);
}
return data;

View File

@ -12,6 +12,8 @@
#pragma once
#include "abcbus.h"
#include "bus/generic/carts.h"
#include "bus/generic/slot.h"
@ -28,7 +30,7 @@ public:
abc_memory_card_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_add_mconfig(machine_config &config) override;
protected:
// device-level overrides
@ -39,10 +41,10 @@ protected:
virtual uint8_t abcbus_xmemfl(offs_t offset) override;
private:
required_memory_region m_dos_rom;
required_memory_region m_iec_rom;
required_memory_region m_opt_rom;
required_memory_region m_prn_rom;
required_device<generic_slot_device> m_dos_rom;
required_device<generic_slot_device> m_iec_rom;
required_device<generic_slot_device> m_opt_rom;
required_device<generic_slot_device> m_prn_rom;
};

View File

@ -550,6 +550,7 @@ void abc80_state::abc80(machine_config &config)
// software list
SOFTWARE_LIST(config, "cass_list").set_original("abc80_cass");
SOFTWARE_LIST(config, "flop_list").set_original("abc80_flop");
SOFTWARE_LIST(config, "rom_list").set_original("abc80_rom");
}