--- a/src/gdrom/ide.c Tue Dec 19 09:52:56 2006 +0000 +++ b/src/gdrom/ide.c Tue Dec 19 11:58:12 2006 +0000 @@ -1,5 +1,5 @@ /** - * $Id: ide.c,v 1.18 2006-12-19 09:52:56 nkeynes Exp $ + * $Id: ide.c,v 1.19 2006-12-19 11:58:12 nkeynes Exp $ * * IDE interface implementation * @@ -110,6 +110,22 @@ 0x15, 0xF1, 0x39, 0xF3, 0x40, 0xDC, 0xDC, 0x25, 0x24, 0x56, 0x6E, 0xA9, 0x2F, 0xF0, 0x00, 0x00 }; +char gdrom_status[] = { + 0x00, 0x15, 0x00, 0x64, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, + 0x00, 0x40, 0x00, 0x00 }; + + static void ide_init( void ) { ide_reset(); @@ -453,6 +469,11 @@ ide_start_packet_read( length, blocksize ); } break; + case PKT_CMD_PLAY_CD: + ide_set_packet_result( 0 ); + ide_raise_interrupt(); + idereg.status = 0x50; + break; case PKT_CMD_READ_SECTOR: lba = cmd[2] << 16 | cmd[3] << 8 | cmd[4]; length = cmd[8] << 16 | cmd[9] << 8 | cmd[10]; /* blocks */ @@ -500,6 +521,11 @@ } else { switch( cmd[1] ) { case 0: + if( length > sizeof(gdrom_status) ) { + length = sizeof(gdrom_status); + } + memcpy( data_buffer, gdrom_status, length ); + ide_start_packet_read( length, blocksize ); break; case 1: if( length > 16 ) {