diff --git a/src/mess/drivers/cc40.c b/src/mess/drivers/cc40.c index 8f22f6c02bf..904a4516ed7 100644 --- a/src/mess/drivers/cc40.c +++ b/src/mess/drivers/cc40.c @@ -77,7 +77,8 @@ #include "video/hd44780.h" #include "sound/dac.h" #include "machine/nvram.h" -#include "imagedev/cartslot.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "cc40.lh" @@ -89,6 +90,8 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_dac(*this, "dac"), + m_cart(*this, "cartslot"), + m_key_matrix(*this, "IN"), m_battery_inp(*this, "BATTERY") { m_sysram[0] = NULL; @@ -97,10 +100,13 @@ public: required_device m_maincpu; required_device m_dac; + required_device m_cart; + required_ioport_array<8> m_key_matrix; required_ioport m_battery_inp; nvram_device *m_nvram[2]; - ioport_port *m_key_matrix[8]; + + memory_region *m_cart_rom; UINT8 m_bus_control; UINT8 m_power; @@ -150,13 +156,7 @@ public: DEVICE_IMAGE_LOAD_MEMBER(cc40_state, cc40_cartridge) { - UINT8* pos = memregion("user1")->base(); - offs_t 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"); // max size is 4*32KB if (size > 0x20000) @@ -165,16 +165,8 @@ DEVICE_IMAGE_LOAD_MEMBER(cc40_state, cc40_cartridge) return IMAGE_INIT_FAIL; } - if (image.software_entry() == NULL) - { - if (image.fread(pos, size) != size) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read file"); - return IMAGE_INIT_FAIL; - } - } - else - memcpy(pos, image.get_software_region("rom"), size); + m_cart->rom_alloc(size, 0x20000); // allocate a larger ROM region to have 4x32K banks + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); return IMAGE_INIT_PASS; } @@ -319,7 +311,8 @@ WRITE8_MEMBER(cc40_state::bankswitch_w) membank("sysbank")->set_entry(data & 3); // d2-d3: cartridge 32KB page bankswitch - membank("cartbank")->set_entry(data >> 2 & 3); + if (m_cart_rom) + membank("cartbank")->set_entry(data >> 2 & 3); m_banks = data & 0x0f; } @@ -425,7 +418,7 @@ static INPUT_PORTS_START( cc40 ) // 8x8 keyboard matrix, RESET and ON buttons are not on it. Unused entries are not connected, but some might have a purpose for factory testing(?) // The numpad number keys are shared with the ones on the main keyboard, also on the real machine. // PORT_NAME lists functions under [SHIFT] as secondaries. - PORT_START("IN0") + PORT_START("IN.0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') @@ -435,7 +428,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') - PORT_START("IN1") + PORT_START("IN.1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') @@ -445,7 +438,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') - PORT_START("IN2") + PORT_START("IN.2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') @@ -455,7 +448,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') - PORT_START("IN3") + PORT_START("IN.3") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') @@ -465,7 +458,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') - PORT_START("IN4") + PORT_START("IN.4") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_NAME("SPACE") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) @@ -475,7 +468,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') - PORT_START("IN5") + PORT_START("IN.5") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') PORT_CHAR('\'') PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("CLR UCL") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("LEFT DEL") @@ -485,7 +478,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_NAME("DOWN") PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('9') PORT_CHAR(')') - PORT_START("IN6") + PORT_START("IN.6") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_CHAR('>') PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+") @@ -495,7 +488,7 @@ static INPUT_PORTS_START( cc40 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*") - PORT_START("IN7") + PORT_START("IN.7") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL") PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) PORT_NAME("BREAK") @@ -552,12 +545,14 @@ void cc40_state::postload() void cc40_state::machine_start() { // init - static const char *const tags[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" }; - for (int i = 0; i < 8; i++) - m_key_matrix[i] = ioport(tags[i]); + astring region_tag; + m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000); - membank("cartbank")->configure_entries(0, 4, memregion("user1")->base(), 0x8000); + if (m_cart_rom) + membank("cartbank")->configure_entries(0, 4, m_cart_rom->base(), 0x8000); + else + membank("cartbank")->set_base(memregion("maincpu")->base() + 0x5000); m_nvram[0] = machine().device("sysram.1"); m_nvram[1] = machine().device("sysram.2"); @@ -619,11 +614,10 @@ static MACHINE_CONFIG_START( cc40, cc40_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* cartridge */ - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_LOAD(cc40_state, cc40_cartridge) - MCFG_CARTSLOT_INTERFACE("cc40_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "cc40_cart") + MCFG_GENERIC_EXTENSIONS("bin,rom,256") + MCFG_GENERIC_LOAD(cc40_state, cc40_cartridge) + MCFG_SOFTWARE_LIST_ADD("cart_list", "cc40_cart") MACHINE_CONFIG_END @@ -641,8 +635,6 @@ ROM_START( cc40 ) ROM_REGION( 0x8000, "system", 0 ) ROM_LOAD( "hn61256pc09.bin", 0x0000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) ) // system rom, banked - - ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) // cartridge area, max 4*32KB ROM_END diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index 7c38016362b..9cf52a3f198 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -101,12 +101,13 @@ TODO: #include "emu.h" #include "cpu/nec/nec.h" -#include "imagedev/cartslot.h" #include "machine/pic8259.h" #include "machine/pit8253.h" #include "machine/am9517a.h" -#include "sound/speaker.h" #include "machine/i8255.h" +#include "sound/speaker.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" /* @@ -156,6 +157,7 @@ public: , m_dma8237(*this, "dma8237") , m_pit8253(*this, "pit8254") , m_speaker(*this, "speaker") + , m_cart(*this, "cartslot") { } required_device m_maincpu; @@ -163,6 +165,7 @@ public: required_device m_dma8237; required_device m_pit8253; required_device m_speaker; + required_device m_cart; DECLARE_READ8_MEMBER(ems_r); DECLARE_WRITE8_MEMBER(ems_w); @@ -212,6 +215,9 @@ protected: UINT8 m_pc_spkrdata; UINT8 m_pit_out2; + memory_region *m_maincpu_rom; + memory_region *m_cart_rom; + int m_ppi_portc_switch_high; int m_ppi_speaker; int m_ppi_keyboard_clear; @@ -507,7 +513,7 @@ WRITE8_MEMBER( pasogo_state::ems_w ) case 0: /*external*/ case 1: /*ram*/ sprintf(bank, "bank%d", m_ems.index + 1); - membank( bank )->set_base( memregion("maincpu")->base() + (m_ems.mapper[m_ems.index].address & 0xfffff) ); + membank(bank)->set_base(m_maincpu_rom->base() + (m_ems.mapper[m_ems.index].address & 0xfffff)); break; case 3: /* rom 1 */ case 4: /* pc card a */ @@ -516,7 +522,7 @@ WRITE8_MEMBER( pasogo_state::ems_w ) break; case 2: sprintf(bank, "bank%d", m_ems.index + 1); - membank( bank )->set_base( memregion("user1")->base() + (m_ems.mapper[m_ems.index].address & 0xfffff) ); + membank(bank)->set_base(m_cart_rom->base() + (m_ems.mapper[m_ems.index].address & 0xfffff)); break; } break; @@ -564,10 +570,10 @@ static ADDRESS_MAP_START(pasogo_io, AS_IO, 16, pasogo_state) // ADDRESS_MAP_GLOBAL_MASK(0xfFFF) AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237", am9517a_device, read, write, 0xffff) AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff) - AM_RANGE(0x26, 0x27) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff ) + AM_RANGE(0x26, 0x27) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff) AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffff) AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff) - AM_RANGE(0x6c, 0x6f) AM_READWRITE8(ems_r, ems_w, 0xffff ) + AM_RANGE(0x6c, 0x6f) AM_READWRITE8(ems_r, ems_w, 0xffff) ADDRESS_MAP_END @@ -610,7 +616,7 @@ PALETTE_INIT_MEMBER(pasogo_state, pasogo) UINT32 pasogo_state::screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //static int width = -1, height = -1; - UINT8 *rom = memregion("maincpu")->base()+0xb8000; + UINT8 *rom = m_maincpu_rom->base() + 0xb8000; static const UINT16 c[] = { 3, 0 }; int x,y; // plot_box(bitmap, 0, 0, 64/*bitmap.width*/, bitmap.height, 0); @@ -672,6 +678,13 @@ INTERRUPT_GEN_MEMBER(pasogo_state::pasogo_interrupt) void pasogo_state::machine_reset() { + astring region_tag; + m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); + m_maincpu_rom = memregion("maincpu"); + + membank("bank27")->set_base(m_cart_rom->base()); + membank("bank28")->set_base(m_maincpu_rom->base() + 0xb8000/*?*/); + m_u73_q2 = 0; m_out1 = 2; // initial state of pit output is undefined m_pc_spkrdata = 0; @@ -709,7 +722,7 @@ WRITE_LINE_MEMBER( pasogo_state::pit8253_out2_changed ) READ8_MEMBER( pasogo_state::page_r ) { - return 0xFF; + return 0xff; } @@ -916,9 +929,9 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state ) MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */ MCFG_PIT8253_OUT2_HANDLER(WRITELINE(pasogo_state, pit8253_out2_changed)) - MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) + MCFG_PIC8259_ADD("pic8259", INPUTLINE("maincpu", 0), VCC, NULL) - MCFG_DEVICE_ADD( "dma8237", AM9517A, XTAL_14_31818MHz/3 ) + MCFG_DEVICE_ADD("dma8237", AM9517A, XTAL_14_31818MHz/3) MCFG_I8237_OUT_HREQ_CB(WRITELINE(pasogo_state, dma_hrq_changed)) MCFG_I8237_OUT_EOP_CB(WRITELINE(pasogo_state, dma8237_out_eop)) MCFG_I8237_IN_MEMR_CB(READ8(pasogo_state, dma_read_byte)) @@ -954,10 +967,9 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("pasogo_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_plain_slot, "pasogo_cart") + MCFG_GENERIC_MANDATORY + MCFG_SOFTWARE_LIST_ADD("cart_list","pasogo") MCFG_TIMER_DRIVER_ADD_PERIODIC("vg230_timer", pasogo_state, vg230_timer, attotime::from_hz(1)) @@ -966,8 +978,6 @@ MACHINE_CONFIG_END ROM_START(pasogo) ROM_REGION(0x100000,"maincpu", ROMREGION_ERASEFF) // 1 megabyte dram? - ROM_REGION(0x100000,"user1", ROMREGION_ERASEFF) - ROM_CART_LOAD("cart", 0, 0x100000, ROM_NOMIRROR) ROM_END @@ -975,8 +985,6 @@ DRIVER_INIT_MEMBER(pasogo_state,pasogo) { vg230_init(); memset(&m_ems, 0, sizeof(m_ems)); - membank( "bank27" )->set_base( memregion("user1")->base() + 0x00000 ); - membank( "bank28" )->set_base( memregion("maincpu")->base() + 0xb8000/*?*/ ); } // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS diff --git a/src/mess/drivers/pokemini.c b/src/mess/drivers/pokemini.c index 948c94cda33..50f1f2b0ed9 100644 --- a/src/mess/drivers/pokemini.c +++ b/src/mess/drivers/pokemini.c @@ -11,7 +11,8 @@ The LCD is likely to be a SSD1828 LCD. #include "sound/speaker.h" #include "machine/i2cmem.h" #include "cpu/minx/minx.h" -#include "imagedev/cartslot.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #include "rendlay.h" @@ -54,10 +55,10 @@ public: m_p_ram(*this, "p_ram"), m_speaker(*this, "speaker"), m_i2cmem(*this, "i2cmem"), - m_inputs(*this, "INPUTS") { } + m_cart(*this, "cartslot"), + m_inputs(*this, "INPUTS") + { } - required_device m_maincpu; - required_shared_ptr m_p_ram; UINT8 m_pm_reg[0x100]; PRC m_prc; TIMERS m_timers; @@ -67,17 +68,9 @@ public: UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_PALETTE_INIT(pokemini); - TIMER_CALLBACK_MEMBER(pokemini_seconds_timer_callback); - TIMER_CALLBACK_MEMBER(pokemini_256hz_timer_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer1_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer1_hi_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer2_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer2_hi_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer3_callback); - TIMER_CALLBACK_MEMBER(pokemini_timer3_hi_callback); - TIMER_CALLBACK_MEMBER(pokemini_prc_counter_callback); - DECLARE_WRITE8_MEMBER(pokemini_hwreg_w); - DECLARE_READ8_MEMBER(pokemini_hwreg_r); + DECLARE_WRITE8_MEMBER(hwreg_w); + DECLARE_READ8_MEMBER(hwreg_r); + DECLARE_READ8_MEMBER(rom_r); DECLARE_DEVICE_IMAGE_LOAD_MEMBER(pokemini_cart); protected: @@ -96,30 +89,39 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + required_device m_maincpu; + required_shared_ptr m_p_ram; required_device m_speaker; required_device m_i2cmem; + required_device m_cart; required_ioport m_inputs; - void pokemini_check_irqs(); - void pokemini_update_sound(); - void pokemini_seconds_timer_callback(); - void pokemini_256hz_timer_callback(); - void pokemini_timer1_callback(); - void pokemini_timer1_hi_callback(); - void pokemini_timer2_callback(); - void pokemini_timer2_hi_callback(); - void pokemini_timer3_callback(); - void pokemini_timer3_hi_callback(); - void pokemini_prc_counter_callback(); + void check_irqs(); + void update_sound(); + void seconds_timer_callback(); + void timer_256hz_callback(); + void timer1_callback(); + void timer1_hi_callback(); + void timer2_callback(); + void timer2_hi_callback(); + void timer3_callback(); + void timer3_hi_callback(); + void prc_counter_callback(); }; +READ8_MEMBER( pokemini_state::rom_r ) +{ + offset += 0x2100; + return m_cart->read_rom(space, offset & 0x1fffff); +} + static ADDRESS_MAP_START( pokemini_mem_map, AS_PROGRAM, 8, pokemini_state ) - AM_RANGE( 0x000000, 0x000FFF ) AM_ROM /* bios */ - AM_RANGE( 0x001000, 0x001FFF ) AM_RAM AM_SHARE("p_ram") /* VRAM/RAM */ - AM_RANGE( 0x002000, 0x0020FF ) AM_READWRITE(pokemini_hwreg_r, pokemini_hwreg_w ) /* hardware registers */ - AM_RANGE( 0x002100, 0x1FFFFF ) AM_ROM /* cartridge area */ + AM_RANGE( 0x000000, 0x000fff ) AM_ROM /* bios */ + AM_RANGE( 0x001000, 0x001fff ) AM_RAM AM_SHARE("p_ram") /* VRAM/RAM */ + AM_RANGE( 0x002000, 0x0020ff ) AM_READWRITE(hwreg_r, hwreg_w) /* hardware registers */ + AM_RANGE( 0x002100, 0x1fffff ) AM_READ(rom_r) /* cartridge area */ ADDRESS_MAP_END @@ -145,7 +147,7 @@ PALETTE_INIT_MEMBER(pokemini_state, pokemini) } -void pokemini_state::pokemini_check_irqs() +void pokemini_state::check_irqs() { int irq_set[4] = { 1, 0, 0, 0 }; int prio, vector; @@ -298,7 +300,7 @@ void pokemini_state::pokemini_check_irqs() } -void pokemini_state::pokemini_update_sound() +void pokemini_state::update_sound() { /* Check if sound should be muted */ if ( m_pm_reg[0x70] & 0x03 ) @@ -321,7 +323,7 @@ void pokemini_state::pokemini_update_sound() } -void pokemini_state::pokemini_seconds_timer_callback() +void pokemini_state::seconds_timer_callback() { if ( m_pm_reg[0x08] & 0x01 ) { @@ -338,7 +340,7 @@ void pokemini_state::pokemini_seconds_timer_callback() } -void pokemini_state::pokemini_256hz_timer_callback() +void pokemini_state::timer_256hz_callback() { if ( m_pm_reg[0x40] & 0x01 ) { @@ -366,13 +368,13 @@ void pokemini_state::pokemini_256hz_timer_callback() } } - pokemini_check_irqs(); + check_irqs(); } } } -void pokemini_state::pokemini_timer1_callback() +void pokemini_state::timer1_callback() { m_pm_reg[0x36] -= 1; /* Check for underflow of timer */ @@ -385,7 +387,7 @@ void pokemini_state::pokemini_timer1_callback() if ( m_pm_reg[0x37] == 0xFF ) { m_pm_reg[0x27] |= 0x08; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x36] = m_pm_reg[0x32]; m_pm_reg[0x37] = m_pm_reg[0x33]; } @@ -393,27 +395,27 @@ void pokemini_state::pokemini_timer1_callback() else { m_pm_reg[0x27] |= 0x04; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x36] = m_pm_reg[0x32]; } } } -void pokemini_state::pokemini_timer1_hi_callback() +void pokemini_state::timer1_hi_callback() { m_pm_reg[0x37] -= 1; /* Check for underflow of timer */ if ( m_pm_reg[0x37] == 0xFF ) { m_pm_reg[0x27] |= 0x08; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x37] = m_pm_reg[0x33]; } } -void pokemini_state::pokemini_timer2_callback() +void pokemini_state::timer2_callback() { m_pm_reg[0x3E] -= 1; /* Check for underflow of timer */ @@ -426,7 +428,7 @@ void pokemini_state::pokemini_timer2_callback() if ( m_pm_reg[0x3F] == 0xFF ) { m_pm_reg[0x27] |= 0x20; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x3E] = m_pm_reg[0x3A]; m_pm_reg[0x3F] = m_pm_reg[0x3B]; } @@ -434,27 +436,27 @@ void pokemini_state::pokemini_timer2_callback() else { m_pm_reg[0x27] |= 0x10; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x3E] = m_pm_reg[0x3A]; } } } -void pokemini_state::pokemini_timer2_hi_callback() +void pokemini_state::timer2_hi_callback() { m_pm_reg[0x3F] -= 1; /* Check for underfow of timer */ if ( m_pm_reg[0x3F] == 0xFF ) { m_pm_reg[0x27] |= 0x20; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x3F] = m_pm_reg[0x3B]; } } -void pokemini_state::pokemini_timer3_callback() +void pokemini_state::timer3_callback() { m_pm_reg[0x4E] -= 1; /* Check for underflow of timer */ @@ -467,7 +469,7 @@ void pokemini_state::pokemini_timer3_callback() if ( m_pm_reg[0x4F] == 0xFF ) { m_pm_reg[0x27] |= 0x02; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x4E] = m_pm_reg[0x4A]; m_pm_reg[0x4F] = m_pm_reg[0x4B]; } @@ -483,21 +485,21 @@ void pokemini_state::pokemini_timer3_callback() if ( ( m_pm_reg[0x4E] == m_pm_reg[0x4C] ) && ( m_pm_reg[0x4F] == m_pm_reg[0x4D] ) ) { m_pm_reg[0x27] |= 0x01; - pokemini_check_irqs(); + check_irqs(); } - pokemini_update_sound(); + update_sound(); } } -void pokemini_state::pokemini_timer3_hi_callback() +void pokemini_state::timer3_hi_callback() { m_pm_reg[0x4F] -= 1; /* Check for underflow of timer */ if ( m_pm_reg[0x4F] == 0xFF ) { m_pm_reg[0x27] |= 0x02; - pokemini_check_irqs(); + check_irqs(); m_pm_reg[0x4F] = m_pm_reg[0x4B]; } @@ -506,14 +508,14 @@ void pokemini_state::pokemini_timer3_hi_callback() if( m_pm_reg[0x4F] == m_pm_reg[0x4D] ) { m_pm_reg[0x27] |= 0x01; - pokemini_check_irqs(); + check_irqs(); } - pokemini_update_sound(); + update_sound(); } } -WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) +WRITE8_MEMBER(pokemini_state::hwreg_w) { static const int timer_to_cycles_fast[8] = { 2, 8, 32, 64, 128, 256, 1024, 4096 }; static const int timer_to_cycles_slow[8] = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384 }; @@ -902,7 +904,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 6-7 R/W VDraw/VBlank trigger Interrupt #1-#2 */ m_pm_reg[0x20] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x21: /* Event #15-#22 priority Bit 0-1 R/W Unknown @@ -910,14 +912,14 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 4-7 R/W Unknown */ m_pm_reg[0x21] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x22: /* Event #9-#14 priority Bit 0-1 R/W All #9 - #14 events - Interrupt #9-#14 Bit 2-7 Unused */ m_pm_reg[0x22] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x23: /* Event #1-#8 enable Bit 0 R/W Timer 3 overflow (mirror) - Enable Interrupt #8 @@ -930,14 +932,14 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 R/W V-Blank trigger - Enable Interrupt #1 */ m_pm_reg[0x23] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x24: /* Event #9-#12 enable Bit 0-5 R/W Unknown Bit 6-7 Unused */ m_pm_reg[0x24] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x25: /* Event #15-#22 enable Bit 0 R/W Press key "A" event - Enable interrupt #22 @@ -950,7 +952,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 R/W Press power button event - Enable interrupt #15 */ m_pm_reg[0x25] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x26: /* Event #13-#14 enable Bit 0-2 R/W Unknown @@ -960,7 +962,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 R/W IR receiver - low to high trigger - Enable interrupt #13 */ m_pm_reg[0x26] = data; - pokemini_check_irqs(); + check_irqs(); break; case 0x27: /* Interrupt active flag #1-#8 Bit 0 Timer 3 overflow (mirror) / Clear interrupt #8 @@ -973,7 +975,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 VBlank trigger / Clear interrupt #1 */ m_pm_reg[0x27] &= ~data; - pokemini_check_irqs(); + check_irqs(); return; case 0x28: /* Interrupt active flag #9-#12 Bit 0-1 Unknown @@ -984,7 +986,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 6-7 Unknown */ m_pm_reg[0x28] &= ~data; - pokemini_check_irqs(); + check_irqs(); return; case 0x29: /* Interrupt active flag #15-#22 Bit 0 Press key "A" event / Clear interrupt #22 @@ -997,7 +999,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 Press power button event / Clear interrupt #15 */ m_pm_reg[0x29] &= ~data; - pokemini_check_irqs(); + check_irqs(); return; case 0x2A: /* Interrupt active flag #13-#14 Bit 0-5 Unknown @@ -1005,7 +1007,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 7 Unknown / Clear interrupt #13 */ m_pm_reg[0x2A] &= ~data; - pokemini_check_irqs(); + check_irqs(); return; case 0x30: /* Timer 1 control 1 Bit 0 R/W Unknown @@ -1218,7 +1220,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) m_timers.timer3_hi->enable( 0 ); } m_pm_reg[0x48] = data; - pokemini_update_sound(); + update_sound(); break; case 0x49: /* Timer 3 control 2 Bit 0 R/W Unknown @@ -1244,25 +1246,25 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) m_timers.timer3_hi->enable( 0 ); } m_pm_reg[0x49] = data; - pokemini_update_sound(); + update_sound(); break; case 0x4A: /* Timer 3 preset value (low) Bit 0-7 R/W Timer 3 preset value bit 0-7 */ m_pm_reg[0x4A] = data; - pokemini_update_sound(); + update_sound(); break; case 0x4B: /* Timer 3 preset value (high) Bit 0-7 R/W Timer 3 preset value bit 8-15 */ m_pm_reg[0x4B] = data; - pokemini_update_sound(); + update_sound(); break; case 0x4C: /* Timer 3 sound-pivot (low) Bit 0-7 R/W Timer 3 sound-pivot value bit 0-7 */ m_pm_reg[0x4C] = data; - pokemini_update_sound(); + update_sound(); break; case 0x4D: /* Timer 3 sound-pivot (high) Bit 0-7 R/W Timer 3 sound-pivot value bit 8-15 @@ -1273,7 +1275,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Pulse-Width of 100% = Same as preset-value */ m_pm_reg[0x4D] = data; - pokemini_update_sound(); + update_sound(); break; case 0x4E: /* Timer 3 counter (low), read only Bit 0-7 R/W Timer 3 counter value bit 0-7 @@ -1323,7 +1325,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) break; case 0x70: /* Sound related */ m_pm_reg[0x70] = data; - pokemini_update_sound(); + update_sound(); break; case 0x71: /* Sound volume Bit 0-1 R/W Sound volume @@ -1335,7 +1337,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) Bit 3-7 Unused */ m_pm_reg[0x71] = data; - pokemini_update_sound(); + update_sound(); break; case 0x80: /* LCD control Bit 0 R/W Invert colors; 0 - normal, 1 - inverted @@ -1470,7 +1472,7 @@ WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w) m_pm_reg[offset] = data; } -READ8_MEMBER(pokemini_state::pokemini_hwreg_r) +READ8_MEMBER(pokemini_state::hwreg_r) { UINT8 data = m_pm_reg[offset]; @@ -1496,46 +1498,30 @@ READ8_MEMBER(pokemini_state::pokemini_hwreg_r) DEVICE_IMAGE_LOAD_MEMBER( pokemini_state, pokemini_cart ) { - if (image.software_entry() == NULL) + UINT32 size = m_cart->common_get_size("rom"); + + /* Verify that the image is big enough */ + if (size <= 0x2100) { - int size = image.length(); - - /* Verify that the image is big enough */ - if (size <= 0x2100) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too small"); - return IMAGE_INIT_FAIL; - } - - /* Verify that the image is not too big */ - if (size > 0x1FFFFF) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too big"); - return IMAGE_INIT_FAIL; - } - - /* Skip the first 0x2100 bytes */ - image.fseek(0x2100, SEEK_SET); - size -= 0x2100; - - if (size != image.fread( memregion("maincpu")->base() + 0x2100, size)) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Error occurred while reading ROM image"); - return IMAGE_INIT_FAIL; - } + image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too small"); + return IMAGE_INIT_FAIL; } - else + + /* Verify that the image is not too big */ + if (size > 0x1fffff) { - UINT8 *cart_rom = image.get_software_region("rom"); - UINT32 cart_rom_size = image.get_software_region_length("rom"); - memcpy(memregion("maincpu")->base() + 0x2100, cart_rom + 0x2100, cart_rom_size - 0x2100); + image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too big"); + return IMAGE_INIT_FAIL; } + m_cart->rom_alloc(size, 1); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + return IMAGE_INIT_PASS; } -void pokemini_state::pokemini_prc_counter_callback() +void pokemini_state::prc_counter_callback() { address_space &space = m_maincpu->space( AS_PROGRAM ); m_prc.count++; @@ -1643,7 +1629,7 @@ void pokemini_state::pokemini_prc_counter_callback() /* Set PRC Render interrupt */ m_pm_reg[0x27] |= 0x40; - pokemini_check_irqs(); + check_irqs(); /* Check if the rendered data should be copied to the LCD */ if ( m_prc.copy_enabled ) @@ -1667,7 +1653,7 @@ void pokemini_state::pokemini_prc_counter_callback() /* Set PRC Copy interrupt */ m_pm_reg[0x27] |= 0x80; - pokemini_check_irqs(); + check_irqs(); } } @@ -1686,10 +1672,10 @@ void pokemini_state::machine_start() /* Set up timers */ m_timers.seconds_timer = timer_alloc(TIMER_SECONDS); - m_timers.seconds_timer->adjust( attotime::zero, 0, attotime::from_seconds( 1 ) ); + m_timers.seconds_timer->adjust(attotime::zero, 0, attotime::from_seconds(1)); m_timers.hz256_timer = timer_alloc(TIMER_256HZ); - m_timers.hz256_timer->adjust( attotime::zero, 0, attotime::from_hz( 256 ) ); + m_timers.hz256_timer->adjust(attotime::zero, 0, attotime::from_hz(256)); m_timers.timer1 = timer_alloc(TIMER_1); m_timers.timer1_hi = timer_alloc(TIMER_1_HI); @@ -1707,42 +1693,42 @@ void pokemini_state::machine_start() void pokemini_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - switch ( id ) + switch (id) { case TIMER_SECONDS: - pokemini_seconds_timer_callback(); + seconds_timer_callback(); break; case TIMER_256HZ: - pokemini_256hz_timer_callback(); + timer_256hz_callback(); break; case TIMER_1: - pokemini_timer1_callback(); + timer1_callback(); break; case TIMER_1_HI: - pokemini_timer1_hi_callback(); + timer1_hi_callback(); break; case TIMER_2: - pokemini_timer2_callback(); + timer2_callback(); break; case TIMER_2_HI: - pokemini_timer2_hi_callback(); + timer2_hi_callback(); break; case TIMER_3: - pokemini_timer3_callback(); + timer3_callback(); break; case TIMER_3_HI: - pokemini_timer3_hi_callback(); + timer3_hi_callback(); break; case TIMER_PRC: - pokemini_prc_counter_callback(); + prc_counter_callback(); break; } } @@ -1765,8 +1751,8 @@ UINT32 pokemini_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap static MACHINE_CONFIG_START( pokemini, pokemini_state ) /* basic machine hardware */ - MCFG_CPU_ADD( "maincpu", MINX, 4000000 ) - MCFG_CPU_PROGRAM_MAP( pokemini_mem_map) + MCFG_CPU_ADD("maincpu", MINX, 4000000) + MCFG_CPU_PROGRAM_MAP(pokemini_mem_map) MCFG_QUANTUM_TIME(attotime::from_hz(60)) @@ -1783,7 +1769,7 @@ static MACHINE_CONFIG_START( pokemini, pokemini_state ) MCFG_DEFAULT_LAYOUT(layout_lcd) - MCFG_PALETTE_ADD( "palette", 4 ) + MCFG_PALETTE_ADD("palette", 4) MCFG_PALETTE_INIT_OWNER(pokemini_state, pokemini) /* sound hardware */ @@ -1793,14 +1779,12 @@ static MACHINE_CONFIG_START( pokemini, pokemini_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* cartridge */ - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("min,bin") - MCFG_CARTSLOT_NOT_MANDATORY - MCFG_CARTSLOT_INTERFACE("pokemini_cart") - MCFG_CARTSLOT_LOAD(pokemini_state,pokemini_cart) + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "pokemini_cart") + MCFG_GENERIC_EXTENSIONS("bin,min") + MCFG_GENERIC_LOAD(pokemini_state, pokemini_cart) /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list","pokemini") + MCFG_SOFTWARE_LIST_ADD("cart_list", "pokemini") MACHINE_CONFIG_END ROM_START( pokemini ) diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c index 2fbd5867e7a..fab14c490bf 100644 --- a/src/mess/drivers/portfoli.c +++ b/src/mess/drivers/portfoli.c @@ -873,10 +873,8 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500)) /* cartridge */ - MCFG_CARTSLOT_ADD("cart") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_INTERFACE("portfolio_cart") - MCFG_CARTSLOT_LOAD(portfolio_state,portfolio_cart) + MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "portfolio_cart") + MCFG_GENERIC_LOAD(portfolio_state, portfolio_cart) /* memory card */ /* MCFG_MEMCARD_ADD("memcard_a") diff --git a/src/mess/drivers/tek405x.c b/src/mess/drivers/tek405x.c index 12f94453a5c..241d18c05f0 100644 --- a/src/mess/drivers/tek405x.c +++ b/src/mess/drivers/tek405x.c @@ -1091,13 +1091,8 @@ static MACHINE_CONFIG_START( tek4051, tek4051_state ) MCFG_RAM_EXTRA_OPTIONS("16K,24K,32K") // cartridge - MCFG_CARTSLOT_ADD("cart1") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_INTERFACE("tek4050_cart") - - MCFG_CARTSLOT_ADD("cart2") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_INTERFACE("tek4050_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot1", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot2", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart") MACHINE_CONFIG_END @@ -1132,13 +1127,8 @@ static MACHINE_CONFIG_START( tek4052, tek4052_state ) MCFG_RAM_EXTRA_OPTIONS("64K") // cartridge - MCFG_CARTSLOT_ADD("cart1") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_INTERFACE("tek4050_cart") - - MCFG_CARTSLOT_ADD("cart2") - MCFG_CARTSLOT_EXTENSION_LIST("bin") - MCFG_CARTSLOT_INTERFACE("tek4050_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot1", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart") + MCFG_GENERIC_CARTSLOT_ADD("cartslot2", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart") // software lists MCFG_SOFTWARE_LIST_ADD("cart_list", "tek4052_cart") diff --git a/src/mess/includes/portfoli.h b/src/mess/includes/portfoli.h index 1562523c69c..b144ac5e923 100644 --- a/src/mess/includes/portfoli.h +++ b/src/mess/includes/portfoli.h @@ -7,7 +7,6 @@ #include "emu.h" #include "cpu/i86/i86.h" -#include "imagedev/cartslot.h" #include "bus/centronics/ctronics.h" #include "machine/i8255.h" #include "machine/ins8250.h" @@ -16,6 +15,9 @@ #include "sound/speaker.h" #include "video/hd61830.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" + #define M80C88A_TAG "u1" #define M82C55A_TAG "hpc101_u1" #define M82C50A_TAG "hpc102_u1" diff --git a/src/mess/includes/tek405x.h b/src/mess/includes/tek405x.h index b6914621cf0..f2a70fbd86e 100644 --- a/src/mess/includes/tek405x.h +++ b/src/mess/includes/tek405x.h @@ -7,7 +7,6 @@ #include "emu.h" #include "cpu/m6800/m6800.h" -#include "imagedev/cartslot.h" #include "machine/ram.h" #include "machine/6821pia.h" #include "machine/6850acia.h" @@ -16,6 +15,8 @@ #include "machine/ram.h" #include "sound/speaker.h" #include "video/vector.h" +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" #define MC6800_TAG "u61" #define MC6820_Y_TAG "u561"