This commit is contained in:
waltje
2017-05-12 22:17:08 -04:00
2 changed files with 12 additions and 6 deletions

View File

@@ -271,7 +271,7 @@ static void MPU401_WriteCommand(mpu_t *mpu, uint8_t val)
break;
case 0xff: /* Reset MPU-401 */
pclog("MPU-401:Reset %X\n",val);
mpu401_reset_callback = MPU401_RESETBUSY * 200 * TIMER_USEC;
mpu401_reset_callback = MPU401_RESETBUSY * 33 * TIMER_USEC;
mpu->state.reset=1;
MPU401_Reset(mpu);
if (mpu->mode==M_UART) return;//do not send ack in UART mode

View File

@@ -2424,19 +2424,17 @@ void cdrom_command(uint8_t id, uint8_t *cdb)
toc_format = (cdb[9] >> 6) & 3;
}
len = cdb[8] + (cdb[7] << 8);
switch (toc_format)
{
case 0: /*Normal*/
len = cdrom_drives[id].handler->readtoc(id, cdbufferb, cdb[6], msf, len, 0);
len = cdrom_drives[id].handler->readtoc(id, cdbufferb, cdb[6], msf, max_len, 0);
break;
case 1: /*Multi session*/
len = cdrom_drives[id].handler->readtoc_session(id, cdbufferb, msf, len);
len = cdrom_drives[id].handler->readtoc_session(id, cdbufferb, msf, max_len);
cdbufferb[0] = 0; cdbufferb[1] = 0xA;
break;
case 2: /*Raw*/
len = cdrom_drives[id].handler->readtoc_raw(id, cdbufferb, msf, len);
len = cdrom_drives[id].handler->readtoc_raw(id, cdbufferb, msf, max_len);
break;
default:
cdrom_invalid_field(id);
@@ -2444,6 +2442,14 @@ void cdrom_command(uint8_t id, uint8_t *cdb)
}
}
if (len > max_len)
{
len = max_len;
cdbufferb[0] = ((len - 2) >> 8) & 0xff;
cdbufferb[1] = (len - 2) & 0xff;
}
cdrom_data_command_finish(id, len, len, len, 0);
/* cdrom_log("CD-ROM %i: READ_TOC_PMA_ATIP format %02X, length %i (%i)\n", id, toc_format, ide->cylinder, cdbufferb[1]); */
return;