Exemple #1
0
int cdReadSectors(int lba, int num, void *dest, CdRMode *rmode) {
	int err;
	if (CdRead(lba, num, dest, rmode) == 1) {
		CdSync(0);
		err = CdGetError();
		return (err > 0) ? -err : err;
	}
	return -0xFF;
}
Exemple #2
0
void *driveStop(void *data) {
	if (CdStop() == 1) {
		if (CdSync(0) == 0) {
			*(int *)data = CdGetError();
		} else
			*(int *)data = -0x100;
	} else
		*(int *)data = -0x101;
	return data;
}
Exemple #3
0
void read_manage(void)
{
	int		ret;

	switch (read_stat) {
		case	0 :		/* not reading any data */
			break;
		case	1 :		/* command: set location */
			CdControlF(CdlSetloc, (u_char *)&fp[read_file_num].pos);
			read_stat++;
			break;
		case	2 :		/* waiting: setting location */
			if ((ret = CdSync(1, 0)) == CdlComplete) {
				read_stat++;
			}
			else if (ret == CdlDiskError) {
				read_stat = 1;
				errcnt++;
			}
			break;
		case	3 :		/* command: read data */
			if (CdRead(READ_SECTORS, read_des_addr, CdlModeSpeed) == 0) {
				errcnt++;
			}
			else {
				read_stat++;
			}
			break;
		case	4 :		/* waiting: reading data */
			read_remain_sector = CdReadSync(1, 0);
			if (read_remain_sector == 0) {
				read_stat++;
			}
			else if (read_remain_sector == -1) {
				read_stat = 1;
				errcnt++;
			}
			break;
		case	5 :		/* done */
			break;
		default :
			break;
	}
}
Exemple #4
0
void *driveStandby(void *data) {
	int type;
	if (CdStandby() == 1) {
		if (CdSync(0) == 0) {
			*(int *)data = CdGetError();
		} else
			*(int *)data = -0x100;
	} else
		*(int *)data = -0x101;

	do {	// wait until drive detected disc type
		type = CdGetDiskType();
		if (DISC_NOT_READY(type))
			DelayThread(10 * 1000);
	} while (DISC_NOT_READY(type));
	printf("Standby: Disc type: %02X\n", type);

	return data;
}