Trantor SCSI changes of the day (April 2nd, 2025)
1. The PAS SCSI controller driver mamv1.sys dislikes having bits 0-6 set when a transfer has completed, take account from this, fixes mamv1.sys incomplete CD transfers (bits 0-6 get re-enabled when the transfer is ongoing). 2. I now understand why the T128 doesn't have a block count register, it does the block count manually from the SCSI layer directly, this fixes Pseudo-DMA transfers when using, e.g.: CD transfers using a sector size of 2340 bytes.
This commit is contained in:
@@ -792,7 +792,14 @@ pas16_in(uint16_t port, void *priv)
|
||||
if ((scsi_bus->tx_mode == PIO_TX_BUS) && !(ret & 0x80))
|
||||
ret |= 0x80;
|
||||
|
||||
pas16_log("5C01 read ret=%02x, status=%02x, txmode=%x.\n", ret, pas16->scsi->status & 0x06, scsi_bus->tx_mode);
|
||||
if (ret & 0x80) {
|
||||
if (scsi_bus->data_repeat < MIN(511, scsi_bus->total_len))
|
||||
scsi_bus->data_repeat++;
|
||||
} else {
|
||||
if (scsi_bus->data_repeat == MIN(511, scsi_bus->total_len))
|
||||
ret = 0x00;
|
||||
}
|
||||
pas16_log("%04X:%08X: Port %04x read ret=%02x, status=%02x, txmode=%x, repeat=%d.\n", CS, cpu_state.pc, port + pas16->base, ret, pas16->scsi->status & 0x06, scsi_bus->tx_mode, scsi_bus->data_repeat);
|
||||
}
|
||||
break;
|
||||
case 0x5c03:
|
||||
|
||||
Reference in New Issue
Block a user