mirror of
https://github.com/holub/mame
synced 2025-05-02 04:31:01 +03:00
atom.cpp: Replace machine().device with finder array (nw)
This commit is contained in:
parent
65c4569652
commit
a6e481e111
@ -662,8 +662,8 @@ void atom_state::machine_start()
|
||||
m_baseram[0x0a] = machine().rand() & 0x0ff;
|
||||
m_baseram[0x0b] = machine().rand() & 0x0ff;
|
||||
|
||||
if (m_cart && m_cart->exists())
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
|
||||
if (m_cart.found() && m_cart->exists())
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8_delegate(FUNC(generic_slot_device::read_rom), &*m_cart));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
@ -679,9 +679,9 @@ void atomeb_state::machine_start()
|
||||
MACHINE DRIVERS
|
||||
***************************************************************************/
|
||||
|
||||
image_init_result atom_state::load_cart(device_image_interface &image, generic_slot_device *slot)
|
||||
image_init_result atom_state::load_cart(device_image_interface &image, generic_slot_device &slot)
|
||||
{
|
||||
uint32_t size = slot->common_get_size("rom");
|
||||
uint32_t size = slot.common_get_size("rom");
|
||||
|
||||
if (size > 0x1000)
|
||||
{
|
||||
@ -689,8 +689,8 @@ image_init_result atom_state::load_cart(device_image_interface &image, generic_s
|
||||
return image_init_result::FAIL;
|
||||
}
|
||||
|
||||
slot->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||
slot->common_load_rom(slot->get_rom_base(), size, "rom");
|
||||
slot.rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||
slot.common_load_rom(slot.get_rom_base(), size, "rom");
|
||||
|
||||
return image_init_result::PASS;
|
||||
}
|
||||
@ -793,22 +793,22 @@ MACHINE_CONFIG_START(atomeb_state::atomeb)
|
||||
/* cartridges */
|
||||
MCFG_DEVICE_REMOVE("cartslot")
|
||||
|
||||
MCFG_ATOM_ROM_ADD("rom_a0", a0_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a1", a1_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a2", a2_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a3", a3_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a4", a4_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a5", a5_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a6", a6_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a7", a7_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a8", a8_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a9", a9_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_aa", aa_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_ab", ab_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_ac", ac_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_ad", ad_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_ae", ae_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_af", af_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_a0", ext_load<0x0>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a1", ext_load<0x1>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a2", ext_load<0x2>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a3", ext_load<0x3>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a4", ext_load<0x4>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a5", ext_load<0x5>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a6", ext_load<0x6>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a7", ext_load<0x7>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a8", ext_load<0x8>)
|
||||
MCFG_ATOM_ROM_ADD("rom_a9", ext_load<0x9>)
|
||||
MCFG_ATOM_ROM_ADD("rom_aa", ext_load<0xa>)
|
||||
MCFG_ATOM_ROM_ADD("rom_ab", ext_load<0xb>)
|
||||
MCFG_ATOM_ROM_ADD("rom_ac", ext_load<0xc>)
|
||||
MCFG_ATOM_ROM_ADD("rom_ad", ext_load<0xd>)
|
||||
MCFG_ATOM_ROM_ADD("rom_ae", ext_load<0xe>)
|
||||
MCFG_ATOM_ROM_ADD("rom_af", ext_load<0xf>)
|
||||
|
||||
MCFG_ATOM_ROM_ADD("rom_e0", e0_load)
|
||||
MCFG_ATOM_ROM_ADD("rom_e1", e1_load)
|
||||
@ -974,17 +974,6 @@ ROM_END
|
||||
// ROM_LOAD( "atommc2-2.9-a000.rom", 0x2000, 0x1000, CRC(ba73e36c) SHA1(ea9739e96f3283c90b5306288c796fc01144b771) )
|
||||
//ROM_END
|
||||
|
||||
void atomeb_state::init_atomeb()
|
||||
{
|
||||
// these have to be set here, so that we can pass m_ext[*] to device_image_load!
|
||||
char str[8];
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
sprintf(str,"rom_a%x", i);
|
||||
m_ext[i] = machine().device<generic_slot_device>(str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
SYSTEM DRIVERS
|
||||
@ -992,7 +981,7 @@ void atomeb_state::init_atomeb()
|
||||
|
||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||
COMP( 1979, atom, 0, 0, atom, atom, atom_state, empty_init, "Acorn", "Atom", 0)
|
||||
COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, init_atomeb, "Acorn", "Atom with Eprom Box", 0)
|
||||
COMP( 1979, atomeb, atom, 0, atomeb, atom, atomeb_state, empty_init, "Acorn", "Atom with Eprom Box", 0)
|
||||
COMP( 1982, atombb, atom, 0, atombb, atom, atom_state, empty_init, "Acorn", "Atom with BBC Basic", 0)
|
||||
//COMP( 1983, prophet2, atom, 0, prophet2, atom, driver_device, empty_init, "Busicomputers", "Prophet 2", 0)
|
||||
//COMP( 1983, prophet3, atom, 0, prophet3, atom, driver_device, empty_init, "Busicomputers", "Prophet 3", 0)
|
||||
|
@ -115,8 +115,8 @@ public:
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(cassette_output_tick);
|
||||
|
||||
image_init_result load_cart(device_image_interface &image, generic_slot_device *slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load) { return load_cart(image, m_cart); }
|
||||
image_init_result load_cart(device_image_interface &image, generic_slot_device &slot);
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load) { return load_cart(image, *m_cart); }
|
||||
DECLARE_QUICKLOAD_LOAD_MEMBER(atom_atm);
|
||||
void atombb(machine_config &config);
|
||||
void atom(machine_config &config);
|
||||
@ -130,6 +130,7 @@ class atomeb_state : public atom_state
|
||||
public:
|
||||
atomeb_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: atom_state(mconfig, type, tag),
|
||||
m_ext(*this, "rom_a%x", 0),
|
||||
m_e0(*this, "rom_e0"),
|
||||
m_e1(*this, "rom_e1")
|
||||
{
|
||||
@ -142,33 +143,16 @@ public:
|
||||
DECLARE_READ8_MEMBER(ext_r);
|
||||
DECLARE_READ8_MEMBER(dos_r);
|
||||
|
||||
void init_atomeb();
|
||||
|
||||
/* eprom state */
|
||||
int m_eprom;
|
||||
|
||||
generic_slot_device *m_ext[16];
|
||||
required_device_array<generic_slot_device, 16> m_ext;
|
||||
required_device<generic_slot_device> m_e0;
|
||||
required_device<generic_slot_device> m_e1;
|
||||
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a0_load) { return load_cart(image, m_ext[0x0]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a1_load) { return load_cart(image, m_ext[0x1]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a2_load) { return load_cart(image, m_ext[0x2]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a3_load) { return load_cart(image, m_ext[0x3]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a4_load) { return load_cart(image, m_ext[0x4]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a5_load) { return load_cart(image, m_ext[0x5]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a6_load) { return load_cart(image, m_ext[0x6]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a7_load) { return load_cart(image, m_ext[0x7]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a8_load) { return load_cart(image, m_ext[0x8]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(a9_load) { return load_cart(image, m_ext[0x9]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(aa_load) { return load_cart(image, m_ext[0xa]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ab_load) { return load_cart(image, m_ext[0xb]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ac_load) { return load_cart(image, m_ext[0xc]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ad_load) { return load_cart(image, m_ext[0xd]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ae_load) { return load_cart(image, m_ext[0xe]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(af_load) { return load_cart(image, m_ext[0xf]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(e0_load) { return load_cart(image, m_e0); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(e1_load) { return load_cart(image, m_e1); }
|
||||
template<int I> DECLARE_DEVICE_IMAGE_LOAD_MEMBER(ext_load) { return load_cart(image, *m_ext[I]); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(e0_load) { return load_cart(image, *m_e0); }
|
||||
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(e1_load) { return load_cart(image, *m_e1); }
|
||||
void atomeb(machine_config &config);
|
||||
void atomeb_mem(address_map &map);
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user