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]
This commit is contained in:
mooglyguy 2018-12-16 14:49:12 +01:00
parent d87615d0f1
commit 97f2889f32
17 changed files with 377 additions and 360 deletions

View File

@ -44,6 +44,15 @@ class pci_connector_device : public device_t,
public device_slot_interface public device_slot_interface
{ {
public: public:
template <typename T>
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); pci_connector_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
virtual ~pci_connector_device(); virtual ~pci_connector_device();

View File

@ -41,6 +41,15 @@ class pc_kbdc_slot_device : public device_t,
{ {
public: public:
// construction/destruction // construction/destruction
template <typename T>
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); pc_kbdc_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// inline configuration // inline configuration

View File

@ -24,13 +24,6 @@
// mingw has this defined for 32-bit compiles // mingw has this defined for 32-bit compiles
#undef i386 #undef i386
#define MCFG_I386_SMIACT(_devcb) \
downcast<i386_device &>(*device).set_smiact(DEVCB_##_devcb);
#define MCFG_I486_FERR_HANDLER(_devcb) \
downcast<i386_device &>(*device).set_ferr(DEVCB_##_devcb);
#define X86_NUM_CPUS 4 #define X86_NUM_CPUS 4
class i386_device : public cpu_device, public device_vtlb_interface, public i386_disassembler::config 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); i386_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers // configuration helpers
template <class Object> devcb_base &set_smiact(Object &&cb) { return m_smiact.set_callback(std::forward<Object>(cb)); } auto smiact() { return m_smiact.bind(); }
template <class Object> devcb_base &set_ferr(Object &&cb) { return m_ferr_handler.set_callback(std::forward<Object>(cb)); } auto ferr() { return m_ferr_handler.bind(); }
uint64_t debug_segbase(symbol_table &table, int params, const uint64_t *param); 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); uint64_t debug_seglimit(symbol_table &table, int params, const uint64_t *param);

View File

@ -71,12 +71,8 @@ public:
// device_memory_interface overrides // device_memory_interface overrides
virtual space_config_vector memory_space_config() const override; virtual space_config_vector memory_space_config() const override;
typedef device_delegate<uint32_t (bool)> a20_cb; typedef delegate<uint32_t (bool)> a20_cb;
void set_a20_callback(a20_cb callback) { m_a20_callback = callback; } template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); }
template <class FunctionClass> void set_a20_callback(uint32_t (FunctionClass::*callback)(bool), const char *name)
{
set_a20_callback(a20_cb(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
auto shutdown_callback() { return m_out_shutdown_func.bind(); } auto shutdown_callback() { return m_out_shutdown_func.bind(); }

View File

@ -202,6 +202,7 @@ void lc8670_cpu_device::device_start()
set_icountptr(m_icount); set_icountptr(m_icount);
// resolve callbacks // resolve callbacks
m_lcd_update_func.bind_relative_to(*owner());
m_bankswitch_func.resolve(); m_bankswitch_func.resolve();
// setup timers // 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) uint32_t lc8670_cpu_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
if (m_lcd_update_func) if (!m_lcd_update_func.isnull())
return m_lcd_update_func(*this, bitmap, cliprect, m_xram, (REG_MCR & 0x08) && (REG_VCCR & 0x80), REG_STAD); return m_lcd_update_func(bitmap, cliprect, m_xram, (REG_MCR & 0x08) && (REG_VCCR & 0x80), REG_STAD);
return 0; return 0;
} }

View File

@ -37,23 +37,7 @@ enum
// TYPE DEFINITIONS // 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) #define LC8670_LCD_UPDATE(name) uint32_t name(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<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::SUB, _sub_clock); \
downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::RC, _rc_clock); \
downcast<lc8670_cpu_device &>(*device).set_cpu_clock(lc8670_cpu_device::clock_source::CF, _cf_clock);
#define MCFG_LC8670_BANKSWITCH_CB(_devcb) \
downcast<lc8670_cpu_device &>(*device).set_bankswitch_cb(DEVCB_##_devcb);
#define MCFG_LC8670_LCD_UPDATE_CB(_cb) \
downcast<lc8670_cpu_device &>(*device).set_lcd_update_cb(_cb);
// ======================> lc8670_cpu_device // ======================> lc8670_cpu_device
@ -67,7 +51,7 @@ public:
CF 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<uint32_t (bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* vram, bool lcd_enabled, uint8_t stad)> lcd_update_delegate;
// construction/destruction // construction/destruction
lc8670_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock); lc8670_cpu_device(const machine_config &mconfig, const char *_tag, device_t *_owner, uint32_t _clock);
@ -86,8 +70,28 @@ public:
// configuration helpers // configuration helpers
void set_cpu_clock(clock_source source, uint32_t clock) { m_clocks[unsigned(source)] = clock; } 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()); } void set_cpu_clock(clock_source source, const XTAL &clock) { set_cpu_clock(source, clock.value()); }
template <typename T, typename U, typename V>
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 <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); } template <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); }
template <class Object> devcb_base &set_bankswitch_cb(Object &&cb) { return m_bankswitch_func.set_callback(std::forward<Object>(cb)); } void set_lcd_update_cb(lcd_update_delegate callback) { m_lcd_update_func = callback; }
template <class FunctionClass> 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<FunctionClass *>(nullptr)));
}
template <class FunctionClass> 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<FunctionClass *>(nullptr)));
}
void lc8670_internal_map(address_map &map); void lc8670_internal_map(address_map &map);
protected: protected:
@ -231,7 +235,7 @@ private:
// configuration // configuration
uint32_t m_clocks[3]; // clock sources uint32_t m_clocks[3]; // clock sources
devcb_write8 m_bankswitch_func; // bankswitch CB devcb_write8 m_bankswitch_func; // bankswitch CB
lcd_update m_lcd_update_func; // LCD update CB lcd_update_delegate m_lcd_update_func; // LCD update CB
// interrupts vectors // interrupts vectors
static const uint16_t s_irq_vectors[16]; static const uint16_t s_irq_vectors[16];

View File

@ -3456,7 +3456,7 @@ void psxcpu_device::device_add_mconfig(machine_config &config)
auto &mdec(PSX_MDEC(config, "mdec", 0)); auto &mdec(PSX_MDEC(config, "mdec", 0));
dma.install_write_handler(0, psxdma_device::write_delegate(&psxmdec_device::dma_write, &mdec)); 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)); auto &rcnt(PSX_RCNT(config, "rcnt", 0));
rcnt.irq0().set("irq", FUNC(psxirq_device::intin4)); rcnt.irq0().set("irq", FUNC(psxirq_device::intin4));

View File

@ -31,8 +31,8 @@ public:
// configuration helpers // configuration helpers
auto irq0() { return m_irq0_handler.bind(); } auto irq0() { return m_irq0_handler.bind(); }
auto irq1() { return m_irq0_handler.bind(); } auto irq1() { return m_irq1_handler.bind(); }
auto irq2() { return m_irq0_handler.bind(); } auto irq2() { return m_irq2_handler.bind(); }
DECLARE_WRITE32_MEMBER( write ); DECLARE_WRITE32_MEMBER( write );
DECLARE_READ32_MEMBER( read ); DECLARE_READ32_MEMBER( read );

View File

@ -441,7 +441,8 @@ static void pci_devices(device_slot_interface &device)
device.option_add_internal("vt82c505", VT82C505); device.option_add_internal("vt82c505", VT82C505);
} }
MACHINE_CONFIG_START(at_state::ibm5170) void at_state::ibm5170(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
i80286_cpu_device &maincpu(I80286(config, m_maincpu, 12_MHz_XTAL / 2 /*6000000*/)); i80286_cpu_device &maincpu(I80286(config, m_maincpu, 12_MHz_XTAL / 2 /*6000000*/));
maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map); 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); AT_MB(config, m_mb, 0);
config.m_minimum_quantum = attotime::from_hz(60); config.m_minimum_quantum = attotime::from_hz(60);
downcast<at_mb_device *>(device)->at_softlists(config); m_mb->at_softlists(config);
// FIXME: determine ISA bus clock // FIXME: determine ISA bus clock
ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "ega", false); 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, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false);
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "comat", 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); 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 */ /* internal ram */
RAM(config, m_ram).set_default_size("1664K").set_extra_options("2M,4M,8M,15M"); 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) 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); m_maincpu->set_clock(16_MHz_XTAL / 2);
} }
MACHINE_CONFIG_START(at_state::ews286) void at_state::ews286(machine_config &config)
{
ibm5170(config); ibm5170(config);
m_maincpu->set_clock(16_MHz_XTAL / 2); // Exact crystal needs to be verified, 8 MHz according to specification m_maincpu->set_clock(16_MHz_XTAL / 2); // Exact crystal needs to be verified, 8 MHz according to specification
MCFG_DEVICE_MODIFY("isa2") subdevice<isa16_slot_device>("isa2")->set_option_machine_config("fdc", cfg_single_1200K); // From pictures but also with a 3.5" as second floppy
MCFG_SLOT_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"); m_ram->set_default_size("640K");
MACHINE_CONFIG_END }
void at_state::ec1842(machine_config &config) void at_state::ec1842(machine_config &config)
{ {
@ -489,36 +490,34 @@ void at_state::ec1842(machine_config &config)
m_maincpu->set_clock(12000000); m_maincpu->set_clock(12000000);
} }
MACHINE_CONFIG_START(at_state::ibm5162) void at_state::ibm5162(machine_config &config)
{
ibm5170(config); ibm5170(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(6000000);
MCFG_DEVICE_CLOCK(6000000) subdevice<isa16_slot_device>("isa1")->set_default_option("cga");
MCFG_DEVICE_MODIFY("isa1") }
MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "cga", false)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(at_vrom_fix_state::ibmps1) void at_vrom_fix_state::ibmps1(machine_config &config)
{
ibm5170(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<isa16_slot_device>("isa1")->set_default_option("vga");
subdevice<isa16_slot_device>("isa1")->set_fixed(true);
subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
}
void at_state::atvga(machine_config &config)
{
ibm5170(config); ibm5170(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(12000000);
MCFG_DEVICE_CLOCK(12000000) subdevice<isa16_slot_device>("isa1")->set_default_option("svga_et4k");
MCFG_DEVICE_MODIFY("isa1") subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock
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
void at_state::neat(machine_config &config) void at_state::neat(machine_config &config)
{ {
@ -538,102 +537,105 @@ void at_state::xb42639(machine_config &config)
m_maincpu->set_clock(12500000); m_maincpu->set_clock(12500000);
} }
MACHINE_CONFIG_START(at_state::k286i) void at_state::k286i(machine_config &config)
{
ibm5162(config); ibm5162(config);
MCFG_DEVICE_MODIFY("kbd") subdevice<pc_kbdc_slot_device>("kbd")->set_default_option(STR_KBD_MICROSOFT_NATURAL);
MCFG_DEVICE_SLOT_INTERFACE(pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL, false) ISA16_SLOT(config, "isa5", 0, "mb:isabus", pc_isa16_cards, nullptr, false); // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 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);
MCFG_DEVICE_ADD("isa6", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa7", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa7", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa8", 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
MACHINE_CONFIG_START(at_state::at386) void at_state::at386(machine_config &config)
MCFG_DEVICE_ADD("maincpu", I386, 12000000) {
MCFG_DEVICE_PROGRAM_MAP(at32_map) i386_device &maincpu(I386(config, m_maincpu, 12000000));
MCFG_DEVICE_IO_MAP(at32_io) maincpu.set_addrmap(AS_PROGRAM, &at_state::at32_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) 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<at_mb_device *>(device)->at_softlists(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// on-board devices // on-board devices
MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: deteremine ISA bus clock ISA16_SLOT(config, "board1", 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) ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true);
MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "ide", true) ISA16_SLOT(config, "board3", 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, "board4", 0, "mb:isabus", pc_isa16_cards, "lpt", true);
// ISA cards // ISA cards
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false);
MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 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 */ /* internal ram */
RAM(config, m_ram).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M"); 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); at386(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &at_state::at32l_map);
MCFG_DEVICE_PROGRAM_MAP(at32l_map) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(at_state::at486) void at_state::at486(machine_config &config)
{
at386(config); at386(config);
MCFG_DEVICE_REPLACE("maincpu", I486, 25000000) i486_device &maincpu(I486(config.replace(), m_maincpu, 25000000));
MCFG_DEVICE_PROGRAM_MAP(at32_map) maincpu.set_addrmap(AS_PROGRAM, &at_state::at32_map);
MCFG_DEVICE_IO_MAP(at32_io) maincpu.set_addrmap(AS_IO, &at_state::at32_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at_state::at486l) void at_state::at486l(machine_config &config)
{
at486(config); at486(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &at_state::at32l_map);
MCFG_DEVICE_PROGRAM_MAP(at32l_map) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(at_state::at386sx) void at_state::at386sx(machine_config &config)
{
atvga(config); atvga(config);
MCFG_DEVICE_REPLACE("maincpu", I386SX, 16000000) /* 386SX */ i386sx_device &maincpu(I386SX(config.replace(), m_maincpu, 16000000)); /* 386SX */
MCFG_DEVICE_PROGRAM_MAP(at16_map) maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map);
MCFG_DEVICE_IO_MAP(at16_io) maincpu.set_addrmap(AS_IO, &at_state::at16_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at_state::ct386sx) void at_state::ct386sx(machine_config &config)
{
at386sx(config); at386sx(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &at_state::neat_io);
MCFG_DEVICE_IO_MAP(neat_io)
CS8221(config, "cs8221", 0, "maincpu", "mb:isa", "maincpu"); CS8221(config, "cs8221", 0, "maincpu", "mb:isa", "maincpu");
MACHINE_CONFIG_END }
// Commodore PC 30-III // Commodore PC 30-III
MACHINE_CONFIG_START(at_state::pc30iii) void at_state::pc30iii(machine_config &config)
{
ibm5170(config); ibm5170(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(6000000); // should be 24_MHz_XTAL / 2, but doesn't post with that setting
MCFG_DEVICE_CLOCK(6000000) // should be 24_MHz_XTAL / 2, but doesn't post with that setting subdevice<isa16_slot_device>("isa1")->set_default_option("vga"); // should be ATI EGA Wonder 800+
MCFG_DEVICE_MODIFY("isa1") }
MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "vga", false) // should be ATI EGA Wonder 800+
MACHINE_CONFIG_END
// Commodore PC 40-III // Commodore PC 40-III
MACHINE_CONFIG_START(at_state::pc40iii) void at_state::pc40iii(machine_config &config)
{
ibm5170(config); ibm5170(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(6000000); // should be 24_MHz_XTAL / 2, but doesn't post with that setting
MCFG_DEVICE_CLOCK(6000000) // should be 24_MHz_XTAL / 2, but doesn't post with that setting subdevice<isa16_slot_device>("isa1")->set_default_option("vga"); // should be onboard Paradise VGA, see ROM declarations
MCFG_DEVICE_MODIFY("isa1") }
MCFG_DEVICE_SLOT_INTERFACE(pc_isa16_cards, "vga", false) // should be onboard Paradise VGA, see ROM declarations
MACHINE_CONFIG_END
MACHINE_CONFIG_START(megapc_state::megapc) void megapc_state::megapc(machine_config &config)
MCFG_DEVICE_ADD("maincpu", I386SX, 50_MHz_XTAL / 2) {
MCFG_DEVICE_PROGRAM_MAP(megapc_map) i386sx_device &maincpu(I386SX(config, m_maincpu, 50_MHz_XTAL / 2));
MCFG_DEVICE_IO_MAP(megapc_io) maincpu.set_addrmap(AS_PROGRAM, &megapc_state::megapc_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("wd7600", wd7600_device, intack_cb) 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); WD7600(config, m_wd7600, 50_MHz_XTAL / 2);
m_wd7600->set_cputag(m_maincpu); 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->drq6_callback().set(m_wd7600, FUNC(wd7600_device::dreq6_w));
m_isabus->drq7_callback().set(m_wd7600, FUNC(wd7600_device::dreq7_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 ISA16_SLOT(config, "board1", 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) ISA16_SLOT(config, "board2", 0, "isabus", pc_isa16_cards, "comat", true);
MCFG_DEVICE_ADD("board3",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "ide", true) ISA16_SLOT(config, "board3", 0, "isabus", pc_isa16_cards, "ide", true);
MCFG_DEVICE_ADD("board4",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "lpt", true) ISA16_SLOT(config, "board4", 0, "isabus", pc_isa16_cards, "lpt", true);
MCFG_DEVICE_ADD("board5",ISA16_SLOT, 0, "isabus", pc_isa16_cards, "vga", true) ISA16_SLOT(config, "board5", 0, "isabus", pc_isa16_cards, "vga", true);
// ISA cards // 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)); at_keyboard_controller_device &keybc(AT_KEYBOARD_CONTROLLER(config, "keybc", 12_MHz_XTAL));
keybc.hot_res().set("wd7600", FUNC(wd7600_device::kbrst_w)); 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_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)); keybc.kbd_data().set("pc_kbdc", FUNC(pc_kbdc_device::data_write_from_mb));
MCFG_DEVICE_ADD("pc_kbdc", PC_KBDC, 0) pc_kbdc_device &pc_kbdc(PC_KBDC(config, "pc_kbdc", 0));
MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE("keybc", at_keyboard_controller_device, kbd_clk_w)) pc_kbdc.out_clock_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_clk_w));
MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE("keybc", at_keyboard_controller_device, kbd_data_w)) pc_kbdc.out_data_cb().set("keybc", FUNC(at_keyboard_controller_device::kbd_data_w));
MCFG_PC_KBDC_SLOT_ADD("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("pc_kbdc"));
/* internal ram */ /* internal ram */
RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,15M,16M"); RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,15M,16M");
// sound hardware // sound hardware
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// video hardware // video hardware
MCFG_PALETTE_ADD("palette", 256) // todo: really needed? PALETTE(config, "palette", 256); // todo: really needed?
/* software lists */ /* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") SOFTWARE_LIST(config, "disk_list").set_original("megapc");
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(megapc_state::megapcpl) void megapc_state::megapcpl(machine_config &config)
{
megapc(config); megapc(config);
MCFG_DEVICE_REPLACE("maincpu", I486, 66000000 / 2) i486_device &maincpu(I486(config.replace(), m_maincpu, 66000000 / 2));
MCFG_DEVICE_PROGRAM_MAP(megapcpl_map) maincpu.set_addrmap(AS_PROGRAM, &megapc_state::megapcpl_map);
MCFG_DEVICE_IO_MAP(megapcpl_io) maincpu.set_addrmap(AS_IO, &megapc_state::megapcpl_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("wd7600", wd7600_device, intack_cb) maincpu.set_irq_acknowledge_callback("wd7600", FUNC(wd7600_device::intack_cb));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at_vrom_fix_state::megapcpla) void at_vrom_fix_state::megapcpla(machine_config &config)
MCFG_DEVICE_ADD("maincpu", I486, 66000000 / 2) // 486SLC {
MCFG_DEVICE_PROGRAM_MAP(at32l_map) i486_device &maincpu(I486(config, m_maincpu, 66000000 / 2)); // 486SLC
MCFG_DEVICE_IO_MAP(at32_io) maincpu.set_addrmap(AS_PROGRAM, &at_vrom_fix_state::at32l_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) 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<at_mb_device *>(device)->at_softlists(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
// on board devices // on board devices
MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: determine ISA bus clock ISA16_SLOT(config, "board1", 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) ISA16_SLOT(config, "board2", 0, "mb:isabus", pc_isa16_cards, "comat", true);
MCFG_DEVICE_ADD("board3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "ide", true) ISA16_SLOT(config, "board3", 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, "board4", 0, "mb:isabus", pc_isa16_cards, "lpt", true);
// ISA cards // ISA cards
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_dm", false) // closest to the CL-GD5420 ISA16_SLOT(config, "isa1", 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) ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa4", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa5", ISA16_SLOT, 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 */ /* internal ram */
RAM(config, m_ram).set_default_size("4M").set_extra_options("2M,8M,15M,16M,32M,64M,128M,256M"); RAM(config, m_ram).set_default_size("4M").set_extra_options("2M,8M,15M,16M,32M,64M,128M,256M");
/* software lists */ /* software lists */
MCFG_SOFTWARE_LIST_ADD("disk_list","megapc") SOFTWARE_LIST(config, "disk_list").set_original("megapc");
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at_state::ficpio2) void at_state::ficpio2(machine_config &config)
MCFG_DEVICE_ADD("maincpu", I486, 25000000) {
MCFG_DEVICE_PROGRAM_MAP(ficpio_map) i486_device &maincpu(I486(config, m_maincpu, 25000000));
MCFG_DEVICE_IO_MAP(ficpio_io) maincpu.set_addrmap(AS_PROGRAM, &at_state::ficpio_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) 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) AT_MB(config, m_mb, 0).at_softlists(config);
MCFG_QUANTUM_TIME(attotime::from_hz(60)) config.m_minimum_quantum = attotime::from_hz(60);
downcast<at_mb_device *>(device)->at_softlists(config);
ds12885_device &rtc(DS12885(config.replace(), "mb:rtc")); ds12885_device &rtc(DS12885(config.replace(), "mb:rtc"));
rtc.irq().set("mb:pic8259_slave", FUNC(pic8259_device::ir0_w)); // this is in :mb 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"); RAM(config, m_ram).set_default_size("4M").set_extra_options("1M,2M,8M,16M,32M,64M,128M");
// on board devices // on board devices
MCFG_DEVICE_ADD("board1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "fdcsmc", true) // FIXME: determine ISA bus clock ISA16_SLOT(config, "board1", 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) ISA16_SLOT(config, "board2", 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, "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_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.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)); 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)); ide2.irq_handler().set("mb:pic8259_slave", FUNC(pic8259_device::ir7_w));
MCFG_PCI_BUS_ADD("pcibus", 0) PCI_BUS(config, "pcibus", 0).set_busnum(0);
MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "vt82c505", true) PCI_CONNECTOR(config, "pcibus:0", pci_devices, "vt82c505", true);
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa1", 0, "mb:isabus", pc_isa16_cards, "svga_et4k", false);
MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa2", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa3", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa4", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa4", 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"));
vt82c496_device &chipset(VT82C496(config, "chipset")); vt82c496_device &chipset(VT82C496(config, "chipset"));
chipset.set_cputag(m_maincpu); chipset.set_cputag(m_maincpu);
chipset.set_ramtag(m_ram); chipset.set_ramtag(m_ram);
chipset.set_isatag("isa"); chipset.set_isatag("isa");
MACHINE_CONFIG_END }
// Compaq Portable III // Compaq Portable III
MACHINE_CONFIG_START(at_state::comportiii) void at_state::comportiii(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
i80286_cpu_device &maincpu(I80286(config, m_maincpu, 48_MHz_XTAL / 4 /*12000000*/)); i80286_cpu_device &maincpu(I80286(config, m_maincpu, 48_MHz_XTAL / 4 /*12000000*/));
maincpu.set_addrmap(AS_PROGRAM, &at_state::at16_map); 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.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown)); 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); config.m_minimum_quantum = attotime::from_hz(60);
downcast<at_mb_device *>(device)->at_softlists(config);
// FIXME: determine ISA bus clock // 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); 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, "isa1", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
ISA16_SLOT(config, "isa2", 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 */ /* internal ram */
RAM(config, m_ram).set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4736K,6784K"); 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); ibm5170(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_clock(48_MHz_XTAL / 6);
MCFG_DEVICE_CLOCK(48_MHz_XTAL / 6)
MCFG_DEVICE_MODIFY("isa2") subdevice<isa16_slot_device>("isa2")->set_option_machine_config("fdc", cfg_single_360K);
MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc", cfg_single_360K) subdevice<isa16_slot_device>("isa4")->set_default_option("hdc");
MCFG_DEVICE_MODIFY("isa4")
MCFG_SLOT_DEFAULT_OPTION("hdc")
m_ram->set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4224K"); m_ram->set_default_size("640K").set_extra_options("1152K,1664K,2176K,2688K,4224K");
MACHINE_CONFIG_END }
//************************************************************************** //**************************************************************************
// ROM DEFINITIONS // ROM DEFINITIONS

View File

@ -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)); 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 */ /* software lists */
MCFG_SOFTWARE_LIST_ADD("pc_disk_list","ibm5150") SOFTWARE_LIST(config, "pc_disk_list").set_original("ibm5150");
MCFG_SOFTWARE_LIST_ADD("at_disk_list","ibm5170") SOFTWARE_LIST(config, "at_disk_list").set_original("ibm5170");
MCFG_SOFTWARE_LIST_ADD("at_cdrom_list","ibm5170_cdrom") SOFTWARE_LIST(config, "at_cdrom_list").set_original("ibm5170_cdrom");
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at586_state::at586) void at586_state::at586(machine_config &config)
MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) {
MCFG_DEVICE_PROGRAM_MAP(at586_map) pentium_device &maincpu(PENTIUM(config, m_maincpu, 60000000));
MCFG_DEVICE_IO_MAP(at586_io) maincpu.set_addrmap(AS_PROGRAM, &at586_state::at586_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:1:i82371ab:pic8259_master", pic8259_device, inta_cb) 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"); 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) PCI_BUS(config, "pcibus", 0).set_busnum(0);
MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config);
MCFG_SLOT_OPTION_MACHINE_CONFIG("i82439tx", tx_config) PCI_CONNECTOR(config, "pcibus:1", pci_devices, "i82371ab", true);
MCFG_PCI_BUS_DEVICE("pcibus:1", pci_devices, "i82371ab", true)
// FIXME: determine ISA bus clock // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa1", 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) ISA16_SLOT(config, "isa2", 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) ISA16_SLOT(config, "isa3", 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) ISA16_SLOT(config, "isa4", 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, "isa5", 0, "pcibus:1:i82371ab:isabus", pc_isa16_cards, nullptr, false);
at_softlists(config); at_softlists(config);
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(at586_state::at586x3) void at586_state::at586x3(machine_config &config)
MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) {
MCFG_DEVICE_PROGRAM_MAP(at586_map) pentium_device &maincpu(PENTIUM(config, m_maincpu, 60000000));
MCFG_DEVICE_IO_MAP(at586_io) maincpu.set_addrmap(AS_PROGRAM, &at586_state::at586_map);
MCFG_I386_SMIACT(WRITELINE("pcibus:0:i82439tx", i82439tx_device, smi_act_w)) maincpu.set_addrmap(AS_IO, &at586_state::at586_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:1:i82371sb:pic8259_master", pic8259_device, inta_cb) 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"); 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) PCI_BUS(config, "pcibus", 0).set_busnum(0);
MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config);
MCFG_SLOT_OPTION_MACHINE_CONFIG("i82439tx", tx_config) PCI_CONNECTOR(config, "pcibus:1", pci_devices, "i82371sb", true).set_option_machine_config("i82371sb", sb_config);
MCFG_PCI_BUS_DEVICE("pcibus:1", pci_devices, "i82371sb", true)
MCFG_SLOT_OPTION_MACHINE_CONFIG("i82371sb", sb_config)
// FIXME: determine ISA bus clock // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa1", 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) ISA16_SLOT(config, "isa2", 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) ISA16_SLOT(config, "isa3", 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) ISA16_SLOT(config, "isa4", 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, "isa5", 0, "pcibus:1:i82371sb:isabus", pc_isa16_cards, nullptr, false);
at_softlists(config); at_softlists(config);
MACHINE_CONFIG_END }
static INPUT_PORTS_START(at586m55) static INPUT_PORTS_START(at586m55)
PORT_INCLUDE(at_keyboard) PORT_INCLUDE(at_keyboard)
INPUT_PORTS_END INPUT_PORTS_END
MACHINE_CONFIG_START(at586_state::at586m55) void at586_state::at586m55(machine_config &config)
MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) {
MCFG_DEVICE_PROGRAM_MAP(at586_map) pentium_device &pentium(PENTIUM(config, m_maincpu, 60000000));
MCFG_DEVICE_IO_MAP(at586_io) pentium.set_addrmap(AS_PROGRAM, &at586_state::at586_map);
MCFG_I386_SMIACT(WRITELINE("pcibus:0:i82439tx", i82439tx_device, smi_act_w)) pentium.set_addrmap(AS_IO, &at586_state::at586_io);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pcibus:7:i82371sb:pic8259_master", pic8259_device, inta_cb) 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"); 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) PCI_BUS(config, "pcibus", 0).set_busnum(0);
MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "i82439tx", true) PCI_CONNECTOR(config, "pcibus:0", pci_devices, "i82439tx", true).set_option_machine_config("i82439tx", tx_config);
MCFG_SLOT_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) ISA16_SLOT(config, "board4", 0, "pcibus:7:i82371sb:isabus", isa_internal_devices, "fdc37c93x", true).set_option_machine_config("fdc37c93x", superio_config);
MCFG_SLOT_OPTION_MACHINE_CONFIG("i82371sb", sb_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);
MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", isa_internal_devices, "fdc37c93x", true) ISA16_SLOT(config, "isa3", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false);
MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc37c93x", superio_config) ISA16_SLOT(config, "isa4", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, false);
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, "svga_et4k", false) ISA16_SLOT(config, "isa5", 0, "pcibus:7:i82371sb:isabus", pc_isa16_cards, nullptr, 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)
at_softlists(config); at_softlists(config);
MACHINE_CONFIG_END }
ROM_START( at586 ) ROM_START( at586 )
ROM_REGION32_LE(0x40000, "isa", 0) ROM_REGION32_LE(0x40000, "isa", 0)

View File

@ -167,14 +167,15 @@ void nforcepc_state::nforce_map_io(address_map &map)
Machine configuration Machine configuration
*/ */
MACHINE_CONFIG_START(nforcepc_state::nforcepc) void nforcepc_state::nforcepc(machine_config &config)
MCFG_DEVICE_ADD("maincpu", ATHLONXP, 90000000) {
MCFG_DEVICE_PROGRAM_MAP(nforce_map) athlonxp_device &maincpu(ATHLONXP(config, "maincpu", 90000000));
MCFG_DEVICE_IO_MAP(nforce_map_io) maincpu.set_addrmap(AS_PROGRAM, &nforcepc_state::nforce_map);
MCFG_DEVICE_ADD(":pci", PCI_ROOT, 0) maincpu.set_addrmap(AS_IO, &nforcepc_state::nforce_map_io);
MCFG_DEVICE_ADD(":pci:00.0", CRUSH11, 0, "maincpu", 2 * 1024 * 1024) PCI_ROOT(config, ":pci", 0);
/* MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) CRUSH11(config, ":pci:00.0", 0, "maincpu", 2 * 1024 * 1024);
MCFG_I386_SMIACT(WRITELINE("pci:00.0", i82439hx_host_device, smi_act_w)) /* 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)); 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)); 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)); 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_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));*/ ide.irq_sec().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq15_w));*/
MACHINE_CONFIG_END }
ROM_START(nforcepc) ROM_START(nforcepc)
ROM_REGION32_LE(0x40000, ":pci:00.0", 0) /* PC bios */ ROM_REGION32_LE(0x40000, ":pci:00.0", 0) /* PC bios */

View File

@ -2458,7 +2458,7 @@ void pc9801_state::pc9801ux(machine_config &config)
i80286_cpu_device &maincpu(I80286(config.replace(), m_maincpu, 10000000)); i80286_cpu_device &maincpu(I80286(config.replace(), m_maincpu, 10000000));
maincpu.set_addrmap(AS_PROGRAM, &pc9801_state::pc9801ux_map); maincpu.set_addrmap(AS_PROGRAM, &pc9801_state::pc9801ux_map);
maincpu.set_addrmap(AS_IO, &pc9801_state::pc9801ux_io); 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)); maincpu.set_irq_acknowledge_callback("pic8259_master", FUNC(pic8259_device::inta_cb));
// MCFG_DEVICE_MODIFY("i8237", AM9157A, 10000000) // unknown clock // MCFG_DEVICE_MODIFY("i8237", AM9157A, 10000000) // unknown clock
} }

View File

@ -518,15 +518,16 @@ void pcipc_state::pcipc_map_io(address_map &map)
map.unmap_value_high(); map.unmap_value_high();
} }
MACHINE_CONFIG_START(pcipc_state::pcipc) void pcipc_state::pcipc(machine_config &config)
MCFG_DEVICE_ADD("maincpu", PENTIUM, 90000000) {
MCFG_DEVICE_PROGRAM_MAP(pcipc_map) pentium_device &maincpu(PENTIUM(config, "maincpu", 90000000));
MCFG_DEVICE_IO_MAP(pcipc_map_io) maincpu.set_addrmap(AS_PROGRAM, &pcipc_state::pcipc_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) maincpu.set_addrmap(AS_IO, &pcipc_state::pcipc_map_io);
MCFG_I386_SMIACT(WRITELINE("pci:00.0", i82439hx_host_device, smi_act_w)) 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) PCI_ROOT(config, ":pci", 0);
MCFG_DEVICE_ADD( ":pci:00.0", I82439HX, 0, "maincpu", 256*1024*1024) I82439HX(config, ":pci:00.0", 0, "maincpu", 256*1024*1024);
i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); 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)); 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)); 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( ":pci:12.0", MGA2064W, 0)
MCFG_DEVICE_ADD("board4", ISA16_SLOT, 0, "pci:07.0:isabus", isa_internal_devices, "fdc37c93x", true) ISA16_SLOT(config, "board4", 0, "pci:07.0:isabus", isa_internal_devices, "fdc37c93x", true).set_option_machine_config("fdc37c93x", superio_config);
MCFG_SLOT_OPTION_MACHINE_CONFIG("fdc37c93x", superio_config) ISA16_SLOT(config, "isa1", 0, "pci:07.0:isabus", pc_isa16_cards, "svga_et4k", false);
MCFG_DEVICE_ADD("isa1", ISA16_SLOT, 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);
MCFG_DEVICE_ADD("isa2", ISA16_SLOT, 0, "pci:07.0:isabus", pc_isa16_cards, nullptr, false) ISA16_SLOT(config, "isa3", 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) ISA16_SLOT(config, "isa4", 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) ISA16_SLOT(config, "isa5", 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)
rs232_port_device &serport0(RS232_PORT(config, "serport0", isa_com, "logitech_mouse")); rs232_port_device &serport0(RS232_PORT(config, "serport0", isa_com, "logitech_mouse"));
serport0.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd1_w)); serport0.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd1_w));
serport0.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd1_w)); serport0.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd1_w));
serport0.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr1_w)); serport0.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr1_w));
serport0.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri1_w)); serport0.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri1_w));
serport0.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts1_w)); serport0.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts1_w));
rs232_port_device &serport1(RS232_PORT(config, "serport1", isa_com, nullptr)); rs232_port_device &serport1(RS232_PORT(config, "serport1", isa_com, nullptr));
serport1.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd2_w)); serport1.rxd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::rxd2_w));
serport1.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd2_w)); serport1.dcd_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndcd2_w));
serport1.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr2_w)); serport1.dsr_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ndsr2_w));
serport1.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri2_w)); serport1.ri_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::nri2_w));
serport1.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts2_w)); serport1.cts_handler().set("board4:fdc37c93x", FUNC(fdc37c93x_device::ncts2_w));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pcipc_state::pcipctx) void pcipc_state::pcipctx(machine_config &config)
MCFG_DEVICE_ADD("maincpu", PENTIUM, 60000000) {
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pci:07.0:pic8259_master", pic8259_device, inta_cb) 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) PCI_ROOT(config, ":pci", 0);
MCFG_DEVICE_ADD( ":pci:00.0", I82439TX, 0, ":maincpu", 256*1024*1024) I82439TX(config, ":pci:00.0", 0, ":maincpu", 256*1024*1024);
i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0)); i82371sb_isa_device &isa(I82371SB_ISA(config, ":pci:07.0", 0));
isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_award_w)); isa.boot_state_hook().set(FUNC(pcipc_state::boot_state_award_w));
// MCFG_DEVICE_ADD( ":pci:07.1", IDE_PCI, 0, 0x80867010, 0x03, 0x00000000) // IDE_PCI(config, ":pci:07.1", 0, 0x80867010, 0x03, 0x00000000);
MCFG_DEVICE_ADD( ":pci:12.0", MGA2064W, 0) MGA2064W(config, ":pci:12.0", 0);
MACHINE_CONFIG_END }
ROM_START(pcipc) ROM_START(pcipc)
ROM_REGION32_LE(0x40000, ":pci:07.0", 0) /* PC bios */ ROM_REGION32_LE(0x40000, ":pci:07.0", 0) /* PC bios */

View File

@ -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 */ /* basic machine hardware */
i80286_cpu_device &maincpu(I80286(config, m_maincpu, 10000000)); i80286_cpu_device &maincpu(I80286(config, m_maincpu, 10000000));
maincpu.set_addrmap(AS_PROGRAM, &ps2_state::ps2_16_map); 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, "isa2", 0, "mb:isabus", pc_isa16_cards, "fdc", false);
ISA16_SLOT(config, "isa3", 0, "mb:isabus", pc_isa16_cards, "ide", 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); 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 */ /* internal ram */
RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M"); 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); I386(config, m_maincpu, 12000000);
m_maincpu->set_addrmap(AS_PROGRAM, &ps2_state::ps2_32_map); m_maincpu->set_addrmap(AS_PROGRAM, &ps2_state::ps2_32_map);
m_maincpu->set_addrmap(AS_IO, &ps2_state::ps2_32_io); 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, "isa3", 0, "mb:isabus", pc_isa16_cards, nullptr, false);
ISA16_SLOT(config, "isa4", 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); 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 */ /* internal ram */
RAM(config, RAM_TAG).set_default_size("1664K").set_extra_options("2M,4M,8M,15M,16M,32M,64M,128M,256M"); 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_START( i8530286 )
ROM_REGION(0x20000,"bios", 0) ROM_REGION(0x20000,"bios", 0)

View File

@ -47,6 +47,7 @@ private:
required_device<speaker_sound_device> m_speaker; required_device<speaker_sound_device> m_speaker;
required_region_ptr<uint8_t> m_bios; required_region_ptr<uint8_t> m_bios;
LC8670_LCD_UPDATE(svmu_lcd_update);
DECLARE_PALETTE_INIT(svmu); DECLARE_PALETTE_INIT(svmu);
virtual void machine_reset() override; 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)); 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) if (lcd_enabled)
{ {
@ -186,10 +187,10 @@ static LC8670_LCD_UPDATE( svmu_lcd_update )
bitmap.fill(0, cliprect); bitmap.fill(0, cliprect);
} }
device.machine().output().set_value("file_icon" , lcd_enabled ? BIT(vram[0xc1],6) : 0); 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); 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); 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("flash_icon", lcd_enabled ? BIT(vram[0xc4],0) : 0);
return 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 */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", LC8670, XTAL(32'768)) LC8670(config, m_maincpu, XTAL(32'768));
MCFG_DEVICE_PROGRAM_MAP(svmu_mem) m_maincpu->set_addrmap(AS_PROGRAM, &svmu_state::svmu_mem);
MCFG_DEVICE_IO_MAP(svmu_io_mem) m_maincpu->set_addrmap(AS_IO, &svmu_state::svmu_io_mem);
/* specific LC8670 configurations */ /* 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 m_maincpu->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)) m_maincpu->bank_cb().set(FUNC(svmu_state::page_w));
MCFG_LC8670_LCD_UPDATE_CB(svmu_lcd_update) m_maincpu->set_lcd_update_cb(FUNC(svmu_state::svmu_lcd_update));
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", LCD) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
MCFG_SCREEN_SIZE(48 * (PIXEL_SIZE + PIXEL_DISTANCE), 32 * (PIXEL_SIZE + PIXEL_DISTANCE)) screen.set_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) screen.set_visarea(0, 48*(PIXEL_SIZE + PIXEL_DISTANCE) - 1, 0, 32*(PIXEL_SIZE + PIXEL_DISTANCE) - 1);
MCFG_SCREEN_UPDATE_DEVICE("maincpu", lc8670_cpu_device, screen_update) screen.set_screen_update("maincpu", FUNC(lc8670_cpu_device::screen_update));
MCFG_SCREEN_PALETTE("palette") screen.set_palette("palette");
config.set_default_layout(layout_svmu); config.set_default_layout(layout_svmu);
MCFG_PALETTE_ADD("palette", 2) PALETTE(config, "palette", 2).set_init(FUNC(svmu_state::palette_init_svmu));
MCFG_PALETTE_INIT_OWNER(svmu_state, svmu)
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50);
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
/* devices */ /* devices */
ATMEL_29C010(config, "flash"); ATMEL_29C010(config, m_flash);
MCFG_QUICKLOAD_ADD("quickload", svmu_state, svmu, "vms,bin", 0)
MCFG_QUICKLOAD_INTERFACE("svmu_quik") 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 */ /* Software lists */
MCFG_SOFTWARE_LIST_ADD("quik_list", "svmu") SOFTWARE_LIST(config, "quik_list").set_original("svmu");
MACHINE_CONFIG_END }
/* ROM definition */ /* ROM definition */

View File

@ -888,7 +888,7 @@ void tandy2k_state::tandy2k_hd(machine_config &config)
{ {
tandy2k(config); tandy2k(config);
// basic machine hardware // 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 // Tandon TM502 hard disk
HARDDISK(config, "harddisk0", 0); HARDDISK(config, "harddisk0", 0);

View File

@ -43,7 +43,7 @@ void at_mb_device::device_reset()
void at_mb_device::device_start() void at_mb_device::device_start()
{ {
if(!strncmp(m_maincpu->shortname(), "i80286", 6)) if(!strncmp(m_maincpu->shortname(), "i80286", 6))
downcast<i80286_cpu_device *>(m_maincpu.target())->set_a20_callback(FUNC(at_mb_device::a20_286)); downcast<i80286_cpu_device *>(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) MACHINE_CONFIG_START(at_mb_device::at_softlists)