Пример #1
0
bool CDriveFDI::Open(char *name)
{
	File = gzopen(name, "r");
	if(!File) return false;

	FDIPtr = fdi2raw_header(File);
	if(!FDIPtr) return false;

	return false;
}
Пример #2
0
void fdi_load(int drive, char *fn)
{
        writeprot[drive] = fwriteprot[drive] = 1;
        fdi_f[drive] = x_fopen(fn, "rb");
        if (!fdi_f[drive]) return;
        fdi_h[drive] = fdi2raw_header(fdi_f[drive]);
//        if (!fdih[drive]) printf("Failed to load!\n");
        fdi_lasttrack[drive] = fdi2raw_get_last_track(fdi_h[drive]);
        fdi_sides[drive] = (fdi_lasttrack[drive]>83) ? 1 : 0;
//        printf("Last track %i\n",fdilasttrack[drive]);
        drives[drive].seek        = fdi_seek;
        drives[drive].readsector  = fdi_readsector;
        drives[drive].writesector = fdi_writesector;
        drives[drive].readaddress = fdi_readaddress;
        drives[drive].poll        = fdi_poll;
        drives[drive].format      = fdi_format;
}
Пример #3
0
void fdi_load(int drive, char *fn)
{
        writeprot[drive] = fwriteprot[drive] = 1;
        fdi[drive].f = fopen(fn, "rb");
        if (!fdi[drive].f) return;
        fdi[drive].h = fdi2raw_header(fdi[drive].f);
//        if (!fdih[drive]) printf("Failed to load!\n");
        fdi[drive].lasttrack = fdi2raw_get_last_track(fdi[drive].h);
        fdi[drive].sides = (fdi[drive].lasttrack > 83) ? 2 : 1;
//        printf("Last track %i\n",fdilasttrack[drive]);
        drives[drive].seek        = fdi_seek;
        drives[drive].readsector  = fdi_readsector;
        drives[drive].writesector = fdi_writesector;
        drives[drive].readaddress = fdi_readaddress;
        drives[drive].hole        = fdi_hole;
        drives[drive].poll        = fdi_poll;
        drives[drive].format      = fdi_format;
        drives[drive].stop        = fdi_stop;
	drives[drive].realtrack   = fdi_realtrack;
//        pclog("Loaded as FDI\n");
}
Пример #4
0
void fdi_load(int drive, wchar_t *fn)
{
	char header[26];

        writeprot[drive] = fwriteprot[drive] = 1;
        fdi[drive].f = _wfopen(fn, L"rb");
        if (!fdi[drive].f)
	{
		memset(discfns[drive], 0, sizeof(discfns[drive]));
		return;
	}

	d86f_unregister(drive);

	fread(header, 1, 25, fdi[drive].f);
	fseek(fdi[drive].f, 0, SEEK_SET);
	header[25] = 0;
	if (strcmp(header, "Formatted Disk Image file") != 0)
	{
		/* This is a Japanese FDI file. */
		pclog("fdi_load(): Japanese FDI file detected, redirecting to IMG loader\n");
		fclose(fdi[drive].f);
		img_load(drive, fn);
		return;
	}

        fdi[drive].h = fdi2raw_header(fdi[drive].f);
        fdi[drive].lasttrack = fdi2raw_get_last_track(fdi[drive].h);
        fdi[drive].sides = fdi2raw_get_last_head(fdi[drive].h) + 1;

	d86f_register_fdi(drive);

        drives[drive].seek        = fdi_seek;
	d86f_common_handlers(drive);

        pclog("Loaded as FDI\n");
}