diff options
author | andreasnaive <andreasnaive@gmail.com> | 2019-03-25 23:13:40 +0100 |
---|---|---|
committer | andreasnaive <andreasnaive@gmail.com> | 2019-03-25 23:13:40 +0100 |
commit | b380514764cf857469bae61c11143a19f79a74c5 (patch) | |
tree | 63c8012e262618f08a332da31dd714281aa2c5ed /src/devices/bus/isa | |
parent | c24473ddff715ecec2e258a6eb38960cf8c8e98e (diff) |
Revert "conflict resolution (nw)"
This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing
changes made to 009cba4fb8102102168ef32870892438327f3705.
Diffstat (limited to 'src/devices/bus/isa')
66 files changed, 724 insertions, 1949 deletions
diff --git a/src/devices/bus/isa/3c503.cpp b/src/devices/bus/isa/3c503.cpp index 34202e2246d..424ce8bb082 100644 --- a/src/devices/bus/isa/3c503.cpp +++ b/src/devices/bus/isa/3c503.cpp @@ -5,13 +5,12 @@ #define SADDR 0xcc000 -void el2_3c503_device::device_add_mconfig(machine_config &config) -{ - DP8390D(config, m_dp8390, 0); - m_dp8390->irq_callback().set(FUNC(el2_3c503_device::el2_3c503_irq_w)); - m_dp8390->mem_read_callback().set(FUNC(el2_3c503_device::el2_3c503_mem_r)); - m_dp8390->mem_write_callback().set(FUNC(el2_3c503_device::el2_3c503_mem_w)); -} +MACHINE_CONFIG_START(el2_3c503_device::device_add_mconfig) + MCFG_DEVICE_ADD("dp8390d", DP8390D, 0) + MCFG_DP8390D_IRQ_CB(WRITELINE(*this, el2_3c503_device, el2_3c503_irq_w)) + MCFG_DP8390D_MEM_READ_CB(READ8(*this, el2_3c503_device, el2_3c503_mem_r)) + MCFG_DP8390D_MEM_WRITE_CB(WRITE8(*this, el2_3c503_device, el2_3c503_mem_w)) +MACHINE_CONFIG_END DEFINE_DEVICE_TYPE(EL2_3C503, el2_3c503_device, "el2_3c503", "3C503 Network Adapter") diff --git a/src/devices/bus/isa/3c505.cpp b/src/devices/bus/isa/3c505.cpp index 37cd5ef346a..71548dcbdaa 100644 --- a/src/devices/bus/isa/3c505.cpp +++ b/src/devices/bus/isa/3c505.cpp @@ -1644,9 +1644,7 @@ READ16_MEMBER(threecom3c505_device::read) // omit excessive logging if (data == last_data) { - // FIXME: space.device().state().pcbase() will crash mame with SIGSEGV (since mame0197) - uint32_t pc = 0; // space.device().state().pcbase(); - + uint32_t pc = space.device().state().pcbase(); if (pc == last_pc) { return data; diff --git a/src/devices/bus/isa/adlib.cpp b/src/devices/bus/isa/adlib.cpp index 6a900b0e09d..814fdeaaf58 100644 --- a/src/devices/bus/isa/adlib.cpp +++ b/src/devices/bus/isa/adlib.cpp @@ -20,7 +20,7 @@ READ8_MEMBER( isa8_adlib_device::ym3812_16_r ) uint8_t retVal = 0xff; switch(offset) { - case 0 : retVal = m_ym3812->status_port_r(); break; + case 0 : retVal = m_ym3812->status_port_r( space, offset ); break; } return retVal; } @@ -29,8 +29,8 @@ WRITE8_MEMBER( isa8_adlib_device::ym3812_16_w ) { switch(offset) { - case 0 : m_ym3812->control_port_w(data); break; - case 1 : m_ym3812->write_port_w(data); break; + case 0 : m_ym3812->control_port_w( space, offset, data ); break; + case 1 : m_ym3812->write_port_w( space, offset, data ); break; } } @@ -44,11 +44,11 @@ DEFINE_DEVICE_TYPE(ISA8_ADLIB, isa8_adlib_device, "isa_adlib", "Ad Lib Sound Car // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_adlib_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(isa8_adlib_device::device_add_mconfig) SPEAKER(config, "mono").front_center(); - YM3812(config, m_ym3812, ym3812_StdClock).add_route(ALL_OUTPUTS, "mono", 3.00); -} + MCFG_DEVICE_ADD("ym3812", YM3812, ym3812_StdClock) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 3.00) +MACHINE_CONFIG_END //************************************************************************** // LIVE DEVICE diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp index e1c26328c44..9aa2810431b 100644 --- a/src/devices/bus/isa/aga.cpp +++ b/src/devices/bus/isa/aga.cpp @@ -273,13 +273,12 @@ MC6845_UPDATE_ROW( isa8_aga_device::aga_update_row ) } -void isa8_aga_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, AGA_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(14'318'181), 912, 0, 640, 262, 0, 200); - screen.set_screen_update(AGA_MC6845_NAME, FUNC(mc6845_device::screen_update)); +MACHINE_CONFIG_START(isa8_aga_device::device_add_mconfig) + MCFG_SCREEN_ADD( AGA_SCREEN_NAME, RASTER ) + MCFG_SCREEN_RAW_PARAMS( XTAL(14'318'181),912,0,640,262,0,200 ) + MCFG_SCREEN_UPDATE_DEVICE( AGA_MC6845_NAME, mc6845_device, screen_update ) - PALETTE(config, m_palette).set_entries(/* CGA_PALETTE_SETS * 16*/ 65536); + MCFG_PALETTE_ADD( "palette", /* CGA_PALETTE_SETS * 16*/ 65536 ) MC6845(config, m_mc6845, XTAL(14'318'181)/8); m_mc6845->set_screen(AGA_SCREEN_NAME); @@ -288,7 +287,7 @@ void isa8_aga_device::device_add_mconfig(machine_config &config) m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row), this); m_mc6845->out_hsync_callback().set(FUNC(isa8_aga_device::hsync_changed)); m_mc6845->out_vsync_callback().set(FUNC(isa8_aga_device::vsync_changed)); -} +MACHINE_CONFIG_END /************************************* @@ -690,7 +689,7 @@ READ8_MEMBER ( isa8_aga_device::pc_aga_mda_r ) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = m_mc6845->register_r(); + data = m_mc6845->register_r(space, offset); break; case 10: data = m_vsync | 0x08 | m_hsync; @@ -707,10 +706,10 @@ WRITE8_MEMBER ( isa8_aga_device::pc_aga_mda_w ) switch( offset ) { case 0: case 2: case 4: case 6: - m_mc6845->address_w(data); + m_mc6845->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - m_mc6845->register_w(data); + m_mc6845->register_w( space, offset, data ); break; case 8: m_mda_mode_control = data; @@ -741,7 +740,7 @@ READ8_MEMBER ( isa8_aga_device::pc_aga_cga_r ) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = m_mc6845->register_r(); + data = m_mc6845->register_r( space, offset); break; case 10: data = m_vsync | ( ( data & 0x40 ) >> 4 ) | m_hsync; @@ -792,10 +791,10 @@ WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w ) if ( m_mode == AGA_COLOR ) { switch(offset) { case 0: case 2: case 4: case 6: - m_mc6845->address_w(data); + m_mc6845->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - m_mc6845->register_w(data); + m_mc6845->register_w( space, offset, data ); break; case 8: m_cga_mode_control = data; diff --git a/src/devices/bus/isa/aha1542.cpp b/src/devices/bus/isa/aha1542.cpp new file mode 100644 index 00000000000..8e260347eee --- /dev/null +++ b/src/devices/bus/isa/aha1542.cpp @@ -0,0 +1,200 @@ +// license:BSD-3-Clause +// copyright-holders:Darkstar +/********************************************************************** + * + * Adaptec AHA-1542{,C,CF} SCSI Controller + * + **********************************************************************/ + +/* + PCB layout + ---------- + Floppy SCSI + +-----------+ +------------------+ +- + +-----+-----------+-+------------------+--+ + | | + | DIPSW DS1 |\ + | +-----+ | | + | | | Y1 +---+ TRM TRM | | + | | U3 | |U5 | |S| + | U8 +-----+ +---+ |C| + | +---+ +------+ +-------+ |S| + | |U13| |U15 | Y2 | | |I| + | +---+ +------+ | | | | + | |U16 | |U17 | | | + | +------+ +-------+ |/ + +-----------------------------------------+ + ||||||||| ||||||||||||||||||||||||| | + + + DIPSW sw1 - sw8 + U3 Intel chip labelled "AHA-1542CF/552800-01 D/9346", probably FDC (82077) + U5 Z84C0010VEC + U8 EEPROM(?) labelled 545120A + U13 CXK5864CM-10LL (64kbit SRAM) + U15 M27C256B labelled "ADAPTEC INC/553801-00 C/MCODE 563D/(C) 1993" + U16 M27C256B labelled "ADAPTEC INC/553601-00 C/BIOS C38D/(C) 1993" + U17 AIC-7970Q + Y1 XTAL SRX4054 93-38 + Y2 XTAL SRX4053 93-40 + TRM Dallas DS2107AS (SCSI termination) + DS1 LED + +*/ + +/* + * The PCB has a couple of DIP switches: + * + * sw1 on enable termination + * off software-controlled termination + * + * sw2 sw3 sw4 I/O Port + * off off off 0x330 - 0x333 (default) + * on off off 0x334 - 0x337 + * off on off 0x230 - 0x233 + * on on off 0x234 - 0x237 + * off off on 0x130 - 0x133 + * on off on 0x134 - 0x137 + * off on on reserved + * on on on reserved + * + * sw5 on disable floppy interface + * off enable floppy interface + * + * sw6 sw7 sw8 BIOS base address + * off off off 0xdc000 (default) + * on off off 0xd8000 + * off on off 0xd4000 + * on on off 0xd0000 + * off off on 0xcc000 + * on off on 0xc8000 + * off on on reserved + * on on on BIOS disabled + * + * source: http://download.adaptec.com/pdfs/installation_guides/1540cfig.pdf + */ + +#include "emu.h" +#include "aha1542.h" +#include "cpu/z80/z80.h" + +// I/O Port interface +// READ Port x+0: STATUS +// WRITE Port x+0: CONTROL +// +// READ Port x+1: DATA +// WRITE Port x+1: COMMAND +// +// READ Port x+2: INTERRUPT STATUS +// WRITE Port x+2: (undefined?) +// +// R/W Port x+3: (undefined) + +// READ STATUS flags +#define STAT_STST 0x80 // self-test in progress +#define STAT_DIAGF 0x40 // internal diagnostic failure +#define STAT_INIT 0x20 // mailbox initialization required +#define STAT_IDLE 0x10 // HBA is idle +#define STAT_CDFULL 0x08 // Command/Data output port is full +#define STAT_DFULL 0x04 // Data input port is full +#define STAT_INVCMD 0x01 // Invalid command + +// READ INTERRUPT STATUS flags +#define INTR_ANY 0x80 // any interrupt +#define INTR_SRCD 0x08 // SCSI reset detected +#define INTR_HACC 0x04 // HA command complete +#define INTR_MBOA 0x02 // MBO empty +#define INTR_MBIF 0x01 // MBI full + +// WRITE CONTROL commands +#define CTRL_HRST 0x80 // Hard reset +#define CTRL_SRST 0x40 // Soft reset +#define CTRL_IRST 0x20 // interrupt reset +#define CTRL_SCRST 0x10 // SCSI bus reset + +// READ/WRITE DATA commands +#define CMD_NOP 0x00 // No operation +#define CMD_MBINIT 0x01 // mailbox initialization +#define CMD_START_SCSI 0x02 // Start SCSI command +#define CMD_BIOSCMD 0x03 // undocumented BIOS conmmand (shadow RAM etc.) +#define CMD_INQUIRY 0x04 // Adapter inquiry +#define CMD_EMBOI 0x05 // enable Mailbox Out Interrupt +#define CMD_SELTIMEOUT 0x06 // Set SEL timeout +#define CMD_BUSON_TIME 0x07 // set bus-On time +#define CMD_BUSOFF_TIME 0x08 // set bus-off time +#define CMD_DMASPEED 0x09 // set ISA DMA speed +#define CMD_RETDEVS 0x0a // return installed devices +#define CMD_RETCONF 0x0b // return configuration data +#define CMD_TARGET 0x0c // set HBA to target mode +#define CMD_RETSETUP 0x0d // return setup data +#define CMD_ECHO 0x1f // ECHO command data (NetBSD says it is 0x1e) + +// these are for 1541C only: +#define CMD_RETDEVSHI 0x23 // return devices 8-15 (from NetBSD) +#define CMD_EXTBIOS 0x28 // return extended BIOS information +#define CMD_MBENABLE 0x29 // set mailbox interface enable + +DEFINE_DEVICE_TYPE(AHA1542, aha1542_device, "aha1542", "AHA1542 SCSI Controller") + +#define Z84C0010_TAG "u5" + +READ8_MEMBER( aha1542_device::aha1542_r ) +{ + logerror("%s aha1542_r(): offset=%d\n", machine().describe_context(), offset); + return 0xff; +} + +WRITE8_MEMBER( aha1542_device::aha1542_w ) +{ + logerror("%s aha1542_w(): offset=%d data=0x%02x\n", machine().describe_context(), offset, data); +} + +//------------------------------------------------- +// ROM( aha1542 ) +//------------------------------------------------- + +ROM_START( aha1542 ) + ROM_REGION( 0x8000, "aha1542", 0 ) + ROM_LOAD( "553601-00.u16", 0x0000, 0x8000, CRC(ab22fc02) SHA1(f9f783e0272fc14ba3de32316997f1f6cadc67d0) ) /* Adaptec 1540CF/1542CF BIOS v2.01 */ + + ROM_REGION( 0x8000, Z84C0010_TAG, 0 ) + ROM_LOAD( "553801-00.u15", 0x0000, 0x8000, CRC(7824397e) SHA1(35bc2c8fab31aad3190a478f2dc8f3a72958cf04) ) /* ADAPTEC, INC MCODE */ +ROM_END + +void aha1542_device::z84c0010_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom().region(Z84C0010_TAG, 0); + map(0x8000, 0x800f).noprw(); // something is mapped there + map(0x9000, 0xafff).ram(); // 2kb RAM chip + map(0xe000, 0xe0ff).ram(); // probably PC<->Z80 communication area + map(0xb000, 0xb000).noprw(); // something? +} + +const tiny_rom_entry *aha1542_device::device_rom_region() const +{ + return ROM_NAME( aha1542 ); +} + +MACHINE_CONFIG_START(aha1542_device::device_add_mconfig) + MCFG_DEVICE_ADD(Z84C0010_TAG, Z80, XTAL(12'000'000)) + MCFG_DEVICE_PROGRAM_MAP( z84c0010_mem ) +MACHINE_CONFIG_END + +aha1542_device::aha1542_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, AHA1542, tag, owner, clock), + device_isa16_card_interface(mconfig, *this) +{ +} + +void aha1542_device::device_start() +{ + set_isa_device(); + m_isa->install_rom(this, 0xdc000, 0xdffff, "aha1542", "aha1542"); + m_isa->install_device(0x330, 0x333, read8_delegate(FUNC( aha1542_device::aha1542_r ), this), + write8_delegate(FUNC( aha1542_device::aha1542_w ), this) ); +} + + +void aha1542_device::device_reset() +{ +} diff --git a/src/devices/bus/isa/aha1542.h b/src/devices/bus/isa/aha1542.h new file mode 100644 index 00000000000..cc84c2ea55b --- /dev/null +++ b/src/devices/bus/isa/aha1542.h @@ -0,0 +1,54 @@ +// license:BSD-3-Clause +// copyright-holders:Darkstar +/********************************************************************** + * + * Adaptec AHA-1542{,C,CF} SCSI Controller + * + ********************************************************************** + + + + **********************************************************************/ + +#ifndef MAME_BUS_AHA1542_H +#define MAME_BUS_AHA1542_H + +#pragma once + + +#include "isa.h" + +//********************************************************************* +// TYPE DEFINITIONS +//********************************************************************* + +// ====================> aha1542_device + +class aha1542_device : public device_t, + public device_isa16_card_interface +{ +public: + static constexpr feature_type unemulated_features() { return feature::DISK; } + // construction/destruction + aha1542_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + DECLARE_READ8_MEMBER( aha1542_r ); + DECLARE_WRITE8_MEMBER( aha1542_w ); + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // optional information overrides + virtual const tiny_rom_entry *device_rom_region() const override; + virtual void device_add_mconfig(machine_config &config) override; + +private: + void z84c0010_mem(address_map &map); +}; + +// device type definition +DECLARE_DEVICE_TYPE(AHA1542, aha1542_device) + +#endif // MAME_BUS_AHA1542_H diff --git a/src/devices/bus/isa/aha1542b.cpp b/src/devices/bus/isa/aha1542b.cpp deleted file mode 100644 index e0073cbbd68..00000000000 --- a/src/devices/bus/isa/aha1542b.cpp +++ /dev/null @@ -1,126 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Adaptec AHA-1540/42A and AHA-1540/42B SCSI controllers - - The alternate BIOSes using port 334h instead of 330h are provided due - to certain MIDI cards requiring the 330h port. - -***************************************************************************/ - -#include "emu.h" -#include "aha1542b.h" - -#include "cpu/i8085/i8085.h" -#include "machine/aic6250.h" -#include "machine/nscsi_bus.h" -#include "machine/nscsi_hd.h" - - -DEFINE_DEVICE_TYPE(AHA1542A, aha1542a_device, "aha1542a", "AHA-1542A SCSI Controller") -DEFINE_DEVICE_TYPE(AHA1542B, aha1542b_device, "aha1542b", "AHA-1542B SCSI Controller") - - -aha154x_device::aha154x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_fdc(*this, "fdc") - , m_bios(*this, "bios") -{ -} - -aha1542a_device::aha1542a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha154x_device(mconfig, AHA1542A, tag, owner, clock) -{ -} - -aha1542b_device::aha1542b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha154x_device(mconfig, AHA1542B, tag, owner, clock) -{ -} - -void aha154x_device::device_start() -{ -} - -void aha154x_device::i8085_map(address_map &map) -{ - map(0x0000, 0x3fff).rom().region("mcode", 0); - map(0x8000, 0x800f).m("scsi:7:scsic", FUNC(aic6250_device::map)); - map(0xe000, 0xe7ff).ram(); -} - -static void aha154x_scsi_devices(device_slot_interface &device) -{ - device.option_add("harddisk", NSCSI_HARDDISK); - device.option_add_internal("scsic", AIC6250); -} - -void aha154x_device::scsic_config(device_t *device) -{ - device->set_clock(20'000'000); - downcast<aic6250_device &>(*device).int_cb().set_inputline("^^localcpu", I8085_RST65_LINE); -} - -void aha154x_device::device_add_mconfig(machine_config &config) -{ - i8085a_cpu_device &localcpu(I8085A(config, "localcpu", 10'000'000)); - localcpu.set_addrmap(AS_PROGRAM, &aha154x_device::i8085_map); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", aha154x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7", aha154x_scsi_devices, "scsic", true) - .set_option_machine_config("scsic", [this] (device_t *device) { scsic_config(device); }); - - DP8473(config, m_fdc, 24_MHz_XTAL); -} - - -ROM_START(aha1542a) - ROM_REGION(0x4000, "bios", 0) - ROM_LOAD("b_9700.bin", 0x0000, 0x4000, CRC(35f546e9) SHA1(f559b08f52044f53836021a83f56f628e32216bd)) - - ROM_REGION(0x4000, "mcode", 0) - ROM_LOAD("m_e7bc.bin", 0x0000, 0x4000, CRC(985b7a31) SHA1(bba0d84fa1b67ea71905953c25201fa2020cf465)) -ROM_END - -ROM_START(aha1542b) - ROM_REGION(0x4000, "bios", 0) - ROM_SYSTEM_BIOS(0, "v310", "AT/SCSI BIOS Version 3.10") - ROMX_LOAD("adaptec_inc_420412-00_b_bios_bc00_1990.bin", 0x0000, 0x4000, CRC(bd3f74e7) SHA1(c38d82fd50e5439812fa093e0d4f5fd136c63844), ROM_BIOS(0)) - ROM_SYSTEM_BIOS(1, "v310a", "AT/SCSI BIOS Version 3.10A (port 334h)") - ROMX_LOAD("154xp334.bin", 0x0000, 0x4000, CRC(4911f232) SHA1(2e24ce380c6f7694c45484019857cb919e2a9965), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(2, "v311", "AT/SCSI BIOS Version 3.11") - ROMX_LOAD("bios_c900.u13", 0x0000, 0x4000, CRC(4660d0c1) SHA1(a581291de96836b6f6cc0b6244b8fa1ee333346a), ROM_BIOS(2)) - ROM_SYSTEM_BIOS(3, "v320g", "AT/SCSI BIOS Version 3.20 (> 1 GB support)") - ROMX_LOAD("b_bd00.bin", 0x0000, 0x4000, CRC(2387197b) SHA1(703e1fe1ba924c02d617ac37ec7a20e12bef1cc7), ROM_BIOS(3)) - ROM_SYSTEM_BIOS(4, "v320gt", "AT/SCSI BIOS Version 3.20 (extended timeout)") - ROMX_LOAD("b_b300.bin", 0x0000, 0x4000, CRC(4c5b07d8) SHA1(692e824f916f55519c9905839f5f6609f5e8c0a5), ROM_BIOS(4)) - ROM_SYSTEM_BIOS(5, "v320a", "AT/SCSI BIOS Version 3.20Alt (port 334h)") - ROMX_LOAD("b_ac00.bin", 0x0000, 0x4000, CRC(becd6d08) SHA1(b5e7cbdeb241c1ff57602291e87c58ac0ee72d54), ROM_BIOS(5)) - - ROM_REGION(0x4000, "mcode", 0) - ROMX_LOAD("adaptec_inc_434108-00_a_mcode_fc8a_1990.bin", 0x0000, 0x4000, CRC(6801f89e) SHA1(33d36bc93734105b950414e7c433a283032838e9), ROM_BIOS(0)) - ROMX_LOAD("adaptec_inc_434108-00_a_mcode_fc8a_1990.bin", 0x0000, 0x4000, CRC(6801f89e) SHA1(33d36bc93734105b950414e7c433a283032838e9), ROM_BIOS(1)) // assumed compatible with v310a BIOS - ROMX_LOAD("firmware_62d3.u12", 0x0000, 0x4000, CRC(6056ca33) SHA1(8dd4aaffcb107dbcc85ac87d878fa6093b904a20), ROM_BIOS(2)) - ROMX_LOAD("m_3054.bin", 0x0000, 0x4000, CRC(461b1885) SHA1(50dc49b0fd88b116b83e3c71f58c758b618d1ddf), ROM_BIOS(3)) - ROMX_LOAD("m_5d98.bin", 0x0000, 0x4000, CRC(f7d51536) SHA1(5ad1bb4bde3e8c30380b05d32ac273c781ab12a8), ROM_BIOS(4)) // also provided with v320g BIOS - ROMX_LOAD("m_3054.bin", 0x0000, 0x4000, CRC(461b1885) SHA1(50dc49b0fd88b116b83e3c71f58c758b618d1ddf), ROM_BIOS(5)) -ROM_END - -const tiny_rom_entry *aha1542a_device::device_rom_region() const -{ - return ROM_NAME(aha1542a); -} - -const tiny_rom_entry *aha1542b_device::device_rom_region() const -{ - return ROM_NAME(aha1542b); -} diff --git a/src/devices/bus/isa/aha1542b.h b/src/devices/bus/isa/aha1542b.h deleted file mode 100644 index 95e379cb137..00000000000 --- a/src/devices/bus/isa/aha1542b.h +++ /dev/null @@ -1,57 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Adaptec AHA-1540/42A and AHA-1540/42B SCSI controllers - -***************************************************************************/ - -#ifndef MAME_BUS_ISA_AHA1542B_H -#define MAME_BUS_ISA_AHA1542B_H - -#pragma once - -#include "isa.h" -#include "machine/upd765.h" - -class aha154x_device : public device_t, public device_isa16_card_interface -{ -protected: - aha154x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); - - virtual void device_start() override; - virtual void device_add_mconfig(machine_config &config) override; - - void i8085_map(address_map &map); - void scsic_config(device_t *device); - - required_device<upd765_family_device> m_fdc; - required_region_ptr<u8> m_bios; -}; - -class aha1542a_device : public aha154x_device -{ -public: - aha1542a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -class aha1542b_device : public aha154x_device -{ -public: - aha1542b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -DECLARE_DEVICE_TYPE(AHA1542A, aha1542a_device) -DECLARE_DEVICE_TYPE(AHA1542B, aha1542b_device) - -#endif // MAME_BUS_ISA_AHA1542B_H diff --git a/src/devices/bus/isa/aha1542c.cpp b/src/devices/bus/isa/aha1542c.cpp deleted file mode 100644 index efb8181061c..00000000000 --- a/src/devices/bus/isa/aha1542c.cpp +++ /dev/null @@ -1,323 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Darkstar -/********************************************************************** - * - * Adaptec AHA-1542{C,CF,CP} SCSI Controller - * - **********************************************************************/ - -/* -Hardware info by Guru - -Adaptec 1993 - -PCB Layout ----------- - -Adaptec AHA-1542CF/1542CF -FCC ID: FGT1542CF -FAB 545107-00 REV C -ASSY 545106-00 - -|-------|---------------|---|-------------------|--| -| J1 | FLOPPY34 | | SCSI50 | | -| |---------------| |-------------------| | -| S1 DS1 | -| | -| |------| DS2107AS DS2107AS |--| -| |PC8477| 24MHz Z84C0010 | | -| PAL |BV-1 | |S | -| | | |----------| | | -| |------| | | |C | -| 93C46.U11 20MHz | | | | -| UM6264 MCODE.U15 |ADAPTEC | |S | -| |AIC-7970Q | | | -| BIOS.U16 | | |I | -| | | | | -| |----------| |--| -| | -|-| |--| |----| - |--------------| |-------------------------| - -Notes: - J1 - 4-position header for drive activity external LED connection - S1 - 8-position DIP Switch (See Table A) - PC8477BV-1 - National Semiconductor PC8477BV-1 'SuperFDC' Advanced Floppy Disk Controller (PLCC68) - This is software compatible with NEC uPD765 and pin compatible with Intel 82077AA - Labelled "AHA-1542CF/552800-01 F/9513" - Clock input 24.000MHz - SCSI - 50-pin Centronics style external SCSI connector (DDK 57AE-40500-21D) - Z84C0010 - Zilog Z84C0010VEC Z80 CPU. Clock input 20/2 [10.000MHz] sourced from AIC-7970Q (PLCC44) - 93C46.U11 - Atmel 93C46 128b x8-bit / 64b x16-bit (1kB) EEPROM labelled '545120A' (SOIC8) - 6264 - Unicorn Microelectronics UM6264BM-10L 8k x8-bit Static RAM (SOJ28) - MCODE.U15 - ST Microelectronics M27C256B 32k x8-bit EPROM labelled 'ADAPTEC INC 553801-00 E MCODE 4B81' (DIP28) - BIOS.U16 - ST Microelectronics M27C256B 32k x8-bit EPROM labelled 'ADAPTEC INC 553601-00 E BIOS 7600' (DIP28) - BIOS 0x7600h is revision 2.10 - PAL - AMD PALCE16V8H-15JC/4 PAL (SOJ20) - AIC-7970Q - Adaptec AIC-7970Q Fast SCSI Controller IC. Clock input 20.000MHz (QFP144) - DS2107AS - Dallas DS2107AS SCSI Active Terminator (SOIC16) - DS1 - Internal Drive Activity LED - SCSI50 - 50-pin Right Angled Flat Cable Connector With Support For Up To 7 SCSI Drives - FLOPPY34 - 34-pin Right Angled Flat Cable Connector With Support For Up To 2 Floppy Drives (360kb,720kb,1.2MB,1.44MB) - - -Table A - S1 DIP Switch Description ------------------------------------ - -Default: All DIP Switches OFF (i.e. Settings changed via BIOS and saved in EEPROM) -Software Defaults = * -----------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - | SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | SW7 | SW8 | -----------------------|-----+-----+-----+-----+-----+-----+-----+-----+ -Termination Enabled | ON | | | | | | | | - Set In BIOS*| OFF | | | | | | | | -----------------------+-----+-----+-----+-----+ | | | | -I/O Port 330H*| | OFF | OFF | OFF | | | | | - 334H | | ON | OFF | OFF | | | | | - 230H | | OFF | ON | OFF | | | | | - 234H | | ON | ON | OFF | | | | | - 130H | | OFF | OFF | ON | | | | | - 134H | | ON | OFF | ON | | | | | - Reserved | | OFF | ON | ON | | | | | - Reserved | | ON | ON | ON | | | | | -----------------------+-----+-----+-----+-----+-----+ | | | -Enable Floppy Yes*| | OFF | | | | - No | | ON | | | | -----------------------+-----------------------+-----+-----+-----+-----+ -BIOS Address DC000H*| | OFF | OFF | OFF | - D8000H | | ON | OFF | OFF | - D4000H | | OFF | ON | OFF | - D0000H | | ON | ON | OFF | - CC000H | | OFF | OFF | ON | - C8000H | | ON | OFF | ON | - Reserved | | OFF | ON | ON | - BIOS Disabled | | ON | ON | ON | -----------------------+-----------------------------+-----+-----+-----+ - -Documentation: -Adaptec AHA-1540CF/1542CF Installation Guide -http://download.adaptec.com/pdfs/installation_guides/aha1540cf_ig.pdf - */ - -#include "emu.h" -#include "aha1542c.h" -#include "cpu/z80/z80.h" - -// I/O Port interface -// READ Port x+0: STATUS -// WRITE Port x+0: CONTROL -// -// READ Port x+1: DATA -// WRITE Port x+1: COMMAND -// -// READ Port x+2: INTERRUPT STATUS -// WRITE Port x+2: (undefined?) -// -// R/W Port x+3: (undefined) - -// READ STATUS flags -#define STAT_STST 0x80 // self-test in progress -#define STAT_DIAGF 0x40 // internal diagnostic failure -#define STAT_INIT 0x20 // mailbox initialization required -#define STAT_IDLE 0x10 // HBA is idle -#define STAT_CDFULL 0x08 // Command/Data output port is full -#define STAT_DFULL 0x04 // Data input port is full -#define STAT_INVCMD 0x01 // Invalid command - -// READ INTERRUPT STATUS flags -#define INTR_ANY 0x80 // any interrupt -#define INTR_SRCD 0x08 // SCSI reset detected -#define INTR_HACC 0x04 // HA command complete -#define INTR_MBOA 0x02 // MBO empty -#define INTR_MBIF 0x01 // MBI full - -// WRITE CONTROL commands -#define CTRL_HRST 0x80 // Hard reset -#define CTRL_SRST 0x40 // Soft reset -#define CTRL_IRST 0x20 // interrupt reset -#define CTRL_SCRST 0x10 // SCSI bus reset - -// READ/WRITE DATA commands -#define CMD_NOP 0x00 // No operation -#define CMD_MBINIT 0x01 // mailbox initialization -#define CMD_START_SCSI 0x02 // Start SCSI command -#define CMD_BIOSCMD 0x03 // undocumented BIOS conmmand (shadow RAM etc.) -#define CMD_INQUIRY 0x04 // Adapter inquiry -#define CMD_EMBOI 0x05 // enable Mailbox Out Interrupt -#define CMD_SELTIMEOUT 0x06 // Set SEL timeout -#define CMD_BUSON_TIME 0x07 // set bus-On time -#define CMD_BUSOFF_TIME 0x08 // set bus-off time -#define CMD_DMASPEED 0x09 // set ISA DMA speed -#define CMD_RETDEVS 0x0a // return installed devices -#define CMD_RETCONF 0x0b // return configuration data -#define CMD_TARGET 0x0c // set HBA to target mode -#define CMD_RETSETUP 0x0d // return setup data -#define CMD_ECHO 0x1f // ECHO command data (NetBSD says it is 0x1e) - -// these are for 1541C only: -#define CMD_RETDEVSHI 0x23 // return devices 8-15 (from NetBSD) -#define CMD_EXTBIOS 0x28 // return extended BIOS information -#define CMD_MBENABLE 0x29 // set mailbox interface enable - -DEFINE_DEVICE_TYPE(AHA1542C, aha1542c_device, "aha1542c", "AHA-1542C SCSI Controller") -DEFINE_DEVICE_TYPE(AHA1542CF, aha1542cf_device, "aha1542cf", "AHA-1542CF SCSI Controller") -DEFINE_DEVICE_TYPE(AHA1542CP, aha1542cp_device, "aha1542cp", "AHA-1542CP SCSI Controller") - -#define Z84C0010_TAG "z84c0010" - -READ8_MEMBER( aha1542c_device::aha1542_r ) -{ - logerror("%s aha1542_r(): offset=%d\n", machine().describe_context(), offset); - return 0xff; -} - -WRITE8_MEMBER( aha1542c_device::aha1542_w ) -{ - logerror("%s aha1542_w(): offset=%d data=0x%02x\n", machine().describe_context(), offset, data); -} - - -ROM_START( aha1542c ) - ROM_REGION( 0x8000, "aha1542", 0 ) - ROM_SYSTEM_BIOS( 0, "v101", "AHA-1540C/1542C BIOS v1.01" ) - ROMX_LOAD( "adaptec_inc_534201-00_d_bios_144c_1993.u15", 0x0000, 0x8000, CRC(35178004) SHA1(2b38f2e40cd02a1b32966ead7b202b0fca130cb8), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS( 1, "v102", "AHA-1540C/1542C BIOS v1.02" ) - ROMX_LOAD( "b_91c5.bin", 0x0000, 0x8000, CRC(076ac252) SHA1(d640b980e85d07029d8ce11a52fa26ba0f93c5de), ROM_BIOS(1) ) - - ROM_REGION( 0x8000, Z84C0010_TAG, 0 ) - ROMX_LOAD( "adaptec_inc_534001-00_d_mcode_a3c2_1993.u5", 0x0000, 0x8000, CRC(220dd5a2) SHA1(4fc51c9dd63b45a50edcd56baa706d61decbef38), ROM_BIOS(0) ) - ROMX_LOAD( "m_866a.bin", 0x0000, 0x8000, CRC(ef09053a) SHA1(ae7900653357d5f32a2734bc13d9ec63bd805597), ROM_BIOS(1) ) -ROM_END - -ROM_START( aha1542cf ) - ROM_REGION( 0x8000, "aha1542", 0 ) - ROM_SYSTEM_BIOS( 0, "v201", "Adaptec 1540CF/1542CF BIOS v2.01" ) - ROMX_LOAD( "adaptec_inc_553601-00_c_bios_c38d_1993.u16", 0x0000, 0x8000, CRC(ab22fc02) SHA1(f9f783e0272fc14ba3de32316997f1f6cadc67d0), ROM_BIOS(0) ) - ROM_SYSTEM_BIOS( 1, "v210", "Adaptec 1540CF/1542CF BIOS v2.10" ) - ROMX_LOAD( "adaptec_inc_553601-00_e_bios_7600_1994.u16", 0x0000, 0x8000, CRC(8f3a2692) SHA1(b9dbd49baeec55098195131d0ed1a9bfe8463640), ROM_BIOS(1) ) - ROM_SYSTEM_BIOS( 2, "v211", "Adaptec 1540CF/1542CF BIOS v2.11" ) - ROMX_LOAD( "adaptec_inc_553601-00_g_bios_b402_1995.u16", 0x0000, 0x8000, CRC(fddd0b83) SHA1(aabd227cb338d8812e0bb5c17c08ea06c5aedd36), ROM_BIOS(2) ) - - ROM_REGION( 0x8000, Z84C0010_TAG, 0 ) - ROMX_LOAD( "adaptec_inc_553801-00_c_mcode_563d_1993.u15", 0x0000, 0x8000, CRC(7824397e) SHA1(35bc2c8fab31aad3190a478f2dc8f3a72958cf04), ROM_BIOS(0) ) - ROMX_LOAD( "adaptec_inc_553801-00_e_mcode_4b81_1994.u15", 0x0000, 0x8000, CRC(dd651476) SHA1(cda508281302be53ebdcf8daa61754c89ad12111), ROM_BIOS(1) ) - ROMX_LOAD( "adaptec_inc_553801-00_g_mcode_2cde_1995.u15", 0x0000, 0x8000, CRC(896873cd) SHA1(6edbdd9b0b15ef31ca0741cac31556d2d5266b6e), ROM_BIOS(2) ) -ROM_END - -ROM_START( aha1542cp ) - ROM_REGION( 0x8000, "aha1542", 0 ) - ROM_LOAD( "adaptec_inc_908501-00_d_bios_a91e_1995.u7", 0x0000, 0x8000, CRC(0646c35e) SHA1(3a7c2731abd8295438cfa1f2a525be53e9512b1a) ) - - ROM_REGION( 0x8000, Z84C0010_TAG, 0 ) - ROM_LOAD( "908301-00_f_mcode_17c9.u12", 0x0000, 0x8000, CRC(04494022) SHA1(431dfc26312556ddd24fccc429b2b3e93bac5c2f) ) -ROM_END - - -u8 aha1542c_device::local_status_r() -{ - return m_eeprom->do_read() << 7; -} - -void aha1542c_device::local_latch_w(u8 data) -{ - m_eeprom->cs_write(BIT(data, 2)); - m_eeprom->clk_write(BIT(data, 1)); - m_eeprom->di_write(BIT(data, 0)); - // TODO: several other bits are used -} - -void aha1542c_device::z84c0010_mem(address_map &map) -{ - map(0x0000, 0x7fff).rom().region(Z84C0010_TAG, 0); - map(0x8000, 0x9fff).ram(); // 2kb RAM chip - map(0xa000, 0xa000).r(FUNC(aha1542c_device::local_status_r)); - map(0xb000, 0xb000).w(FUNC(aha1542c_device::local_latch_w)); - map(0xe000, 0xe0ff).ram(); // probably PC<->Z80 communication area - map(0xe003, 0xe003).lr8("e003_r", []() { return 0x20; }); -} - -u8 aha1542cp_device::eeprom_r() -{ - return m_eeprom->do_read(); -} - -void aha1542cp_device::eeprom_w(u8 data) -{ - m_eeprom->cs_write(BIT(data, 2)); - m_eeprom->clk_write(BIT(data, 1)); - m_eeprom->di_write(BIT(data, 0)); -} - -void aha1542cp_device::local_mem(address_map &map) -{ - map(0x0000, 0x7fff).rom().region(Z84C0010_TAG, 0); - map(0x8000, 0x9fff).ram(); - map(0xc001, 0xc001).rw(FUNC(aha1542cp_device::eeprom_r), FUNC(aha1542cp_device::eeprom_w)); - map(0xe003, 0xe003).nopr(); -} - -const tiny_rom_entry *aha1542c_device::device_rom_region() const -{ - return ROM_NAME( aha1542c ); -} - -const tiny_rom_entry *aha1542cf_device::device_rom_region() const -{ - return ROM_NAME( aha1542cf ); -} - -const tiny_rom_entry *aha1542cp_device::device_rom_region() const -{ - return ROM_NAME( aha1542cp ); -} - -void aha1542c_device::device_add_mconfig(machine_config &config) -{ - z80_device &cpu(Z80(config, Z84C0010_TAG, 10'000'000)); - cpu.set_addrmap(AS_PROGRAM, &aha1542c_device::z84c0010_mem); - - EEPROM_93C46_16BIT(config, m_eeprom); -} - -void aha1542cp_device::device_add_mconfig(machine_config &config) -{ - z80_device &cpu(Z80(config, Z84C0010_TAG, 10'000'000)); - cpu.set_addrmap(AS_PROGRAM, &aha1542cp_device::local_mem); - - EEPROM_93C46_16BIT(config, m_eeprom); -} - -aha1542c_device::aha1542c_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_eeprom(*this, "eeprom") -{ -} - -aha1542c_device::aha1542c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha1542c_device(mconfig, AHA1542C, tag, owner, clock) -{ -} - -aha1542cf_device::aha1542cf_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha1542c_device(mconfig, AHA1542CF, tag, owner, clock) -{ -} - -aha1542cp_device::aha1542cp_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha1542c_device(mconfig, AHA1542CP, tag, owner, clock) -{ -} - -void aha1542c_device::device_start() -{ - set_isa_device(); - m_isa->install_rom(this, 0xdc000, 0xdffff, "aha1542", "aha1542"); - m_isa->install_device(0x330, 0x333, read8_delegate(FUNC( aha1542cf_device::aha1542_r ), this), - write8_delegate(FUNC( aha1542cf_device::aha1542_w ), this) ); -} - - -void aha1542c_device::device_reset() -{ -} diff --git a/src/devices/bus/isa/aha1542c.h b/src/devices/bus/isa/aha1542c.h deleted file mode 100644 index 2294096bde7..00000000000 --- a/src/devices/bus/isa/aha1542c.h +++ /dev/null @@ -1,95 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Darkstar -/********************************************************************** - * - * Adaptec AHA-1542{C,CF,CP} SCSI Controller - * - ********************************************************************** - - - - **********************************************************************/ - -#ifndef MAME_BUS_AHA1542C_H -#define MAME_BUS_AHA1542C_H - -#pragma once - - -#include "isa.h" -#include "machine/eepromser.h" - -//********************************************************************* -// TYPE DEFINITIONS -//********************************************************************* - -// ====================> aha1542cf_device - -class aha1542c_device : public device_t, - public device_isa16_card_interface -{ -public: - static constexpr feature_type unemulated_features() { return feature::DISK; } - // construction/destruction - aha1542c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - DECLARE_READ8_MEMBER( aha1542_r ); - DECLARE_WRITE8_MEMBER( aha1542_w ); - -protected: - aha1542c_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - - u8 local_status_r(); - void local_latch_w(u8 data); - - // device-level overrides - virtual void device_start() override; - virtual void device_reset() override; - - // optional information overrides - virtual const tiny_rom_entry *device_rom_region() const override; - virtual void device_add_mconfig(machine_config &config) override; - - required_device<eeprom_serial_93cxx_device> m_eeprom; - -private: - void z84c0010_mem(address_map &map); -}; - -// ====================> aha1542cf_device - -class aha1542cf_device : public aha1542c_device -{ -public: - // construction/destruction - aha1542cf_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - -protected: - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -// ====================> aha1542cp_device - -class aha1542cp_device : public aha1542c_device -{ -public: - // construction/destruction - aha1542cp_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - -private: - u8 eeprom_r(); - void eeprom_w(u8 data); - - void local_mem(address_map &map); -}; - -// device type definitions -DECLARE_DEVICE_TYPE(AHA1542C, aha1542c_device) -DECLARE_DEVICE_TYPE(AHA1542CF, aha1542cf_device) -DECLARE_DEVICE_TYPE(AHA1542CP, aha1542cp_device) - -#endif // MAME_BUS_AHA1542C_H diff --git a/src/devices/bus/isa/aha174x.cpp b/src/devices/bus/isa/aha174x.cpp deleted file mode 100644 index 06b6ddf5f62..00000000000 --- a/src/devices/bus/isa/aha174x.cpp +++ /dev/null @@ -1,160 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Adaptec AHA-1740/44 and AHA-1740A/42A Fast SCSI host adapters - - These are actually EISA cards, though they also have a compatibility - mode that provides an interface like the older ISA AHA-154X series. - - On the AHA-1740 and AHA-1744, the HPC microcode is stored in an EEPROM - (of unknown type), allowing it to be reprogrammed by the host. This is - not possible on the AHA-1740A and AHA-1744A, which use a conventional - 27C256 EPROM for the microcode. In both cases the HPC copies the code - to and then executes it out of RAM. - - Though the AHA-1740 and AHA-1740A have different board layouts, they - share the following ICs: - - AIC-565 Bus Auxiliary Interface Chip - AIC-575 EISA Configuration Chip - AIC-4600 HPC (HPC46003V20) - AIC-6251A SCSI Interface and Protocol Chip - IDT7201 512x9 FIFO (2 on board) - Intel 82355 Bus Master Interface Controller - - AHA-1742A is the same as AHA-1740A, only with the FDC populated. - - AHA-1744 uses the same layout as AHA-1740, but populates the area - around the SCSI port with DS36F95J differential drivers. - -***************************************************************************/ - -#include "emu.h" -#include "aha174x.h" - -#include "machine/aic6250.h" -//#include "machine/i82355.h" -#include "machine/nscsi_bus.h" -#include "machine/nscsi_hd.h" - -DEFINE_DEVICE_TYPE(AHA1740, aha1740_device, "aha1740", "AHA-1740 Fast SCSI Host Adapter") -DEFINE_DEVICE_TYPE(AHA1742A, aha1742a_device, "aha1742a", "AHA-1742A Fast SCSI Host Adapter") - - -aha174x_device::aha174x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_hpc(*this, "hpc") - , m_bios(*this, "bios") -{ -} - -aha1740_device::aha1740_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha174x_device(mconfig, AHA1740, tag, owner, clock) -{ -} - -aha1742a_device::aha1742a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : aha174x_device(mconfig, AHA1742A, tag, owner, clock) - , m_fdc(*this, "fdc") -{ -} - -void aha174x_device::device_start() -{ -} - - -void aha174x_device::hpc_map(address_map &map) -{ - map(0x5000, 0x500f).m("scsi:7:scsic", FUNC(aic6251a_device::map)); - map(0x8000, 0xffff).rom().region("mcode", 0); -} - -static void aha174x_scsi_devices(device_slot_interface &device) -{ - device.option_add("harddisk", NSCSI_HARDDISK); - device.option_add_internal("scsic", AIC6251A); -} - -void aha174x_device::scsic_config(device_t *device) -{ - device->set_clock(40_MHz_XTAL / 2); // divider not verified -} - -void aha1740_device::device_add_mconfig(machine_config &config) -{ - HPC46003(config, m_hpc, 40_MHz_XTAL / 2); - m_hpc->set_addrmap(AS_PROGRAM, &aha1740_device::hpc_map); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7", aha174x_scsi_devices, "scsic", true) - .set_option_machine_config("scsic", [this] (device_t *device) { scsic_config(device); }); -} - -void aha1742a_device::device_add_mconfig(machine_config &config) -{ - HPC46003(config, m_hpc, 40_MHz_XTAL / 2); - m_hpc->set_addrmap(AS_PROGRAM, &aha1742a_device::hpc_map); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", aha174x_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7", aha174x_scsi_devices, "scsic", true) - .set_option_machine_config("scsic", [this] (device_t *device) { scsic_config(device); }); - - N82077AA(config, m_fdc, 24_MHz_XTAL); -} - - -ROM_START(aha1740) - ROM_REGION(0x4000, "bios", 0) - ROM_LOAD("b_dc00.bin", 0x0000, 0x4000, CRC(056d75ec) SHA1(8ca143adfc7d20ad5d49f14dedabc8276454bf9e)) - - ROM_REGION16_LE(0x8000, "mcode", 0) - ROM_SYSTEM_BIOS(0, "v140st", "BIOS v1.40 (Standard Mode)") - ROMX_LOAD("standard.bin", 0x0000, 0x8000, CRC(8c15c6a2) SHA1(77e15b0244e3a814f53f957270e6474a8a839955), ROM_BIOS(0)) - ROM_SYSTEM_BIOS(1, "v140en", "BIOS v1.40 (Enhanced Mode)") - ROMX_LOAD("enhanced.bin", 0x0000, 0x8000, CRC(84b3df89) SHA1(a718c3ea5443a609b4b20bfe48be18193737ad25), ROM_BIOS(1)) - // Adaptec's help file claims that "the EEPROM on the board can hold firmware for both modes simultaneously." - // The AHA-174XA firmware images obviously have this, but the files provided here do not agree. -ROM_END - -ROM_START(aha1742a) - ROM_REGION(0x4000, "bios", 0) - ROM_DEFAULT_BIOS("v140") - ROM_SYSTEM_BIOS(0, "v134", "BIOS v1.34") - ROMX_LOAD("adaptec_inc_450214-00_a_bios_8800_1991.u47", 0x0000, 0x4000, CRC(6cf06151) SHA1(0da45634b12b33fc886920d065cc8ffb2cf376b8), ROM_BIOS(0)) - ROM_SYSTEM_BIOS(1, "v140", "BIOS v1.40") - ROMX_LOAD("adaptec_inc_450216-00_a_bios_dc00_1992.u47", 0x0000, 0x4000, CRC(056d75ec) SHA1(8ca143adfc7d20ad5d49f14dedabc8276454bf9e), ROM_BIOS(1)) - ROM_SYSTEM_BIOS(2, "v140s", "BIOS v1.40 (Extended Timeout)") - ROMX_LOAD("b_f100.bin", 0x0000, 0x4000, CRC(b695acc0) SHA1(683112fafdf83d5eb89237d9215f7d6eacc6eeaf), ROM_BIOS(2)) - - ROM_REGION16_LE(0x8000, "mcode", 0) - ROMX_LOAD("adaptec_inc_450117-00_c_mcode_23a8_1991.u10", 0x0000, 0x8000, NO_DUMP, ROM_BIOS(0)) - ROMX_LOAD("adaptec_inc_450113-00_d_mcode_b7d6_1992.u10", 0x0000, 0x8000, CRC(0a55a555) SHA1(ff400f56b33f0ad94e34564d7715a0773b335844), ROM_BIOS(1)) - ROMX_LOAD("m_c7b8.bin", 0x0000, 0x8000, CRC(21282e86) SHA1(18cb3960dc47f2c14beb88f9680c1f66c4652b04), ROM_BIOS(2)) -ROM_END - -const tiny_rom_entry *aha1740_device::device_rom_region() const -{ - return ROM_NAME(aha1740); -} - -const tiny_rom_entry *aha1742a_device::device_rom_region() const -{ - return ROM_NAME(aha1742a); -} diff --git a/src/devices/bus/isa/aha174x.h b/src/devices/bus/isa/aha174x.h deleted file mode 100644 index f65ee7de93a..00000000000 --- a/src/devices/bus/isa/aha174x.h +++ /dev/null @@ -1,61 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Adaptec AHA-1540/42A and AHA-1540/42B SCSI controllers - -***************************************************************************/ - -#ifndef MAME_BUS_ISA_AHA174X_H -#define MAME_BUS_ISA_AHA174X_H - -#pragma once - -#include "isa.h" -#include "cpu/hpc/hpc.h" -#include "machine/upd765.h" - -class aha174x_device : public device_t, public device_isa16_card_interface -{ -protected: - aha174x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); - - virtual void device_start() override; - - void hpc_map(address_map &map); - void scsic_config(device_t *device); - - required_device<hpc46003_device> m_hpc; - required_region_ptr<u8> m_bios; -}; - -class aha1740_device : public aha174x_device -{ -public: - aha1740_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -class aha1742a_device : public aha174x_device -{ -public: - aha1742a_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - - required_device<upd765_family_device> m_fdc; -}; - -DECLARE_DEVICE_TYPE(AHA1740, aha1740_device) -DECLARE_DEVICE_TYPE(AHA1742A, aha1742a_device) - -#endif // MAME_BUS_ISA_AHA174X_H diff --git a/src/devices/bus/isa/bt54x.cpp b/src/devices/bus/isa/bt54x.cpp deleted file mode 100644 index d8ef31a848f..00000000000 --- a/src/devices/bus/isa/bt54x.cpp +++ /dev/null @@ -1,201 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - BusTek/BusLogic BT-54x series PC/AT SCSI host adapters - - The earlier version of the BT-542B, with BusTek labels, has a NCR 86C05 - bus controller where a later version has the 80C20 ASIC instead. It is - believed that these chips are largely compatible with each other, as - are the NCR 53CF94 and Emulex FAS216 SCSI controllers. - - 2.41/2.21 is the last BIOS version compatible with revisions A-G of - the BT-542B. - -***************************************************************************/ - -#include "emu.h" -#include "bt54x.h" - -#include "machine/ncr5390.h" -//#include "machine/ncr86c05.h" -#include "machine/nscsi_cd.h" -#include "machine/nscsi_hd.h" - -DEFINE_DEVICE_TYPE(BT542B, bt542b_device, "bt542b", "BusTek BT-542B SCSI Host Adapter") // Rev. G or earlier -DEFINE_DEVICE_TYPE(BT542BH, bt542bh_device, "bt542bh", "BusLogic BT-542B SCSI Host Adapter (Rev. H)") -DEFINE_DEVICE_TYPE(BT545S, bt545s_device, "bt545s", "BusLogic BT-545S Fast SCSI Host Adapter") - -bt54x_device::bt54x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_mpu(*this, "mpu") - , m_fdc(*this, "fdc") - , m_bios(*this, "bios") -{ -} - -bt542b_device::bt542b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : bt54x_device(mconfig, BT542B, tag, owner, clock) -{ -} - -bt542bh_device::bt542bh_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : bt54x_device(mconfig, BT542BH, tag, owner, clock) -{ -} - -bt545s_device::bt545s_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : bt54x_device(mconfig, BT545S, tag, owner, clock) -{ -} - -void bt54x_device::device_start() -{ -} - -u8 bt54x_device::local_status_r() -{ - return 0; -} - -void bt54x_device::local_map(address_map &map) -{ - map(0x00000, 0x01fff).ram(); - //map(0x02000, 0x0201f).rw("busintf", FUNC(ncr86c05_device::local_read), FUNC(ncr86c05_device::local_write)); - map(0x02080, 0x0208f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map)); - map(0x02180, 0x02180).r(FUNC(bt54x_device::local_status_r)); - map(0xf8000, 0xfffff).rom().region("mpu", 0); -} - -static void scsi_devices(device_slot_interface &device) -{ - device.option_add("cdrom", NSCSI_CDROM); - device.option_add("harddisk", NSCSI_HARDDISK); - device.option_add_internal("scsic", NCR53C94); -} - -static void fast_scsi_devices(device_slot_interface &device) -{ - device.option_add("cdrom", NSCSI_CDROM); - device.option_add("harddisk", NSCSI_HARDDISK); - device.option_add_internal("scsic", NCR53CF94); // FAS216 -} - -void bt54x_device::asc_config(device_t *device) -{ - ncr53c94_device &asc = downcast<ncr53c94_device &>(*device); - - asc.set_clock(25_MHz_XTAL); // not verified; perhaps selectable? (40 MHz XTAL also on board) - - asc.irq_handler_cb().set(m_mpu, FUNC(i80188_cpu_device::int0_w)); - //asc.drq_handler_cb().set("busintf", FUNC(ncr86c05_device::dma_req_w)); -} - -void bt54x_device::fsc_config(device_t *device) -{ - ncr53cf94_device &fsc = downcast<ncr53cf94_device &>(*device); - - fsc.set_clock(40_MHz_XTAL); - - fsc.irq_handler_cb().set(m_mpu, FUNC(i80188_cpu_device::int0_w)); // mostly polled on BT-545S - //fsc.drq_handler_cb().set("busintf", FUNC(ncr86c05_device::dma_req_w)); -} - -void bt54x_device::fsc_base(machine_config &config) -{ - //ncr86c05_device &busintf(NCR86C05(config, "busintf", 0)); - //busintf.mint_callback().set(m_mpu, FUNC(i80188_cpu_device::int1_w)); - //busintf.dma_ack_callback().set("scsi:7:scsic", FUNC(ncr53cf94_device::dma_w)); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", fast_scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7", fast_scsi_devices, "scsic", true).set_option_machine_config("scsic", [this] (device_t *device) { fsc_config(device); }); -} - -void bt542b_device::device_add_mconfig(machine_config &config) -{ - I80188(config, m_mpu, 16_MHz_XTAL); - m_mpu->set_addrmap(AS_PROGRAM, &bt542b_device::local_map); - - //ncr86c05_device &busintf(NCR86C05(config, "busintf", 0)); - //busintf.mint_callback().set(m_mpu, FUNC(i80188_cpu_device::int1_w)); - //busintf.dma_ack_callback().set("scsi:7:scsic", FUNC(ncr53c94_device::dma_w)); - - NSCSI_BUS(config, "scsi"); - NSCSI_CONNECTOR(config, "scsi:0", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:1", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:2", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:3", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:4", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:5", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:6", scsi_devices, nullptr); - NSCSI_CONNECTOR(config, "scsi:7", scsi_devices, "scsic", true).set_option_machine_config("scsic", [this] (device_t *device) { asc_config(device); }); - - DP8473(config, m_fdc, 24_MHz_XTAL); -} - -void bt542bh_device::device_add_mconfig(machine_config &config) -{ - I80188(config, m_mpu, 40_MHz_XTAL / 2); // clock guessed - m_mpu->set_addrmap(AS_PROGRAM, &bt542bh_device::local_map); - - fsc_base(config); - - DP8473(config, m_fdc, 24_MHz_XTAL); -} - -void bt545s_device::device_add_mconfig(machine_config &config) -{ - I80188(config, m_mpu, 40_MHz_XTAL / 2); // SAB80188-1-N; clock guessed - m_mpu->set_addrmap(AS_PROGRAM, &bt545s_device::local_map); - - fsc_base(config); - - PC8477A(config, m_fdc, 24_MHz_XTAL); // actually PC8477BV -} - -ROM_START(bt542b) - ROM_REGION(0x4000, "bios", 0) // "(C) Copyright 1991 BIOS Version 2.41" - ROM_LOAD("1000006-2.41_bustek.u15", 0x0000, 0x4000, CRC(5eb00d0f) SHA1(74a8bbae1c2b42f0c605b0ac98660f1e16ac5c4e)) - - ROM_REGION(0x8000, "mpu", 0) // "(C) Copyright 1991 BusTek Corporation 542B 91/12/14" - ROM_LOAD("1000005-2.21_bustek.u2", 0x0000, 0x8000, CRC(c2c66653) SHA1(054ba1ea71b2aaab31ab9dd5aca955d861f5333b)) -ROM_END - -ROM_START(bt542bh) - ROM_REGION(0x8000, "bios", 0) // "(C) Copyright 1992 BIOS Version 4.70M" - ROM_LOAD("5000006-4.70_buslogic.u15", 0x0000, 0x8000, CRC(f5a5e116) SHA1(d7b73015532838dc694edf24308ebbab6f4dd5bb)) - - ROM_REGION(0x8000, "mpu", 0) // "(C) Copyright 1992 BusLogic Inc. 542BH93/05/23" - ROM_LOAD("5000005-3.35_buslogic.u2", 0x0000, 0x8000, CRC(181966c3) SHA1(b9b327d50cd13f3e5b5b53892b18f233aff065b7)) -ROM_END - -ROM_START(bt545s) - ROM_REGION(0x4000, "bios", 0) // "(C) Copyright 1992 BIOS Version 4.50" - ROM_LOAD("u15_27128_5002026-4.50.bin", 0x0000, 0x4000, CRC(1bd3247b) SHA1(9d46a99f4b3057e94ef422f387218de2c4553c1a)) - - ROM_REGION(0x8000, "mpu", 0) // "(C) Copyright 1992 BusLogic Inc. 542BH92/10/05" - ROM_LOAD("u2_27256_5002005-3.31.bin", 0x0000, 0x8000, CRC(20473714) SHA1(797a8dba182049949f7a5c14d8bef4b4e908305b)) -ROM_END - -const tiny_rom_entry *bt542b_device::device_rom_region() const -{ - return ROM_NAME(bt542b); -} - -const tiny_rom_entry *bt542bh_device::device_rom_region() const -{ - return ROM_NAME(bt542bh); -} - -const tiny_rom_entry *bt545s_device::device_rom_region() const -{ - return ROM_NAME(bt545s); -} diff --git a/src/devices/bus/isa/bt54x.h b/src/devices/bus/isa/bt54x.h deleted file mode 100644 index dfdd0009416..00000000000 --- a/src/devices/bus/isa/bt54x.h +++ /dev/null @@ -1,74 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - BusTek/BusLogic BT-54x series PC/AT SCSI host adapters - -***************************************************************************/ - -#ifndef MAME_BUS_ISA_BT54X_H -#define MAME_BUS_ISA_BT54X_H - -#pragma once - -#include "isa.h" -#include "cpu/i86/i186.h" -#include "machine/upd765.h" - -class bt54x_device : public device_t, public device_isa16_card_interface -{ -public: - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - bt54x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); - - virtual void device_start() override; - - u8 local_status_r(); - - void local_map(address_map &map); - void asc_config(device_t *device); - void fsc_config(device_t *device); - void fsc_base(machine_config &config); - - required_device<i80188_cpu_device> m_mpu; - required_device<upd765_family_device> m_fdc; - required_region_ptr<u8> m_bios; -}; - -class bt542b_device : public bt54x_device -{ -public: - bt542b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -class bt542bh_device : public bt54x_device -{ -public: - bt542bh_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -class bt545s_device : public bt54x_device -{ -public: - bt545s_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; -}; - -DECLARE_DEVICE_TYPE(BT542B, bt542b_device) -DECLARE_DEVICE_TYPE(BT542BH, bt542bh_device) -DECLARE_DEVICE_TYPE(BT545S, bt545s_device) - -#endif // MAME_BUS_ISA_BT54X_H diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp index eac981b4100..f5fb8f185d7 100644 --- a/src/devices/bus/isa/cga.cpp +++ b/src/devices/bus/isa/cga.cpp @@ -261,13 +261,12 @@ DEFINE_DEVICE_TYPE(ISA8_CGA, isa8_cga_device, "cga", "IBM Color/Graphics Monitor // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_cga_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, CGA_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(14'318'181), 912, 0, 640, 262, 0, 200); - screen.set_screen_update(FUNC(isa8_cga_device::screen_update)); +MACHINE_CONFIG_START(isa8_cga_device::device_add_mconfig) + MCFG_SCREEN_ADD(CGA_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181),912,0,640,262,0,200) + MCFG_SCREEN_UPDATE_DEVICE( DEVICE_SELF, isa8_cga_device, screen_update ) - PALETTE(config, m_palette).set_entries(/* CGA_PALETTE_SETS * 16*/ 65536); + MCFG_PALETTE_ADD("palette", /* CGA_PALETTE_SETS * 16*/ 65536 ) MC6845(config, m_crtc, XTAL(14'318'181)/16); m_crtc->set_screen(nullptr); @@ -277,7 +276,7 @@ void isa8_cga_device::device_add_mconfig(machine_config &config) m_crtc->out_hsync_callback().set(FUNC(isa8_cga_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_cga_device::vsync_changed)); m_crtc->set_reconfigure_callback(FUNC(isa8_cga_device::reconfigure), this); -} +MACHINE_CONFIG_END ioport_constructor isa8_cga_device::device_input_ports() const { @@ -913,7 +912,7 @@ READ8_MEMBER( isa8_cga_device::io_read ) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = m_crtc->register_r(); + data = m_crtc->register_r( space, offset ); break; case 10: data = m_vsync | ( ( data & 0x40 ) >> 4 ) | m_hsync; @@ -928,10 +927,10 @@ WRITE8_MEMBER( isa8_cga_device::io_write ) { switch(offset) { case 0: case 2: case 4: case 6: - m_crtc->address_w(data); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - m_crtc->register_w(data); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(data); @@ -1170,14 +1169,14 @@ WRITE8_MEMBER( isa8_cga_pc1512_device::io_write ) { case 0: case 2: case 4: case 6: data &= 0x1F; - m_crtc->address_w(data); + m_crtc->address_w( space, offset, data ); m_mc6845_address = data; break; case 1: case 3: case 5: case 7: if ( ! m_mc6845_locked_register[m_mc6845_address] ) { - m_crtc->register_w(data); + m_crtc->register_w( space, offset, data ); if ( isa8_cga_pc1512_device::mc6845_writeonce_register[m_mc6845_address] ) { m_mc6845_locked_register[m_mc6845_address] = 1; @@ -1694,13 +1693,13 @@ const tiny_rom_entry *isa8_cga_mc1502_device::device_rom_region() const DEFINE_DEVICE_TYPE(ISA8_CGA_M24, isa8_cga_m24_device, "cga_m24", "Olivetti M24 CGA") -void isa8_cga_m24_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(isa8_cga_m24_device::device_add_mconfig) isa8_cga_device::device_add_mconfig(config); - subdevice<screen_device>(CGA_SCREEN_NAME)->set_raw(XTAL(14'318'181), 912, 0, 640, 462, 0, 400); + MCFG_DEVICE_MODIFY(CGA_SCREEN_NAME) + MCFG_SCREEN_RAW_PARAMS(XTAL(14'318'181),912,0,640,462,0,400) m_crtc->set_reconfigure_callback(FUNC(isa8_cga_m24_device::reconfigure), this); -} +MACHINE_CONFIG_END isa8_cga_m24_device::isa8_cga_m24_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_cga_m24_device(mconfig, ISA8_CGA_M24, tag, owner, clock) @@ -1747,7 +1746,7 @@ WRITE8_MEMBER( isa8_cga_m24_device::io_write ) { case 0: case 2: case 4: case 6: m_index = data; - m_crtc->address_w(data); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: switch(m_index & 0x1f) // TODO: this is handled by a pal and prom @@ -1766,7 +1765,7 @@ WRITE8_MEMBER( isa8_cga_m24_device::io_write ) data <<= 1; break; } - m_crtc->register_w(data); + m_crtc->register_w( space, offset, data ); break; case 0x0e: m_mode2 = data; @@ -1887,12 +1886,12 @@ MC6845_UPDATE_ROW( isa8_cga_m24_device::m24_gfx_1bpp_m24_update_row ) DEFINE_DEVICE_TYPE(ISA8_CGA_CPORTIII, isa8_cga_cportiii_device, "cga_cportiii", "Compaq Portable III CGA") -void isa8_cga_cportiii_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(isa8_cga_cportiii_device::device_add_mconfig) isa8_cga_m24_device::device_add_mconfig(config); - subdevice<screen_device>(CGA_SCREEN_NAME)->set_color(rgb_t(255, 125, 0)); -} + MCFG_DEVICE_MODIFY(CGA_SCREEN_NAME) + MCFG_SCREEN_COLOR(rgb_t(255, 125, 0)) +MACHINE_CONFIG_END isa8_cga_cportiii_device::isa8_cga_cportiii_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_cga_m24_device(mconfig, ISA8_CGA_CPORTIII, tag, owner, clock) diff --git a/src/devices/bus/isa/cl_sh260.cpp b/src/devices/bus/isa/cl_sh260.cpp deleted file mode 100644 index f8fb39249f5..00000000000 --- a/src/devices/bus/isa/cl_sh260.cpp +++ /dev/null @@ -1,93 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - ISA 16-bit disk controllers based on the Cirrus Logic CL-SH260-15PC-D - * Everex EV-346 - * Joincom Electronic JC-1310 - -***************************************************************************/ - -#include "emu.h" -#include "cl_sh260.h" - -#include "cpu/mcs51/mcs51.h" - -DEFINE_DEVICE_TYPE(EV346, isa16_ev346_device, "ev346", "Everex EV-346 disk controller") -DEFINE_DEVICE_TYPE(JC1310, isa16_jc1310_device, "jc1310", "Joincom JC-1310 disk controller") - -isa16_cl_sh260_device::isa16_cl_sh260_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_fdc(*this, "fdc") -{ -} - -isa16_ev346_device::isa16_ev346_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : isa16_cl_sh260_device(mconfig, EV346, tag, owner, clock) -{ -} - -isa16_jc1310_device::isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : isa16_cl_sh260_device(mconfig, JC1310, tag, owner, clock) -{ -} - -void isa16_cl_sh260_device::device_start() -{ -} - -void isa16_cl_sh260_device::i8031_map(address_map &map) -{ - map(0x0000, 0x1fff).rom().region("mcu", 0); -} - -void isa16_ev346_device::ext_map(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0xff).noprw(); // CL-SH260 interface -} - -void isa16_jc1310_device::ext_map(address_map &map) -{ - map(0xc000, 0xc0ff).noprw(); // CL-SH260 interface -} - -void isa16_ev346_device::device_add_mconfig(machine_config &config) -{ - i8031_device &mcu(I8031(config, "mcu", 12_MHz_XTAL)); // SCN8031HCCN40 - mcu.set_addrmap(AS_PROGRAM, &isa16_ev346_device::i8031_map); - mcu.set_addrmap(AS_IO, &isa16_ev346_device::ext_map); - - DP8473(config, m_fdc, 24_MHz_XTAL); -} - -void isa16_jc1310_device::device_add_mconfig(machine_config &config) -{ - i8031_device &mcu(I8031(config, "mcu", 10_MHz_XTAL)); // P8031AH - mcu.set_addrmap(AS_PROGRAM, &isa16_jc1310_device::i8031_map); - mcu.set_addrmap(AS_IO, &isa16_jc1310_device::ext_map); - - WD37C65C(config, m_fdc, 16_MHz_XTAL); // WD37C65B-PL - //m_fdc->set_clock2(9.6_MHz_XTAL); -} - -ROM_START(ev346) - ROM_REGION(0x2000, "mcu", 0) - ROM_LOAD("everex_ev346_vers_3.2.bin", 0x0000, 0x2000, CRC(49b10ca7) SHA1(ef31b62f5ac38db7cacfc4d30e203a4cc1414913)) -ROM_END - -ROM_START(jc1310) - ROM_REGION(0x2000, "mcu", 0) // "(C) COPYRIGHT JOINCOM ELECTRONIC CORP. 9/16/1988 JC1310" - ROM_LOAD("jc-1310 - apr-c 89.u3", 0x0000, 0x2000, CRC(e044f5e1) SHA1(5a32d2001bb1a489657f9488136b5d621f803703)) // TMS 2764-20JL -ROM_END - -const tiny_rom_entry *isa16_ev346_device::device_rom_region() const -{ - return ROM_NAME(ev346); -} - -const tiny_rom_entry *isa16_jc1310_device::device_rom_region() const -{ - return ROM_NAME(jc1310); -} diff --git a/src/devices/bus/isa/cl_sh260.h b/src/devices/bus/isa/cl_sh260.h deleted file mode 100644 index 18612ab6456..00000000000 --- a/src/devices/bus/isa/cl_sh260.h +++ /dev/null @@ -1,64 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - ISA 16-bit disk controllers based on the Cirrus Logic CL-SH260-15PC-D - * Everex EV-346 - * Joincom Electronic JC-1310 - -***************************************************************************/ - -#ifndef MAME_BUS_ISA_CL_SH260_H -#define MAME_BUS_ISA_CL_SH260_H - -#pragma once - -#include "isa.h" -#include "machine/upd765.h" - -class isa16_cl_sh260_device : public device_t, public device_isa16_card_interface -{ -protected: - isa16_cl_sh260_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); - - virtual void device_start() override; - - void i8031_map(address_map &map); - - required_device<upd765_family_device> m_fdc; -}; - -class isa16_ev346_device : public isa16_cl_sh260_device -{ -public: - isa16_ev346_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - -private: - void ext_map(address_map &map); -}; - -class isa16_jc1310_device : public isa16_cl_sh260_device -{ -public: - isa16_jc1310_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - -private: - void ext_map(address_map &map); -}; - -DECLARE_DEVICE_TYPE(EV346, isa16_ev346_device) -DECLARE_DEVICE_TYPE(JC1310, isa16_jc1310_device) - -#endif // MAME_BUS_ISA_CL_SH260_H diff --git a/src/devices/bus/isa/dcb.cpp b/src/devices/bus/isa/dcb.cpp deleted file mode 100644 index db5768d6758..00000000000 --- a/src/devices/bus/isa/dcb.cpp +++ /dev/null @@ -1,70 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Novell Disk Coprocessor Board (DCB) - - This special SCSI host adapter, later acquired by ADIC, was designed - for use with Novell NetWare. - -***************************************************************************/ - -#include "emu.h" -#include "dcb.h" - -DEFINE_DEVICE_TYPE(NOVELL_DCB, novell_dcb_device, "novell_dcb", "Novell Disk Coprocessor Board (#738-133-001)") - -novell_dcb_device::novell_dcb_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, NOVELL_DCB, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_localcpu(*this, "localcpu") - , m_eeprom(*this, "eeprom") -{ -} - -void novell_dcb_device::device_start() -{ -} - -void novell_dcb_device::eeprom_w(u8 data) -{ - m_eeprom->cs_write(BIT(data, 5)); - m_eeprom->clk_write(BIT(data, 6)); - m_eeprom->di_write(BIT(data, 7)); -} - -u8 novell_dcb_device::misc_r() -{ - return m_eeprom->do_read() << 7; -} - -void novell_dcb_device::mem_map(address_map &map) -{ - map(0x00000, 0x03fff).ram(); - map(0xfe000, 0xfffff).rom().region("localcpu", 0); -} - -void novell_dcb_device::io_map(address_map &map) -{ - map(0x0100, 0x0100).w(FUNC(novell_dcb_device::eeprom_w)); - map(0x0180, 0x0180).r(FUNC(novell_dcb_device::misc_r)); -} - -void novell_dcb_device::device_add_mconfig(machine_config &config) -{ - I80188(config, m_localcpu, 16_MHz_XTAL); - m_localcpu->set_addrmap(AS_PROGRAM, &novell_dcb_device::mem_map); - m_localcpu->set_addrmap(AS_IO, &novell_dcb_device::io_map); - - EEPROM_93C06_16BIT(config, m_eeprom); // NMC9306 -} - -ROM_START(novell_dcb) - ROM_REGION(0x2000, "localcpu", 0) - ROM_LOAD("817-186-001_rev_e_5800_11-04-86.bin", 0x0000, 0x2000, CRC(2e2037f4) SHA1(a13c0aab46084a0805256f1d2b8b8beaccc9e253)) -ROM_END - -const tiny_rom_entry *novell_dcb_device::device_rom_region() const -{ - return ROM_NAME(novell_dcb); -} diff --git a/src/devices/bus/isa/dcb.h b/src/devices/bus/isa/dcb.h deleted file mode 100644 index fbca0303978..00000000000 --- a/src/devices/bus/isa/dcb.h +++ /dev/null @@ -1,43 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/*************************************************************************** - - Novell Disk Coprocessor Board (DCB) - -***************************************************************************/ - -#ifndef MAME_BUS_ISA_DCB_H -#define MAME_BUS_ISA_DCB_H - -#pragma once - -#include "isa.h" -#include "cpu/i86/i186.h" -#include "machine/eepromser.h" - -class novell_dcb_device : public device_t, public device_isa16_card_interface -{ -public: - novell_dcb_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::DISK; } - -protected: - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - virtual void device_start() override; - -private: - void eeprom_w(u8 data); - u8 misc_r(); - - void mem_map(address_map &map); - void io_map(address_map &map); - - required_device<i80188_cpu_device> m_localcpu; - required_device<eeprom_serial_93cxx_device> m_eeprom; -}; - -DECLARE_DEVICE_TYPE(NOVELL_DCB, novell_dcb_device) - -#endif // MAME_BUS_ISA_DCB_H diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp index da45a2ec18b..d8ad57d57d3 100644 --- a/src/devices/bus/isa/dectalk.cpp +++ b/src/devices/bus/isa/dectalk.cpp @@ -172,6 +172,7 @@ void dectalk_isa_device::device_add_mconfig(machine_config &config) SPEAKER(config, "speaker").front_center(); DAC_12BIT_R2R(config, m_dac, 0).add_route(0, "speaker", 1.0); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); } diff --git a/src/devices/bus/isa/ega.cpp b/src/devices/bus/isa/ega.cpp index 5da3c263384..01c73066088 100644 --- a/src/devices/bus/isa/ega.cpp +++ b/src/devices/bus/isa/ega.cpp @@ -528,24 +528,23 @@ DEFINE_DEVICE_TYPE(ISA8_EGA, isa8_ega_device, "ega", "IBM Enhanced Graphics Adap // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_ega_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, EGA_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(16.257_MHz_XTAL, 912, 0, 640, 262, 0, 200); - screen.set_screen_update(EGA_CRTC_NAME, FUNC(crtc_ega_device::screen_update)); - screen.set_palette(m_palette); - - PALETTE(config, m_palette).set_entries(64); - - CRTC_EGA(config, m_crtc_ega, 16.257_MHz_XTAL/8); - m_crtc_ega->set_screen(EGA_SCREEN_NAME); - m_crtc_ega->config_set_hpixels_per_column(8); - m_crtc_ega->set_row_update_callback(FUNC(isa8_ega_device::ega_update_row), this); - m_crtc_ega->res_out_de_callback().set(FUNC(isa8_ega_device::de_changed)); - m_crtc_ega->res_out_hsync_callback().set(FUNC(isa8_ega_device::hsync_changed)); - m_crtc_ega->res_out_vsync_callback().set(FUNC(isa8_ega_device::vsync_changed)); - m_crtc_ega->res_out_vblank_callback().set(FUNC(isa8_ega_device::vblank_changed)); -} +MACHINE_CONFIG_START(isa8_ega_device::device_add_mconfig) + MCFG_SCREEN_ADD(EGA_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(16257000,912,0,640,262,0,200) + MCFG_SCREEN_UPDATE_DEVICE(EGA_CRTC_NAME, crtc_ega_device, screen_update) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD( "palette", 64 ) + + MCFG_DEVICE_ADD(EGA_CRTC_NAME, CRTC_EGA, 16257000/8) + MCFG_CRTC_EGA_SET_SCREEN(EGA_SCREEN_NAME) + MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(8) + MCFG_CRTC_EGA_ROW_UPDATE_CB(isa8_ega_device, ega_update_row) + MCFG_CRTC_EGA_RES_OUT_DE_CB(WRITELINE(*this, isa8_ega_device, de_changed)) + MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(WRITELINE(*this, isa8_ega_device, hsync_changed)) + MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(WRITELINE(*this, isa8_ega_device, vsync_changed)) + MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(WRITELINE(*this, isa8_ega_device, vblank_changed)) +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -577,7 +576,7 @@ isa8_ega_device::isa8_ega_device(const machine_config &mconfig, const char *tag, isa8_ega_device::isa8_ega_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), device_isa8_card_interface(mconfig, *this), - m_crtc_ega(*this, EGA_CRTC_NAME), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr), + m_crtc_ega(nullptr), m_videoram(nullptr), m_charA(nullptr), m_charB(nullptr), m_misc_output(0), m_feature_control(0), m_frame_cnt(0), m_hsync(0), m_vsync(0), m_vblank(0), m_display_enable(0), m_video_mode(0), m_palette(*this, "palette") { @@ -627,6 +626,8 @@ void isa8_ega_device::device_start() m_plane[2] = m_videoram + 0x20000; m_plane[3] = m_videoram + 0x30000; + m_crtc_ega = subdevice<crtc_ega_device>(EGA_CRTC_NAME); + m_isa->install_rom(this, 0xc0000, 0xc3fff, "ega", "user2"); m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_w), this)); m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_w), this)); @@ -1169,7 +1170,7 @@ READ8_MEMBER( isa8_ega_device::pc_ega8_3X0_r ) /* CRT Controller - data register */ case 1: case 3: case 5: case 7: - data = m_crtc_ega->register_r(); + data = m_crtc_ega->register_r( space, offset ); break; /* Input Status Register 1 */ @@ -1204,12 +1205,12 @@ WRITE8_MEMBER( isa8_ega_device::pc_ega8_3X0_w ) { /* CRT Controller - address register */ case 0: case 2: case 4: case 6: - m_crtc_ega->address_w(data); + m_crtc_ega->address_w( space, offset, data ); break; /* CRT Controller - data register */ case 1: case 3: case 5: case 7: - m_crtc_ega->register_w(data); + m_crtc_ega->register_w( space, offset, data ); break; /* Set Light Pen Flip Flop */ diff --git a/src/devices/bus/isa/ega.h b/src/devices/bus/isa/ega.h index 4334604b9a8..4e7bc4394a3 100644 --- a/src/devices/bus/isa/ega.h +++ b/src/devices/bus/isa/ega.h @@ -58,7 +58,7 @@ private: CRTC_EGA_ROW_UPDATE(ega_update_row); public: - required_device<crtc_ega_device> m_crtc_ega; + crtc_ega_device *m_crtc_ega; void install_banks(); void change_mode(); diff --git a/src/devices/bus/isa/eis_sad8852.cpp b/src/devices/bus/isa/eis_sad8852.cpp index f4d634d1033..4f2b5a0c856 100644 --- a/src/devices/bus/isa/eis_sad8852.cpp +++ b/src/devices/bus/isa/eis_sad8852.cpp @@ -199,14 +199,13 @@ ioport_constructor isa16_sad8852_device::device_input_ports() const //------------------------------------------------- // Board configuration //------------------------------------------------- -void isa16_sad8852_device::device_add_mconfig(machine_config &config) -{ - i80188_cpu_device &cpu(I80188(config, I80188_TAG, XTAL(12'000'000) / 2)); // Chip revision is 6 MHz - cpu.set_addrmap(AS_PROGRAM, &isa16_sad8852_device::sad8852_mem); - cpu.set_addrmap(AS_IO, &isa16_sad8852_device::sad8852_io); +MACHINE_CONFIG_START(isa16_sad8852_device::device_add_mconfig) + MCFG_DEVICE_ADD(I80188_TAG, I80188, XTAL(12'000'000) / 2) // Chip revision is 6 MHz + MCFG_DEVICE_PROGRAM_MAP( sad8852_mem ) + MCFG_DEVICE_IO_MAP(sad8852_io) I8274_NEW(config, "terminal", XTAL(12'000'000) / 3); // Needs verification -} +MACHINE_CONFIG_END isa16_sad8852_device::isa16_sad8852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SAD8852, tag, owner, clock) diff --git a/src/devices/bus/isa/fdc.cpp b/src/devices/bus/isa/fdc.cpp index 9c9f52d7a1d..f31b0f5f9dd 100644 --- a/src/devices/bus/isa/fdc.cpp +++ b/src/devices/bus/isa/fdc.cpp @@ -72,11 +72,6 @@ void isa8_fdc_device::dack_w(int line, uint8_t data) return m_fdc->dma_w(data); } -void isa8_fdc_device::dack_line_w(int line, int state) -{ - //m_fdc->dack_w(state); -} - void isa8_fdc_device::eop_w(int state) { m_fdc->tc_w(state == ASSERT_LINE); diff --git a/src/devices/bus/isa/fdc.h b/src/devices/bus/isa/fdc.h index cec5f7dd06e..7a1781cdc69 100644 --- a/src/devices/bus/isa/fdc.h +++ b/src/devices/bus/isa/fdc.h @@ -40,7 +40,6 @@ protected: virtual uint8_t dack_r(int line) override; virtual void dack_w(int line, uint8_t data) override; - virtual void dack_line_w(int line, int state) override; virtual void eop_w(int state) override; required_device<pc_fdc_interface> m_fdc; diff --git a/src/devices/bus/isa/finalchs.cpp b/src/devices/bus/isa/finalchs.cpp index f9e6f37dc8f..e79dee39686 100644 --- a/src/devices/bus/isa/finalchs.cpp +++ b/src/devices/bus/isa/finalchs.cpp @@ -71,11 +71,10 @@ DEFINE_DEVICE_TYPE(ISA8_FINALCHS, isa8_finalchs_device, "isa_finalchs", "Final C // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_finalchs_device::device_add_mconfig(machine_config &config) -{ - m65c02_device &cpu(M65C02(config, "maincpu", 5000000)); - cpu.set_addrmap(AS_PROGRAM, &isa8_finalchs_device::finalchs_mem); -} +MACHINE_CONFIG_START(isa8_finalchs_device::device_add_mconfig) + MCFG_DEVICE_ADD("maincpu",M65C02,5000000) + MCFG_DEVICE_PROGRAM_MAP(finalchs_mem) +MACHINE_CONFIG_END //************************************************************************** // LIVE DEVICE diff --git a/src/devices/bus/isa/gus.cpp b/src/devices/bus/isa/gus.cpp index 423c1e3629f..99404470140 100644 --- a/src/devices/bus/isa/gus.cpp +++ b/src/devices/bus/isa/gus.cpp @@ -1250,8 +1250,7 @@ INPUT_PORTS_END // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_gus_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(isa16_gus_device::device_add_mconfig) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GGF1(config, m_gf1, GF1_CLOCK); @@ -1271,13 +1270,14 @@ void isa16_gus_device::device_add_mconfig(machine_config &config) m_gf1->drq2_handler().set(FUNC(isa16_gus_device::drq2_w)); m_gf1->nmi_handler().set(FUNC(isa16_gus_device::nmi_w)); - MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_gf1, FUNC(acia6850_device::write_rxd)); + MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_MIDI_RX_HANDLER(WRITELINE("gf1", acia6850_device, write_rxd)) - MIDI_PORT(config, "mdout", midiout_slot, "midiout"); + MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout") - clock_device &acia_clock(CLOCK(config, "acia_clock", 31250*16)); - acia_clock.signal_handler().set(FUNC(isa16_gus_device::write_acia_clock)); -} + MCFG_DEVICE_ADD("acia_clock", CLOCK, 31250*16) + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, isa16_gus_device, write_acia_clock)) +MACHINE_CONFIG_END ioport_constructor isa16_gus_device::device_input_ports() const { @@ -1384,9 +1384,9 @@ READ8_MEMBER(isa16_gus_device::synth_r) switch(offset) { case 0x00: - return m_gf1->status_r(); + return m_gf1->status_r(space,0); case 0x01: - return m_gf1->data_r(); + return m_gf1->data_r(space,0); case 0x02: case 0x03: return m_gf1->global_reg_select_r(space,offset-2); @@ -1407,10 +1407,10 @@ WRITE8_MEMBER(isa16_gus_device::synth_w) switch(offset) { case 0x00: - m_gf1->control_w(data); + m_gf1->control_w(space,0,data); break; case 0x01: - m_gf1->data_w(data); + m_gf1->data_w(space,0,data); break; case 0x02: case 0x03: diff --git a/src/devices/bus/isa/gus.h b/src/devices/bus/isa/gus.h index 0009510b81f..493893a62e0 100644 --- a/src/devices/bus/isa/gus.h +++ b/src/devices/bus/isa/gus.h @@ -45,6 +45,38 @@ #include "isa.h" #include "machine/6850acia.h" +#define MCFG_GF1_TXIRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_txirq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_RXIRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_rxirq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_wave_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_ramp_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_timer1_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_timer2_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_sb_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_dma_irq_handler(DEVCB_##_devcb); + +#define MCFG_GF1_DRQ1_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_drq1_handler(DEVCB_##_devcb); + +#define MCFG_GF1_DRQ2_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_drq2_handler(DEVCB_##_devcb); + +#define MCFG_GF1_NMI_HANDLER(_devcb) \ + downcast<gf1_device &>(*device).set_nmi_handler(DEVCB_##_devcb); //************************************************************************** // TYPE DEFINITIONS @@ -80,6 +112,17 @@ public: // construction/destruction gf1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + template <class Object> devcb_base &set_txirq_handler(Object &&cb) { return m_txirq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_rxirq_handler(Object &&cb) { return m_rxirq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_wave_irq_handler(Object &&cb) { return m_wave_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_ramp_irq_handler(Object &&cb) { return m_ramp_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer1_irq_handler(Object &&cb) { return m_timer1_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_timer2_irq_handler(Object &&cb) { return m_timer2_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_sb_irq_handler(Object &&cb) { return m_sb_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_dma_irq_handler(Object &&cb) { return m_dma_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq1_handler(Object &&cb) { return m_drq1_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq2_handler(Object &&cb) { return m_drq2_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_nmi_handler(Object &&cb) { return m_nmi_handler.set_callback(std::forward<Object>(cb)); } auto txirq_handler() { return m_txirq_handler.bind(); } auto rxirq_handler() { return m_rxirq_handler.bind(); } auto wave_irq_handler() { return m_wave_irq_handler.bind(); } diff --git a/src/devices/bus/isa/hdc.cpp b/src/devices/bus/isa/hdc.cpp index 2492d0eaa89..040f72f98c3 100644 --- a/src/devices/bus/isa/hdc.cpp +++ b/src/devices/bus/isa/hdc.cpp @@ -918,23 +918,21 @@ DEFINE_DEVICE_TYPE(ISA8_HDC_EC1841, isa8_hdc_ec1841_device, "isa_hdc_ec1841", "E // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_hdc_device::device_add_mconfig(machine_config &config) -{ - XT_HDC(config, m_hdc,0); - m_hdc->irq_handler().set(FUNC(isa8_hdc_device::irq_w)); - m_hdc->drq_handler().set(FUNC(isa8_hdc_device::drq_w)); - HARDDISK(config, "hdc:primary"); - HARDDISK(config, "hdc:slave"); -} - -void isa8_hdc_ec1841_device::device_add_mconfig(machine_config &config) -{ - EC1841_HDC(config, m_hdc,0); - m_hdc->irq_handler().set(FUNC(isa8_hdc_ec1841_device::irq_w)); - m_hdc->drq_handler().set(FUNC(isa8_hdc_ec1841_device::drq_w)); - HARDDISK(config, "hdc:primary"); - HARDDISK(config, "hdc:slave"); -} +MACHINE_CONFIG_START(isa8_hdc_device::device_add_mconfig) + MCFG_DEVICE_ADD("hdc",XT_HDC,0) + MCFG_XTHDC_IRQ_HANDLER(WRITELINE(*this, isa8_hdc_device,irq_w)) + MCFG_XTHDC_DRQ_HANDLER(WRITELINE(*this, isa8_hdc_device,drq_w)) + MCFG_HARDDISK_ADD("hdc:primary") + MCFG_HARDDISK_ADD("hdc:slave") +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(isa8_hdc_ec1841_device::device_add_mconfig) + MCFG_DEVICE_ADD("hdc",EC1841_HDC,0) + MCFG_XTHDC_IRQ_HANDLER(WRITELINE(*this, isa8_hdc_ec1841_device,irq_w)) + MCFG_XTHDC_DRQ_HANDLER(WRITELINE(*this, isa8_hdc_ec1841_device,drq_w)) + MCFG_HARDDISK_ADD("hdc:primary") + MCFG_HARDDISK_ADD("hdc:slave") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h index 7d60d40b7a5..3e91c57d063 100644 --- a/src/devices/bus/isa/hdc.h +++ b/src/devices/bus/isa/hdc.h @@ -19,6 +19,11 @@ // XT HD controller device +#define MCFG_XTHDC_IRQ_HANDLER(_devcb) \ + downcast<xt_hdc_device &>(*device).set_irq_handler(DEVCB_##_devcb); + +#define MCFG_XTHDC_DRQ_HANDLER(_devcb) \ + downcast<xt_hdc_device &>(*device).set_drq_handler(DEVCB_##_devcb); class xt_hdc_device : public device_t @@ -27,8 +32,8 @@ public: // construction/destruction xt_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - auto irq_handler() { return m_irq_handler.bind(); } - auto drq_handler() { return m_drq_handler.bind(); } + template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_drq_handler(Object &&cb) { return m_drq_handler.set_callback(std::forward<Object>(cb)); } int dack_r(); int dack_rs(); diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp index 40ce54ff6fc..30a638d1c27 100644 --- a/src/devices/bus/isa/ibm_mfc.cpp +++ b/src/devices/bus/isa/ibm_mfc.cpp @@ -374,11 +374,10 @@ ROM_END // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_ibm_mfc_device::device_add_mconfig(machine_config &config) -{ - Z80(config, m_cpu, XTAL(11'800'000) / 2); - m_cpu->set_addrmap(AS_PROGRAM, &isa8_ibm_mfc_device::prg_map); - m_cpu->set_addrmap(AS_IO, &isa8_ibm_mfc_device::io_map); +MACHINE_CONFIG_START(isa8_ibm_mfc_device::device_add_mconfig) + MCFG_DEVICE_ADD("ibm_mfc", Z80, XTAL(11'800'000) / 2) + MCFG_DEVICE_PROGRAM_MAP(prg_map) + MCFG_DEVICE_IO_MAP(io_map) I8255(config, m_d71055c_0); m_d71055c_0->in_pa_callback().set(FUNC(isa8_ibm_mfc_device::ppi0_i_a)); @@ -391,10 +390,10 @@ void isa8_ibm_mfc_device::device_add_mconfig(machine_config &config) m_d71055c_1->in_pb_callback().set(FUNC(isa8_ibm_mfc_device::ppi1_i_b)); m_d71055c_1->out_pc_callback().set(FUNC(isa8_ibm_mfc_device::ppi1_o_c)); - I8251(config, m_d71051, 0); + I8251(config, "d71051", 0); - clock_device &usart_clock(CLOCK(config, "usart_clock", XTAL(4'000'000) / 8)); // 500KHz - usart_clock.signal_handler().set(FUNC(isa8_ibm_mfc_device::write_usart_clock)); + MCFG_DEVICE_ADD("usart_clock", CLOCK, XTAL(4'000'000) / 8) // 500KHz + MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, isa8_ibm_mfc_device, write_usart_clock)) PIT8253(config, m_d8253, 0); m_d8253->set_clk<0>(XTAL(4'000'000) / 8); @@ -410,7 +409,7 @@ void isa8_ibm_mfc_device::device_add_mconfig(machine_config &config) m_ym2151->irq_handler().set(FUNC(isa8_ibm_mfc_device::ibm_mfc_ym_irq)); m_ym2151->add_route(0, "ymleft", 1.00); m_ym2151->add_route(1, "ymright", 1.00); -} +MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp index 92ead5df95b..417e354180c 100644 --- a/src/devices/bus/isa/isa.cpp +++ b/src/devices/bus/isa/isa.cpp @@ -111,10 +111,11 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const m_io_config("ISA 8-bit I/O", ENDIANNESS_LITTLE, 8, 16, 0, address_map_constructor()), m_mem16_config("ISA 16-bit mem", ENDIANNESS_LITTLE, 16, 24, 0, address_map_constructor()), m_io16_config("ISA 16-bit I/O", ENDIANNESS_LITTLE, 16, 16, 0, address_map_constructor()), - m_memspace(*this, finder_base::DUMMY_TAG, -1), - m_iospace(*this, finder_base::DUMMY_TAG, -1), - m_memwidth(0), + m_maincpu(*this, finder_base::DUMMY_TAG), + m_iospace(nullptr), + m_memspace(nullptr), m_iowidth(0), + m_memwidth(0), m_allocspaces(false), m_out_irq2_cb(*this), m_out_irq3_cb(*this), @@ -125,6 +126,7 @@ isa8_device::isa8_device(const machine_config &mconfig, device_type type, const m_out_drq1_cb(*this), m_out_drq2_cb(*this), m_out_drq3_cb(*this), + m_nmi_enabled(false), m_write_iochck(*this) { std::fill(std::begin(m_dma_device), std::end(m_dma_device), nullptr); @@ -200,27 +202,10 @@ void isa8_device::remap(int space_id, offs_t start, offs_t end) } //------------------------------------------------- -// device_config_complete - - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void isa8_device::device_config_complete() -{ - if (m_allocspaces) - { - m_memspace.set_tag(*this, DEVICE_SELF, AS_ISA_MEM); - m_iospace.set_tag(*this, DEVICE_SELF, AS_ISA_IO); - } -} - -//------------------------------------------------- -// device_resolve_objects - resolve objects that -// may be needed for other devices to set -// initial conditions at start time +// device_start - device-specific startup //------------------------------------------------- -void isa8_device::device_resolve_objects() +void isa8_device::device_start() { // resolve callbacks m_write_iochck.resolve_safe(); @@ -235,16 +220,20 @@ void isa8_device::device_resolve_objects() m_out_drq2_cb.resolve_safe(); m_out_drq3_cb.resolve_safe(); - m_iowidth = m_iospace->data_width(); - m_memwidth = m_memspace->data_width(); -} - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void isa8_device::device_start() -{ + if (m_allocspaces) + { + m_iospace = &space(AS_ISA_IO); + m_memspace = &space(AS_ISA_MEM); + m_iowidth = m_iospace->data_width(); + m_memwidth = m_memspace->data_width(); + } + else // use host CPU's program and I/O spaces directly + { + m_iospace = &m_maincpu->space(AS_IO); + m_iowidth = m_maincpu->space_config(AS_IO)->data_width(); + m_memspace = &m_maincpu->space(AS_PROGRAM); + m_memwidth = m_maincpu->space_config(AS_PROGRAM)->data_width(); + } } //------------------------------------------------- @@ -263,12 +252,12 @@ template<typename R, typename W> void isa8_device::install_space(int spacenum, o if (spacenum == AS_ISA_IO) { - space = m_iospace.target(); + space = m_iospace; buswidth = m_iowidth; } else if (spacenum == AS_ISA_MEM) { - space = m_memspace.target(); + space = m_memspace; buswidth = m_memwidth; } else @@ -389,18 +378,12 @@ uint8_t isa8_device::dack_r(int line) return 0xff; } -void isa8_device::dack_w(int line, uint8_t data) +void isa8_device::dack_w(int line,uint8_t data) { if (m_dma_device[line]) return m_dma_device[line]->dack_w(line,data); } -void isa8_device::dack_line_w(int line, int state) -{ - if (m_dma_device[line]) - m_dma_device[line]->dack_line_w(line, state); -} - void isa8_device::eop_w(int channel, int state) { if (m_dma_eop[channel] && m_dma_device[channel]) @@ -409,9 +392,18 @@ void isa8_device::eop_w(int channel, int state) void isa8_device::nmi() { - // active low pulse - m_write_iochck(0); - m_write_iochck(1); + if (m_write_iochck.isnull()) + { + if (m_nmi_enabled) + { + m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); + } + } + else + { + m_write_iochck(0); + m_write_iochck(1); + } } //************************************************************************** @@ -446,15 +438,9 @@ uint8_t device_isa8_card_interface::dack_r(int line) { return 0; } - -void device_isa8_card_interface::dack_w(int line, uint8_t data) +void device_isa8_card_interface::dack_w(int line,uint8_t data) { } - -void device_isa8_card_interface::dack_line_w(int line, int state) -{ -} - void device_isa8_card_interface::eop_w(int state) { } @@ -607,7 +593,7 @@ uint16_t isa16_device::dack16_r(int line) return 0xffff; } -void isa16_device::dack16_w(int line, uint16_t data) +void isa16_device::dack16_w(int line,uint16_t data) { if (m_dma_device[line]) return dynamic_cast<device_isa16_card_interface *>(m_dma_device[line])->dack16_w(line,data); @@ -661,6 +647,6 @@ uint16_t device_isa16_card_interface::dack16_r(int line) return 0; } -void device_isa16_card_interface::dack16_w(int line, uint16_t data) +void device_isa16_card_interface::dack16_w(int line,uint16_t data) { } diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h index fff65de82f6..3dc15c9df59 100644 --- a/src/devices/bus/isa/isa.h +++ b/src/devices/bus/isa/isa.h @@ -123,8 +123,7 @@ public: isa8_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration - template <typename T> void set_memspace(T &&tag, int spacenum) { m_memspace.set_tag(std::forward<T>(tag), spacenum); } - template <typename T> void set_iospace(T &&tag, int spacenum) { m_iospace.set_tag(std::forward<T>(tag), spacenum); } + template <typename T> void set_cputag(T &&tag) { m_maincpu.set_tag(std::forward<T>(tag)); } auto iochck_callback() { return m_write_iochck.bind(); } auto irq2_callback() { return m_out_irq2_cb.bind(); } auto irq3_callback() { return m_out_irq3_cb.bind(); } @@ -157,7 +156,7 @@ public: bool is_option_rom_space_available(offs_t start, int size); // FIXME: shouldn't need to expose this - address_space &memspace() const { return *m_memspace; } + address_space &memspace() const { return m_maincpu->space(AS_PROGRAM); } DECLARE_WRITE_LINE_MEMBER( irq2_w ); DECLARE_WRITE_LINE_MEMBER( irq3_w ); @@ -177,11 +176,11 @@ public: DECLARE_WRITE8_MEMBER(io_w); uint8_t dack_r(int line); - void dack_w(int line, uint8_t data); - void dack_line_w(int line, int state); + void dack_w(int line,uint8_t data); void eop_w(int channels, int state); void nmi(); + void set_nmi_state(bool enabled) { m_nmi_enabled = enabled; } virtual void set_dma_channel(uint8_t channel, device_isa8_card_interface *dev, bool do_eop); @@ -197,14 +196,15 @@ protected: template<typename R, typename W> void install_space(int spacenum, offs_t start, offs_t end, R rhandler, W whandler); // device-level overrides - virtual void device_config_complete() override; - virtual void device_resolve_objects() override; virtual void device_start() override; virtual void device_reset() override; + // internal state + required_device<cpu_device> m_maincpu; + // address spaces - required_address_space m_memspace, m_iospace; - int m_memwidth, m_iowidth; + address_space *m_iospace, *m_memspace; + int m_iowidth, m_memwidth; bool m_allocspaces; devcb_write_line m_out_irq2_cb; @@ -219,6 +219,7 @@ protected: device_isa8_card_interface *m_dma_device[8]; bool m_dma_eop[8]; + bool m_nmi_enabled; std::forward_list<device_slot_interface *> m_slot_list; private: @@ -245,8 +246,7 @@ public: void set_isa_device(); // configuration access virtual uint8_t dack_r(int line); - virtual void dack_w(int line, uint8_t data); - virtual void dack_line_w(int line, int state); + virtual void dack_w(int line,uint8_t data); virtual void eop_w(int state); virtual void remap(int space_id, offs_t start, offs_t end) {} @@ -325,7 +325,7 @@ public: DECLARE_WRITE_LINE_MEMBER( drq7_w ); uint16_t dack16_r(int line); - void dack16_w(int line, uint16_t data); + void dack16_w(int line,uint16_t data); virtual void remap(int space_id, offs_t start, offs_t end) override; // 16 bit accessors for ISA-defined address spaces @@ -370,7 +370,7 @@ public: // construction/destruction virtual ~device_isa16_card_interface(); virtual uint16_t dack16_r(int line); - virtual void dack16_w(int line, uint16_t data); + virtual void dack16_w(int line,uint16_t data); void set_isa_device(); diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp index 8ab0832c03d..fbbafc0bc69 100644 --- a/src/devices/bus/isa/isa_cards.cpp +++ b/src/devices/bus/isa/isa_cards.cpp @@ -31,16 +31,11 @@ #include "ide.h" #include "xtide.h" #include "side116.h" -#include "aha1542b.h" -#include "aha1542c.h" -#include "aha174x.h" +#include "aha1542.h" #include "wd1002a_wx1.h" #include "wd1007a.h" #include "mcd.h" #include "lbaenhancer.h" -#include "cl_sh260.h" -#include "bt54x.h" -#include "dcb.h" // sound #include "adlib.h" @@ -60,7 +55,6 @@ #include "ne2000.h" #include "3c505.h" #include "eis_sad8852.h" -#include "np600.h" // communication ports #include "lpt.h" @@ -156,13 +150,7 @@ void pc_isa16_cards(device_slot_interface &device) // 16-bit device.option_add("ide", ISA16_IDE); device.option_add("ne2000", NE2000); - device.option_add("aha1542a", AHA1542A); - device.option_add("aha1542b", AHA1542B); - device.option_add("aha1542c", AHA1542C); - device.option_add("aha1542cf", AHA1542CF); - device.option_add("aha1542cp", AHA1542CP); - device.option_add("aha1740", AHA1740); // actually an EISA card - device.option_add("aha1742a", AHA1742A); // actually an EISA card + device.option_add("aha1542", AHA1542); device.option_add("gus",ISA16_GUS); device.option_add("sblaster_16", ISA16_SOUND_BLASTER_16); device.option_add("svga_s3", ISA16_SVGA_S3); @@ -179,12 +167,5 @@ void pc_isa16_cards(device_slot_interface &device) device.option_add("sb16_lle", ISA16_SB16); device.option_add("mcd", ISA16_MCD); device.option_add("sad8852", ISA16_SAD8852); - device.option_add("np600a3", NP600A3); device.option_add("wd1007a", WD1007A); - device.option_add("ev346", EV346); - device.option_add("jc1310", JC1310); - device.option_add("bt542b", BT542B); - device.option_add("bt542bh", BT542BH); - device.option_add("bt545s", BT545S); - device.option_add("dcb", NOVELL_DCB); } diff --git a/src/devices/bus/isa/lbaenhancer.cpp b/src/devices/bus/isa/lbaenhancer.cpp index f8ebedb130c..14bd28826ef 100644 --- a/src/devices/bus/isa/lbaenhancer.cpp +++ b/src/devices/bus/isa/lbaenhancer.cpp @@ -84,10 +84,9 @@ const tiny_rom_entry *lba_enhancer_device::device_rom_region() const //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- -void lba_enhancer_device::device_add_mconfig(machine_config &config) -{ -// lba_enhancer(config, "lba_enhancer", 0); -} +MACHINE_CONFIG_START( lba_enhancer_device::device_add_mconfig ) +// MCFG_DEVICE_ADD("lba_enhancer", lba_enhancer, 0) +MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp index 3f85534a72b..1b04c6be91e 100644 --- a/src/devices/bus/isa/mc1502_fdc.cpp +++ b/src/devices/bus/isa/mc1502_fdc.cpp @@ -12,6 +12,18 @@ #include "cpu/i86/i86.h" #include "formats/pc_dsk.h" +#define VERBOSE_DBG 0 + +#define DBG_LOG(N,M,A) \ + do { \ + if(VERBOSE_DBG>=N) \ + { \ + if( M ) \ + logerror("%11.6f: %-24s",machine().time().as_double(),(char*)M ); \ + logerror A; \ + } \ + } while (0) + //************************************************************************** // DEVICE DEFINITIONS diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp index f1f6cae6257..35e382cc981 100644 --- a/src/devices/bus/isa/mda.cpp +++ b/src/devices/bus/isa/mda.cpp @@ -22,7 +22,7 @@ #define VERBOSE_MDA 0 /* MDA (Monochrome Display Adapter) */ -#define MDA_CLOCK 16.257_MHz_XTAL +#define MDA_CLOCK 16257000 #define MDA_LOG(N,M,A) \ do { \ @@ -107,13 +107,12 @@ DEFINE_DEVICE_TYPE(ISA8_MDA, isa8_mda_device, "isa_ibm_mda", "IBM Monochrome Dis // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_mda_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, MDA_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(MDA_CLOCK, 882, 0, 720, 370, 0, 350); - screen.set_screen_update(MC6845_NAME, FUNC(mc6845_device::screen_update)); +MACHINE_CONFIG_START(isa8_mda_device::device_add_mconfig) + MCFG_SCREEN_ADD( MDA_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) - PALETTE(config, m_palette).set_entries(4); + MCFG_PALETTE_ADD( "palette", 4 ) MC6845(config, m_crtc, MDA_CLOCK/9); m_crtc->set_screen(MDA_SCREEN_NAME); @@ -123,11 +122,11 @@ void isa8_mda_device::device_add_mconfig(machine_config &config) m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); - GFXDECODE(config, "gfxdecode", m_palette, gfx_pcmda); + MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcmda) PC_LPT(config, m_lpt); m_lpt->irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); -} +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -463,10 +462,10 @@ WRITE8_MEMBER( isa8_mda_device::io_write) switch( offset ) { case 0: case 2: case 4: case 6: - m_crtc->address_w(data); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - m_crtc->register_w(data); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(space, offset, data); @@ -486,7 +485,7 @@ READ8_MEMBER( isa8_mda_device::io_read) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = m_crtc->register_r(); + data = m_crtc->register_r( space, offset ); break; case 10: data = status_r(space, offset); @@ -533,13 +532,12 @@ DEFINE_DEVICE_TYPE(ISA8_HERCULES, isa8_hercules_device, "isa_hercules", "Hercule // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_hercules_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, HERCULES_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(MDA_CLOCK, 882, 0, 720, 370, 0, 350); - screen.set_screen_update(MC6845_NAME, FUNC(mc6845_device::screen_update)); +MACHINE_CONFIG_START(isa8_hercules_device::device_add_mconfig) + MCFG_SCREEN_ADD( HERCULES_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 882, 0, 720, 370, 0, 350 ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) - PALETTE(config, m_palette).set_entries(4); + MCFG_PALETTE_ADD( "palette", 4 ) MC6845(config, m_crtc, MDA_CLOCK/9); m_crtc->set_screen(HERCULES_SCREEN_NAME); @@ -549,11 +547,11 @@ void isa8_hercules_device::device_add_mconfig(machine_config &config) m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); - GFXDECODE(config, "gfxdecode", m_palette, gfx_pcherc); + MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcherc) PC_LPT(config, m_lpt); m_lpt->irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); -} +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -679,10 +677,10 @@ WRITE8_MEMBER( isa8_hercules_device::io_write ) switch( offset ) { case 0: case 2: case 4: case 6: - m_crtc->address_w(data); + m_crtc->address_w( space, offset, data ); break; case 1: case 3: case 5: case 7: - m_crtc->register_w(data); + m_crtc->register_w( space, offset, data ); break; case 8: mode_control_w(space, offset, data); @@ -726,7 +724,7 @@ READ8_MEMBER( isa8_hercules_device::io_read ) /* return last written mc6845 address value here? */ break; case 1: case 3: case 5: case 7: - data = m_crtc->register_r(); + data = m_crtc->register_r( space, offset ); break; case 10: data = status_r(space, offset); @@ -747,13 +745,12 @@ DEFINE_DEVICE_TYPE(ISA8_EC1840_0002, isa8_ec1840_0002_device, "ec1840_0002", "EC //------------------------------------------------- // XXX -void isa8_ec1840_0002_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, MDA_SCREEN_NAME, SCREEN_TYPE_RASTER)); - screen.set_raw(MDA_CLOCK, 792, 0, 640, 370, 0, 350); - screen.set_screen_update(MC6845_NAME, FUNC(mc6845_device::screen_update)); +MACHINE_CONFIG_START(isa8_ec1840_0002_device::device_add_mconfig) + MCFG_SCREEN_ADD( MDA_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(MDA_CLOCK, 792, 0, 640, 370, 0, 350 ) + MCFG_SCREEN_UPDATE_DEVICE( MC6845_NAME, mc6845_device, screen_update ) - PALETTE(config, m_palette).set_entries(4); + MCFG_PALETTE_ADD( "palette", 4 ) MC6845(config, m_crtc, MDA_CLOCK/8); m_crtc->set_screen(MDA_SCREEN_NAME); @@ -762,7 +759,7 @@ void isa8_ec1840_0002_device::device_add_mconfig(machine_config &config) m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row), this); m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); -} +MACHINE_CONFIG_END //------------------------------------------------- // isa8_ec1840_0002_device - constructor diff --git a/src/devices/bus/isa/mufdc.cpp b/src/devices/bus/isa/mufdc.cpp index 3e40653e175..8930a080d8f 100644 --- a/src/devices/bus/isa/mufdc.cpp +++ b/src/devices/bus/isa/mufdc.cpp @@ -195,11 +195,6 @@ void mufdc_device::dack_w(int line, uint8_t data) return m_fdc->dma_w(data); } -void mufdc_device::dack_line_w(int line, int state) -{ - //m_fdc->dack_w(state); -} - void mufdc_device::eop_w(int state) { m_fdc->tc_w(state == ASSERT_LINE); diff --git a/src/devices/bus/isa/mufdc.h b/src/devices/bus/isa/mufdc.h index 2fa000757e4..4d042a58834 100644 --- a/src/devices/bus/isa/mufdc.h +++ b/src/devices/bus/isa/mufdc.h @@ -47,7 +47,6 @@ protected: // device_isa8_card_interface virtual uint8_t dack_r(int line) override; virtual void dack_w(int line, uint8_t data) override; - virtual void dack_line_w(int line, int state) override; virtual void eop_w(int state) override; private: diff --git a/src/devices/bus/isa/ne1000.cpp b/src/devices/bus/isa/ne1000.cpp index 1eaef942105..7723ad75a88 100644 --- a/src/devices/bus/isa/ne1000.cpp +++ b/src/devices/bus/isa/ne1000.cpp @@ -6,13 +6,12 @@ DEFINE_DEVICE_TYPE(NE1000, ne1000_device, "ne1000", "NE1000 Network Adapter") -void ne1000_device::device_add_mconfig(machine_config &config) -{ - DP8390D(config, m_dp8390, 0); - m_dp8390->irq_callback().set(FUNC(ne1000_device::ne1000_irq_w)); - m_dp8390->mem_read_callback().set(FUNC(ne1000_device::ne1000_mem_read)); - m_dp8390->mem_write_callback().set(FUNC(ne1000_device::ne1000_mem_write)); -} +MACHINE_CONFIG_START(ne1000_device::device_add_mconfig) + MCFG_DEVICE_ADD("dp8390d", DP8390D, 0) + MCFG_DP8390D_IRQ_CB(WRITELINE(*this, ne1000_device, ne1000_irq_w)) + MCFG_DP8390D_MEM_READ_CB(READ8(*this, ne1000_device, ne1000_mem_read)) + MCFG_DP8390D_MEM_WRITE_CB(WRITE8(*this, ne1000_device, ne1000_mem_write)) +MACHINE_CONFIG_END ne1000_device::ne1000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NE1000, tag, owner, clock), diff --git a/src/devices/bus/isa/ne2000.cpp b/src/devices/bus/isa/ne2000.cpp index 3ad2cc592ef..5de941accc2 100644 --- a/src/devices/bus/isa/ne2000.cpp +++ b/src/devices/bus/isa/ne2000.cpp @@ -6,13 +6,12 @@ DEFINE_DEVICE_TYPE(NE2000, ne2000_device, "ne2000", "NE2000 Network Adapter") -void ne2000_device::device_add_mconfig(machine_config &config) -{ - DP8390D(config, m_dp8390, 0); - m_dp8390->irq_callback().set(FUNC(ne2000_device::ne2000_irq_w)); - m_dp8390->mem_read_callback().set(FUNC(ne2000_device::ne2000_mem_read)); - m_dp8390->mem_write_callback().set(FUNC(ne2000_device::ne2000_mem_write)); -} +MACHINE_CONFIG_START(ne2000_device::device_add_mconfig) + MCFG_DEVICE_ADD("dp8390d", DP8390D, 0) + MCFG_DP8390D_IRQ_CB(WRITELINE(*this, ne2000_device, ne2000_irq_w)) + MCFG_DP8390D_MEM_READ_CB(READ8(*this, ne2000_device, ne2000_mem_read)) + MCFG_DP8390D_MEM_WRITE_CB(WRITE8(*this, ne2000_device, ne2000_mem_write)) +MACHINE_CONFIG_END ne2000_device::ne2000_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock) : device_t(mconfig, NE2000, tag, owner, clock), diff --git a/src/devices/bus/isa/np600.cpp b/src/devices/bus/isa/np600.cpp deleted file mode 100644 index 064c1d40191..00000000000 --- a/src/devices/bus/isa/np600.cpp +++ /dev/null @@ -1,76 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/********************************************************************* - - InterLan NP600 Intelligent Protocol Processor - -*********************************************************************/ - -#include "emu.h" -#include "np600.h" - -#include "cpu/i86/i186.h" -#include "machine/74259.h" -//#include "machine/i82586.h" - -DEFINE_DEVICE_TYPE(NP600A3, np600a3_device, "np600a3", "InterLan NP600A-3 Intelligent Protocol Processor") - -np600a3_device::np600a3_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, NP600A3, tag, owner, clock) - , device_isa16_card_interface(mconfig, *this) - , m_npcpu(*this, "npcpu") -{ -} - -void np600a3_device::device_start() -{ -} - -u16 np600a3_device::status_r() -{ - return 0; -} - -void np600a3_device::mem_map(address_map &map) -{ - map(0x00000, 0x7ffff).ram(); // GM71256-12 x16 - map(0xfc000, 0xfffff).rom().region("npcpu", 0); -} - -void np600a3_device::io_map(address_map &map) -{ - map(0x0070, 0x007f).w("latch70", FUNC(ls259_device::write_a0)); - map(0x0080, 0x0081).r(FUNC(np600a3_device::status_r)); -} - -void np600a3_device::device_add_mconfig(machine_config &config) -{ - I80186(config, m_npcpu, 16_MHz_XTAL); - m_npcpu->set_addrmap(AS_PROGRAM, &np600a3_device::mem_map); - m_npcpu->set_addrmap(AS_IO, &np600a3_device::io_map); - - LS259(config, "latch70"); // U28 - - //I82586(config, "enet", 20_MHz_XTAL); -} - -ROM_START(np600a3) - ROM_REGION(0x4000, "npcpu", 0) - ROM_LOAD16_BYTE("258-0032-00_rev_ba.u38", 0x0000, 0x2000, CRC(84ccb317) SHA1(3ecc8e265336f5d3b0f276f18dd1b7001778f2c3)) - ROM_LOAD16_BYTE("258-0033-00_rev_ba.u39", 0x0001, 0x2000, CRC(0e0f726c) SHA1(520773e235a826438b025381cd3861df86d4965d)) - - // Undumped small devices (mostly or all PLDs): - // 258-0037-00 REV AA (U17, 20 pins) - // 258-0027-01 REV AB (U20, 20 pins) - // 020701079BFA (U29, 16 pins) - // 258-0031-00 REV AC (U34, PAL20xx, 24 pins) - // 258-0030-00 REV AA (U36, 20 pins) - // 258-0028-01 REV AA (U44, 20 pins) - // 258-0029-01 REV AA (U46, 20 pins) - // 258-0089-00 REV AA (U48, 20 pins) -ROM_END - -const tiny_rom_entry *np600a3_device::device_rom_region() const -{ - return ROM_NAME(np600a3); -} diff --git a/src/devices/bus/isa/np600.h b/src/devices/bus/isa/np600.h deleted file mode 100644 index 7831d804922..00000000000 --- a/src/devices/bus/isa/np600.h +++ /dev/null @@ -1,39 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:AJR -/********************************************************************* - - InterLan NP600 Intelligent Protocol Processor - -*********************************************************************/ - -#ifndef MAME_BUS_ISA_NP600_H -#define MAME_BUS_ISA_NP600_H - -#pragma once - -#include "isa.h" - -class np600a3_device : public device_t, public device_isa16_card_interface -{ -public: - np600a3_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - - static constexpr feature_type unemulated_features() { return feature::LAN; } - -protected: - virtual void device_start() override; - virtual void device_add_mconfig(machine_config &config) override; - virtual const tiny_rom_entry *device_rom_region() const override; - -private: - u16 status_r(); - - void mem_map(address_map &map); - void io_map(address_map &map); - - required_device<cpu_device> m_npcpu; -}; - -DECLARE_DEVICE_TYPE(NP600A3, np600a3_device) - -#endif // MAME_BUS_ISA_NP600_H diff --git a/src/devices/bus/isa/num9rev.cpp b/src/devices/bus/isa/num9rev.cpp index ebe44a379f4..baf30cca586 100644 --- a/src/devices/bus/isa/num9rev.cpp +++ b/src/devices/bus/isa/num9rev.cpp @@ -53,20 +53,19 @@ UPD7220_DISPLAY_PIXELS_MEMBER( isa8_number_9_rev_device::hgdc_display_pixels ) // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_number_9_rev_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_size(512, 448); - screen.set_visarea(0, 512-1, 0, 448-1); - screen.set_refresh_hz(60); - screen.set_screen_update(FUNC(isa8_number_9_rev_device::screen_update)); - PALETTE(config, m_palette).set_entries(4096); +MACHINE_CONFIG_START(isa8_number_9_rev_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_SIZE(512, 448) + MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 448-1) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_UPDATE_DRIVER(isa8_number_9_rev_device, screen_update) + MCFG_PALETTE_ADD("palette", 4096) UPD7220(config, m_upd7220, XTAL(4'433'619)/2); // unknown clock m_upd7220->set_addrmap(0, &isa8_number_9_rev_device::upd7220_map); - m_upd7220->set_display_pixels(FUNC(isa8_number_9_rev_device::hgdc_display_pixels)); + m_upd7220->set_display_pixels_callback(FUNC(isa8_number_9_rev_device::hgdc_display_pixels), this); m_upd7220->set_screen("screen"); -} +MACHINE_CONFIG_END //************************************************************************** // LIVE DEVICE @@ -94,7 +93,7 @@ void isa8_number_9_rev_device::device_start() { set_isa_device(); - m_isa->install_memory(0xc0000, 0xc0001, read8sm_delegate(FUNC(upd7220_device::read), (upd7220_device *)m_upd7220), write8sm_delegate(FUNC(upd7220_device::write), (upd7220_device *)m_upd7220)); + m_isa->install_memory(0xc0000, 0xc0001, read8_delegate(FUNC(upd7220_device::read), (upd7220_device *)m_upd7220), write8_delegate(FUNC(upd7220_device::write), (upd7220_device *)m_upd7220)); m_isa->install_memory(0xc0100, 0xc03ff, read8_delegate(FUNC(isa8_number_9_rev_device::pal8_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal8_w), this)); m_isa->install_memory(0xc0400, 0xc0401, read8_delegate(FUNC(isa8_number_9_rev_device::bank_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::bank_w), this)); m_isa->install_memory(0xc0500, 0xc06ff, read8_delegate(FUNC(isa8_number_9_rev_device::overlay_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::overlay_w), this)); diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp index bea87f420ee..9eebabb188f 100644 --- a/src/devices/bus/isa/omti8621.cpp +++ b/src/devices/bus/isa/omti8621.cpp @@ -1285,11 +1285,6 @@ void omti8621_device::dack_w(int line, uint8_t data) return m_fdc->dma_w(data); } -void omti8621_device::dack_line_w(int line, int state) -{ - //m_fdc->dack_w(state); -} - void omti8621_device::eop_w(int state) { m_fdc->tc_w(state == ASSERT_LINE); diff --git a/src/devices/bus/isa/omti8621.h b/src/devices/bus/isa/omti8621.h index 1258af71854..070ae2dbe70 100644 --- a/src/devices/bus/isa/omti8621.h +++ b/src/devices/bus/isa/omti8621.h @@ -56,7 +56,6 @@ protected: virtual uint8_t dack_r(int line) override; virtual void dack_w(int line, uint8_t data) override; - virtual void dack_line_w(int line, int state) override; virtual void eop_w(int state) override; void set_interrupt(enum line_state line_state); diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp index 9b62451e65a..df53cdb7629 100644 --- a/src/devices/bus/isa/p1_fdc.cpp +++ b/src/devices/bus/isa/p1_fdc.cpp @@ -12,6 +12,18 @@ #include "cpu/i86/i86.h" #include "formats/pc_dsk.h" +#define VERBOSE_DBG 0 + +#define DBG_LOG(N,M,A) \ + do { \ + if(VERBOSE_DBG>=N) \ + { \ + if( M ) \ + logerror("%11.6f: %-24s",machine().time().as_double(),(char*)M ); \ + logerror A; \ + } \ + } while (0) + //************************************************************************** // DEVICE DEFINITIONS @@ -75,6 +87,7 @@ const tiny_rom_entry *p1_fdc_device::device_rom_region() const uint8_t p1_fdc_device::p1_wd17xx_motor_r() { + DBG_LOG(1, "p1_fdc_motor_r", ("R = $%02x\n", 0)); // XXX always on for now return 0; } @@ -105,6 +118,8 @@ uint8_t p1_fdc_device::p1_wd17xx_aux_r() */ void p1_fdc_device::p1_wd17xx_aux_w(int data) { + DBG_LOG(1, "p1_fdc_aux_w", ("W $%02x\n", data)); + floppy_image_device *floppy0 = m_fdc->subdevice<floppy_connector>("0")->get_device(); floppy_image_device *floppy1 = m_fdc->subdevice<floppy_connector>("1")->get_device(); floppy_image_device *floppy = ((data & 2) ? floppy1 : floppy0); diff --git a/src/devices/bus/isa/p1_hdc.cpp b/src/devices/bus/isa/p1_hdc.cpp index 129c7a6ce37..d0971e6c3c6 100644 --- a/src/devices/bus/isa/p1_hdc.cpp +++ b/src/devices/bus/isa/p1_hdc.cpp @@ -14,14 +14,17 @@ // MACROS / CONSTANTS //************************************************************************** -//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already -#define LOG_DEBUG (1U << 1) +#define VERBOSE_DBG 1 -//#define VERBOSE (LOG_DEBUG) -//#define LOG_OUTPUT_FUNC printf -#include "logmacro.h" - -#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__) +#define DBG_LOG(N,M,A) \ + do { \ + if(VERBOSE_DBG>=N) \ + { \ + if( M ) \ + logerror("%11.6f: %-24s",machine().time().as_double(),(char*)M ); \ + logerror A; \ + } \ + } while (0) //************************************************************************** @@ -89,21 +92,20 @@ READ8_MEMBER(p1_hdc_device::p1_HDC_r) switch (offset >> 8) { case 8: - data = m_hdc->read(offset & 255); + data = m_hdc->read(space, offset & 255); } - LOG("hdc R $%04x == $%02x\n", offset, data); + DBG_LOG(1, "hdc", ("R $%04x == $%02x\n", offset, data)); return data; } WRITE8_MEMBER(p1_hdc_device::p1_HDC_w) { - LOG("hdc W $%04x <- $%02x\n", offset, data); - + DBG_LOG(1, "hdc", ("W $%04x <- $%02x\n", offset, data)); switch (offset >> 8) { case 8: - m_hdc->write(offset & 255, data); + m_hdc->write(space, offset & 255, data, 0); } } diff --git a/src/devices/bus/isa/p1_sound.cpp b/src/devices/bus/isa/p1_sound.cpp index b8e37a57368..485dca5205e 100644 --- a/src/devices/bus/isa/p1_sound.cpp +++ b/src/devices/bus/isa/p1_sound.cpp @@ -29,15 +29,15 @@ DEFINE_DEVICE_TYPE(P1_SOUND, p1_sound_device, "p1_sound", "Poisk-1 sound card (B // device_add_mconfig - add device configuration //------------------------------------------------- -void p1_sound_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(p1_sound_device::device_add_mconfig) I8251(config, m_midi, 0); m_midi->txd_handler().set("mdout", FUNC(midi_port_device::write_txd)); m_midi->rxrdy_handler().set(":isa", FUNC(isa8_device::irq3_w)); - MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set(m_midi, FUNC(i8251_device::write_rxd)); + MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin") + MCFG_MIDI_RX_HANDLER(WRITELINE("midi", i8251_device, write_rxd)) - MIDI_PORT(config, "mdout", midiout_slot, "midiout"); + MCFG_MIDI_PORT_ADD("mdout", midiout_slot, "midiout") PIT8253(config, m_d14, 0); m_d14->set_clk<0>(XTAL(12'500'000)/10); @@ -65,12 +65,12 @@ void p1_sound_device::device_add_mconfig(machine_config &config) // m_d17->out_handler<2>().set(FUNC(XXX)); SPEAKER(config, "speaker").front_center(); - FILTER_RC(config, m_filter).add_route(ALL_OUTPUTS, "speaker", 1.0); - DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "filter", 0.5); // unknown DAC - voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); - vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); - vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); -} + MCFG_DEVICE_ADD("filter", FILTER_RC) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "filter", 0.5) // unknown DAC + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) +MACHINE_CONFIG_END //************************************************************************** diff --git a/src/devices/bus/isa/pc1640_iga.cpp b/src/devices/bus/isa/pc1640_iga.cpp index dfab59f2e76..04ef54c2d42 100644 --- a/src/devices/bus/isa/pc1640_iga.cpp +++ b/src/devices/bus/isa/pc1640_iga.cpp @@ -28,6 +28,8 @@ //************************************************************************** #define PEGA1A_TAG "ic910" +#define EGA_CRTC_NAME "crtc_ega_ega" + //************************************************************************** @@ -101,6 +103,8 @@ void isa8_pc1640_iga_device::device_start() m_plane[2] = m_videoram + 0x20000; m_plane[3] = m_videoram + 0x30000; + m_crtc_ega = subdevice<crtc_ega_device>(EGA_CRTC_NAME); + m_isa->install_rom(this, 0xc0000, 0xc7fff, "ega", "iga"); m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_w), this)); m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_w), this)); diff --git a/src/devices/bus/isa/pds.cpp b/src/devices/bus/isa/pds.cpp index 65a35db2b14..45dffd9904e 100644 --- a/src/devices/bus/isa/pds.cpp +++ b/src/devices/bus/isa/pds.cpp @@ -56,7 +56,6 @@ void isa8_pds_device::device_stop() { } -void isa8_pds_device::device_add_mconfig(machine_config &config) -{ - I8255(config, m_ppi); -} +MACHINE_CONFIG_START(isa8_pds_device::device_add_mconfig) + MCFG_DEVICE_ADD("pds_ppi", I8255, 0) +MACHINE_CONFIG_END diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp index d90badaeae7..ab242877e01 100644 --- a/src/devices/bus/isa/pgc.cpp +++ b/src/devices/bus/isa/pgc.cpp @@ -151,31 +151,30 @@ DEFINE_DEVICE_TYPE(ISA8_PGC, isa8_pgc_device, "isa_ibm_pgc", "IBM Professional G // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_pgc_device::device_add_mconfig(machine_config &config) -{ - I8088(config, m_cpu, XTAL(24'000'000)/3); - m_cpu->set_addrmap(AS_PROGRAM, &isa8_pgc_device::pgc_map); +MACHINE_CONFIG_START(isa8_pgc_device::device_add_mconfig) + MCFG_DEVICE_ADD("maincpu", I8088, XTAL(24'000'000)/3) + MCFG_DEVICE_PROGRAM_MAP(pgc_map) #if 0 - m_cpu->set_irq_acknowledge_callback(FUNC(isa8_pgc_device::irq_callback)); + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(isa8_pgc_device, irq_callback) #endif - timer_device &scantimer(TIMER(config, "scantimer")); - scantimer.configure_periodic(FUNC(isa8_pgc_device::scanline_callback), attotime::from_hz(60*PGC_TOTAL_VERT)); - scantimer.set_start_delay(attotime::from_hz(XTAL(50'000'000)/(2*PGC_HORZ_START))); + MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", isa8_pgc_device, scanline_callback, + attotime::from_hz(60*PGC_TOTAL_VERT)) + MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL(50'000'000)/(2*PGC_HORZ_START))) - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(XTAL(50'000'000)/2, + MCFG_SCREEN_ADD(PGC_SCREEN_NAME, RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(50'000'000)/2, PGC_TOTAL_HORZ, PGC_HORZ_START, PGC_HORZ_START+PGC_DISP_HORZ, - PGC_TOTAL_VERT, PGC_VERT_START, PGC_VERT_START+PGC_DISP_VERT); - m_screen->set_screen_update(FUNC(isa8_pgc_device::screen_update)); - m_screen->set_palette(m_palette); + PGC_TOTAL_VERT, PGC_VERT_START, PGC_VERT_START+PGC_DISP_VERT) + MCFG_SCREEN_UPDATE_DRIVER(isa8_pgc_device, screen_update) + MCFG_SCREEN_PALETTE("palette") #if 0 - m_screen->screen_vblank().set(FUNC(isa8_pgc_device::vblank_irq)); + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, isa8_pgc_device, vblank_irq)) #endif - GFXDECODE(config, "gfxdecode", m_palette, gfx_pgc); - PALETTE(config, m_palette).set_entries(256); -} + MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pgc) + MCFG_PALETTE_ADD( "palette", 256 ) +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/sb16.cpp b/src/devices/bus/isa/sb16.cpp index 6bce4b4198c..be8cce9c644 100644 --- a/src/devices/bus/isa/sb16.cpp +++ b/src/devices/bus/isa/sb16.cpp @@ -711,9 +711,9 @@ void sb16_lle_device::device_start() m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(sb16_lle_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(sb16_lle_device::host_cmd_w), this) ); m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb16_lle_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb16_lle_device::invalid_w), this) ); m_isa->install_device(0x0330, 0x0331, read8_delegate(FUNC(sb16_lle_device::mpu401_r), this), write8_delegate(FUNC(sb16_lle_device::mpu401_w), this)); - m_isa->install_device(0x0388, 0x0389, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0388, 0x0389, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0220, 0x0223, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0228, 0x0229, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); m_isa->set_dma_channel(1, this, false); m_isa->set_dma_channel(5, this, false); m_timer = timer_alloc(); diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp index d8a47349918..74f1e0f8dd4 100644 --- a/src/devices/bus/isa/sblaster.cpp +++ b/src/devices/bus/isa/sblaster.cpp @@ -66,7 +66,7 @@ static const int m_cmd_fifo_length[256] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 6x */ -1, -1, -1, -1, 3, 3, 3, 3, -1, -1, -1, -1, -1, 1, -1, 1, /* 7x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 8x */ - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 9x */ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* 9x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, /* Ax */ 4, -1, -1, -1, -1, -1, 4, -1, 4, -1, -1, -1, -1, -1, 4, -1, /* Bx */ 4, -1, -1, -1, -1, -1, 4, -1, 4, -1, -1, -1, -1, -1, 4, -1, /* Cx */ @@ -82,7 +82,7 @@ READ8_MEMBER( sb8_device::ym3812_16_r ) uint8_t retVal = 0xff; switch(offset) { - case 0 : retVal = m_ym3812->status_port_r(); break; + case 0 : retVal = m_ym3812->status_port_r( space, offset ); break; } return retVal; } @@ -91,8 +91,8 @@ WRITE8_MEMBER( sb8_device::ym3812_16_w ) { switch(offset) { - case 0 : m_ym3812->control_port_w(data); break; - case 1 : m_ym3812->write_port_w(data); break; + case 0 : m_ym3812->control_port_w( space, offset, data ); break; + case 1 : m_ym3812->write_port_w( space, offset, data ); break; } } @@ -356,7 +356,6 @@ void sb_device::process_fifo(uint8_t cmd) break; case 0x1c: // 8-bit DMA with autoinit - case 0x90: // 8-bit DMA with autoinit, high speed. XXX only on DSP 3.xx // printf("Start DMA (autoinit, size = %x)\n", m_dsp.dma_length); m_dsp.dma_transferred = 0; m_dsp.dma_autoinit = 1; @@ -584,12 +583,6 @@ void sb_device::process_fifo(uint8_t cmd) mode = m_dsp.fifo[1]; m_dsp.flags = 0; m_dsp.dma_length = (m_dsp.fifo[2] + (m_dsp.fifo[3]<<8)) + 1; - if(cmd & 0x04) - m_dsp.dma_autoinit = 1; - if(mode & 0x10) - m_dsp.flags |= SIGNED; - if(mode & 0x20) - m_dsp.flags |= STEREO; if((cmd & 0xf0) == 0xb0) { m_dsp.flags |= SIXTEENBIT; @@ -598,6 +591,15 @@ void sb_device::process_fifo(uint8_t cmd) } else drq_w(1); + if(cmd & 0x04) + m_dsp.dma_autoinit = 1; + if(mode & 0x10) + m_dsp.flags |= SIGNED; + if(mode & 0x20) + { + m_dsp.flags |= STEREO; + m_dsp.dma_length <<= 1; + } m_dsp.dma_transferred = 0; m_dsp.dma_timer_started = false; m_dsp.dma_throttled = false; @@ -1147,6 +1149,7 @@ void sb_device::common(machine_config &config) DAC_16BIT_R2R(config, m_ldac, 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC DAC_16BIT_R2R(config, m_rdac, 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); @@ -1260,9 +1263,9 @@ void sb8_device::device_start() { ymf262_device *ymf262 = subdevice<ymf262_device>("ymf262"); - m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0388, 0x038b, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0220, 0x0223, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0228, 0x0229, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); } else { @@ -1303,9 +1306,9 @@ void sb16_device::device_start() m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_rbuf_status_w), this) ); m_isa->install_device(0x0224, 0x0225, read8_delegate(FUNC(sb16_device::mixer_r), this), write8_delegate(FUNC(sb16_device::mixer_w), this)); m_isa->install_device(0x0330, 0x0331, read8_delegate(FUNC(sb16_device::mpu401_r), this), write8_delegate(FUNC(sb16_device::mpu401_w), this)); - m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0388, 0x038b, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0220, 0x0223, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0228, 0x0229, read8_delegate(FUNC(ymf262_device::read), ymf262), write8_delegate(FUNC(ymf262_device::write), ymf262)); save_item(NAME(m_mixer.data)); save_item(NAME(m_mixer.status)); diff --git a/src/devices/bus/isa/sc499.cpp b/src/devices/bus/isa/sc499.cpp index 92f049f0402..e9ace1ddb83 100644 --- a/src/devices/bus/isa/sc499.cpp +++ b/src/devices/bus/isa/sc499.cpp @@ -177,10 +177,9 @@ static INPUT_PORTS_START( sc499_port ) INPUT_PORTS_END -void sc499_device::device_add_mconfig(machine_config &config) -{ - SC499_CTAPE(config, m_image, 0); -} +MACHINE_CONFIG_START(sc499_device::device_add_mconfig) + MCFG_DEVICE_ADD(SC499_CTAPE_TAG, SC499_CTAPE, 0) +MACHINE_CONFIG_END //************************************************************************** diff --git a/src/devices/bus/isa/ssi2001.cpp b/src/devices/bus/isa/ssi2001.cpp index 2c433321847..55adf04b0a2 100644 --- a/src/devices/bus/isa/ssi2001.cpp +++ b/src/devices/bus/isa/ssi2001.cpp @@ -30,7 +30,7 @@ void ssi2001_device::device_start() { set_isa_device(); m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0280, 0x029F, read8sm_delegate(FUNC(mos6581_device::read), subdevice<mos6581_device>("sid6581")), write8sm_delegate(FUNC(mos6581_device::write), subdevice<mos6581_device>("sid6581"))); + m_isa->install_device(0x0280, 0x029F, read8_delegate(FUNC(mos6581_device::read), subdevice<mos6581_device>("sid6581")), write8_delegate(FUNC(mos6581_device::write), subdevice<mos6581_device>("sid6581"))); } diff --git a/src/devices/bus/isa/stereo_fx.cpp b/src/devices/bus/isa/stereo_fx.cpp index b23a0dbe454..c38d3aace80 100644 --- a/src/devices/bus/isa/stereo_fx.cpp +++ b/src/devices/bus/isa/stereo_fx.cpp @@ -134,6 +134,7 @@ void stereo_fx_device::device_add_mconfig(machine_config &config) DAC_8BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.5); // unknown DAC DAC_8BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.5); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); vref.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); vref.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); @@ -215,8 +216,8 @@ void stereo_fx_device::device_start() m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(stereo_fx_device::dsp_data_r), this), write8_delegate(FUNC(stereo_fx_device::invalid_w), this) ); m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(stereo_fx_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(stereo_fx_device::dsp_cmd_w), this) ); m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(stereo_fx_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(stereo_fx_device::invalid_w), this) ); - m_isa->install_device(0x0388, 0x0389, read8sm_delegate(FUNC(ym3812_device::read), ym3812), write8sm_delegate(FUNC(ym3812_device::write), ym3812)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ym3812_device::read), ym3812), write8sm_delegate(FUNC(ym3812_device::write), ym3812)); + m_isa->install_device(0x0388, 0x0389, read8_delegate(FUNC(ym3812_device::read), ym3812), write8_delegate(FUNC(ym3812_device::write), ym3812)); + m_isa->install_device(0x0228, 0x0229, read8_delegate(FUNC(ym3812_device::read), ym3812), write8_delegate(FUNC(ym3812_device::write), ym3812)); m_timer = timer_alloc(); m_timer->adjust(attotime::from_hz(2000000), 0, attotime::from_hz(2000000)); m_isa->set_dma_channel(1, this, false); diff --git a/src/devices/bus/isa/svga_cirrus.cpp b/src/devices/bus/isa/svga_cirrus.cpp index bcb6b4995a1..444acac7c1a 100644 --- a/src/devices/bus/isa/svga_cirrus.cpp +++ b/src/devices/bus/isa/svga_cirrus.cpp @@ -30,14 +30,14 @@ DEFINE_DEVICE_TYPE(ISA16_SVGA_CIRRUS_GD542X, isa16_svga_cirrus_gd542x_device, "c // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_svga_cirrus_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(cirrus_gd5430_device::screen_update)); +MACHINE_CONFIG_START(isa16_svga_cirrus_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5430_device, screen_update) - CIRRUS_GD5430(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", CIRRUS_GD5430, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -110,14 +110,14 @@ ROM_END // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_svga_cirrus_gd542x_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(cirrus_gd5428_device::screen_update)); +MACHINE_CONFIG_START(isa16_svga_cirrus_gd542x_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5428_device, screen_update) - CIRRUS_GD5428(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", CIRRUS_GD5428, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/svga_s3.cpp b/src/devices/bus/isa/svga_s3.cpp index d5a2cde30bf..1c97abc3b62 100644 --- a/src/devices/bus/isa/svga_s3.cpp +++ b/src/devices/bus/isa/svga_s3.cpp @@ -40,14 +40,14 @@ DEFINE_DEVICE_TYPE(ISA16_SVGA_S3, isa16_svga_s3_device, "s3_764", "Number Nine 9 // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_svga_s3_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(s3_vga_device::screen_update)); +MACHINE_CONFIG_START(isa16_svga_s3_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", s3_vga_device, screen_update) - S3_VGA(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", S3_VGA, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -146,14 +146,14 @@ DEFINE_DEVICE_TYPE(ISA16_S3VIRGE, isa16_s3virge_device, "s3virge", "S3 ViRGE Gra // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_s3virge_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(s3virge_vga_device::screen_update)); +MACHINE_CONFIG_START(isa16_s3virge_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", s3virge_vga_device, screen_update) - S3VIRGE(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", S3VIRGE, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -227,14 +227,14 @@ DEFINE_DEVICE_TYPE(ISA16_S3VIRGEDX, isa16_s3virgedx_device, "s3virgedx", "S3 ViR // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_s3virgedx_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(s3virgedx_vga_device::screen_update)); +MACHINE_CONFIG_START(isa16_s3virgedx_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", s3virgedx_vga_device, screen_update) - S3VIRGEDX(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", S3VIRGEDX, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -309,14 +309,14 @@ DEFINE_DEVICE_TYPE(ISA16_DMS3D2KPRO, isa16_stealth3d2kpro_device, "dms3d2kp", "D // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_stealth3d2kpro_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(s3virgedx_rev1_vga_device::screen_update)); +MACHINE_CONFIG_START(isa16_stealth3d2kpro_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", s3virgedx_rev1_vga_device, screen_update) - S3VIRGEDX1(config, "vga", 0).set_screen("screen"); -} + MCFG_DEVICE_ADD("vga", S3VIRGEDX1, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/svga_trident.cpp b/src/devices/bus/isa/svga_trident.cpp index aa7fc90b489..79aa1dfd55f 100644 --- a/src/devices/bus/isa/svga_trident.cpp +++ b/src/devices/bus/isa/svga_trident.cpp @@ -30,14 +30,14 @@ DEFINE_DEVICE_TYPE(ISA16_SVGA_TGUI9680, isa16_svga_tgui9680_device, "tgui9680", // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_svga_tgui9680_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(trident_vga_device::screen_update)); - - TRIDENT_VGA(config, "vga", 0).set_screen("screen"); -} +MACHINE_CONFIG_START(isa16_svga_tgui9680_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", trident_vga_device, screen_update) + + MCFG_DEVICE_ADD("vga", TRIDENT_VGA, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/svga_tseng.cpp b/src/devices/bus/isa/svga_tseng.cpp index dfe39a39d8e..fd232b01d8d 100644 --- a/src/devices/bus/isa/svga_tseng.cpp +++ b/src/devices/bus/isa/svga_tseng.cpp @@ -29,14 +29,14 @@ DEFINE_DEVICE_TYPE(ISA8_SVGA_ET4K, isa8_svga_et4k_device, "et4000", "SVGA Tseng // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_svga_et4k_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(tseng_vga_device::screen_update)); - - TSENG_VGA(config, "vga", 0).set_screen("screen"); -} +MACHINE_CONFIG_START(isa8_svga_et4k_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", tseng_vga_device, screen_update) + + MCFG_DEVICE_ADD("vga", TSENG_VGA, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/vga.cpp b/src/devices/bus/isa/vga.cpp index 0419ecdd255..b8a86adbfe3 100644 --- a/src/devices/bus/isa/vga.cpp +++ b/src/devices/bus/isa/vga.cpp @@ -27,14 +27,14 @@ DEFINE_DEVICE_TYPE(ISA8_VGA, isa8_vga_device, "ibm_vga", "IBM VGA Graphics Card" // device_add_mconfig - add device configuration //------------------------------------------------- -void isa8_vga_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(vga_device::screen_update)); - - VGA(config, "vga", 0).set_screen("screen"); -} +MACHINE_CONFIG_START(isa8_vga_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", vga_device, screen_update) + + MCFG_DEVICE_ADD("vga", VGA, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/vga_ati.cpp b/src/devices/bus/isa/vga_ati.cpp index bad1a47a479..650a686d4fc 100644 --- a/src/devices/bus/isa/vga_ati.cpp +++ b/src/devices/bus/isa/vga_ati.cpp @@ -76,33 +76,32 @@ DEFINE_DEVICE_TYPE(ISA16_SVGA_MACH64, isa16_vga_mach64_device, "mach64 // device_add_mconfig - add device configuration //------------------------------------------------- -void isa16_vga_gfxultra_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(ati_vga_device::screen_update)); - - ATI_VGA(config, "vga", 0).set_screen("screen"); -} - -void isa16_vga_gfxultrapro_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(mach32_device::screen_update)); - - ATIMACH32(config, "vga", 0).set_screen("screen"); -} - -void isa16_vga_mach64_device::device_add_mconfig(machine_config &config) -{ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); - screen.set_screen_update("vga", FUNC(mach64_device::screen_update)); - - ATIMACH64(config, "vga", 0).set_screen("screen"); -} - +MACHINE_CONFIG_START(isa16_vga_gfxultra_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", ati_vga_device, screen_update) + + MCFG_DEVICE_ADD("vga", ATI_VGA, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(isa16_vga_gfxultrapro_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", mach32_device, screen_update) + + MCFG_DEVICE_ADD("vga", ATIMACH32, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(isa16_vga_mach64_device::device_add_mconfig) + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) + MCFG_SCREEN_UPDATE_DEVICE("vga", mach64_device, screen_update) + + MCFG_DEVICE_ADD("vga", ATIMACH64, 0) + MCFG_VIDEO_SET_SCREEN("screen") +MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/isa/wd1007a.cpp b/src/devices/bus/isa/wd1007a.cpp index 22d9863e392..3db2db1d776 100644 --- a/src/devices/bus/isa/wd1007a.cpp +++ b/src/devices/bus/isa/wd1007a.cpp @@ -45,10 +45,9 @@ wd1007a_device::wd1007a_device(const machine_config &mconfig, const char *tag, d // device_add_mconfig - add device configuration //------------------------------------------------- -void wd1007a_device::device_add_mconfig(machine_config &config) -{ - AM8753(config, "mcu", 10_MHz_XTAL); -} +MACHINE_CONFIG_START(wd1007a_device::device_add_mconfig) + MCFG_DEVICE_ADD("mcu", AM8753, 10_MHz_XTAL) +MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp index 57dec00af89..690bc161f7f 100644 --- a/src/devices/bus/isa/wdxt_gen.cpp +++ b/src/devices/bus/isa/wdxt_gen.cpp @@ -237,16 +237,6 @@ void wdxt_gen_device::dack_w(int line, uint8_t data) //------------------------------------------------- -// dack_line_w - -//------------------------------------------------- - -void wdxt_gen_device::dack_line_w(int line, int state) -{ - m_host->dack3_w(state); -} - - -//------------------------------------------------- // wd1015_t1_r - //------------------------------------------------- diff --git a/src/devices/bus/isa/wdxt_gen.h b/src/devices/bus/isa/wdxt_gen.h index d909b7bd155..89d3aa5774f 100644 --- a/src/devices/bus/isa/wdxt_gen.h +++ b/src/devices/bus/isa/wdxt_gen.h @@ -52,7 +52,6 @@ protected: // device_isa8_card_interface virtual uint8_t dack_r(int line) override; virtual void dack_w(int line, uint8_t data) override; - virtual void dack_line_w(int line, int state) override; private: DECLARE_WRITE_LINE_MEMBER( irq5_w ); |