From 0898913d05e4b2110a57f35d665782d1ddb24fc0 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Mon, 27 Jun 2022 15:35:55 +0200 Subject: [PATCH] Fixed the Rancho RT1000A/B aspi manager loading (rtaspi10.sys). --- src/scsi/scsi_ncr5380.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/scsi/scsi_ncr5380.c b/src/scsi/scsi_ncr5380.c index 1b05b1a88..f69f34276 100644 --- a/src/scsi/scsi_ncr5380.c +++ b/src/scsi/scsi_ncr5380.c @@ -749,6 +749,8 @@ ncr_read(uint16_t port, void *priv) break; case 2: /* Mode register */ + if (((ncr->mode & 0x30) == 0x30) && (ncr_dev->type <= 1)) + ncr->mode = 0; ncr_log("Read: Mode register\n"); ret = ncr->mode; break; @@ -764,6 +766,10 @@ ncr_read(uint16_t port, void *priv) ncr_bus_read(ncr_dev); ncr_log("NCR cur bus stat=%02x\n", ncr->cur_bus & 0xff); ret |= (ncr->cur_bus & 0xff); + if ((ncr->icr & ICR_SEL) && (ncr_dev->type != 3)) + ret |= 0x02; + if ((ncr->icr & ICR_BSY) && (ncr_dev->type != 3)) + ret |= 0x40; break; case 5: /* Bus and Status register */ @@ -782,9 +788,9 @@ ncr_read(uint16_t port, void *priv) ncr_bus_read(ncr_dev); bus = ncr->cur_bus; - if (bus & BUS_ACK) + if ((bus & BUS_ACK) || ((ncr->icr & ICR_ACK) && (ncr_dev->type != 3))) ret |= STATUS_ACK; - if (bus & BUS_ATN) + if ((bus & BUS_ATN) || ((ncr->icr & ICR_ATN) && (ncr_dev->type != 3))) ret |= 0x02; if ((bus & BUS_REQ) && (ncr->mode & MODE_DMA)) { @@ -920,8 +926,6 @@ memio_write(uint32_t addr, uint8_t val, void *priv) addr &= 0x3fff; - ncr_log("memio_write(%08x,%02x) %i %02x\n", addr, val, ncr_dev->buffer_host_pos, ncr_dev->status_ctrl); - if (addr >= 0x3a00) ncr_dev->ext_ram[addr - 0x3a00] = val; else switch (addr & 0x3f80) {