summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/interpro.cpp
diff options
context:
space:
mode:
author Patrick Mackinlay <pmackinlay@hotmail.com>2018-07-05 21:22:05 +0700
committer Olivier Galibert <galibert@pobox.com>2018-07-05 16:22:05 +0200
commit7bee6e6f1e9711558c7548dd895979bb9ffd81bc (patch)
tree5d41b9940a98689969b276923ada2cd7fe026694 /src/mame/drivers/interpro.cpp
parentd4e62756908f5d5553fff62b10e4017e97a3d1c5 (diff)
interpro: CLIX boots (on the ip2000) (#3730)
Too many changes to describe in detail. A rewrite of the interrupt and dma code in the ioga, and fixes to the cpu and mmu were the most important things.
Diffstat (limited to 'src/mame/drivers/interpro.cpp')
-rw-r--r--src/mame/drivers/interpro.cpp496
1 files changed, 319 insertions, 177 deletions
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp
index bccd84dbc4d..43ff097bf93 100644
--- a/src/mame/drivers/interpro.cpp
+++ b/src/mame/drivers/interpro.cpp
@@ -241,27 +241,78 @@
void interpro_state::machine_start()
{
- m_led.resolve();
+ m_diag_led.resolve();
+ save_item(NAME(m_error));
+ save_item(NAME(m_status));
+ save_item(NAME(m_led));
+}
+
+void interpro_state::machine_reset()
+{
+ m_error = 0;
+ m_status = 0;
+ m_led = 0;
+}
+
+void emerald_state::machine_start()
+{
+ interpro_state::machine_start();
+
+ save_item(NAME(m_ctrl1));
+ save_item(NAME(m_ctrl2));
+
+ m_ctrl1 = 0;
// FIXME: disabled for now to avoid cold start diagnostic errors
- //m_sreg_ctrl2 = CTRL2_COLDSTART | CTRL2_PWRUP;
- m_sreg_ctrl2 = 0;
+ m_ctrl2 = 0; // CTRL2_COLDSTART
+}
- save_item(NAME(m_sreg_error));
- save_item(NAME(m_sreg_status));
- save_item(NAME(m_sreg_led));
- save_item(NAME(m_sreg_ctrl1));
- save_item(NAME(m_sreg_ctrl2));
+void turquoise_state::machine_start()
+{
+ interpro_state::machine_start();
+
+ save_item(NAME(m_ctrl1));
+ save_item(NAME(m_ctrl2));
- save_item(NAME(m_sreg_ctrl3));
+ m_ctrl1 = 0;
+ // FIXME: disabled for now to avoid cold start diagnostic errors
+ m_ctrl2 = 0; // CTRL2_COLDSTART
}
-void interpro_state::machine_reset()
+void sapphire_state::machine_start()
+{
+ interpro_state::machine_start();
+
+ save_item(NAME(m_ctrl1));
+ save_item(NAME(m_ctrl2));
+
+ m_ctrl1 = 0;
+ // FIXME: disabled for now to avoid cold start diagnostic errors
+ m_ctrl2 = 0; // CTRL2_COLDSTART
+}
+
+void emerald_state::machine_reset()
+{
+ interpro_state::machine_reset();
+
+ // deassert floppy ready
+ m_fdc->ready_w(true);
+}
+
+void turquoise_state::machine_reset()
+{
+ interpro_state::machine_reset();
+
+ // deassert floppy ready
+ m_fdc->ready_w(true);
+}
+
+void sapphire_state::machine_reset()
{
- // flash rom requires the following values
- m_sreg_error = 0;
- m_sreg_status = 0x400;
- m_sreg_ctrl1 = CTRL1_FLOPLOW;
+ interpro_state::machine_reset();
+
+ // flash rom requires the following
+ m_status = 0x400;
}
void interpro_state::init_common()
@@ -279,60 +330,149 @@ void interpro_state::init_common()
m_maincpu->space(0).install_ram(0, m_ram->mask(), m_ram->pointer());
}
-WRITE16_MEMBER(interpro_state::sreg_led_w)
+WRITE16_MEMBER(interpro_state::led_w)
{
// 7-segment decode patterns (hex digits) borrowed from wico.cpp (mc14495)
static const u8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };
- m_led = patterns[data & 0xf];
+ m_diag_led = patterns[data & 0xf];
- COMBINE_DATA(&m_sreg_led);
+ COMBINE_DATA(&m_led);
}
-WRITE16_MEMBER(interpro_state::sreg_ctrl1_w)
+WRITE16_MEMBER(emerald_state::ctrl1_w)
{
LOG("control register 1 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
// check if led decimal point changes state
- if ((data ^ m_sreg_ctrl1) & CTRL1_LEDDP)
+ if ((data ^ m_ctrl1) & CTRL1_LEDDP)
m_led = (m_led + 0x80) & 0xff;
- COMBINE_DATA(&m_sreg_ctrl1);
+ // FIXME: select 3.5" or 5.25" floppy drive?
+ //if ((data ^ m_sreg_ctrl1) & CTRL1_FLOPLOW)
+ // logerror("floplow %d\n", data & CTRL1_FLOPLOW ? 1 : 0);
+
+ // FIXME: floppy ready line handling - this is strange but working
+ if (data & CTRL1_FLOPRDY)
+ m_fdc->ready_w(!(data & CTRL1_FLOPRDY));
+
+ COMBINE_DATA(&m_ctrl1);
+}
+
+WRITE16_MEMBER(turquoise_state::ctrl1_w)
+{
+ LOG("control register 1 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
+
+ // check if led decimal point changes state
+ if ((data ^ m_ctrl1) & CTRL1_LEDDP)
+ m_led = (m_led + 0x80) & 0xff;
+
+ // FIXME: select 3.5" or 5.25" floppy drive?
+ //if ((data ^ m_sreg_ctrl1) & CTRL1_FLOPLOW)
+ // logerror("floplow %d\n", data & CTRL1_FLOPLOW ? 1 : 0);
+
+ // FIXME: floppy ready line handling - this is strange but working
+ if (data & CTRL1_FLOPRDY)
+ m_fdc->ready_w(!(data & CTRL1_FLOPRDY));
+
+ COMBINE_DATA(&m_ctrl1);
+}
+
+WRITE16_MEMBER(sapphire_state::ctrl1_w)
+{
+ LOG("control register 1 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
+
+ // check if led decimal point changes state
+ if ((data ^ m_ctrl1) & CTRL1_LEDDP)
+ m_led = (m_led + 0x80) & 0xff;
+
+ // FIXME: select 3.5" or 5.25" floppy drive?
+ //if ((data ^ m_ctrl1) & CTRL1_FLOPLOW)
+ // logerror("floplow %d\n", data & CTRL1_FLOPLOW ? 1 : 0);
+
+ COMBINE_DATA(&m_ctrl1);
}
-WRITE16_MEMBER(interpro_state::sreg_ctrl2_w)
+WRITE16_MEMBER(emerald_state::ctrl2_w)
{
LOG("control register 2 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
if (data & CTRL2_RESET)
{
- m_sreg_ctrl2 &= ~CTRL2_COLDSTART;
+ m_ctrl2 &= ~CTRL2_COLDSTART;
machine().schedule_soft_reset();
}
else
- m_sreg_ctrl2 = (m_sreg_ctrl2 & ~CTRL2_MASK) | (data & CTRL2_MASK);
+ m_ctrl2 = (m_ctrl2 & ~CTRL2_WMASK) | (data & CTRL2_WMASK);
}
-WRITE16_MEMBER(sapphire_state::sreg_ctrl2_w)
+WRITE16_MEMBER(turquoise_state::ctrl2_w)
{
- interpro_state::sreg_ctrl2_w(space, offset, data, mem_mask);
+ LOG("control register 2 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
+ if (data & CTRL2_RESET)
+ {
+ m_ctrl2 &= ~CTRL2_COLDSTART;
+
+ machine().schedule_soft_reset();
+ }
+ else
+ m_ctrl2 = (m_ctrl2 & ~CTRL2_WMASK) | (data & CTRL2_WMASK);
+}
+
+WRITE16_MEMBER(sapphire_state::ctrl2_w)
+{
+ LOG("control register 2 data 0x%04x mem_mask 0x%04x (%s)\n", data, mem_mask, machine().describe_context());
+ if (data & CTRL2_RESET)
+ {
+ m_ctrl2 &= ~CTRL2_COLDSTART;
+
+ machine().schedule_soft_reset();
+ }
+ else
+ m_ctrl2 = (m_ctrl2 & ~0x4d) | (data & 0x4d);
// enable/disable programming power on both flash devices
- m_flash_lo->vpp(data & CTRL2_FLASHEN ? ASSERT_LINE : CLEAR_LINE);
- m_flash_hi->vpp(data & CTRL2_FLASHEN ? ASSERT_LINE : CLEAR_LINE);
+ m_flash_lsb->vpp(data & CTRL2_FLASHEN ? ASSERT_LINE : CLEAR_LINE);
+ m_flash_msb->vpp(data & CTRL2_FLASHEN ? ASSERT_LINE : CLEAR_LINE);
}
-READ16_MEMBER(interpro_state::sreg_error_r)
+READ16_MEMBER(interpro_state::error_r)
{
- const u16 result = m_sreg_error;
+ const u16 result = m_error;
// clear error register on read
if (!machine().side_effects_disabled())
- m_sreg_error = 0;
+ m_error = 0;
return result;
}
+READ32_MEMBER(interpro_state::unmapped_r)
+{
+ if (!machine().side_effects_disabled())
+ {
+ // flag non-existent memory error in system error register
+ m_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
+
+ // tell ioga to raise a bus error
+ m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2);
+ }
+
+ return space.unmap();
+}
+
+WRITE32_MEMBER(interpro_state::unmapped_w)
+{
+ if (!machine().side_effects_disabled())
+ {
+ // flag non-existent memory error in system error register
+ m_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
+
+ // tell ioga to raise a bus error
+ m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2);
+ }
+}
+
READ32_MEMBER(sapphire_state::unmapped_r)
{
// check if non-existent memory errors are enabled
@@ -340,7 +480,7 @@ READ32_MEMBER(sapphire_state::unmapped_r)
if (m_arbga->tctrl_r(space, offset, mem_mask) & interpro_arbga_device::TCTRL_ENNEM)
{
// flag non-existent memory error in system error register
- m_sreg_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
+ m_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
// tell ioga to raise a bus error
m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2);
@@ -355,7 +495,7 @@ WRITE32_MEMBER(sapphire_state::unmapped_w)
if (m_arbga->tctrl_r(space, offset, mem_mask) & interpro_arbga_device::TCTRL_ENNEM)
{
// flag non-existent memory error in system error register
- m_sreg_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
+ m_error |= (ERROR_SRXNEM | ERROR_SRXVALID);
// tell ioga to raise a bus error
m_ioga->bus_error(space, interpro_ioga_device::BINFO_BERR | interpro_ioga_device::BINFO_SNAPOK, offset << 2);
@@ -379,18 +519,18 @@ READ8_MEMBER(interpro_state::nodeid_r)
void interpro_state::interpro_common_map(address_map &map)
{
+ //map(0x00000000, 0xffffffff).rw(FUNC(interpro_state::unmapped_r), FUNC(interpro_state::unmapped_w));
+
// FIXME: don't know what this range is for
map(0x08000000, 0x08000fff).noprw();
map(0x4f007e00, 0x4f007eff).m(m_sga, FUNC(interpro_sga_device::map));
map(0x7f000100, 0x7f00011f).m(m_fdc, FUNC(upd765_family_device::map)).umask32(0x000000ff);
- map(0x7f000300, 0x7f000301).r(FUNC(interpro_state::sreg_error_r));
- map(0x7f000304, 0x7f000305).rw(FUNC(interpro_state::sreg_status_r), FUNC(interpro_state::sreg_led_w));
- map(0x7f000308, 0x7f000309).rw(FUNC(interpro_state::sreg_ctrl1_r), FUNC(interpro_state::sreg_ctrl1_w));
- map(0x7f00030c, 0x7f00030d).rw(FUNC(interpro_state::sreg_ctrl2_r), FUNC(interpro_state::sreg_ctrl2_w));
-
- map(0x7f00031c, 0x7f00031d).rw(FUNC(interpro_state::sreg_ctrl3_r), FUNC(interpro_state::sreg_ctrl3_w));
+ map(0x7f000300, 0x7f000301).r(FUNC(interpro_state::error_r));
+ map(0x7f000304, 0x7f000305).rw(FUNC(interpro_state::status_r), FUNC(interpro_state::led_w));
+ map(0x7f000308, 0x7f000309).rw(FUNC(interpro_state::ctrl1_r), FUNC(interpro_state::ctrl1_w));
+ map(0x7f00030c, 0x7f00030d).rw(FUNC(interpro_state::ctrl2_r), FUNC(interpro_state::ctrl2_w));
map(0x7f000400, 0x7f00040f).rw(m_scc1, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff);
map(0x7f000410, 0x7f00041f).rw(m_scc2, FUNC(z80scc_device::ba_cd_inv_r), FUNC(z80scc_device::ba_cd_inv_w)).umask32(0x000000ff);
@@ -429,13 +569,15 @@ void emerald_state::emerald_base_map(address_map &map)
map(0x7f000229, 0x7f000229).w(m_scsi, FUNC(ncr53c90a_device::test_w));
map(0x7f00022d, 0x7f00022d).rw(m_scsi, FUNC(ncr53c90a_device::conf2_r), FUNC(ncr53c90a_device::conf2_w));
- map(0x7f000300, 0x7f000300).w(FUNC(emerald_state::sreg_error_w));
+ map(0x7f000300, 0x7f000300).w(FUNC(emerald_state::error_w));
map(0x7f000600, 0x7f00067f).rom().region(INTERPRO_NODEID_TAG, 0);
}
void emerald_state::emerald_main_map(address_map &map)
{
+ //map(0x00000000, 0xffffffff).rw(FUNC(interpro_state::unmapped_r), FUNC(interpro_state::unmapped_w));
+
emerald_base_map(map);
map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
@@ -462,13 +604,15 @@ void turquoise_state::turquoise_base_map(address_map &map)
map(0x7f000229, 0x7f000229).w(m_scsi, FUNC(ncr53c90a_device::test_w));
map(0x7f00022d, 0x7f00022d).rw(m_scsi, FUNC(ncr53c90a_device::conf2_r), FUNC(ncr53c90a_device::conf2_w));
- map(0x7f000300, 0x7f000300).w(FUNC(turquoise_state::sreg_error_w));
+ map(0x7f000300, 0x7f000300).w(FUNC(turquoise_state::error_w));
map(0x7f000600, 0x7f00067f).rom().region(INTERPRO_NODEID_TAG, 0);
}
void turquoise_state::turquoise_main_map(address_map &map)
{
+ //map(0x00000000, 0xffffffff).rw(FUNC(interpro_state::unmapped_r), FUNC(interpro_state::unmapped_w));
+
turquoise_base_map(map);
map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
@@ -479,7 +623,7 @@ void sapphire_state::sapphire_base_map(address_map &map)
{
interpro_common_map(map);
- map(0x40000000, 0x4000004f).m(INTERPRO_MCGA_TAG, FUNC(interpro_fmcc_device::map));
+ map(0x40000000, 0x4000004f).m(m_mcga, FUNC(interpro_fmcc_device::map));
map(0x7f000200, 0x7f0002ff).m(m_arbga, FUNC(interpro_arbga_device::map));
map(0x7f000600, 0x7f00060f).r(FUNC(sapphire_state::nodeid_r)).umask32(0x000000ff);
@@ -509,8 +653,8 @@ void sapphire_state::sapphire_main_map(address_map &map)
map(0x00000000, 0x00ffffff).ram().share(RAM_TAG);
map(0x7f100000, 0x7f11ffff).rom().region(INTERPRO_EPROM_TAG, 0);
- map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_lo", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0x00ff00ff).mask(0x3ffff);
- map(0x7f180000, 0x7f1fffff).rw(INTERPRO_FLASH_TAG "_hi", FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0xff00ff00).mask(0x3ffff);
+ map(0x7f180000, 0x7f1fffff).rw(m_flash_lsb, FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0x00ff00ff).mask(0x3ffff);
+ map(0x7f180000, 0x7f1fffff).rw(m_flash_msb, FUNC(intel_28f010_device::read), FUNC(intel_28f010_device::write)).umask32(0xff00ff00).mask(0x3ffff);
// HACK: for SRX bus Sapphire only
//map(0x8f007f80, 0x8f007fff).rom().region(INTERPRO_IDPROM_TAG, 0);
@@ -520,24 +664,22 @@ void emerald_state::emerald_io_map(address_map &map)
{
emerald_base_map(map);
- map(0x00000800, 0x000009ff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map));
- map(0x00000a00, 0x00000bff).m(INTERPRO_MMU_TAG "_i", FUNC(cammu_c3_device::map));
- map(0x00000c00, 0x00000dff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map_global));
+ map(0x00000800, 0x000009ff).m(m_d_cammu, FUNC(cammu_c3_device::map));
+ map(0x00000a00, 0x00000bff).m(m_i_cammu, FUNC(cammu_c3_device::map));
+ map(0x00000c00, 0x00000dff).m(m_d_cammu, FUNC(cammu_c3_device::map_global));
}
void turquoise_state::turquoise_io_map(address_map &map)
{
turquoise_base_map(map);
- map(0x00000800, 0x000009ff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map));
- map(0x00000a00, 0x00000bff).m(INTERPRO_MMU_TAG "_i", FUNC(cammu_c3_device::map));
- map(0x00000c00, 0x00000dff).m(INTERPRO_MMU_TAG "_d", FUNC(cammu_c3_device::map_global));
+ map(0x00000800, 0x000009ff).m(m_d_cammu, FUNC(cammu_c3_device::map));
+ map(0x00000a00, 0x00000bff).m(m_i_cammu, FUNC(cammu_c3_device::map));
+ map(0x00000c00, 0x00000dff).m(m_d_cammu, FUNC(cammu_c3_device::map_global));
}
void sapphire_state::sapphire_io_map(address_map &map)
{
- //map(0x00000000, 0xffffffff).rw(FUNC(sapphire_state::unmapped_r), FUNC(sapphire_state::unmapped_w));
-
sapphire_base_map(map);
map(0x00000000, 0x00001fff).m(m_mmu, FUNC(cammu_c4_device::map));
@@ -554,17 +696,17 @@ void interpro_state::interpro_boot_map(address_map &map)
void emerald_state::interpro_82586_map(address_map &map)
{
- map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
+ map(0x00000000, 0x00ffffff).rw(m_ioga, FUNC(emerald_ioga_device::eth_r), FUNC(emerald_ioga_device::eth_w));
}
void turquoise_state::interpro_82586_map(address_map &map)
{
- map(0x00000000, 0x00ffffff).rw(INTERPRO_IOGA_TAG, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
+ map(0x00000000, 0x00ffffff).rw(m_ioga, FUNC(turquoise_ioga_device::eth_r), FUNC(turquoise_ioga_device::eth_w));
}
void sapphire_state::interpro_82596_map(address_map &map)
{
- map(0x00000000, 0xffffffff).rw(INTERPRO_IOGA_TAG, FUNC(sapphire_ioga_device::eth_r), FUNC(sapphire_ioga_device::eth_w));
+ map(0x00000000, 0xffffffff).rw(m_ioga, FUNC(sapphire_ioga_device::eth_r), FUNC(sapphire_ioga_device::eth_w));
}
FLOPPY_FORMATS_MEMBER(interpro_state::floppy_formats)
@@ -581,35 +723,35 @@ MACHINE_CONFIG_START(interpro_state::interpro_scc1)
MCFG_DEVICE_MODIFY(INTERPRO_SCC1_TAG)
MCFG_Z80SCC_OUT_TXDA_CB(WRITELINE(INTERPRO_SERIAL_PORT1_TAG, rs232_port_device, write_txd))
MCFG_Z80SCC_OUT_TXDB_CB(WRITELINE(INTERPRO_SERIAL_PORT2_TAG, rs232_port_device, write_txd))
- MCFG_Z80SCC_OUT_INT_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir11_w))
- MCFG_Z80SCC_OUT_WREQA_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_serial1))
- MCFG_Z80SCC_OUT_WREQB_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_serial2))
+ MCFG_Z80SCC_OUT_INT_CB(WRITELINE(m_ioga, interpro_ioga_device, ir11_w))
+ MCFG_Z80SCC_OUT_WREQA_CB(WRITELINE(m_ioga, interpro_ioga_device, drq_serial1))
+ MCFG_Z80SCC_OUT_WREQB_CB(WRITELINE(m_ioga, interpro_ioga_device, drq_serial2))
MCFG_DEVICE_ADD(INTERPRO_SERIAL_PORT1_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxa_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcda_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsa_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc1, z80scc_device, rxa_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc1, z80scc_device, dcda_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_scc1, z80scc_device, ctsa_w))
MCFG_DEVICE_ADD(INTERPRO_SERIAL_PORT2_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INTERPRO_SCC1_TAG, z80scc_device, ctsb_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc1, z80scc_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc1, z80scc_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_scc1, z80scc_device, ctsb_w))
MACHINE_CONFIG_END
MACHINE_CONFIG_START(interpro_state::interpro_scc2)
MCFG_DEVICE_MODIFY(INTERPRO_SCC2_TAG)
MCFG_Z80SCC_OUT_TXDA_CB(WRITELINE(INTERPRO_KEYBOARD_PORT_TAG, interpro_keyboard_port_device, write_txd))
MCFG_Z80SCC_OUT_TXDB_CB(WRITELINE(INTERPRO_SERIAL_PORT0_TAG, rs232_port_device, write_txd))
- MCFG_Z80SCC_OUT_INT_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir11_w))
- MCFG_Z80SCC_OUT_WREQB_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_serial0))
+ MCFG_Z80SCC_OUT_INT_CB(WRITELINE(m_ioga, interpro_ioga_device, ir11_w))
+ MCFG_Z80SCC_OUT_WREQB_CB(WRITELINE(m_ioga, interpro_ioga_device, drq_serial0))
MCFG_INTERPRO_KEYBOARD_PORT_ADD(INTERPRO_KEYBOARD_PORT_TAG, interpro_keyboard_devices, "lle_en_us")
- MCFG_INTERPRO_KEYBOARD_RXD_HANDLER(WRITELINE(INTERPRO_SCC2_TAG, z80scc_device, rxa_w))
+ MCFG_INTERPRO_KEYBOARD_RXD_HANDLER(WRITELINE(m_scc2, z80scc_device, rxa_w))
MCFG_DEVICE_ADD(INTERPRO_SERIAL_PORT0_TAG, RS232_PORT, default_rs232_devices, nullptr)
- MCFG_RS232_RXD_HANDLER(WRITELINE(INTERPRO_SCC2_TAG, z80scc_device, rxb_w))
- MCFG_RS232_DCD_HANDLER(WRITELINE(INTERPRO_SCC2_TAG, z80scc_device, dcdb_w))
- MCFG_RS232_CTS_HANDLER(WRITELINE(INTERPRO_SCC2_TAG, z80scc_device, ctsb_w))
+ MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc2, z80scc_device, rxb_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc2, z80scc_device, dcdb_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(m_scc2, z80scc_device, ctsb_w))
MACHINE_CONFIG_END
static void interpro_scsi_devices(device_slot_interface &device)
@@ -642,24 +784,29 @@ void interpro_state::interpro_scsi_adapter(device_t *device)
MCFG_NCR5390_DRQ_HANDLER(WRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi))
}
+void interpro_state::interpro_cdrom(device_t *device)
+{
+ // FIXME: enable when dependent code is committed
+ //downcast<nscsi_cdrom_device &>(*device).set_block_size(512);
+}
+
MACHINE_CONFIG_START(interpro_state::ioga)
MCFG_DEVICE_MODIFY(INTERPRO_IOGA_TAG)
- MCFG_INTERPRO_IOGA_NMI_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_NMI))
- MCFG_INTERPRO_IOGA_IRQ_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_IRQ0))
- MCFG_INTERPRO_IOGA_IVEC_CB(WRITE8(INTERPRO_CPU_TAG, clipper_device, set_ivec))
+ MCFG_INTERPRO_IOGA_NMI_CB(INPUTLINE(m_maincpu, INPUT_LINE_NMI))
+ MCFG_INTERPRO_IOGA_IRQ_CB(INPUTLINE(m_maincpu, INPUT_LINE_IRQ0))
+ MCFG_INTERPRO_IOGA_IVEC_CB(WRITE8(m_maincpu, clipper_device, set_ivec))
// ioga dma and serial dma channels
- // TODO: check serial dma channels - scc2chanA (keyboard) has no dma
//MCFG_INTERPRO_IOGA_DMA_CB(0, unknown) // plotter
MCFG_INTERPRO_IOGA_DMA_CB(1, READ8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_r), WRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_w))
- MCFG_INTERPRO_IOGA_DMA_CB(2, READ8(INTERPRO_FDC_TAG, upd765_family_device, mdma_r), WRITE8(INTERPRO_FDC_TAG, upd765_family_device, mdma_w))
- MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(0, READ8(INTERPRO_SCC2_TAG, z80scc_device, db_r), WRITE8(INTERPRO_SCC2_TAG, z80scc_device, db_w))
- MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(1, READ8(INTERPRO_SCC1_TAG, z80scc_device, da_r), WRITE8(INTERPRO_SCC1_TAG, z80scc_device, da_w))
- MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(2, READ8(INTERPRO_SCC1_TAG, z80scc_device, db_r), WRITE8(INTERPRO_SCC1_TAG, z80scc_device, db_w))
+ MCFG_INTERPRO_IOGA_DMA_CB(2, READ8(m_fdc, upd765_family_device, mdma_r), WRITE8(m_fdc, upd765_family_device, mdma_w))
+ MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(0, READ8(m_scc2, z80scc_device, db_r), WRITE8(m_scc2, z80scc_device, db_w))
+ MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(1, READ8(m_scc1, z80scc_device, da_r), WRITE8(m_scc1, z80scc_device, da_w))
+ MCFG_INTERPRO_IOGA_SERIAL_DMA_CB(2, READ8(m_scc1, z80scc_device, db_r), WRITE8(m_scc1, z80scc_device, db_w))
// ioga floppy terminal count, ethernet channel attention
- MCFG_INTERPRO_IOGA_FDCTC_CB(WRITELINE(INTERPRO_FDC_TAG, upd765_family_device, tc_line_w))
- MCFG_INTERPRO_IOGA_ETH_CA_CB(WRITELINE(INTERPRO_ETH_TAG, i82586_base_device, ca))
+ MCFG_INTERPRO_IOGA_FDCTC_CB(WRITELINE(m_fdc, upd765_family_device, tc_line_w))
+ MCFG_INTERPRO_IOGA_ETH_CA_CB(WRITELINE(m_eth, i82586_base_device, ca))
MACHINE_CONFIG_END
static INPUT_PORTS_START(interpro)
@@ -673,25 +820,26 @@ MACHINE_CONFIG_START(interpro_state::interpro)
// memory control gate array
// srx gate array
- MCFG_DEVICE_ADD(INTERPRO_SGA_TAG, INTERPRO_SGA, 0)
- MCFG_INTERPRO_SGA_BERR_CB(WRITE32(INTERPRO_IOGA_TAG, interpro_ioga_device, bus_error))
+ MCFG_DEVICE_ADD(m_sga, INTERPRO_SGA, 0)
+ MCFG_INTERPRO_SGA_BERR_CB(WRITE32(m_ioga, interpro_ioga_device, bus_error))
// floppy
// serial
// real-time clock/non-volatile memory
- MCFG_DEVICE_ADD(INTERPRO_RTC_TAG, MC146818, 32.768_kHz_XTAL)
+ MCFG_DEVICE_ADD(m_rtc, MC146818, 32.768_kHz_XTAL)
MCFG_MC146818_UTC(true)
- MCFG_MC146818_IRQ_HANDLER(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir9_w))
+ MCFG_MC146818_IRQ_HANDLER(WRITELINE(m_ioga, interpro_ioga_device, ir9_w))
// scsi
- MCFG_NSCSI_BUS_ADD(INTERPRO_SCSI_TAG)
+ MCFG_DEVICE_ADD(m_scsibus, NSCSI_BUS, 0)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":0", interpro_scsi_devices, "harddisk", false)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, nullptr, false)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":2", interpro_scsi_devices, nullptr, false)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":3", interpro_scsi_devices, nullptr, false)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":4", interpro_scsi_devices, "cdrom", false)
+ MCFG_SLOT_OPTION_MACHINE_CONFIG("cdrom", interpro_cdrom)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":5", interpro_scsi_devices, nullptr, false)
MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":6", interpro_scsi_devices, nullptr, false)
@@ -702,7 +850,7 @@ MACHINE_CONFIG_START(interpro_state::interpro)
// mouse
MCFG_DEVICE_ADD(INTERPRO_MOUSE_PORT_TAG, INTERPRO_MOUSE_PORT, 0)
MCFG_DEVICE_SLOT_INTERFACE(interpro_mouse_devices, "interpro_mouse", false)
- MCFG_MOUSE_STATE_CB(WRITE32(INTERPRO_IOGA_TAG, interpro_ioga_device, mouse_status_w))
+ MCFG_MOUSE_STATE_CB(WRITE32(m_ioga, interpro_ioga_device, mouse_status_w))
// system layout
MCFG_DEFAULT_LAYOUT(layout_interpro)
@@ -714,17 +862,17 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(emerald_state::emerald)
interpro(config);
- MCFG_DEVICE_ADD(INTERPRO_CPU_TAG, CLIPPER_C300, 12.5_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_maincpu, CLIPPER_C300, 12.5_MHz_XTAL)
MCFG_DEVICE_ADDRESS_MAP(0, emerald_main_map)
MCFG_DEVICE_ADDRESS_MAP(1, emerald_io_map)
MCFG_DEVICE_ADDRESS_MAP(2, interpro_boot_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, acknowledge_interrupt)
- MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_i", CAMMU_C3, 0)
- MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_DEVICE_ADD(m_i_cammu, CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(m_maincpu, clipper_device, set_exception))
- MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_d", CAMMU_C3, 0)
- MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_DEVICE_ADD(m_d_cammu, CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(m_maincpu, clipper_device, set_exception))
MCFG_CAMMU_LINK(INTERPRO_MMU_TAG "_i")
// boot fails memory test without this
@@ -732,25 +880,22 @@ MACHINE_CONFIG_START(emerald_state::emerald)
MCFG_RAM_DEFAULT_VALUE(0x00)
// memory control gate array
- MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_MCGA, 0)
+ MCFG_DEVICE_ADD(m_mcga, INTERPRO_MCGA, 0)
// floppy controller
- // FIXME: not sure this should really be ready connected, but prevents crash at startup
- MCFG_I82072_ADD(INTERPRO_FDC_TAG, true)
- MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir1_w))
- MCFG_UPD765_DRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_floppy))
-
- // connect a 5.25" drive at id 3
- MCFG_DEVICE_ADD("fdc:0", FLOPPY_CONNECTOR, 0)
- MCFG_DEVICE_ADD("fdc:1", FLOPPY_CONNECTOR, 0)
- MCFG_DEVICE_ADD("fdc:2", FLOPPY_CONNECTOR, 0)
- MCFG_FLOPPY_DRIVE_ADD("fdc:3", interpro_floppies, "35hd", interpro_state::floppy_formats)
+ MCFG_I82072_ADD(m_fdc, false)
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, ir1_w))
+ MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, drq_floppy))
+
+ // connect a 3.5" drive at id 3
+ //MCFG_FLOPPY_DRIVE_ADD(INTERPRO_FDC_TAG ":2", interpro_floppies, "525hd", interpro_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(INTERPRO_FDC_TAG ":3", interpro_floppies, "35hd", interpro_state::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(false)
// serial controllers and ports
- MCFG_DEVICE_ADD(INTERPRO_SCC1_TAG, SCC85C30, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc1, SCC85C30, 4.9152_MHz_XTAL)
interpro_scc1(config);
- MCFG_DEVICE_ADD(INTERPRO_SCC2_TAG, SCC85C30, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc2, SCC85C30, 4.9152_MHz_XTAL)
interpro_scc2(config);
// scsi controller
@@ -758,29 +903,29 @@ MACHINE_CONFIG_START(emerald_state::emerald)
MCFG_SLOT_OPTION_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter)
// ethernet controller
- MCFG_DEVICE_ADD(INTERPRO_ETH_TAG, I82586, 10_MHz_XTAL)
- MCFG_I82586_IRQ_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir12_w))
+ MCFG_DEVICE_ADD(m_eth, I82586, 10_MHz_XTAL)
+ MCFG_I82586_IRQ_CB(WRITELINE(m_ioga, interpro_ioga_device, ir12_w))
MCFG_DEVICE_ADDRESS_MAP(0, interpro_82586_map)
// i/o gate array
- MCFG_DEVICE_ADD(INTERPRO_IOGA_TAG, TURQUOISE_IOGA, 0)
+ MCFG_DEVICE_ADD(m_ioga, EMERALD_IOGA, 0)
MCFG_INTERPRO_IOGA_MEMORY(INTERPRO_CPU_TAG, 0)
ioga(config);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(turquoise_state::turquoise)
interpro(config);
- MCFG_DEVICE_ADD(INTERPRO_CPU_TAG, CLIPPER_C300, 12.5_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_maincpu, CLIPPER_C300, 12.5_MHz_XTAL)
MCFG_DEVICE_ADDRESS_MAP(0, turquoise_main_map)
MCFG_DEVICE_ADDRESS_MAP(1, turquoise_io_map)
MCFG_DEVICE_ADDRESS_MAP(2, interpro_boot_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, acknowledge_interrupt)
- MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_i", CAMMU_C3, 0)
- MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_DEVICE_ADD(m_i_cammu, CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(m_maincpu, clipper_device, set_exception))
- MCFG_DEVICE_ADD(INTERPRO_MMU_TAG "_d", CAMMU_C3, 0)
- MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_DEVICE_ADD(m_d_cammu, CAMMU_C3, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(m_maincpu, clipper_device, set_exception))
MCFG_CAMMU_LINK(INTERPRO_MMU_TAG "_i")
// boot fails memory test without this
@@ -788,24 +933,21 @@ MACHINE_CONFIG_START(turquoise_state::turquoise)
MCFG_RAM_DEFAULT_VALUE(0x00)
// memory control gate array
- MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_MCGA, 0)
+ MCFG_DEVICE_ADD(m_mcga, INTERPRO_MCGA, 0)
// floppy controller
- MCFG_I82072_ADD(INTERPRO_FDC_TAG, false)
- MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir1_w))
- MCFG_UPD765_DRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_floppy))
+ MCFG_I82072_ADD(m_fdc, false)
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, ir1_w))
+ MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, drq_floppy))
// connect a 3.5" drive at id 3
- MCFG_DEVICE_ADD("fdc:0", FLOPPY_CONNECTOR, 0)
- MCFG_DEVICE_ADD("fdc:1", FLOPPY_CONNECTOR, 0)
- MCFG_DEVICE_ADD("fdc:2", FLOPPY_CONNECTOR, 0)
- MCFG_FLOPPY_DRIVE_ADD("fdc:3", interpro_floppies, "35hd", interpro_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(INTERPRO_FDC_TAG ":3", interpro_floppies, "35hd", interpro_state::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(false)
// serial controllers and ports
- MCFG_DEVICE_ADD(INTERPRO_SCC1_TAG, SCC85C30, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc1, SCC85C30, 4.9152_MHz_XTAL)
interpro_scc1(config);
- MCFG_DEVICE_ADD(INTERPRO_SCC2_TAG, SCC85C30, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc2, SCC85C30, 4.9152_MHz_XTAL)
interpro_scc2(config);
// scsi controller
@@ -813,58 +955,57 @@ MACHINE_CONFIG_START(turquoise_state::turquoise)
MCFG_SLOT_OPTION_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter)
// ethernet controller
- MCFG_DEVICE_ADD(INTERPRO_ETH_TAG, I82586, 0)
- MCFG_I82586_IRQ_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir12_w))
+ MCFG_DEVICE_ADD(m_eth, I82586, 0)
+ MCFG_I82586_IRQ_CB(WRITELINE(m_ioga, interpro_ioga_device, ir12_w))
MCFG_DEVICE_ADDRESS_MAP(0, interpro_82586_map)
// i/o gate array
- MCFG_DEVICE_ADD(INTERPRO_IOGA_TAG, TURQUOISE_IOGA, 0)
+ MCFG_DEVICE_ADD(m_ioga, TURQUOISE_IOGA, 0)
MCFG_INTERPRO_IOGA_MEMORY(INTERPRO_CPU_TAG, 0)
ioga(config);
// cbus and slots
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
- MCFG_CBUS_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
- MCFG_CBUS_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
- MCFG_CBUS_OUT_VBLANK_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir3_w))
+ MCFG_CBUS_OUT_IRQ1_CB(WRITELINE(m_ioga, interpro_ioga_device, ir4_w))
+ MCFG_CBUS_OUT_IRQ2_CB(WRITELINE(m_ioga, interpro_ioga_device, ir5_w))
+ MCFG_CBUS_OUT_VBLANK_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, nullptr, false)
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(sapphire_state::sapphire)
interpro(config);
- MCFG_DEVICE_ADD(INTERPRO_CPU_TAG, CLIPPER_C400, 12.5_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_maincpu, CLIPPER_C400, 12.5_MHz_XTAL)
MCFG_DEVICE_ADDRESS_MAP(0, sapphire_main_map)
MCFG_DEVICE_ADDRESS_MAP(1, sapphire_io_map)
MCFG_DEVICE_ADDRESS_MAP(2, interpro_boot_map)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(INTERPRO_IOGA_TAG, interpro_ioga_device, acknowledge_interrupt)
// FIXME: 2400/6400 should be C4T cammu?
- MCFG_DEVICE_ADD(INTERPRO_MMU_TAG, CAMMU_C4I, 0)
- MCFG_CAMMU_EXCEPTION_CB(WRITE16(INTERPRO_CPU_TAG, clipper_device, set_exception))
+ MCFG_DEVICE_ADD(m_mmu, CAMMU_C4I, 0)
+ MCFG_CAMMU_EXCEPTION_CB(WRITE16(m_maincpu, clipper_device, set_exception))
// memory control gate array
- MCFG_DEVICE_ADD(INTERPRO_MCGA_TAG, INTERPRO_FMCC, 0)
+ MCFG_DEVICE_ADD(m_mcga, INTERPRO_FMCC, 0)
// floppy controller
- MCFG_N82077AA_ADD(INTERPRO_FDC_TAG, n82077aa_device::MODE_PS2)
- MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir1_w))
- MCFG_UPD765_DRQ_CALLBACK(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_floppy))
+ MCFG_N82077AA_ADD(m_fdc, n82077aa_device::MODE_PS2)
+ MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, ir1_w))
+ MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_ioga, interpro_ioga_device, drq_floppy))
// connect a 3.5" drive at id 1
- MCFG_DEVICE_ADD("fdc:0", FLOPPY_CONNECTOR, 0)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1", interpro_floppies, "35hd", interpro_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(INTERPRO_FDC_TAG ":1", interpro_floppies, "35hd", interpro_state::floppy_formats)
MCFG_FLOPPY_DRIVE_SOUND(false)
// srx arbiter gate array
- MCFG_DEVICE_ADD(INTERPRO_ARBGA_TAG, INTERPRO_ARBGA, 0)
+ MCFG_DEVICE_ADD(m_arbga, INTERPRO_ARBGA, 0)
// serial controllers and ports
- MCFG_DEVICE_ADD(INTERPRO_SCC1_TAG, SCC85230, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc1, SCC85230, 4.9152_MHz_XTAL)
interpro_scc1(config);
- MCFG_DEVICE_ADD(INTERPRO_SCC2_TAG, SCC85C30, 4.9152_MHz_XTAL)
+ MCFG_DEVICE_ADD(m_scc2, SCC85C30, 4.9152_MHz_XTAL)
interpro_scc2(config);
// scsi controller
@@ -872,18 +1013,18 @@ MACHINE_CONFIG_START(sapphire_state::sapphire)
MCFG_SLOT_OPTION_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter)
// ethernet controller
- MCFG_DEVICE_ADD(INTERPRO_ETH_TAG, I82596_LE16, 20_MHz_XTAL)
- MCFG_I82586_IRQ_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir12_w))
+ MCFG_DEVICE_ADD(m_eth, I82596_LE16, 20_MHz_XTAL)
+ MCFG_I82586_IRQ_CB(WRITELINE(m_ioga, interpro_ioga_device, ir12_w))
MCFG_DEVICE_ADDRESS_MAP(0, interpro_82596_map)
// i/o gate array
- MCFG_DEVICE_ADD(INTERPRO_IOGA_TAG, SAPPHIRE_IOGA, 0)
+ MCFG_DEVICE_ADD(m_ioga, SAPPHIRE_IOGA, 0)
MCFG_INTERPRO_IOGA_MEMORY(INTERPRO_CPU_TAG, 0)
ioga(config);
// flash memory
- MCFG_DEVICE_ADD(INTERPRO_FLASH_TAG "_lo", INTEL_28F010, 0)
- MCFG_DEVICE_ADD(INTERPRO_FLASH_TAG "_hi", INTEL_28F010, 0)
+ MCFG_DEVICE_ADD(m_flash_lsb, INTEL_28F010, 0)
+ MCFG_DEVICE_ADD(m_flash_msb, INTEL_28F010, 0)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(turquoise_state::ip2000)
@@ -909,7 +1050,7 @@ MACHINE_CONFIG_START(sapphire_state::ip2400)
// cbus and slots (default to 2430 with GT+ graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
@@ -924,7 +1065,7 @@ MACHINE_CONFIG_START(sapphire_state::ip2500)
// cbus and slots (default to 2530 with GT+ graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
@@ -946,7 +1087,7 @@ MACHINE_CONFIG_START(sapphire_state::ip2700)
// cbus and slots (default to 2730 with GT+ graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
@@ -967,7 +1108,7 @@ MACHINE_CONFIG_START(sapphire_state::ip2800)
// cbus and slots (default to 2830 with GT+ graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, CBUS, 0)
MCFG_CBUS_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir6_w))
+ MCFG_CBUS_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":0", cbus_cards, "msmt070", false)
MCFG_CBUS_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", cbus_cards, nullptr, false)
@@ -994,9 +1135,10 @@ MACHINE_CONFIG_START(emerald_state::ip6000)
// srx and slots (default to 6040 with EDGE-1 graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
- MCFG_SRX_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
- MCFG_SRX_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir3_w))
+ MCFG_SRX_OUT_IRQ1_CB(WRITELINE(m_ioga, interpro_ioga_device, ir4_w))
+ MCFG_SRX_OUT_IRQ2_CB(WRITELINE(m_ioga, interpro_ioga_device, ir5_w))
+ MCFG_SRX_OUT_VBLANK_CB(WRITELINE(m_ioga, interpro_ioga_device, ir6_w))
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "mpcb828", false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
@@ -1016,9 +1158,9 @@ MACHINE_CONFIG_START(sapphire_state::ip6400)
// srx and slots (default to 6450 with GT II graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
- MCFG_SRX_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
- MCFG_SRX_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir3_w))
+ MCFG_SRX_OUT_IRQ1_CB(WRITELINE(m_ioga, interpro_ioga_device, ir4_w))
+ MCFG_SRX_OUT_IRQ2_CB(WRITELINE(m_ioga, interpro_ioga_device, ir5_w))
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "mpcbb92", false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
@@ -1043,9 +1185,9 @@ MACHINE_CONFIG_START(sapphire_state::ip6700)
// srx and slots (default to 6780 with EDGE-2 Plus graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
- MCFG_SRX_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
- MCFG_SRX_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir3_w))
+ MCFG_SRX_OUT_IRQ1_CB(WRITELINE(m_ioga, interpro_ioga_device, ir4_w))
+ MCFG_SRX_OUT_IRQ2_CB(WRITELINE(m_ioga, interpro_ioga_device, ir5_w))
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, "msmt094", false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, "mpcb896", false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, nullptr, false)
@@ -1070,9 +1212,9 @@ MACHINE_CONFIG_START(sapphire_state::ip6800)
// srx and slots (default to 6880 with EDGE-2 Plus graphics)
MCFG_DEVICE_ADD(INTERPRO_SLOT_TAG, SRX, 0)
MCFG_SRX_MEMORY(INTERPRO_CPU_TAG, 0, 1)
- MCFG_SRX_OUT_IRQ0_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir3_w))
- MCFG_SRX_OUT_IRQ1_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir4_w))
- MCFG_SRX_OUT_IRQ2_CB(WRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir5_w))
+ MCFG_SRX_OUT_IRQ0_CB(WRITELINE(m_ioga, interpro_ioga_device, ir3_w))
+ MCFG_SRX_OUT_IRQ1_CB(WRITELINE(m_ioga, interpro_ioga_device, ir4_w))
+ MCFG_SRX_OUT_IRQ2_CB(WRITELINE(m_ioga, interpro_ioga_device, ir5_w))
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":1", srx_cards, nullptr, false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":2", srx_cards, nullptr, false)
MCFG_SRX_SLOT_ADD(INTERPRO_SLOT_TAG, INTERPRO_SLOT_TAG ":3", srx_cards, "msmt094", false)
@@ -1102,10 +1244,10 @@ ROM_START(ip2400)
ROM_SYSTEM_BIOS(0, "ip2400", "InterPro 2400 EPROM")
ROMX_LOAD("mprgw510b__05_16_92.u35", 0x00000, 0x20000, CRC(3b2c4545) SHA1(4e4c98d1cd1035a04be8527223f44d0b687ec3ef), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u76", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u67", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
@@ -1117,10 +1259,10 @@ ROM_START(ip2500)
ROM_SYSTEM_BIOS(0, "ip2500", "InterPro 2500 EPROM")
ROMX_LOAD("ip2500_eprom.bin", 0x00000, 0x20000, NO_DUMP, ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u76", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u67", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
@@ -1132,10 +1274,10 @@ ROM_START(ip2700)
ROM_SYSTEM_BIOS(0, "ip2700", "InterPro 2700 EPROM")
ROMX_LOAD("mprgz530a__9405181.u35", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u76", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u67", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
@@ -1147,10 +1289,10 @@ ROM_START(ip2800)
ROM_SYSTEM_BIOS(0, "ip2800", "InterPro 2800 EPROM")
ROMX_LOAD("ip2800_eprom.bin", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u76", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u67", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
@@ -1176,11 +1318,11 @@ ROM_START(ip6400)
ROM_SYSTEM_BIOS(0, "ip6400", "InterPro 6400 EPROM")
ROMX_LOAD("ip6400_eprom.bin", 0x00000, 0x20000, BAD_DUMP CRC(3b2c4545) SHA1(4e4c98d1cd1035a04be8527223f44d0b687ec3ef), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
- ROM_LOAD_OPTIONAL("flash.lo", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
+ ROM_LOAD_OPTIONAL("flash.lsb", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
- ROM_LOAD_OPTIONAL("flash.hi", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
+ ROM_LOAD_OPTIONAL("flash.msb", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
ROM_START(ip6700)
@@ -1191,10 +1333,10 @@ ROM_START(ip6700)
ROM_SYSTEM_BIOS(0, "ip6700", "InterPro 6700 EPROM")
ROMX_LOAD("mprgz530a.u144", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u117", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u130", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END
@@ -1206,10 +1348,10 @@ ROM_START(ip6800)
ROM_SYSTEM_BIOS(0, "ip6800", "InterPro 6800 EPROM")
ROMX_LOAD("mprgz530a__9406270.u144", 0x00000, 0x20000, CRC(467ce7bd) SHA1(53faee40d5df311f53b24c930e434cbf94a5c4aa), ROM_BIOS(0))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lo", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_lsb", 0)
ROM_LOAD_OPTIONAL("y225.u117", 0x00000, 0x20000, CRC(46c0b105) SHA1(7c4a104e4fb3d0e5e8db7c911cdfb3f5c4fb0218))
- ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_hi", 0)
+ ROM_REGION(0x20000, INTERPRO_FLASH_TAG "_msb", 0)
ROM_LOAD_OPTIONAL("y226.u130", 0x00000, 0x20000, CRC(54d95730) SHA1(a4e114dee1567d8aa31eed770f7cc366588f395c))
ROM_END