int disk_image_write_track(disk_image_t *image, unsigned int track, int gcr_track_size, BYTE *gcr_speed_zone, BYTE *gcr_track_start_ptr) { return fsimage_gcr_write_track(image, track, gcr_track_size, gcr_speed_zone, gcr_track_start_ptr); }
int fsimage_gcr_write_sector(disk_image_t *image, const BYTE *buf, const disk_addr_t *dadr) { if (dadr->track > image->tracks) { log_error(fsimage_gcr_log, "Track %i out of bounds. Cannot write GCR sector", dadr->track); return -1; } if (image->gcr == NULL) { disk_track_t raw; if (fsimage_gcr_read_track(image, dadr->track, &raw) < 0 || raw.data == NULL) { return -1; } if (gcr_write_sector(&raw, buf, (BYTE)dadr->sector) != CBMDOS_FDC_ERR_OK) { log_error(fsimage_gcr_log, "Could not find track %i sector %i in disk image", dadr->track, dadr->sector); lib_free(raw.data); return -1; } if (fsimage_gcr_write_track(image, dadr->track, &raw) < 0) { lib_free(raw.data); return -1; } lib_free(raw.data); } else { if (gcr_write_sector(&image->gcr->tracks[(dadr->track * 2) - 2], buf, (BYTE)dadr->sector) != CBMDOS_FDC_ERR_OK) { log_error(fsimage_gcr_log, "Could not find track %i sector %i in disk image", dadr->track, dadr->sector); return -1; } if (fsimage_gcr_write_track(image, dadr->track, &image->gcr->tracks[(dadr->track * 2) - 2]) < 0) { log_error(fsimage_gcr_log, "Failed writing track %i to disk image.", dadr->track); return -1; } } return 0; }