Implement READ(6/10/12) for magneto-optical disks.

This commit is contained in:
2020-03-27 19:41:58 +00:00
parent b0f0c1de18
commit caf0eb8f8c

View File

@@ -1337,12 +1337,16 @@ do_command(void *p, uint8_t *cdb)
case GPCMD_READ_10:
case GPCMD_READ_12:
set_phase(dev, SCSI_PHASE_DATA_IN);
alloc_length = 512;
alloc_length = dev->drv->sector_size;
switch(cdb[0]) {
case GPCMD_READ_6:
dev->sector_len = cdb[4];
dev->sector_pos = ((((uint32_t) cdb[1]) & 0x1f) << 16) | (((uint32_t) cdb[2]) << 8) | ((uint32_t) cdb[3]);
if(dev->sector_len == 0)
dev->sector_len = 256;
DEBUG("MO %i: Length: %i, LBA: %i\n", dev->id, dev->sector_len, dev->sector_pos);
break;
@@ -1355,6 +1359,7 @@ do_command(void *p, uint8_t *cdb)
case GPCMD_READ_12:
dev->sector_len = (((uint32_t) cdb[6]) << 24) | (((uint32_t) cdb[7]) << 16) | (((uint32_t) cdb[8]) << 8) | ((uint32_t) cdb[9]);
dev->sector_pos = (((uint32_t) cdb[2]) << 24) | (((uint32_t) cdb[3]) << 16) | (((uint32_t) cdb[4]) << 8) | ((uint32_t) cdb[5]);
DEBUG("MO %i: Length: %i, LBA: %i\n", dev->id, dev->sector_len, dev->sector_pos);
break;
}
@@ -1391,7 +1396,7 @@ do_command(void *p, uint8_t *cdb)
set_buf_len(dev, BufLen, (int32_t *) &dev->packet_len);
data_command_finish(dev, alloc_length, 512, alloc_length, 0);
data_command_finish(dev, alloc_length, dev->drv->sector_size, alloc_length, 0);
if (dev->packet_status != PHASE_COMPLETE)
ui_sb_icon_update(SB_MO | dev->id, 1);