示例#1
0
/* cache info about track */
static void mfm_disk_cache_data(mess_image *image, int track, int side)
{
	struct mfm_disk_info *mfm_disk = get_disk(image);

	if ((track!=mfm_disk->CachedTrack) || (side!=mfm_disk->CachedSide))
	{
		unsigned char *pTrackPtr = mfm_disk_get_track_ptr(image, track, side);
		unsigned long TrackSize = mfm_disk_get_track_size(image);

		mfm_info_cache_sector_info(image, pTrackPtr, TrackSize);

		mfm_disk->CachedTrack = track;
		mfm_disk->CachedSide = side;
	}
}
示例#2
0
static floperr_t get_offset(floppy_image *floppy, int head, int track, int sector, int sector_is_index, UINT64 *offset)
{
	UINT64 offs;

	/* translate the sector to a raw sector */
	if (!sector_is_index)
	{
		sector -= 1;
	}
	mfm_info_cache_sector_info(floppy,track,head);

	/* check to see if we are out of range */
	if ((head < 0) || (head >= get_tag(floppy)->heads) || (track < 0) || (track >= get_tag(floppy)->tracks)
			|| (sector < 0) || (sector >=get_tag(floppy)->num_sectors))
		return FLOPPY_ERROR_SEEKERROR;

	offs = get_tag(floppy)->sector_data[sector].data_ptr;
	if (offset)
		*offset = offs;
	return FLOPPY_ERROR_SUCCESS;
}