From 97f2889f320293e81eb9e495034d5cd92edb96d0 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Sun, 16 Dec 2018 14:49:12 +0100 Subject: [PATCH] Fixed regressions reported by Tafoid, nw -cpu/i386, lc8670: Removed MCFG macros. [Ryan Holtz] -drivers/at, atpci, nforcepc, pcipc, svmu: Removed MACHINE_CONFIG macros. [Ryan Holtz] --- src/devices/bus/lpci/pci.h | 9 + src/devices/bus/pc_kbd/pc_kbdc.h | 9 + src/devices/cpu/i386/i386.h | 11 +- src/devices/cpu/i86/i286.h | 8 +- src/devices/cpu/lc8670/lc8670.cpp | 6 +- src/devices/cpu/lc8670/lc8670.h | 72 +++--- src/devices/cpu/psx/psx.cpp | 2 +- src/devices/cpu/psx/rcnt.h | 4 +- src/mame/drivers/at.cpp | 353 +++++++++++++++--------------- src/mame/drivers/atpci.cpp | 113 +++++----- src/mame/drivers/nforcepc.cpp | 19 +- src/mame/drivers/pc9801.cpp | 2 +- src/mame/drivers/pcipc.cpp | 51 +++-- src/mame/drivers/ps2.cpp | 14 +- src/mame/drivers/svmu.cpp | 60 ++--- src/mame/drivers/tandy2k.cpp | 2 +- src/mame/machine/at.cpp | 2 +- 17 files changed, 377 insertions(+), 360 deletions(-) diff --git a/src/devices/bus/lpci/pci.h b/src/devices/bus/lpci/pci.h index 41258ad226f..6f7da915176 100644 --- a/src/devices/bus/lpci/pci.h +++ b/src/devices/bus/lpci/pci.h @@ -44,6 +44,15 @@ class pci_connector_device : public device_t, public device_slot_interface { public: + template + pci_connector_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt, bool fixed) + : pci_connector_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(fixed); + } pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual ~pci_connector_device(); diff --git a/src/devices/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h index 2f0b51e5d69..dac06daf60f 100644 --- a/src/devices/bus/pc_kbd/pc_kbdc.h +++ b/src/devices/bus/pc_kbd/pc_kbdc.h @@ -41,6 +41,15 @@ class pc_kbdc_slot_device : public device_t, { public: // construction/destruction + template + pc_kbdc_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) + : pc_kbdc_slot_device(mconfig, tag, owner, (uint32_t)0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } pc_kbdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration diff --git a/src/devices/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h index ed65129571b..e7a460488c0 100644 --- a/src/devices/cpu/i386/i386.h +++ b/src/devices/cpu/i386/i386.h @@ -24,13 +24,6 @@ // mingw has this defined for 32-bit compiles #undef i386 - -#define MCFG_I386_SMIACT(_devcb) \ - downcast(*device).set_smiact(DEVCB_##_devcb); - -#define MCFG_I486_FERR_HANDLER(_devcb) \ - downcast(*device).set_ferr(DEVCB_##_devcb); - #define X86_NUM_CPUS 4 class i386_device : public cpu_device, public device_vtlb_interface, public i386_disassembler::config @@ -40,8 +33,8 @@ public: i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration helpers - template devcb_base &set_smiact(Object &&cb) { return m_smiact.set_callback(std::forward(cb)); } - template devcb_base &set_ferr(Object &&cb) { return m_ferr_handler.set_callback(std::forward(cb)); } + auto smiact() { return m_smiact.bind(); } + auto ferr() { return m_ferr_handler.bind(); } uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param); uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param); diff --git a/src/devices/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h index 2812d756e19..594442622aa 100644 --- a/src/devices/cpu/i86/i286.h +++ b/src/devices/cpu/i86/i286.h @@ -71,12 +71,8 @@ public: // device_memory_interface overrides virtual space_config_vector memory_space_config() const override; - typedef device_delegate a20_cb; - void set_a20_callback(a20_cb callback) { m_a20_callback = callback; } - template void set_a20_callback(uint32_t (FunctionClass::*callback)(bool), const char *name) - { - set_a20_callback(a20_cb(callback, name, nullptr, static_cast(nullptr))); - } + typedef delegate a20_cb; + template void set_a20_callback(Object &&cb) { m_a20_callback = std::forward(cb); } auto shutdown_callback() { return m_out_shutdown_func.bind(); } diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp index 0f3244c02ae..325c93eadff 100644 --- a/src/devices/cpu/lc8670/lc8670.cpp +++ b/src/devices/cpu/lc8670/lc8670.cpp @@ -202,6 +202,7 @@ void lc8670_cpu_device::device_start() set_icountptr(m_icount); // resolve callbacks + m_lcd_update_func.bind_relative_to(*owner()); m_bankswitch_func.resolve(); // setup timers @@ -559,9 +560,8 @@ void lc8670_cpu_device::execute_set_input(int inputnum, int state) uint32_t lc8670_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - if (m_lcd_update_func) - return m_lcd_update_func(*this, bitmap, cliprect, m_xram, (REG_MCR & 0x08) && (REG_VCCR & 0x80), REG_STAD); - + if (!m_lcd_update_func.isnull()) + return m_lcd_update_func(bitmap, cliprect, m_xram, (REG_MCR & 0x08) && (REG_VCCR & 0x80), REG_STAD); return 0; } diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index 3856b4a8e4b..c7d440d93bb 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -37,23 +37,7 @@ enum // TYPE DEFINITIONS //************************************************************************** -#define LC8670_LCD_UPDATE(name) uint32_t name(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad) - - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_LC8670_SET_CLOCK_SOURCES(_sub_clock, _rc_clock, _cf_clock) \ - downcast(*device).set_cpu_clock(lc8670_cpu_device::clock_source::SUB, _sub_clock); \ - downcast(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \ - downcast(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock); -#define MCFG_LC8670_BANKSWITCH_CB(_devcb) \ - downcast(*device).set_bankswitch_cb(DEVCB_##_devcb); - -#define MCFG_LC8670_LCD_UPDATE_CB(_cb) \ - downcast(*device).set_lcd_update_cb(_cb); - +#define LC8670_LCD_UPDATE(name) uint32_t name(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad) // ======================> lc8670_cpu_device @@ -67,7 +51,7 @@ public: CF }; - typedef uint32_t (*lcd_update)(device_t &device, bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad); + typedef device_delegate lcd_update_delegate; // construction/destruction lc8670_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); @@ -86,8 +70,28 @@ public: // configuration helpers void set_cpu_clock(clock_source source, uint32_t clock) { m_clocks[unsigned(source)] = clock; } void set_cpu_clock(clock_source source, const XTAL &clock) { set_cpu_clock(source, clock.value()); } + template + void set_clock_sources(T &&sub_clock, U &&rc_clock, V &&cf_clock) + { + set_cpu_clock(lc8670_cpu_device::clock_source::SUB, sub_clock); + set_cpu_clock(lc8670_cpu_device::clock_source::RC, rc_clock); + set_cpu_clock(lc8670_cpu_device::clock_source::CF, cf_clock); + } + + auto bank_cb() { return m_bankswitch_func.bind(); } + template void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward(cb); } - template devcb_base &set_bankswitch_cb(Object &&cb) { return m_bankswitch_func.set_callback(std::forward(cb)); } + void set_lcd_update_cb(lcd_update_delegate callback) { m_lcd_update_func = callback; } + template void set_lcd_update_cb(const char *devname, + uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t*, bool, uint8_t), const char *name) + { + set_lcd_update_cb(lcd_update_delegate(callback, name, devname, static_cast(nullptr))); + } + template void set_lcd_update_cb( + uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t*, bool, uint8_t), const char *name) + { + set_lcd_update_cb(lcd_update_delegate(callback, name, nullptr, static_cast(nullptr))); + } void lc8670_internal_map(address_map &map); protected: @@ -192,23 +196,23 @@ private: int op_rolc(); int op_xor(); - address_space_config m_program_config; - address_space_config m_data_config; - address_space_config m_io_config; + address_space_config m_program_config; + address_space_config m_data_config; + address_space_config m_io_config; - address_space * m_program; // program space (ROM or flash) - address_space * m_data; // internal RAM/register - address_space * m_io; // I/O ports + address_space * m_program; // program space (ROM or flash) + address_space * m_data; // internal RAM/register + address_space * m_io; // I/O ports memory_access_cache<0, 0, ENDIANNESS_BIG> *m_cache; // timers static const device_timer_id BASE_TIMER = 1; static const device_timer_id CLOCK_TIMER = 2; - emu_timer * m_basetimer; - emu_timer * m_clocktimer; + emu_timer * m_basetimer; + emu_timer * m_clocktimer; // internal state - int m_icount; + int m_icount; uint16_t m_pc; uint16_t m_ppc; uint8_t m_op; @@ -218,20 +222,20 @@ private: uint8_t m_vtrbf[0x200]; // work RAM uint16_t m_irq_flag; uint8_t m_irq_lev; - bool m_after_reti; + bool m_after_reti; uint8_t m_p1_data; uint8_t m_timer0_prescaler; uint8_t m_timer0[2]; uint8_t m_timer1[2]; uint8_t m_timer1_comparator[2]; uint8_t m_base_timer[2]; - bool m_clock_changed; - int m_input_lines[4]; + bool m_clock_changed; + int m_input_lines[4]; // configuration - uint32_t m_clocks[3]; // clock sources - devcb_write8 m_bankswitch_func; // bankswitch CB - lcd_update m_lcd_update_func; // LCD update CB + uint32_t m_clocks[3]; // clock sources + devcb_write8 m_bankswitch_func; // bankswitch CB + lcd_update_delegate m_lcd_update_func; // LCD update CB // interrupts vectors static const uint16_t s_irq_vectors[16]; diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index ead626b1127..171ff14a5bb 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -3456,7 +3456,7 @@ void psxcpu_device::device_add_mconfig(machine_config &config) auto &mdec(PSX_MDEC(config, "mdec", 0)); dma.install_write_handler(0, psxdma_device::write_delegate(&psxmdec_device::dma_write, &mdec)); - dma.install_read_handler(1, psxdma_device::write_delegate(&psxmdec_device::dma_write, &mdec)); + dma.install_read_handler(1, psxdma_device::write_delegate(&psxmdec_device::dma_read, &mdec)); auto &rcnt(PSX_RCNT(config, "rcnt", 0)); rcnt.irq0().set("irq", FUNC(psxirq_device::intin4)); diff --git a/src/devices/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h index 27e9f072421..b6e4e46dab9 100644 --- a/src/devices/cpu/psx/rcnt.h +++ b/src/devices/cpu/psx/rcnt.h @@ -31,8 +31,8 @@ public: // configuration helpers auto irq0() { return m_irq0_handler.bind(); } - auto irq1() { return m_irq0_handler.bind(); } - auto irq2() { return m_irq0_handler.bind(); } + auto irq1() { return m_irq1_handler.bind(); } + auto irq2() { return m_irq2_handler.bind(); } DECLARE_WRITE32_MEMBER( write ); DECLARE_READ32_MEMBER( read ); diff --git a/src/mame/drivers/at.cpp b/src/mame/drivers/at.cpp index 4ebcc11d7b3..db41a117bd9 100644 --- a/src/mame/drivers/at.cpp +++ b/src/mame/drivers/at.cpp @@ -441,7 +441,8 @@ static void pci_devices(device_slot_interface &device) device.option_add_internal("vt82c505", VT82C505); } -MACHINE_CONFIG_START(at_state::ibm5170) +void at_state::ibm5170(machine_config &config) +{ /* basic machine hardware */ i80286_cpu_device &maincpu(I80286(config, m_maincpu, 12_MHz_XTAL / 2 /*6000000*/)); maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map); @@ -452,18 +453,18 @@ MACHINE_CONFIG_START(at_state::ibm5170) AT_MB(config, m_mb, 0); config.m_minimum_quantum = attotime::from_hz(60); - downcast(device)->at_softlists(config); + m_mb->at_softlists(config); // FIXME: determine ISA bus clock ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "ega", false); ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false); ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "comat", false); ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, "ide", false); - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84) + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, m_ram).set_default_size("1664K").set_extra_options("2M,4M,8M,15M"); -MACHINE_CONFIG_END +} void at_state::ibm5170a(machine_config &config) { @@ -471,17 +472,17 @@ void at_state::ibm5170a(machine_config &config) m_maincpu->set_clock(16_MHz_XTAL / 2); } -MACHINE_CONFIG_START(at_state::ews286) +void at_state::ews286(machine_config &config) +{ ibm5170(config); m_maincpu->set_clock(16_MHz_XTAL / 2); // Exact crystal needs to be verified, 8 MHz according to specification - MCFG_DEVICE_MODIFY("isa2") - MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc", cfg_single_1200K) // From pictures but also with a 3.5" as second floppy + subdevice("isa2")->set_option_machine_config("fdc", cfg_single_1200K); // From pictures but also with a 3.5" as second floppy - MCFG_SOFTWARE_LIST_ADD("ews286_disk_list","ews286_flop") + SOFTWARE_LIST(config, "ews286_disk_list").set_original("ews286_flop"); m_ram->set_default_size("640K"); -MACHINE_CONFIG_END +} void at_state::ec1842(machine_config &config) { @@ -489,36 +490,34 @@ void at_state::ec1842(machine_config &config) m_maincpu->set_clock(12000000); } -MACHINE_CONFIG_START(at_state::ibm5162) +void at_state::ibm5162(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(6000000) - MCFG_DEVICE_MODIFY("isa1") - MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "cga", false) -MACHINE_CONFIG_END + m_maincpu->set_clock(6000000); + subdevice("isa1")->set_default_option("cga"); +} -MACHINE_CONFIG_START(at_vrom_fix_state::ibmps1) +void at_vrom_fix_state::ibmps1(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(10_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(at16l_map) - MCFG_DEVICE_IO_MAP(ps1_16_io) - MCFG_DEVICE_MODIFY("isa1") - MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "vga", true) - MCFG_DEVICE_MODIFY("kbd") - MCFG_DEVICE_SLOT_INTERFACE(pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, false) -MACHINE_CONFIG_END -MACHINE_CONFIG_START(at_state::atvga) + m_maincpu->set_clock(10_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &at_vrom_fix_state::at16l_map); + m_maincpu->set_addrmap(AS_IO, &at_vrom_fix_state::ps1_16_io); + + subdevice("isa1")->set_default_option("vga"); + subdevice("isa1")->set_fixed(true); + subdevice("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL); +} + +void at_state::atvga(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(12000000) - MCFG_DEVICE_MODIFY("isa1") - MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_MODIFY("kbd") - MCFG_DEVICE_SLOT_INTERFACE(pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) // FIXME: determine ISA bus clock -MACHINE_CONFIG_END + m_maincpu->set_clock(12000000); + subdevice("isa1")->set_default_option("svga_et4k"); + subdevice("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL); + ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock +} void at_state::neat(machine_config &config) { @@ -538,102 +537,105 @@ void at_state::xb42639(machine_config &config) m_maincpu->set_clock(12500000); } -MACHINE_CONFIG_START(at_state::k286i) +void at_state::k286i(machine_config &config) +{ ibm5162(config); - MCFG_DEVICE_MODIFY("kbd") - MCFG_DEVICE_SLOT_INTERFACE(pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("isa6", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa7", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa8", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) -MACHINE_CONFIG_END + subdevice("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL); + ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock + ISA16_SLOT(config, "isa6", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa7", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa8", 0, "mb:isabus", pc_isa16_cards, nullptr, false); +} -MACHINE_CONFIG_START(at_state::at386) - MCFG_DEVICE_ADD("maincpu", I386, 12000000) - MCFG_DEVICE_PROGRAM_MAP(at32_map) - MCFG_DEVICE_IO_MAP(at32_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) +void at_state::at386(machine_config &config) +{ + i386_device &maincpu(I386(config, m_maincpu, 12000000)); + maincpu.set_addrmap(AS_PROGRAM, &at_state::at32_map); + maincpu.set_addrmap(AS_IO, &at_state::at32_io); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); + + AT_MB(config, m_mb, 0).at_softlists(config); + + config.m_minimum_quantum = attotime::from_hz(60); - MCFG_DEVICE_ADD("mb", AT_MB, 0) - MCFG_QUANTUM_TIME(attotime::from_hz(60)) - downcast(device)->at_softlists(config); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // on-board devices - MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: deteremine ISA bus clock - MCFG_DEVICE_ADD("board2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "comat", true) - MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "ide", true) - MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "lpt", true) + ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true); // FIXME: deteremine ISA bus clock + ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true); + ISA16_SLOT(config, "board3", 0, "mb:isabus", pc_isa16_cards, "ide", true); + ISA16_SLOT(config, "board4", 0, "mb:isabus", pc_isa16_cards, "lpt", true); // ISA cards - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, m_ram).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(at_state::at386l) +void at_state::at386l(machine_config &config) +{ at386(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(at32l_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &at_state::at32l_map); +} -MACHINE_CONFIG_START(at_state::at486) +void at_state::at486(machine_config &config) +{ at386(config); - MCFG_DEVICE_REPLACE("maincpu", I486, 25000000) - MCFG_DEVICE_PROGRAM_MAP(at32_map) - MCFG_DEVICE_IO_MAP(at32_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) -MACHINE_CONFIG_END + i486_device &maincpu(I486(config.replace(), m_maincpu, 25000000)); + maincpu.set_addrmap(AS_PROGRAM, &at_state::at32_map); + maincpu.set_addrmap(AS_IO, &at_state::at32_io); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); +} -MACHINE_CONFIG_START(at_state::at486l) +void at_state::at486l(machine_config &config) +{ at486(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(at32l_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &at_state::at32l_map); +} -MACHINE_CONFIG_START(at_state::at386sx) +void at_state::at386sx(machine_config &config) +{ atvga(config); - MCFG_DEVICE_REPLACE("maincpu", I386SX, 16000000) /* 386SX */ - MCFG_DEVICE_PROGRAM_MAP(at16_map) - MCFG_DEVICE_IO_MAP(at16_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) -MACHINE_CONFIG_END + i386sx_device &maincpu(I386SX(config.replace(), m_maincpu, 16000000)); /* 386SX */ + maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map); + maincpu.set_addrmap(AS_IO, &at_state::at16_io); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); +} -MACHINE_CONFIG_START(at_state::ct386sx) +void at_state::ct386sx(machine_config &config) +{ at386sx(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(neat_io) + m_maincpu->set_addrmap(AS_IO, &at_state::neat_io); CS8221(config, "cs8221", 0, "maincpu", "mb:isa", "maincpu"); -MACHINE_CONFIG_END +} // Commodore PC 30-III -MACHINE_CONFIG_START(at_state::pc30iii) +void at_state::pc30iii(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(6000000) // should be 24_MHz_XTAL / 2, but doesn't post with that setting - MCFG_DEVICE_MODIFY("isa1") - MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "vga", false) // should be ATI EGA Wonder 800+ -MACHINE_CONFIG_END + m_maincpu->set_clock(6000000); // should be 24_MHz_XTAL / 2, but doesn't post with that setting + subdevice("isa1")->set_default_option("vga"); // should be ATI EGA Wonder 800+ +} // Commodore PC 40-III -MACHINE_CONFIG_START(at_state::pc40iii) +void at_state::pc40iii(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(6000000) // should be 24_MHz_XTAL / 2, but doesn't post with that setting - MCFG_DEVICE_MODIFY("isa1") - MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "vga", false) // should be onboard Paradise VGA, see ROM declarations -MACHINE_CONFIG_END + m_maincpu->set_clock(6000000); // should be 24_MHz_XTAL / 2, but doesn't post with that setting + subdevice("isa1")->set_default_option("vga"); // should be onboard Paradise VGA, see ROM declarations +} -MACHINE_CONFIG_START(megapc_state::megapc) - MCFG_DEVICE_ADD("maincpu", I386SX, 50_MHz_XTAL / 2) - MCFG_DEVICE_PROGRAM_MAP(megapc_map) - MCFG_DEVICE_IO_MAP(megapc_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("wd7600", wd7600_device, intack_cb) +void megapc_state::megapc(machine_config &config) +{ + i386sx_device &maincpu(I386SX(config, m_maincpu, 50_MHz_XTAL / 2)); + maincpu.set_addrmap(AS_PROGRAM, &megapc_state::megapc_map); + maincpu.set_addrmap(AS_IO, &megapc_state::megapc_io); + maincpu.set_irq_acknowledge_callback("wd7600", FUNC(wd7600_device::intack_cb)); WD7600(config, m_wd7600, 50_MHz_XTAL / 2); m_wd7600->set_cputag(m_maincpu); @@ -676,13 +678,13 @@ MACHINE_CONFIG_START(megapc_state::megapc) m_isabus->drq6_callback().set(m_wd7600, FUNC(wd7600_device::dreq6_w)); m_isabus->drq7_callback().set(m_wd7600, FUNC(wd7600_device::dreq7_w)); - MCFG_DEVICE_ADD("board1",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("board2",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "comat", true) - MCFG_DEVICE_ADD("board3",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "ide", true) - MCFG_DEVICE_ADD("board4",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "lpt", true) - MCFG_DEVICE_ADD("board5",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "vga", true) + ISA16_SLOT(config, "board1", 0, "isabus", pc_isa16_cards, "fdcsmc", true); // FIXME: determine ISA bus clock + ISA16_SLOT(config, "board2", 0, "isabus", pc_isa16_cards, "comat", true); + ISA16_SLOT(config, "board3", 0, "isabus", pc_isa16_cards, "ide", true); + ISA16_SLOT(config, "board4", 0, "isabus", pc_isa16_cards, "lpt", true); + ISA16_SLOT(config, "board5", 0, "isabus", pc_isa16_cards, "vga", true); // ISA cards - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "isabus", pc_isa16_cards, nullptr, false) + ISA16_SLOT(config, "isa1", 0, "isabus", pc_isa16_cards, nullptr, false); at_keyboard_controller_device &keybc(AT_KEYBOARD_CONTROLLER(config, "keybc", 12_MHz_XTAL)); keybc.hot_res().set("wd7600", FUNC(wd7600_device::kbrst_w)); @@ -691,74 +693,76 @@ MACHINE_CONFIG_START(megapc_state::megapc) keybc.kbd_clk().set("pc_kbdc", FUNC(pc_kbdc_device::clock_write_from_mb)); keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb)); - MCFG_DEVICE_ADD("pc_kbdc", PC_KBDC, 0) - MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE("keybc", at_keyboard_controller_device, kbd_clk_w)) - MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE("keybc", at_keyboard_controller_device, kbd_data_w)) - MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0)); + pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w)); + pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w)); + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("pc_kbdc")); /* internal ram */ RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,15M,16M"); // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); // video hardware - MCFG_PALETTE_ADD("palette", 256) // todo: really needed? + PALETTE(config, "palette", 256); // todo: really needed? /* software lists */ - MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "disk_list").set_original("megapc"); +} -MACHINE_CONFIG_START(megapc_state::megapcpl) +void megapc_state::megapcpl(machine_config &config) +{ megapc(config); - MCFG_DEVICE_REPLACE("maincpu", I486, 66000000 / 2) - MCFG_DEVICE_PROGRAM_MAP(megapcpl_map) - MCFG_DEVICE_IO_MAP(megapcpl_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("wd7600", wd7600_device, intack_cb) -MACHINE_CONFIG_END + i486_device &maincpu(I486(config.replace(), m_maincpu, 66000000 / 2)); + maincpu.set_addrmap(AS_PROGRAM, &megapc_state::megapcpl_map); + maincpu.set_addrmap(AS_IO, &megapc_state::megapcpl_io); + maincpu.set_irq_acknowledge_callback("wd7600", FUNC(wd7600_device::intack_cb)); +} -MACHINE_CONFIG_START(at_vrom_fix_state::megapcpla) - MCFG_DEVICE_ADD("maincpu", I486, 66000000 / 2) // 486SLC - MCFG_DEVICE_PROGRAM_MAP(at32l_map) - MCFG_DEVICE_IO_MAP(at32_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) +void at_vrom_fix_state::megapcpla(machine_config &config) +{ + i486_device &maincpu(I486(config, m_maincpu, 66000000 / 2)); // 486SLC + maincpu.set_addrmap(AS_PROGRAM, &at_vrom_fix_state::at32l_map); + maincpu.set_addrmap(AS_IO, &at_vrom_fix_state::at32_io); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); + + AT_MB(config, m_mb, 0).at_softlists(config); + + config.m_minimum_quantum = attotime::from_hz(60); - MCFG_DEVICE_ADD("mb", AT_MB, 0) - MCFG_QUANTUM_TIME(attotime::from_hz(60)) - downcast(device)->at_softlists(config); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // on board devices - MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("board2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "comat", true) - MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "ide", true) - MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "lpt", true) + ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true); // FIXME: determine ISA bus clock + ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true); + ISA16_SLOT(config, "board3", 0, "mb:isabus", pc_isa16_cards, "ide", true); + ISA16_SLOT(config, "board4", 0, "mb:isabus", pc_isa16_cards, "lpt", true); // ISA cards - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_dm", false) // closest to the CL-GD5420 - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_dm", false); // closest to the CL-GD5420 + ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, m_ram).set_default_size("4M").set_extra_options("2M,8M,15M,16M,32M,64M,128M,256M"); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "disk_list").set_original("megapc"); +} -MACHINE_CONFIG_START(at_state::ficpio2) - MCFG_DEVICE_ADD("maincpu", I486, 25000000) - MCFG_DEVICE_PROGRAM_MAP(ficpio_map) - MCFG_DEVICE_IO_MAP(ficpio_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) +void at_state::ficpio2(machine_config &config) +{ + i486_device &maincpu(I486(config, m_maincpu, 25000000)); + maincpu.set_addrmap(AS_PROGRAM, &at_state::ficpio_map); + maincpu.set_addrmap(AS_IO, &at_state::ficpio_io); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); - MCFG_DEVICE_ADD("mb", AT_MB, 0) - MCFG_QUANTUM_TIME(attotime::from_hz(60)) - downcast(device)->at_softlists(config); + AT_MB(config, m_mb, 0).at_softlists(config); + config.m_minimum_quantum = attotime::from_hz(60); ds12885_device &rtc(DS12885(config.replace(), "mb:rtc")); rtc.irq().set("mb:pic8259_slave", FUNC(pic8259_device::ir0_w)); // this is in :mb @@ -767,31 +771,32 @@ MACHINE_CONFIG_START(at_state::ficpio2) RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,16M,32M,64M,128M"); // on board devices - MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("board2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "comat", true) - MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "lpt", true) + ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true); // FIXME: determine ISA bus clock + ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true); + ISA16_SLOT(config, "board3", 0, "mb:isabus", pc_isa16_cards, "lpt", true); ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("mb:pic8259_slave", FUNC(pic8259_device::ir6_w)); ide_controller_32_device &ide2(IDE_CONTROLLER_32(config, "ide2").options(ata_devices, "cdrom", nullptr, true)); ide2.irq_handler().set("mb:pic8259_slave", FUNC(pic8259_device::ir7_w)); - MCFG_PCI_BUS_ADD("pcibus", 0) - MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "vt82c505", true) - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + PCI_BUS(config, "pcibus", 0).set_busnum(0); + PCI_CONNECTOR(config, "pcibus:0", pci_devices, "vt82c505", true); + ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false); + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); vt82c496_device &chipset(VT82C496(config, "chipset")); chipset.set_cputag(m_maincpu); chipset.set_ramtag(m_ram); chipset.set_isatag("isa"); -MACHINE_CONFIG_END +} // Compaq Portable III -MACHINE_CONFIG_START(at_state::comportiii) +void at_state::comportiii(machine_config &config) +{ /* basic machine hardware */ i80286_cpu_device &maincpu(I80286(config, m_maincpu, 48_MHz_XTAL / 4 /*12000000*/)); maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map); @@ -799,9 +804,8 @@ MACHINE_CONFIG_START(at_state::comportiii) maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown)); - AT_MB(config, m_mb, 0); + AT_MB(config, m_mb, 0).at_softlists(config); config.m_minimum_quantum = attotime::from_hz(60); - downcast(device)->at_softlists(config); // FIXME: determine ISA bus clock ISA16_SLOT(config, "board1", 0, "mb:isabus", pc_isa16_cards, "fdc", true).set_option_machine_config("fdc", cfg_single_1200K); @@ -811,22 +815,21 @@ MACHINE_CONFIG_START(at_state::comportiii) ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, nullptr, false); ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false); - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84) + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, m_ram).set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4736K,6784K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(at_state::comportii) +void at_state::comportii(machine_config &config) +{ ibm5170(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(48_MHz_XTAL / 6) - MCFG_DEVICE_MODIFY("isa2") - MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc", cfg_single_360K) - MCFG_DEVICE_MODIFY("isa4") - MCFG_SLOT_DEFAULT_OPTION("hdc") + m_maincpu->set_clock(48_MHz_XTAL / 6); + + subdevice("isa2")->set_option_machine_config("fdc", cfg_single_360K); + subdevice("isa4")->set_default_option("hdc"); m_ram->set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4224K"); -MACHINE_CONFIG_END +} //************************************************************************** // ROM DEFINITIONS diff --git a/src/mame/drivers/atpci.cpp b/src/mame/drivers/atpci.cpp index 245457197dc..8f6897a4198 100644 --- a/src/mame/drivers/atpci.cpp +++ b/src/mame/drivers/atpci.cpp @@ -96,93 +96,88 @@ void at586_state::at586_io(address_map &map) map(0x0cf8, 0x0cff).rw("pcibus", FUNC(pci_bus_device::read), FUNC(pci_bus_device::write)); } -MACHINE_CONFIG_START(at586_state::at_softlists) +void at586_state::at_softlists(machine_config &config) +{ /* software lists */ - MCFG_SOFTWARE_LIST_ADD("pc_disk_list","ibm5150") - MCFG_SOFTWARE_LIST_ADD("at_disk_list","ibm5170") - MCFG_SOFTWARE_LIST_ADD("at_cdrom_list","ibm5170_cdrom") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "pc_disk_list").set_original("ibm5150"); + SOFTWARE_LIST(config, "at_disk_list").set_original("ibm5170"); + SOFTWARE_LIST(config, "at_cdrom_list").set_original("ibm5170_cdrom"); +} -MACHINE_CONFIG_START(at586_state::at586) - MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) - MCFG_DEVICE_PROGRAM_MAP(at586_map) - MCFG_DEVICE_IO_MAP(at586_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:1:i82371ab:pic8259_master", pic8259_device, inta_cb) +void at586_state::at586(machine_config &config) +{ + pentium_device &maincpu(PENTIUM(config, m_maincpu, 60000000)); + maincpu.set_addrmap(AS_PROGRAM, &at586_state::at586_map); + maincpu.set_addrmap(AS_IO, &at586_state::at586_io); + maincpu.set_irq_acknowledge_callback("pcibus:1:i82371ab:pic8259_master", FUNC(pic8259_device::inta_cb)); RAM(config, RAM_TAG).set_default_size("4M").set_extra_options("1M,2M,8M,16M,32M,64M,128M,256M"); - MCFG_PCI_BUS_ADD("pcibus", 0) - MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("i82439tx", tx_config) - - MCFG_PCI_BUS_DEVICE("pcibus:1", pci_devices, "i82371ab", true) + PCI_BUS(config, "pcibus", 0).set_busnum(0); + PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config); + PCI_CONNECTOR(config, "pcibus:1", pci_devices, "i82371ab", true); // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false) + ISA16_SLOT(config, "isa1", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false); at_softlists(config); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(at586_state::at586x3) - MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) - MCFG_DEVICE_PROGRAM_MAP(at586_map) - MCFG_DEVICE_IO_MAP(at586_io) - MCFG_I386_SMIACT(WRITELINE("pcibus:0:i82439tx", i82439tx_device, smi_act_w)) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:1:i82371sb:pic8259_master", pic8259_device, inta_cb) +void at586_state::at586x3(machine_config &config) +{ + pentium_device &maincpu(PENTIUM(config, m_maincpu, 60000000)); + maincpu.set_addrmap(AS_PROGRAM, &at586_state::at586_map); + maincpu.set_addrmap(AS_IO, &at586_state::at586_io); + maincpu.smiact().set("pcibus:0:i82439tx", FUNC(i82439tx_device::smi_act_w)); + maincpu.set_irq_acknowledge_callback("pcibus:1:i82371sb:pic8259_master", FUNC(pic8259_device::inta_cb)); RAM(config, RAM_TAG).set_default_size("4M").set_extra_options("1M,2M,8M,16M,32M,64M,128M,256M"); - MCFG_PCI_BUS_ADD("pcibus", 0) - MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("i82439tx", tx_config) - - MCFG_PCI_BUS_DEVICE("pcibus:1", pci_devices, "i82371sb", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("i82371sb", sb_config) + PCI_BUS(config, "pcibus", 0).set_busnum(0); + PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config); + PCI_CONNECTOR(config, "pcibus:1", pci_devices, "i82371sb", true).set_option_machine_config("i82371sb", sb_config); // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false) + ISA16_SLOT(config, "isa1", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false); at_softlists(config); -MACHINE_CONFIG_END +} static INPUT_PORTS_START(at586m55) PORT_INCLUDE(at_keyboard) INPUT_PORTS_END -MACHINE_CONFIG_START(at586_state::at586m55) - MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) - MCFG_DEVICE_PROGRAM_MAP(at586_map) - MCFG_DEVICE_IO_MAP(at586_io) - MCFG_I386_SMIACT(WRITELINE("pcibus:0:i82439tx", i82439tx_device, smi_act_w)) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:7:i82371sb:pic8259_master", pic8259_device, inta_cb) +void at586_state::at586m55(machine_config &config) +{ + pentium_device &pentium(PENTIUM(config, m_maincpu, 60000000)); + pentium.set_addrmap(AS_PROGRAM, &at586_state::at586_map); + pentium.set_addrmap(AS_IO, &at586_state::at586_io); + pentium.smiact().set("pcibus:0:i82439tx", FUNC(i82439tx_device::smi_act_w)); + pentium.set_irq_acknowledge_callback("pcibus:7:i82371sb:pic8259_master", FUNC(pic8259_device::inta_cb)); RAM(config, RAM_TAG).set_default_size("4M").set_extra_options("1M,2M,8M,16M,32M,64M,128M,256M"); - MCFG_PCI_BUS_ADD("pcibus", 0) - MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("i82439tx", tx_config) + PCI_BUS(config, "pcibus", 0).set_busnum(0); + PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config); + PCI_CONNECTOR(config, "pcibus:7", pci_devices, "i82371sb", true).set_option_machine_config("i82371sb", sb_config); - MCFG_PCI_BUS_DEVICE("pcibus:7", pci_devices, "i82371sb", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("i82371sb", sb_config) - - MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", isa_internal_devices, "fdc37c93x", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc37c93x", superio_config) - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false) + ISA16_SLOT(config, "board4", 0, "pcibus:7:i82371sb:isabus", isa_internal_devices, "fdc37c93x", true).set_option_machine_config("fdc37c93x", superio_config); + ISA16_SLOT(config, "isa1", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false); at_softlists(config); -MACHINE_CONFIG_END +} ROM_START( at586 ) ROM_REGION32_LE(0x40000, "isa", 0) diff --git a/src/mame/drivers/nforcepc.cpp b/src/mame/drivers/nforcepc.cpp index a0b161964b9..9eeba267bc5 100644 --- a/src/mame/drivers/nforcepc.cpp +++ b/src/mame/drivers/nforcepc.cpp @@ -167,14 +167,15 @@ void nforcepc_state::nforce_map_io(address_map &map) Machine configuration */ -MACHINE_CONFIG_START(nforcepc_state::nforcepc) - MCFG_DEVICE_ADD("maincpu", ATHLONXP, 90000000) - MCFG_DEVICE_PROGRAM_MAP(nforce_map) - MCFG_DEVICE_IO_MAP(nforce_map_io) - MCFG_DEVICE_ADD(":pci", PCI_ROOT, 0) - MCFG_DEVICE_ADD(":pci:00.0", CRUSH11, 0, "maincpu", 2 * 1024 * 1024) - /* MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) - MCFG_I386_SMIACT(WRITELINE("pci:00.0", i82439hx_host_device, smi_act_w)) +void nforcepc_state::nforcepc(machine_config &config) +{ + athlonxp_device &maincpu(ATHLONXP(config, "maincpu", 90000000)); + maincpu.set_addrmap(AS_PROGRAM, &nforcepc_state::nforce_map); + maincpu.set_addrmap(AS_IO, &nforcepc_state::nforce_map_io); + PCI_ROOT(config, ":pci", 0); + CRUSH11(config, ":pci:00.0", 0, "maincpu", 2 * 1024 * 1024); + /* maincpu.set_irq_acknowledge_callback("pci:07.0:pic8259_master", FUNC(pic8259_device::inta_cb)); + maincpu.smiact().set("pci:00.0", FUNC(i82439hx_host_device::smi_act_w)); i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); isa.boot_state_hook().set(FUNC(nforcepc_state::boot_state_phoenix_ver40_rev6_w)); @@ -183,7 +184,7 @@ MACHINE_CONFIG_START(nforcepc_state::nforcepc) i82371sb_ide_device &ide(I82371SB_IDE(config, ":pci:07.1", 0)); ide.irq_pri().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq14_w)); ide.irq_sec().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq15_w));*/ -MACHINE_CONFIG_END +} ROM_START(nforcepc) ROM_REGION32_LE(0x40000, ":pci:00.0", 0) /* PC bios */ diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index 5f6c1b72cd1..69f91eda3a6 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -2458,7 +2458,7 @@ void pc9801_state::pc9801ux(machine_config &config) i80286_cpu_device &maincpu(I80286(config.replace(), m_maincpu, 10000000)); maincpu.set_addrmap(AS_PROGRAM, &pc9801_state::pc9801ux_map); maincpu.set_addrmap(AS_IO, &pc9801_state::pc9801ux_io); - maincpu.set_a20_callback(FUNC(pc9801_state::a20_286)); + maincpu.set_a20_callback(i80286_cpu_device::a20_cb(&pc9801_state::a20_286, this)); maincpu.set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb)); // MCFG_DEVICE_MODIFY("i8237", AM9157A, 10000000) // unknown clock } diff --git a/src/mame/drivers/pcipc.cpp b/src/mame/drivers/pcipc.cpp index 7b00286fd50..b7b430ae094 100644 --- a/src/mame/drivers/pcipc.cpp +++ b/src/mame/drivers/pcipc.cpp @@ -518,15 +518,16 @@ void pcipc_state::pcipc_map_io(address_map &map) map.unmap_value_high(); } -MACHINE_CONFIG_START(pcipc_state::pcipc) - MCFG_DEVICE_ADD("maincpu", PENTIUM, 90000000) - MCFG_DEVICE_PROGRAM_MAP(pcipc_map) - MCFG_DEVICE_IO_MAP(pcipc_map_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) - MCFG_I386_SMIACT(WRITELINE("pci:00.0", i82439hx_host_device, smi_act_w)) +void pcipc_state::pcipc(machine_config &config) +{ + pentium_device &maincpu(PENTIUM(config, "maincpu", 90000000)); + maincpu.set_addrmap(AS_PROGRAM, &pcipc_state::pcipc_map); + maincpu.set_addrmap(AS_IO, &pcipc_state::pcipc_map_io); + maincpu.set_irq_acknowledge_callback("pci:07.0:pic8259_master", FUNC(pic8259_device::inta_cb)); + maincpu.smiact().set("pci:00.0", FUNC(i82439hx_host_device::smi_act_w)); - MCFG_DEVICE_ADD( ":pci", PCI_ROOT, 0) - MCFG_DEVICE_ADD( ":pci:00.0", I82439HX, 0, "maincpu", 256*1024*1024) + PCI_ROOT(config, ":pci", 0); + I82439HX(config, ":pci:00.0", 0, "maincpu", 256*1024*1024); i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_phoenix_ver40_rev6_w)); @@ -537,39 +538,41 @@ MACHINE_CONFIG_START(pcipc_state::pcipc) ide.irq_sec().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq15_w)); // MCFG_DEVICE_ADD( ":pci:12.0", MGA2064W, 0) - MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "pci:07.0:isabus", isa_internal_devices, "fdc37c93x", true) - MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc37c93x", superio_config) - MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, "svga_et4k", false) - MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false) - MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false) + ISA16_SLOT(config, "board4", 0, "pci:07.0:isabus", isa_internal_devices, "fdc37c93x", true).set_option_machine_config("fdc37c93x", superio_config); + ISA16_SLOT(config, "isa1", 0, "pci:07.0:isabus", pc_isa16_cards, "svga_et4k", false); + ISA16_SLOT(config, "isa2", 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa3", 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa4", 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false); + ISA16_SLOT(config, "isa5", 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false); + rs232_port_device &serport0(RS232_PORT(config, "serport0", isa_com, "logitech_mouse")); serport0.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd1_w)); serport0.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd1_w)); serport0.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr1_w)); serport0.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri1_w)); serport0.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts1_w)); + rs232_port_device &serport1(RS232_PORT(config, "serport1", isa_com, nullptr)); serport1.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd2_w)); serport1.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd2_w)); serport1.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr2_w)); serport1.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri2_w)); serport1.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts2_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(pcipc_state::pcipctx) - MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) +void pcipc_state::pcipctx(machine_config &config) +{ + pentium_device &maincpu(PENTIUM(config, "maincpu", 60000000)); + maincpu.set_irq_acknowledge_callback("pci:07.0:pic8259_master", FUNC(pic8259_device::inta_cb)); - MCFG_DEVICE_ADD( ":pci", PCI_ROOT, 0) - MCFG_DEVICE_ADD( ":pci:00.0", I82439TX, 0, ":maincpu", 256*1024*1024) + PCI_ROOT(config, ":pci", 0); + I82439TX(config, ":pci:00.0", 0, ":maincpu", 256*1024*1024); i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_award_w)); -// MCFG_DEVICE_ADD( ":pci:07.1", IDE_PCI, 0, 0x80867010, 0x03, 0x00000000) - MCFG_DEVICE_ADD( ":pci:12.0", MGA2064W, 0) -MACHINE_CONFIG_END +// IDE_PCI(config, ":pci:07.1", 0, 0x80867010, 0x03, 0x00000000); + MGA2064W(config, ":pci:12.0", 0); +} ROM_START(pcipc) ROM_REGION32_LE(0x40000, ":pci:07.0", 0) /* PC bios */ diff --git a/src/mame/drivers/ps2.cpp b/src/mame/drivers/ps2.cpp index b3bf2ac63d1..af3417d486d 100644 --- a/src/mame/drivers/ps2.cpp +++ b/src/mame/drivers/ps2.cpp @@ -86,7 +86,8 @@ void ps2_state::machine_start() } } -MACHINE_CONFIG_START(ps2_state::ps2m30286) +void ps2_state::ps2m30286(machine_config &config) +{ /* basic machine hardware */ i80286_cpu_device &maincpu(I80286(config, m_maincpu, 10000000)); maincpu.set_addrmap(AS_PROGRAM, &ps2_state::ps2_16_map); @@ -105,13 +106,14 @@ MACHINE_CONFIG_START(ps2_state::ps2m30286) ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false); ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "ide", false); ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, "comat", false); - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84) + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_IBM_PC_AT_84).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(ps2_state::ps2386) +void ps2_state::ps2386(machine_config &config) +{ I386(config, m_maincpu, 12000000); m_maincpu->set_addrmap(AS_PROGRAM, &ps2_state::ps2_32_map); m_maincpu->set_addrmap(AS_IO, &ps2_state::ps2_32_io); @@ -133,11 +135,11 @@ MACHINE_CONFIG_START(ps2_state::ps2386) ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false); ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false); ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); - MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL) + PC_KBDC_SLOT(config, "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL).set_pc_kbdc_slot(subdevice("mb:pc_kbdc")); /* internal ram */ RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M,128M,256M"); -MACHINE_CONFIG_END +} ROM_START( i8530286 ) ROM_REGION(0x20000,"bios", 0) diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index 529ba3743e5..dd204070b74 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -47,6 +47,7 @@ private: required_device m_speaker; required_region_ptr m_bios; + LC8670_LCD_UPDATE(svmu_lcd_update); DECLARE_PALETTE_INIT(svmu); virtual void machine_reset() override; @@ -168,7 +169,7 @@ PALETTE_INIT_MEMBER(svmu_state, svmu) palette.set_pen_color(1, rgb_t(92, 83, 88)); } -static LC8670_LCD_UPDATE( svmu_lcd_update ) +LC8670_LCD_UPDATE(svmu_state::svmu_lcd_update) { if (lcd_enabled) { @@ -177,7 +178,7 @@ static LC8670_LCD_UPDATE( svmu_lcd_update ) { int gfx = vram[y*6 + x]; - for (int b=0; b<8; b++) + for (int b = 0; b < 8; b++) bitmap.plot_box((x*8 + b) * (PIXEL_SIZE + PIXEL_DISTANCE), y * (PIXEL_SIZE + PIXEL_DISTANCE), PIXEL_SIZE, PIXEL_SIZE, BIT(gfx,7-b)); } } @@ -186,10 +187,10 @@ static LC8670_LCD_UPDATE( svmu_lcd_update ) bitmap.fill(0, cliprect); } - device.machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0); - device.machine().output().set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0); - device.machine().output().set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0); - device.machine().output().set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0); + machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0); + machine().output().set_value("game_icon" , lcd_enabled ? BIT(vram[0xc2],4) : 0); + machine().output().set_value("clock_icon", lcd_enabled ? BIT(vram[0xc3],2) : 0); + machine().output().set_value("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0); return 0; } @@ -308,43 +309,44 @@ QUICKLOAD_LOAD_MEMBER( svmu_state, svmu ) } -MACHINE_CONFIG_START(svmu_state::svmu) +void svmu_state::svmu(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", LC8670, XTAL(32'768)) - MCFG_DEVICE_PROGRAM_MAP(svmu_mem) - MCFG_DEVICE_IO_MAP(svmu_io_mem) + LC8670(config, m_maincpu, XTAL(32'768)); + m_maincpu->set_addrmap(AS_PROGRAM, &svmu_state::svmu_mem); + m_maincpu->set_addrmap(AS_IO, &svmu_state::svmu_io_mem); /* specific LC8670 configurations */ - MCFG_LC8670_SET_CLOCK_SOURCES(XTAL(32'768), 600000, XTAL(6'000'000)) // tolerance range of the RC oscillator is 600kHz to 1200kHz - MCFG_LC8670_BANKSWITCH_CB(WRITE8(*this, svmu_state, page_w)) - MCFG_LC8670_LCD_UPDATE_CB(svmu_lcd_update) + m_maincpu->set_clock_sources(XTAL(32'768), 600000, XTAL(6'000'000)); // tolerance range of the RC oscillator is 600kHz to 1200kHz + m_maincpu->bank_cb().set(FUNC(svmu_state::page_w)); + m_maincpu->set_lcd_update_cb(FUNC(svmu_state::svmu_lcd_update)); /* video hardware */ - MCFG_SCREEN_ADD("screen", LCD) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate - MCFG_SCREEN_SIZE(48 * (PIXEL_SIZE + PIXEL_DISTANCE), 32 * (PIXEL_SIZE + PIXEL_DISTANCE)) - MCFG_SCREEN_VISIBLE_AREA(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1) - MCFG_SCREEN_UPDATE_DEVICE("maincpu", lc8670_cpu_device, screen_update) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate + screen.set_size(48 * (PIXEL_SIZE + PIXEL_DISTANCE), 32 * (PIXEL_SIZE + PIXEL_DISTANCE)); + screen.set_visarea(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1); + screen.set_screen_update("maincpu", FUNC(lc8670_cpu_device::screen_update)); + screen.set_palette("palette"); config.set_default_layout(layout_svmu); - MCFG_PALETTE_ADD("palette", 2) - MCFG_PALETTE_INIT_OWNER(svmu_state, svmu) + PALETTE(config, "palette", 2).set_init(FUNC(svmu_state::palette_init_svmu)); /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - ATMEL_29C010(config, "flash"); - MCFG_QUICKLOAD_ADD("quickload", svmu_state, svmu, "vms,bin", 0) - MCFG_QUICKLOAD_INTERFACE("svmu_quik") + ATMEL_29C010(config, m_flash); + + quickload_image_device &quickload(QUICKLOAD(config, "quickload", 0)); + quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(svmu_state, svmu), this), "vms,bin", 0); + quickload.set_interface("svmu_quik"); /* Software lists */ - MCFG_SOFTWARE_LIST_ADD("quik_list", "svmu") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "quik_list").set_original("svmu"); +} /* ROM definition */ diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index 797dbcf7ba5..d1602c001e5 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -888,7 +888,7 @@ void tandy2k_state::tandy2k_hd(machine_config &config) { tandy2k(config); // basic machine hardware - m_maincpu->set_addrmap(AS_PROGRAM, &tandy2k_state::tandy2k_hd_io); + m_maincpu->set_addrmap(AS_IO, &tandy2k_state::tandy2k_hd_io); // Tandon TM502 hard disk HARDDISK(config, "harddisk0", 0); diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp index cd431484b17..85286de7a30 100644 --- a/src/mame/machine/at.cpp +++ b/src/mame/machine/at.cpp @@ -43,7 +43,7 @@ void at_mb_device::device_reset() void at_mb_device::device_start() { if(!strncmp(m_maincpu->shortname(), "i80286", 6)) - downcast(m_maincpu.target())->set_a20_callback(FUNC(at_mb_device::a20_286)); + downcast(m_maincpu.target())->set_a20_callback(i80286_cpu_device::a20_cb(&at_mb_device::a20_286, this)); } MACHINE_CONFIG_START(at_mb_device::at_softlists)