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; break;
case 0xff: /* Reset MPU-401 */ case 0xff: /* Reset MPU-401 */
pclog("MPU-401:Reset %X\n",val); 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; mpu->state.reset=1;
MPU401_Reset(mpu); MPU401_Reset(mpu);
if (mpu->mode==M_UART) return;//do not send ack in UART mode 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; toc_format = (cdb[9] >> 6) & 3;
} }
len = cdb[8] + (cdb[7] << 8);
switch (toc_format) switch (toc_format)
{ {
case 0: /*Normal*/ 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; break;
case 1: /*Multi session*/ 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; cdbufferb[0] = 0; cdbufferb[1] = 0xA;
break; break;
case 2: /*Raw*/ 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; break;
default: default:
cdrom_invalid_field(id); 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_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]); */ /* cdrom_log("CD-ROM %i: READ_TOC_PMA_ATIP format %02X, length %i (%i)\n", id, toc_format, ide->cylinder, cdbufferb[1]); */
return; return;