Treat zero ATAPI maximum transfer as 65534. Fixes crash sometimes when booting PB570.

This commit is contained in:
SarahW 2018-02-26 19:52:10 +00:00
commit 8193605469
3 changed files with 4 additions and 0 deletions

View file

@ -142,6 +142,8 @@ void atapi_process_packet(atapi_device_t *atapi_dev)
case ATAPI_STATE_COMMAND:
*atapi_dev->atastat = READY_STAT | (*atapi_dev->atastat & ERR_STAT);
atapi_dev->max_transfer_len = (*atapi_dev->cylinder) & ~1;
if (!atapi_dev->max_transfer_len)
atapi_dev->max_transfer_len = 0xfffe;
atapi_dev->bus_state = BUS_CD | BUS_REQ;
break;

View file

@ -1174,6 +1174,7 @@ static void scsi_cd_atapi_identify(uint16_t *buffer, void *p)
ide_padstr((char *)(buffer + 23), "v1.0", 8); /* Firmware */
ide_padstr((char *)(buffer + 27), "PCemCD", 40); /* Model */
buffer[49] = 0x200; /* LBA supported */
buffer[126] = 0xfffe; /* Interpret zero byte count limit as maximum length */
}
scsi_device_t scsi_cd =

View file

@ -1077,6 +1077,7 @@ static void scsi_zip_atapi_identify(uint16_t *buffer, void *p)
ide_padstr((char *)(buffer + 23), "E.08", 8); /* Firmware */
ide_padstr((char *)(buffer + 27), "IOMEGA ZIP 100 ATAPI", 40); /* Model */
buffer[49] = 0x200; /* LBA supported */
buffer[126] = 0xfffe; /* Interpret zero byte count limit as maximum length */
}
scsi_device_t scsi_zip =