diff options
-rw-r--r-- | src/emu/bus/generic/slot.c | 55 | ||||
-rw-r--r-- | src/emu/bus/generic/slot.h | 2 | ||||
-rw-r--r-- | src/mess/drivers/aquarius.c | 15 | ||||
-rw-r--r-- | src/mess/drivers/atarist.c | 157 | ||||
-rw-r--r-- | src/mess/drivers/bbcbc.c | 42 | ||||
-rw-r--r-- | src/mess/drivers/pv2000.c | 15 | ||||
-rw-r--r-- | src/mess/drivers/rx78.c | 17 | ||||
-rw-r--r-- | src/mess/drivers/supracan.c | 19 | ||||
-rw-r--r-- | src/mess/includes/aquarius.h | 7 | ||||
-rw-r--r-- | src/mess/includes/atarist.h | 5 |
10 files changed, 97 insertions, 237 deletions
diff --git a/src/emu/bus/generic/slot.c b/src/emu/bus/generic/slot.c index f87590d12e6..a22324c6d36 100644 --- a/src/emu/bus/generic/slot.c +++ b/src/emu/bus/generic/slot.c @@ -135,17 +135,10 @@ bool generic_slot_device::call_load() } else { - UINT32 len = (software_entry() == NULL) ? length() : get_software_region_length("rom"); - UINT8 *ROM; - - rom_alloc(len, m_width); - ROM = get_rom_base(); - - if (software_entry() == NULL) - fread(ROM, len); - else - memcpy(ROM, get_software_region("rom"), len); + UINT32 len = common_get_size("rom"); + rom_alloc(len, m_width); + common_load_rom(get_rom_base(), len, "rom"); m_empty = FALSE; return IMAGE_INIT_PASS; @@ -188,6 +181,46 @@ void generic_slot_device::get_default_card_software(astring &result) software_get_default_slot(result, m_default_card); } + +/************************************************** + + Implementation + + **************************************************/ + + +/*------------------------------------------------- + common_get_size - it gets image file size both + for fullpath and for softlist + -------------------------------------------------*/ + +UINT32 generic_slot_device::common_get_size(const char *region) +{ + // if we are loading from softlist, you have to specify a region + assert((software_entry() != NULL) && !region); + + return (software_entry() == NULL) ? length() : get_software_region_length(region); +} + +/*------------------------------------------------- + common_load_rom - it loads from image file both + for fullpath and for softlist + -------------------------------------------------*/ + +void generic_slot_device::common_load_rom(UINT8 *ROM, UINT32 len, const char *region) +{ + // basic sanity check + assert((ROM != NULL) && (len > 0)); + + // if we are loading from softlist, you have to specify a region + assert((software_entry() == NULL) || (region != NULL)); + + if (software_entry() == NULL) + fread(ROM, len); + else + memcpy(ROM, get_software_region(region), len); +} + /*------------------------------------------------- read_rom -------------------------------------------------*/ @@ -225,7 +258,7 @@ READ8_MEMBER(generic_slot_device::read_ram) } /*------------------------------------------------- - write + write_ram -------------------------------------------------*/ WRITE8_MEMBER(generic_slot_device::write_ram) diff --git a/src/emu/bus/generic/slot.h b/src/emu/bus/generic/slot.h index 73830950944..6962a3b8c5f 100644 --- a/src/emu/bus/generic/slot.h +++ b/src/emu/bus/generic/slot.h @@ -101,6 +101,8 @@ public: virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry); bool cart_mounted() { return !m_empty; } + UINT32 common_get_size(const char *region); + void common_load_rom(UINT8 *ROM, UINT32 len, const char *region); virtual iodevice_t image_type() const { return IO_CARTSLOT; } virtual bool is_readable() const { return 1; } diff --git a/src/mess/drivers/aquarius.c b/src/mess/drivers/aquarius.c index 358337ac8ad..4dd5e1d71f6 100644 --- a/src/mess/drivers/aquarius.c +++ b/src/mess/drivers/aquarius.c @@ -171,8 +171,11 @@ WRITE8_MEMBER(aquarius_state::scrambler_w) READ8_MEMBER(aquarius_state::cartridge_r) { - UINT8 *rom = m_rom->base() + 0xc000; - return rom[offset] ^ m_scrambler; + UINT8 data = 0; + if (m_cart->cart_mounted()) + data = m_cart->read_rom(space, offset); + + return data ^ m_scrambler; } @@ -373,10 +376,7 @@ static MACHINE_CONFIG_START( aquarius, aquarius_state ) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) /* cartridge */ - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("aquarius_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_linear_slot, "aquarius_cart") /* internal ram */ MCFG_RAM_ADD(RAM_TAG) @@ -402,9 +402,6 @@ ROM_START( aquarius ) ROM_SYSTEM_BIOS(1, "rev2", "Revision 2") ROMX_LOAD("aq2.u2", 0x0000, 0x2000, CRC(a2d15bcf) SHA1(ca6ef55e9ead41453efbf5062d6a60285e9661a6), ROM_BIOS(2)) - /* cartridge */ - ROM_CART_LOAD("cart", 0xc000, 0x4000, ROM_MIRROR) - /* charrom */ ROM_REGION(0x800, "gfx1", 0) ROM_LOAD("aq2.u5", 0x000, 0x800, CRC(e117f57c) SHA1(3588c0267c67dfbbda615bcf8dc3d3a5c5bd815a)) diff --git a/src/mess/drivers/atarist.c b/src/mess/drivers/atarist.c index 8cf77636b80..78770e61da2 100644 --- a/src/mess/drivers/atarist.c +++ b/src/mess/drivers/atarist.c @@ -1228,7 +1228,7 @@ static ADDRESS_MAP_START( st_map, AS_PROGRAM, 16, st_state ) AM_RANGE(0x000008, 0x1fffff) AM_RAM AM_RANGE(0x200000, 0x3fffff) AM_RAM AM_RANGE(0x400000, 0xf9ffff) AM_READWRITE(berr_r, berr_w) - AM_RANGE(0xfa0000, 0xfbffff) AM_ROM AM_REGION("cart", 0) + //AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) AM_WRITE(berr_w) AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff) AM_RANGE(0xff8200, 0xff8203) AM_READWRITE8(shifter_base_r, shifter_base_w, 0x00ff) @@ -1272,7 +1272,7 @@ static ADDRESS_MAP_START( megast_map, AS_PROGRAM, 16, megast_state ) AM_RANGE(0x000000, 0x000007) AM_ROM AM_REGION(M68000_TAG, 0) AM_RANGE(0x000008, 0x1fffff) AM_RAM AM_RANGE(0x200000, 0x3fffff) AM_RAM - AM_RANGE(0xfa0000, 0xfbffff) AM_ROM AM_REGION("cart", 0) + //AM_RANGE(0xfa0000, 0xfbffff) // mapped by the cartslot AM_RANGE(0xfc0000, 0xfeffff) AM_ROM AM_REGION(M68000_TAG, 0) // AM_RANGE(0xff7f30, 0xff7f31) AM_READWRITE(blitter_dst_inc_y_r, blitter_dst_inc_y_w) // for TOS 1.02 AM_RANGE(0xff8000, 0xff8001) AM_READWRITE8(mmu_r, mmu_w, 0x00ff) @@ -1937,6 +1937,9 @@ void st_state::machine_start() // configure RAM banking configure_memory(); + if (m_cart->cart_mounted()) + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + // allocate timers if(m_mousex) { m_mouse_timer = timer_alloc(TIMER_MOUSE_TICK); @@ -1995,6 +1998,9 @@ void ste_state::machine_start() /* configure RAM banking */ configure_memory(); + if (m_cart->cart_mounted()) + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + /* allocate timers */ m_dmasound_timer = timer_alloc(TIMER_DMASOUND_TICK); m_microwire_timer = timer_alloc(TIMER_MICROWIRE_TICK); @@ -2037,6 +2043,9 @@ void stbook_state::machine_start() break; } + if (m_cart->cart_mounted()) + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + /* register for state saving */ ste_state::state_save(); @@ -2133,10 +2142,8 @@ static MACHINE_CONFIG_START( st, st_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock)) // cartridge - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("st_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") // internal ram @@ -2224,10 +2231,8 @@ static MACHINE_CONFIG_START( megast, megast_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock)) // cartridge - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("st_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") // internal ram @@ -2322,10 +2327,8 @@ static MACHINE_CONFIG_START( ste, ste_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock)) // cartridge - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("st_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") // MCFG_SOFTWARE_LIST_ADD("cart_list", "ste_cart") // internal ram @@ -2428,10 +2431,8 @@ static MACHINE_CONFIG_START( stbook, stbook_state ) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(st_state, write_acia_clock)) // cartridge - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("st_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_linear_slot, "st_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom") MCFG_SOFTWARE_LIST_ADD("cart_list", "st_cart") /* internal ram */ @@ -2486,9 +2487,6 @@ ROM_START( st ) ROM_SYSTEM_BIOS( 3, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(90f4fbff) SHA1(2487f330b0895e5d88d580d4ecb24061125e88ad), ROM_BIOS(4) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2508,9 +2506,6 @@ ROM_START( st_uk ) ROM_SYSTEM_BIOS( 2, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104uk.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(3) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2537,9 +2532,6 @@ ROM_START( st_de ) ROMX_LOAD( "st 7c1 a2.u2", 0x20000, 0x08000, CRC(d0513329) SHA1(49855a3585e2f75b2af932dd4414ed64e6d9501f), ROM_SKIP(1) | ROM_BIOS(4) ) ROMX_LOAD( "st 7c1 b1.u5", 0x20001, 0x08000, CRC(c115cbc8) SHA1(2b52b81a1a4e0818d63f98ee4b25c30e2eba61cb), ROM_SKIP(1) | ROM_BIOS(4) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2566,9 +2558,6 @@ ROM_START( st_fr ) ROMX_LOAD( "c101656-001.u48", 0x20000, 0x08000, CRC(dbd93fb8) SHA1(cf9ec11e4bc2465490e7e6c981d9f61eae6cb359), ROM_SKIP(1) | ROM_BIOS(4) ) ROMX_LOAD( "c101659-001.u53", 0x20001, 0x08000, CRC(67c9785a) SHA1(917a17e9f83bee015c25b327780eebb11cb2c5a5), ROM_SKIP(1) | ROM_BIOS(4) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2584,9 +2573,6 @@ ROM_START( st_es ) ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104es.bin", 0x00000, 0x30000, BAD_DUMP CRC(f4e8ecd2) SHA1(df63f8ac09125d0877b55d5ba1282779b7f99c16), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2602,9 +2588,6 @@ ROM_START( st_nl ) ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104nl.bin", 0x00000, 0x30000, BAD_DUMP CRC(bb4370d4) SHA1(6de7c96b2d2e5c68778f4bce3eaf85a4e121f166), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2622,9 +2605,6 @@ ROM_START( st_se ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104se.bin", 0x00000, 0x30000, BAD_DUMP CRC(80ecfdce) SHA1(b7ad34d5cdfbe86ea74ae79eca11dce421a7bbfd), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2642,9 +2622,6 @@ ROM_START( st_sg ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104sg.bin", 0x00000, 0x30000, BAD_DUMP CRC(e58f0bdf) SHA1(aa40bf7203f02b2251b9e4850a1a73ff1c7da106), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2662,9 +2639,6 @@ ROM_START( megast ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(90f4fbff) SHA1(2487f330b0895e5d88d580d4ecb24061125e88ad), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2682,9 +2656,6 @@ ROM_START( megast_uk ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104uk.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2702,9 +2673,6 @@ ROM_START( megast_de ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104de.bin", 0x00000, 0x30000, BAD_DUMP CRC(62b82b42) SHA1(5313733f91b083c6265d93674cb9d0b7efd02da8), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2722,9 +2690,6 @@ ROM_START( megast_fr ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104fr.bin", 0x00000, 0x30000, BAD_DUMP CRC(a305a404) SHA1(20dba880344b810cf63cec5066797c5a971db870), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2742,9 +2707,6 @@ ROM_START( megast_se ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104se.bin", 0x00000, 0x30000, BAD_DUMP CRC(80ecfdce) SHA1(b7ad34d5cdfbe86ea74ae79eca11dce421a7bbfd), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2762,9 +2724,6 @@ ROM_START( megast_sg ) ROM_SYSTEM_BIOS( 1, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104sg.bin", 0x00000, 0x30000, BAD_DUMP CRC(e58f0bdf) SHA1(aa40bf7203f02b2251b9e4850a1a73ff1c7da106), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2780,9 +2739,6 @@ ROM_START( stacy ) ROM_SYSTEM_BIOS( 0, "tos104", "TOS 1.04 (Rainbow TOS)" ) ROMX_LOAD( "tos104.bin", 0x00000, 0x30000, BAD_DUMP CRC(a50d1d43) SHA1(9526ef63b9cb1d2a7109e278547ae78a5c1db6c6), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2803,9 +2759,6 @@ ROM_START( ste ) ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206.bin", 0x00000, 0x40000, BAD_DUMP CRC(3f2f840f) SHA1(ee58768bdfc602c9b14942ce5481e97dd24e7c83), ROM_BIOS(3) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2825,9 +2778,6 @@ ROM_START( ste_uk ) ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206uk.bin", 0x00000, 0x40000, BAD_DUMP CRC(08538e39) SHA1(2400ea95f547d6ea754a99d05d8530c03f8b28e3), ROM_BIOS(3) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2847,9 +2797,6 @@ ROM_START( ste_de ) ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206de.bin", 0x00000, 0x40000, BAD_DUMP CRC(143cd2ab) SHA1(d1da866560734289c4305f1028c36291d331d417), ROM_BIOS(3) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2865,9 +2812,6 @@ ROM_START( ste_es ) ROM_SYSTEM_BIOS( 0, "tos106", "TOS 1.06 (STE TOS, Revision 1)" ) ROMX_LOAD( "tos106es.bin", 0x00000, 0x40000, BAD_DUMP CRC(5cd2a540) SHA1(3a18f342c8288c0bc1879b7a209c73d5d57f7e81), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2887,9 +2831,6 @@ ROM_START( ste_fr ) ROM_SYSTEM_BIOS( 2, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206fr.bin", 0x00000, 0x40000, BAD_DUMP CRC(e3a99ca7) SHA1(387da431e6e3dd2e0c4643207e67d06cf33618c3), ROM_BIOS(3) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2905,9 +2846,6 @@ ROM_START( ste_it ) ROM_SYSTEM_BIOS( 0, "tos106", "TOS 1.06 (STE TOS, Revision 1)" ) ROMX_LOAD( "tos106it.bin", 0x00000, 0x40000, BAD_DUMP CRC(d3a55216) SHA1(28dc74e5e0fa56b685bbe15f9837f52684fee9fd), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2925,9 +2863,6 @@ ROM_START( ste_se ) ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206se.bin", 0x00000, 0x40000, BAD_DUMP CRC(be61906d) SHA1(ebdf5a4cf08471cd315a91683fcb24e0f029d451), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2943,9 +2878,6 @@ ROM_START( ste_sg ) ROM_SYSTEM_BIOS( 0, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206sg.bin", 0x00000, 0x40000, BAD_DUMP CRC(8c4fe57d) SHA1(c7a9ae3162f020dcac0c2a46cf0c033f91b98644), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2963,9 +2895,6 @@ ROM_START( megaste ) ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206.bin", 0x00000, 0x40000, BAD_DUMP CRC(3f2f840f) SHA1(ee58768bdfc602c9b14942ce5481e97dd24e7c83), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -2990,9 +2919,6 @@ ROM_START( megaste_uk ) ROMX_LOAD( "tos206uk.bin", 0x00000, 0x40000, BAD_DUMP CRC(08538e39) SHA1(2400ea95f547d6ea754a99d05d8530c03f8b28e3), ROM_BIOS(1) ) #endif - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3010,9 +2936,6 @@ ROM_START( megaste_fr ) ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206fr.bin", 0x00000, 0x40000, BAD_DUMP CRC(e3a99ca7) SHA1(387da431e6e3dd2e0c4643207e67d06cf33618c3), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3030,9 +2953,6 @@ ROM_START( megaste_de ) ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206de.bin", 0x00000, 0x40000, BAD_DUMP CRC(143cd2ab) SHA1(d1da866560734289c4305f1028c36291d331d417), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3048,9 +2968,6 @@ ROM_START( megaste_es ) ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05 (Mega STE TOS)" ) ROMX_LOAD( "tos205es.bin", 0x00000, 0x40000, BAD_DUMP CRC(2a426206) SHA1(317715ad8de718b5acc7e27ecf1eb833c2017c91), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3066,9 +2983,6 @@ ROM_START( megaste_it ) ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05 (Mega STE TOS)" ) ROMX_LOAD( "tos205it.bin", 0x00000, 0x40000, BAD_DUMP CRC(b28bf5a1) SHA1(8e0581b442384af69345738849cf440d72f6e6ab), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3086,9 +3000,6 @@ ROM_START( megaste_se ) ROM_SYSTEM_BIOS( 1, "tos206", "TOS 2.06 (ST/STE TOS)" ) ROMX_LOAD( "tos206se.bin", 0x00000, 0x40000, BAD_DUMP CRC(be61906d) SHA1(ebdf5a4cf08471cd315a91683fcb24e0f029d451), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3104,9 +3015,6 @@ ROM_START( stbook ) ROM_SYSTEM_BIOS( 0, "tos208", "TOS 2.08" ) ROMX_LOAD( "tos208.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, COP888_TAG, 0 ) ROM_LOAD( "cop888c0.u703", 0x0000, 0x1000, NO_DUMP ) ROM_END @@ -3122,9 +3030,6 @@ ROM_START( stpad ) ROM_REGION16_BE( 0x40000, M68000_TAG, 0 ) ROM_SYSTEM_BIOS( 0, "tos205", "TOS 2.05" ) ROMX_LOAD( "tos205.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) ) - - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) ROM_END #endif @@ -3139,9 +3044,6 @@ ROM_START( tt030 ) ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" ) ROMX_LOAD( "tos306.bin", 0x00000, 0x80000, BAD_DUMP CRC(e65adbd7) SHA1(b15948786278e1f2abc4effbb6d40786620acbe8), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3157,9 +3059,6 @@ ROM_START( tt030_uk ) ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" ) ROMX_LOAD( "tos306uk.bin", 0x00000, 0x80000, BAD_DUMP CRC(75dda215) SHA1(6325bdfd83f1b4d3afddb2b470a19428ca79478b), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3175,9 +3074,6 @@ ROM_START( tt030_de ) ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" ) ROMX_LOAD( "tos306de.bin", 0x00000, 0x80000, BAD_DUMP CRC(4fcbb59d) SHA1(80af04499d1c3b8551fc4d72142ff02c2182e64a), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3193,9 +3089,6 @@ ROM_START( tt030_fr ) ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" ) ROMX_LOAD( "tos306fr.bin", 0x00000, 0x80000, BAD_DUMP CRC(1945511c) SHA1(6bb19874e1e97dba17215d4f84b992c224a81b95), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3211,9 +3104,6 @@ ROM_START( tt030_pl ) ROM_SYSTEM_BIOS( 0, "tos306", "TOS 3.06 (TT TOS)" ) ROMX_LOAD( "tos306pl.bin", 0x00000, 0x80000, BAD_DUMP CRC(4f2404bc) SHA1(d122b8ceb202b52754ff0d442b1c81f8b4de3436), ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3229,9 +3119,6 @@ ROM_START( fx1 ) ROM_SYSTEM_BIOS( 0, "tos207", "TOS 2.07" ) ROMX_LOAD( "tos207.bin", 0x00000, 0x40000, NO_DUMP, ROM_BIOS(1) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3263,9 +3150,6 @@ ROM_START( falcon30 ) ROMX_LOAD( "tos404.bin", 0x00000, 0x80000, BAD_DUMP CRC(028b561d) SHA1(27dcdb31b0951af99023b2fb8c370d8447ba6ebc), ROM_BIOS(3) ) #endif - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END @@ -3280,9 +3164,6 @@ ROM_START( falcon40 ) ROM_SYSTEM_BIOS( 0, "tos492", "TOS 4.92" ) ROMX_LOAD( "tos492.bin", 0x00000, 0x7d314, BAD_DUMP CRC(bc8e497f) SHA1(747a38042844a6b632dcd9a76d8525fccb5eb892), ROM_BIOS(2) ) - ROM_REGION( 0x20000, "cart", ROMREGION_ERASE00 ) - ROM_CART_LOAD( "cart", 0x00000, 0x20000, ROM_MIRROR | ROM_OPTIONAL ) - ROM_REGION( 0x1000, HD6301V1_TAG, 0 ) ROM_LOAD( "keyboard.u1", 0x0000, 0x1000, CRC(0296915d) SHA1(1102f20d38f333234041c13687d82528b7cde2e1) ) ROM_END diff --git a/src/mess/drivers/bbcbc.c b/src/mess/drivers/bbcbc.c index 1c0f65a9089..9e63a572a9b 100644 --- a/src/mess/drivers/bbcbc.c +++ b/src/mess/drivers/bbcbc.c @@ -16,7 +16,8 @@ #include "video/tms9928a.h" #include "machine/z80pio.h" #include "cpu/z80/z80daisy.h" -#include "imagedev/cartslot.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" class bbcbc_state : public driver_device @@ -24,15 +25,15 @@ class bbcbc_state : public driver_device public: bbcbc_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + m_maincpu(*this, "maincpu"), + m_cart(*this, "cartslot") { } required_device<cpu_device> m_maincpu; + required_device<generic_slot_device> m_cart; virtual void machine_start(); virtual void machine_reset(); DECLARE_WRITE_LINE_MEMBER(tms_interrupt); - - DECLARE_DEVICE_IMAGE_LOAD_MEMBER( bbcbc_cart ); }; @@ -41,7 +42,7 @@ public: static ADDRESS_MAP_START( bbcbc_prg, AS_PROGRAM, 8, bbcbc_state ) AM_RANGE(0x0000, 0x3fff) AM_ROM - AM_RANGE(0x4000, 0xbfff) AM_ROM + //AM_RANGE(0x4000, 0xbfff) // mapped by the cartslot AM_RANGE(0xe000, 0xe02f) AM_RAM AM_RANGE(0xe030, 0xe030) AM_READ_PORT("LINE01") AM_RANGE(0xe031, 0xe031) AM_READ_PORT("LINE02") @@ -115,32 +116,10 @@ static const z80_daisy_config bbcbc_daisy_chain[] = }; -DEVICE_IMAGE_LOAD_MEMBER( bbcbc_state, bbcbc_cart ) -{ - UINT8 *cart = memregion("maincpu" )->base() + 0x4000; - - if ( image.software_entry() == NULL ) - { - int size = image.length(); - if ( image.fread(cart, size ) != size ) { - image.seterror( IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file" ); - return IMAGE_INIT_FAIL; - } - } - else - { - UINT8 *reg = image.get_software_region( "rom" ); - int reg_len = image.get_software_region_length( "rom" ); - - memcpy( cart, reg, MIN(reg_len, 0x8000) ); - } - - return IMAGE_INIT_PASS; - -} - void bbcbc_state::machine_start() { + if (m_cart->cart_mounted()) + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); } void bbcbc_state::machine_reset() @@ -162,10 +141,7 @@ static MACHINE_CONFIG_START( bbcbc, bbcbc_state ) MCFG_TMS9928A_SCREEN_ADD_PAL( "screen" ) MCFG_SCREEN_UPDATE_DEVICE( "tms9129", tms9928a_device, screen_update ) - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("bbcbc_cart") - MCFG_CARTSLOT_LOAD( bbcbc_state, bbcbc_cart ) + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "bbcbc_cart") /* Software lists */ MCFG_SOFTWARE_LIST_ADD("cart_list","bbcbc") diff --git a/src/mess/drivers/pv2000.c b/src/mess/drivers/pv2000.c index 89638b040f1..98e8c331ae6 100644 --- a/src/mess/drivers/pv2000.c +++ b/src/mess/drivers/pv2000.c @@ -360,13 +360,7 @@ void pv2000_state::machine_reset() DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart ) { - UINT8 *cart; - UINT32 size; - - if (image.software_entry() == NULL) - size = image.length(); - else - size = image.get_software_region_length("rom"); + UINT32 size = m_cart->common_get_size("rom"); if (size != 0x2000 && size != 0x4000) { @@ -375,12 +369,7 @@ DEVICE_IMAGE_LOAD_MEMBER( pv2000_state, pv2000_cart ) } m_cart->rom_alloc(size, 1); - cart = m_cart->get_rom_base(); - - if (image.software_entry() == NULL) - image.fread(cart, size); - else - memcpy(cart, image.get_software_region("rom"), size); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); return IMAGE_INIT_PASS; } diff --git a/src/mess/drivers/rx78.c b/src/mess/drivers/rx78.c index f5089ef4091..ccf309d7939 100644 --- a/src/mess/drivers/rx78.c +++ b/src/mess/drivers/rx78.c @@ -416,14 +416,8 @@ void rx78_state::machine_reset() DEVICE_IMAGE_LOAD_MEMBER( rx78_state, rx78_cart ) { - UINT8 *cart; - UINT32 size; - - if (image.software_entry() == NULL) - size = image.length(); - else - size = image.get_software_region_length("rom"); - + UINT32 size = m_cart->common_get_size("rom"); + if (size != 0x2000 && size != 0x4000) { image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); @@ -431,12 +425,7 @@ DEVICE_IMAGE_LOAD_MEMBER( rx78_state, rx78_cart ) } m_cart->rom_alloc(size, 1); - cart = m_cart->get_rom_base(); - - if (image.software_entry() == NULL) - image.fread(cart, size); - else - memcpy(cart, image.get_software_region("rom"), size); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); return IMAGE_INIT_PASS; } diff --git a/src/mess/drivers/supracan.c b/src/mess/drivers/supracan.c index 3b64547d14f..dcf90441916 100644 --- a/src/mess/drivers/supracan.c +++ b/src/mess/drivers/supracan.c @@ -1753,27 +1753,16 @@ WRITE16_MEMBER( supracan_state::video_w ) DEVICE_IMAGE_LOAD_MEMBER( supracan_state, supracan_cart ) { - UINT8 *cart; - UINT32 size; - - if (image.software_entry() == NULL) - size = image.length(); - else - size = image.get_software_region_length("rom"); + UINT32 size = m_cart->common_get_size("rom"); if (size > 0x400000) { image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size"); return IMAGE_INIT_FAIL; } - - m_cart->rom_alloc(size, 1); - cart = m_cart->get_rom_base(); - - if (image.software_entry() == NULL) - image.fread(cart, size); - else - memcpy(cart, image.get_software_region("rom"), size); + + m_cart->rom_alloc(size, 2); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); return IMAGE_INIT_PASS; } diff --git a/src/mess/includes/aquarius.h b/src/mess/includes/aquarius.h index 0da6ce971e1..bc052d1f6a5 100644 --- a/src/mess/includes/aquarius.h +++ b/src/mess/includes/aquarius.h @@ -9,11 +9,12 @@ #include "emu.h" #include "cpu/z80/z80.h" -#include "imagedev/cartslot.h" #include "imagedev/cassette.h" #include "machine/ram.h" #include "sound/ay8910.h" #include "sound/speaker.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" class aquarius_state : public driver_device { @@ -23,8 +24,8 @@ public: m_maincpu(*this, "maincpu"), m_cassette(*this, "cassette"), m_speaker(*this, "speaker"), + m_cart(*this, "cartslot"), m_ram(*this, RAM_TAG), - m_rom(*this, "maincpu"), m_videoram(*this, "videoram"), m_colorram(*this, "colorram"), m_y0(*this, "Y0"), @@ -43,8 +44,8 @@ public: required_device<cpu_device> m_maincpu; required_device<cassette_image_device> m_cassette; required_device<speaker_sound_device> m_speaker; + required_device<generic_slot_device> m_cart; required_device<ram_device> m_ram; - required_memory_region m_rom; required_shared_ptr<UINT8> m_videoram; required_shared_ptr<UINT8> m_colorram; required_ioport m_y0; diff --git a/src/mess/includes/atarist.h b/src/mess/includes/atarist.h index 2d4eafefaa3..42435619f25 100644 --- a/src/mess/includes/atarist.h +++ b/src/mess/includes/atarist.h @@ -8,10 +8,11 @@ #include "bus/rs232/rs232.h" #include "cpu/m68000/m68000.h" #include "cpu/m6800/m6800.h" -#include "imagedev/cartslot.h" #include "machine/6850acia.h" #include "machine/8530scc.h" #include "bus/centronics/ctronics.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "machine/mc68901.h" #include "machine/ram.h" #include "machine/rescap.h" @@ -87,6 +88,7 @@ public: m_acia0(*this, MC6850_0_TAG), m_acia1(*this, MC6850_1_TAG), m_centronics(*this, CENTRONICS_TAG), + m_cart(*this, "cartslot"), m_ram(*this, RAM_TAG), m_rs232(*this, RS232_TAG), m_p31(*this, "P31"), @@ -127,6 +129,7 @@ public: required_device<acia6850_device> m_acia0; required_device<acia6850_device> m_acia1; required_device<centronics_device> m_centronics; + required_device<generic_slot_device> m_cart; required_device<ram_device> m_ram; required_device<rs232_port_device> m_rs232; required_ioport m_p31; |