Merge pull request #2426 from 86Box/tc1995

Make the dedicated Longshine SCSI ASPI driver work under DOS.
This commit is contained in:
Miran Grča
2022-07-03 23:24:23 +02:00
committed by GitHub

View File

@@ -749,8 +749,11 @@ ncr_read(uint16_t port, void *priv)
break;
case 2: /* Mode register */
if (((ncr->mode & 0x30) == 0x30) && (ncr_dev->type <= 1))
if (((ncr->mode & 0x30) == 0x30) && ((ncr_dev->type == 1) && (ncr_dev->bios_ver == 1)))
ncr->mode = 0;
if (((ncr->mode & 0x20) == 0x20) && (ncr_dev->type == 0))
ncr->mode = 0;
ncr_log("Read: Mode register\n");
ret = ncr->mode;
break;
@@ -766,9 +769,9 @@ 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))
if ((ncr->icr & ICR_SEL) && ((ncr_dev->type == 1) && (ncr_dev->bios_ver == 1)))
ret |= 0x02;
if ((ncr->icr & ICR_BSY) && (ncr_dev->type != 3))
if ((ncr->icr & ICR_BSY) && ((ncr_dev->type == 1) && (ncr_dev->bios_ver == 1)))
ret |= 0x40;
break;
@@ -788,9 +791,9 @@ ncr_read(uint16_t port, void *priv)
ncr_bus_read(ncr_dev);
bus = ncr->cur_bus;
if ((bus & BUS_ACK) || ((ncr->icr & ICR_ACK) && (ncr_dev->type != 3)))
if ((bus & BUS_ACK) || ((ncr->icr & ICR_ACK) && ((ncr_dev->type == 1) && (ncr_dev->bios_ver == 1))))
ret |= STATUS_ACK;
if ((bus & BUS_ATN) || ((ncr->icr & ICR_ATN) && (ncr_dev->type != 3)))
if ((bus & BUS_ATN) || ((ncr->icr & ICR_ATN) && ((ncr_dev->type == 1) && (ncr_dev->bios_ver == 1))))
ret |= 0x02;
if ((bus & BUS_REQ) && (ncr->mode & MODE_DMA)) {