diff options
author | Patrick Mackinlay <pmackinlay@hotmail.com> | 2017-07-04 13:49:09 +0700 |
---|---|---|
committer | Olivier Galibert <galibert@pobox.com> | 2017-07-04 08:49:09 +0200 |
commit | 2609d199c82ead1e1fc214041e2f5d0ea8d2fb90 (patch) | |
tree | 0f5ed0a332270e2318a477872069cb7cb3a48c32 /src/mame/drivers/interpro.cpp | |
parent | b5893ed3f0de75e52e3dcbfd6ec956ae69fb27f2 (diff) |
interpro: scsi is working [P. Mackinlay]
* reworked dma, added eth regs
* passing all iogadiag tests if bus error hack is enabled
* improved 5390 device, removed legacy scsi stuff
Diffstat (limited to 'src/mame/drivers/interpro.cpp')
-rw-r--r-- | src/mame/drivers/interpro.cpp | 62 |
1 files changed, 6 insertions, 56 deletions
diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index 8747c865ad0..1064cadbaa1 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -3,8 +3,6 @@ #include "emu.h" -#define NEW_SCSI 1 - #include "includes/interpro.h" #include "debugger.h" @@ -262,7 +260,6 @@ READ8_MEMBER(interpro_state::rtc_r) READ8_MEMBER(interpro_state::scsi_r) { -#if NEW_SCSI switch (offset >> 6) { case 0x0: return m_scsi->tcounter_lo_r(space, 0); @@ -275,19 +272,14 @@ READ8_MEMBER(interpro_state::scsi_r) case 0x7: return m_scsi->fifo_flags_r(space, 0); case 0x8: return m_scsi->conf_r(space, 0); case 0xb: return m_scsi->conf2_r(space, 0); - case 0xc: return m_scsi->conf3_r(space, 0); } - logerror("read unmapped scsi adapter register 0x%x\n", offset >> 6); - return 0x00; -#else - return m_scsi->read(space, offset >> 6, mem_mask); -#endif + logerror("scsi: read unmapped register 0x%x (%s)\n", offset >> 6, machine().describe_context()); + return space.unmap(); } WRITE8_MEMBER(interpro_state::scsi_w) { -#if NEW_SCSI switch (offset >> 6) { case 0: m_scsi->tcount_lo_w(space, 0, data); return; @@ -302,36 +294,9 @@ WRITE8_MEMBER(interpro_state::scsi_w) case 9: m_scsi->clock_w(space, 0, data); return; case 0xa: m_scsi->test_w(space, 0, data); return; case 0xb: m_scsi->conf2_w(space, 0, data); return; - case 0xc: m_scsi->conf3_w(space, 0, data); return; - case 0xf: m_scsi->fifo_align_w(space, 0, data); return; } - logerror("unmapped scsi register write 0x%02x data 0x%02x\n", offset >> 6, data); -#else - m_scsi->write(space, offset >> 6, data, mem_mask); -#endif -} - -READ8_MEMBER(interpro_state::scsi_dma_r) -{ -#if NEW_SCSI - return m_scsi->dma_r(); -#else - u8 data = 0; - - m_scsi->dma_read_data(1, &data); - - return data; -#endif -} - -WRITE8_MEMBER(interpro_state::scsi_dma_w) -{ -#if NEW_SCSI - m_scsi->dma_w(data); -#else - m_scsi->dma_write_data(1, &data); -#endif + logerror("scsi: unmapped register write 0x%02x data 0x%02x (%s)\n", offset >> 6, data, machine().describe_context()); } DRIVER_INIT_MEMBER(interpro_state, ip2800) @@ -351,19 +316,17 @@ DRIVER_INIT_MEMBER(interpro_state, ip2800) space.install_ram(0, m_ram->mask(), m_ram->pointer()); } -#if NEW_SCSI static SLOT_INTERFACE_START(interpro_scsi_devices) SLOT_INTERFACE("harddisk", NSCSI_HARDDISK) SLOT_INTERFACE("cdrom", NSCSI_CDROM) - SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C94) + SLOT_INTERFACE_INTERNAL(INTERPRO_SCSI_ADAPTER_TAG, NCR53C90A) SLOT_INTERFACE_END static MACHINE_CONFIG_START(interpro_scsi_adapter) - MCFG_DEVICE_CLOCK(XTAL_12_5MHz) + MCFG_DEVICE_CLOCK(XTAL_24MHz) MCFG_NCR5390_IRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) MCFG_NCR5390_DRQ_HANDLER(DEVWRITELINE(":" INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) MACHINE_CONFIG_END -#endif // these maps point the cpu virtual addresses to the mmu static ADDRESS_MAP_START(clipper_insn_map, AS_PROGRAM, 32, interpro_state) @@ -503,7 +466,6 @@ static MACHINE_CONFIG_START(ip2800) MCFG_FLOPPY_DRIVE_SOUND(false) // scsi -#if NEW_SCSI MCFG_NSCSI_BUS_ADD(INTERPRO_SCSI_TAG) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":0", interpro_scsi_devices, "harddisk", false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":1", interpro_scsi_devices, nullptr, false) @@ -514,16 +476,6 @@ static MACHINE_CONFIG_START(ip2800) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":6", interpro_scsi_devices, nullptr, false) MCFG_NSCSI_ADD(INTERPRO_SCSI_TAG ":7", interpro_scsi_devices, INTERPRO_SCSI_ADAPTER_TAG, true) MCFG_DEVICE_CARD_MACHINE_CONFIG(INTERPRO_SCSI_ADAPTER_TAG, interpro_scsi_adapter) -#else - MCFG_DEVICE_ADD(INTERPRO_SCSI_TAG, SCSI_PORT, 0) - MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE1, "harddisk", SCSIHD, SCSI_ID_0) - MCFG_SCSIDEV_ADD(INTERPRO_SCSI_TAG ":" SCSI_PORT_DEVICE3, "cdrom", SCSICD, SCSI_ID_3) - - MCFG_DEVICE_ADD(INTERPRO_SCSI_ADAPTER_TAG, NCR539X, XTAL_12_5MHz) - MCFG_LEGACY_SCSI_PORT(INTERPRO_SCSI_TAG) - MCFG_NCR539X_OUT_IRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, ir0_w)) - MCFG_NCR539X_OUT_DRQ_CB(DEVWRITELINE(INTERPRO_IOGA_TAG, interpro_ioga_device, drq_scsi)) -#endif // i/o gate array MCFG_INTERPRO_IOGA_ADD(INTERPRO_IOGA_TAG) @@ -531,9 +483,7 @@ static MACHINE_CONFIG_START(ip2800) MCFG_INTERPRO_IOGA_IRQ_CB(INPUTLINE(INTERPRO_CPU_TAG, INPUT_LINE_IRQ0)) //MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_CHANNEL_PLOTTER, unknown) - // use driver helper functions to wrap scsi adapter dma read/write - MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8("", interpro_state, scsi_dma_r), DEVWRITE8("", interpro_state, scsi_dma_w)) - + MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SCSI, DEVREAD8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_r), DEVWRITE8(INTERPRO_SCSI_DEVICE_TAG, ncr53c90a_device, mdma_w)) MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_FLOPPY, DEVREAD8(INTERPRO_FDC_TAG, n82077aa_device, mdma_r), DEVWRITE8(INTERPRO_FDC_TAG, n82077aa_device, mdma_w)) MCFG_INTERPRO_IOGA_DMA_CB(IOGA_DMA_SERIAL, DEVREAD8(INTERPRO_SCC1_TAG, z80scc_device, da_r), DEVWRITE8(INTERPRO_SCC1_TAG, z80scc_device, da_w)) MCFG_INTERPRO_IOGA_FDCTC_CB(DEVWRITELINE(INTERPRO_FDC_TAG, n82077aa_device, tc_line_w)) |