atom.cpp: Replace machine().device with finder array (nw)

This commit is contained in:
AJR 2018-06-14 23:34:04 -04:00
parent 65c4569652
commit a6e481e111
2 changed files with 30 additions and 57 deletions

View File

@ -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)

View File

@ -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);
};