+
+ subq_broken = 0;
+ subq = (struct SubQ *)CDR_getBufferSub();
+ if (subq != NULL && cdr.ResultTN[1] >= 2) {
+ CDR_getTD(cdr.ResultTN[1], tmpp);
+ sector = fsm2sec(tmpp) - 33;
+ for (i = 0; i < 5; i++, sector += 2) {
+ sec2msf(sector, tmpp);
+ for (j = 0; j < 3; j++)
+ tmpp[j] = itob(tmpp[j]);
+ CDR_readTrack(tmpp);
+ subq = (struct SubQ *)CDR_getBufferSub();
+ if (subq->IndexNumber == 0)
+ break;
+ }
+ if (i == 5) {
+ SysPrintf("cdrom: subchannel data looks broken, not using it\n");
+ subq_broken = 1;
+ }
+ }