From 355e656dd5a86b50f2e98a4f319b31989fa98f8e Mon Sep 17 00:00:00 2001 From: Volker Ruppert Date: Fri, 4 Nov 2005 19:03:46 +0000 Subject: [PATCH] - ATAPI command 'read cd': Packet-DMA and raw read support added --- bochs/iodev/harddrv.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/bochs/iodev/harddrv.cc b/bochs/iodev/harddrv.cc index 7a7d0eb79..9ec108462 100644 --- a/bochs/iodev/harddrv.cc +++ b/bochs/iodev/harddrv.cc @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////// -// $Id: harddrv.cc,v 1.149 2005-11-02 20:26:24 vruppert Exp $ +// $Id: harddrv.cc,v 1.150 2005-11-04 19:03:46 vruppert Exp $ ///////////////////////////////////////////////////////////////////////// // // Copyright (C) 2002 MandrakeSoft S.A. @@ -149,7 +149,7 @@ bx_hard_drive_c::init(void) char string[5]; char sbtext[8]; - BX_DEBUG(("Init $Id: harddrv.cc,v 1.149 2005-11-02 20:26:24 vruppert Exp $")); + BX_DEBUG(("Init $Id: harddrv.cc,v 1.150 2005-11-04 19:03:46 vruppert Exp $")); for (channel=0; channelget() == 1) { @@ -1648,17 +1648,17 @@ bx_hard_drive_c::write(Bit32u address, Bit32u value, unsigned io_len) atapi_cmd_nop(channel); raise_interrupt(channel); break; + case 0xf8: + BX_SELECTED_CONTROLLER(channel).buffer_size = 2352; case 0x10: - init_send_atapi_command(channel, atapi_command, transfer_length * 2048, - transfer_length * 2048, true); + init_send_atapi_command(channel, atapi_command, + transfer_length * BX_SELECTED_CONTROLLER(channel).buffer_size, + transfer_length * BX_SELECTED_CONTROLLER(channel).buffer_size, 1); BX_SELECTED_DRIVE(channel).cdrom.remaining_blocks = transfer_length; BX_SELECTED_DRIVE(channel).cdrom.next_lba = lba; - ready_to_send_atapi(channel); - break; - case 0xf8: - BX_ERROR(("Read CD (raw) not implemented yet")); - atapi_cmd_error(channel, SENSE_ILLEGAL_REQUEST, ASC_INV_FIELD_IN_CMD_PACKET, 1); - raise_interrupt(channel); + if (!BX_SELECTED_CONTROLLER(channel).packet_dma) { + ready_to_send_atapi(channel); + } break; default: BX_ERROR(("Read CD: unknown format"));