Hi all, I tried to run the dos utility CDT in Qemu, but it always reported "no CD in drive" when a CD was present. I have created a patch to make the TOC command work in CDT. I still don't know how to fix the UPC/EAN stuff. The patch fixes the "mode sense" command and adds a partial implementation of "read subchannel".
-- Bye Volker
diff -urN /home/volker/qemu/hw/ide.c ./hw/ide.c --- /home/volker/qemu/hw/ide.c 2005-08-06 11:32:01.000000000 +0200 +++ ./hw/ide.c 2005-11-05 20:10:56.752773808 +0100 @@ -1191,7 +1191,11 @@ break; case 0x2a: cpu_to_ube16(&buf[0], 28 + 6); - buf[2] = 0x70; + if (bdrv_is_inserted(s->bs)) { + buf[2] = 0x12; + } else { + buf[2] = 0x70; + } buf[3] = 0; buf[4] = 0; buf[5] = 0; @@ -1433,6 +1437,24 @@ padstr8(buf + 32, 4, QEMU_VERSION); ide_atapi_cmd_reply(s, 36, max_len); break; + case GPCMD_READ_SUBCHANNEL: + if (!bdrv_is_inserted(s->bs)) { + ide_atapi_cmd_error(s, SENSE_NOT_READY, + ASC_MEDIUM_NOT_PRESENT); + break; + } + if (packet[2] & 0x40) { /* SubQ not supported */ + ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST, + ASC_INV_FIELD_IN_CMD_PACKET); + break; + } + max_len = ube16_to_cpu(packet + 7); + buf[0] = 0x00; + buf[1] = 0x00; /* audio not supported */ + buf[2] = 0x00; + buf[3] = 0x00; + ide_atapi_cmd_reply(s, 4, max_len); + break; default: ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST, ASC_ILLEGAL_OPCODE);
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel