void Check_CD_Command(void) { #ifdef DEBUG_CD fprintf(debug_SCD_file, "CHECK CD COMMAND\n"); #endif // Check CDD if (CDD_Complete) { CDD_Complete = 0; #ifdef DEBUG_CD fprintf(debug_SCD_file, "CDD exporting status\n"); fprintf(debug_SCD_file, "Status=%.4X, Minute=%.4X, Seconde=%.4X, Frame=%.4X, Ext=%.4X\n", CDD.Status, CDD.Minute, CDD.Seconde, CDD.Frame, CDD.Ext); #endif CDD_Export_Status(); if (Int_Mask_S68K & 0x10) sub68k_interrupt(4, -1); } // Check CDC if (SCD.Status_CDC & 1) // CDC is reading data ... { #ifdef DEBUG_CD fprintf(debug_SCD_file, "Send a read command\n"); #endif // DATA ? if (SCD.TOC.Tracks[SCD.Cur_Track - SCD.TOC.First_Track].Type) CDD.Control |= 0x0100; else CDD.Control &= ~0x0100; // AUDIO if (File_Add_Delay == 0) { if (CD_Load_System == CDROM_) ASPI_Read_One_LBA_CDC(); else FILE_Read_One_LBA_CDC(); } else File_Add_Delay--; } if (SCD.Status_CDD == FAST_FOW) { SCD.Cur_LBA += 10; CDC_Update_Header(); } else if (SCD.Status_CDD == FAST_REV) { SCD.Cur_LBA -= 10; if (SCD.Cur_LBA < -150) SCD.Cur_LBA = -150; CDC_Update_Header(); } }
PICO_INTERNAL void Check_CD_Command(void) { cdprintf("CHECK CD COMMAND"); // Check CDC if (Pico_mcd->scd.Status_CDC & 1) // CDC is reading data ... { cdprintf("Got a read command"); // DATA ? if (Pico_mcd->scd.Cur_Track == 1) Pico_mcd->s68k_regs[0x36] |= 0x01; else Pico_mcd->s68k_regs[0x36] &= ~0x01; // AUDIO if (Pico_mcd->scd.File_Add_Delay == 0) { FILE_Read_One_LBA_CDC(); } else Pico_mcd->scd.File_Add_Delay--; } // Check CDD if (Pico_mcd->scd.CDD_Complete) { Pico_mcd->scd.CDD_Complete = 0; CDD_Export_Status(); } if (Pico_mcd->scd.Status_CDD == FAST_FOW) { Pico_mcd->scd.Cur_LBA += 10; CDC_Update_Header(); } else if (Pico_mcd->scd.Status_CDD == FAST_REV) { Pico_mcd->scd.Cur_LBA -= 10; if (Pico_mcd->scd.Cur_LBA < -150) Pico_mcd->scd.Cur_LBA = -150; CDC_Update_Header(); } }