From 54ac6377ced0cd37d6feaeb1865829d5aee63c27 Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Mon, 2 Dec 2019 19:25:08 +1000 Subject: [PATCH] Add READ DEFECT DATA command emulation --- software/SCSI2SD/src/disk.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/software/SCSI2SD/src/disk.c b/software/SCSI2SD/src/disk.c index 0afe03f..6122133 100755 --- a/software/SCSI2SD/src/disk.c +++ b/software/SCSI2SD/src/disk.c @@ -522,11 +522,21 @@ int scsiDiskCommand() else if (unlikely(command == 0x37)) { // READ DEFECT DATA - scsiDev.status = CHECK_CONDITION; - scsiDev.target->sense.code = NO_SENSE; - scsiDev.target->sense.asc = DEFECT_LIST_NOT_FOUND; - scsiDev.phase = STATUS; + uint32_t allocLength = (((uint16_t)scsiDev.cdb[7]) << 8) | + scsiDev.cdb[8]; + scsiDev.data[0] = 0; + scsiDev.data[1] = scsiDev.cdb[1] + scsiDev.data[2] = 0; + scsiDev.data[3] = 0; + scsiDev.dataLen = 4; + + if (scsiDev.dataLen > allocLength) + { + scsiDev.dataLen = allocLength; + } + + scsiDev.phase = DATA_IN; } else {