92
92
* there are no extra bytes in front of the sector data.
94
94
* H. Sector attribute byte
95
* This byte is put at the begining of every sector if the header flag
95
* This byte is put at the beginning of every sector if the header flag
96
96
* is turned on. The information this byte contains is the same as the
97
97
* status register (of the wd179x) would contain when a 'Read Sector'
98
98
* command was issued. The bit fields are defined as:
633
633
#define dmk_idam_set_crc(x, crc) (x)[5] = ((crc) >> 8); (x)[6] = ((crc) >> 0);
636
static struct dmk_tag *get_dmk_tag(floppy_image *floppy)
636
static struct dmk_tag *get_dmk_tag(floppy_image_legacy *floppy)
638
638
return (dmk_tag *)floppy_tag(floppy);
642
static floperr_t coco_dmk_get_offset(floppy_image *floppy, int head, int track, UINT64 *offset)
642
static floperr_t coco_dmk_get_offset(floppy_image_legacy *floppy, int head, int track, UINT64 *offset)
644
644
struct dmk_tag *tag = get_dmk_tag(floppy);
683
static floperr_t coco_dmk_write_track(floppy_image *floppy, int head, int track, UINT64 offset, const void *buffer, size_t buflen)
683
static floperr_t coco_dmk_write_track(floppy_image_legacy *floppy, int head, int track, UINT64 offset, const void *buffer, size_t buflen)
686
686
UINT64 track_offset;
698
static floperr_t coco_dmk_get_track_data_offset(floppy_image *floppy, int head, int track, UINT64 *offset)
698
static floperr_t coco_dmk_get_track_data_offset(floppy_image_legacy *floppy, int head, int track, UINT64 *offset)
700
700
*offset = DMK_TOC_LEN + 1;
701
701
return FLOPPY_ERROR_SUCCESS;
840
840
free(sector_map);
841
return FLOPPY_ERROR_SUCCESS;
846
static int coco_dmk_get_heads_per_disk(floppy_image *floppy)
846
static int coco_dmk_get_heads_per_disk(floppy_image_legacy *floppy)
848
848
return get_dmk_tag(floppy)->heads;
853
static int coco_dmk_get_tracks_per_disk(floppy_image *floppy)
853
static int coco_dmk_get_tracks_per_disk(floppy_image_legacy *floppy)
855
855
return get_dmk_tag(floppy)->tracks;
860
static UINT32 coco_dmk_get_track_size(floppy_image *floppy, int head, int track)
860
static UINT32 coco_dmk_get_track_size(floppy_image_legacy *floppy, int head, int track)
862
862
return get_dmk_tag(floppy)->track_size;
867
static floperr_t coco_dmk_seek_sector_in_track(floppy_image *floppy, int head, int track, int sector, int sector_is_index, int dirtify, UINT8 **sector_data, UINT32 *sector_length)
867
static floperr_t coco_dmk_seek_sector_in_track(floppy_image_legacy *floppy, int head, int track, int sector, int sector_is_index, int dirtify, UINT8 **sector_data, UINT32 *sector_length)
869
869
struct dmk_tag *tag = get_dmk_tag(floppy);
965
static floperr_t coco_dmk_get_sector_length(floppy_image *floppy, int head, int track, int sector, UINT32 *sector_length)
965
static floperr_t coco_dmk_get_sector_length(floppy_image_legacy *floppy, int head, int track, int sector, UINT32 *sector_length)
967
967
return coco_dmk_seek_sector_in_track(floppy, head, track, sector, FALSE, FALSE, NULL, sector_length);
972
static floperr_t coco_dmk_get_indexed_sector_info(floppy_image *floppy, int head, int track, int sector_index, int *cylinder, int *side, int *sector, UINT32 *sector_length, unsigned long *flags)
972
static floperr_t coco_dmk_get_indexed_sector_info(floppy_image_legacy *floppy, int head, int track, int sector_index, int *cylinder, int *side, int *sector, UINT32 *sector_length, unsigned long *flags)
975
975
UINT32 idam_offset;
1011
static floperr_t internal_coco_dmk_read_sector(floppy_image *floppy, int head, int track, int sector, int sector_is_index, void *buffer, size_t buflen)
1011
static floperr_t internal_coco_dmk_read_sector(floppy_image_legacy *floppy, int head, int track, int sector, int sector_is_index, void *buffer, size_t buflen)
1014
1014
UINT32 sector_length;
1038
static floperr_t internal_coco_dmk_write_sector(floppy_image *floppy, int head, int track, int sector, int sector_is_index, const void *buffer, size_t buflen, int ddam)
1038
static floperr_t internal_coco_dmk_write_sector(floppy_image_legacy *floppy, int head, int track, int sector, int sector_is_index, const void *buffer, size_t buflen, int ddam)
1041
1041
UINT32 sector_length;
1062
static floperr_t coco_dmk_read_sector(floppy_image *floppy, int head, int track, int sector, void *buffer, size_t buflen)
1062
static floperr_t coco_dmk_read_sector(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen)
1064
1064
return internal_coco_dmk_read_sector(floppy, head, track, sector, FALSE, buffer, buflen);
1067
static floperr_t coco_dmk_write_sector(floppy_image *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
1067
static floperr_t coco_dmk_write_sector(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
1069
1069
return internal_coco_dmk_write_sector(floppy, head, track, sector, FALSE, buffer, buflen, ddam);
1072
static floperr_t coco_dmk_read_indexed_sector(floppy_image *floppy, int head, int track, int sector, void *buffer, size_t buflen)
1072
static floperr_t coco_dmk_read_indexed_sector(floppy_image_legacy *floppy, int head, int track, int sector, void *buffer, size_t buflen)
1074
1074
return internal_coco_dmk_read_sector(floppy, head, track, sector, TRUE, buffer, buflen);
1077
static floperr_t coco_dmk_write_indexed_sector(floppy_image *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
1077
static floperr_t coco_dmk_write_indexed_sector(floppy_image_legacy *floppy, int head, int track, int sector, const void *buffer, size_t buflen, int ddam)
1079
1079
return internal_coco_dmk_write_sector(floppy, head, track, sector, TRUE, buffer, buflen, ddam);
1084
static void coco_dmk_interpret_header(floppy_image *floppy, int *heads, int *tracks, int *track_size)
1084
static void coco_dmk_interpret_header(floppy_image_legacy *floppy, int *heads, int *tracks, int *track_size)
1086
1086
UINT8 header[DMK_HEADER_LEN];
1170
1170
/* ----------------------------------------------------------------------- */
1172
FLOPPY_OPTIONS_START( coco )
1173
FLOPPY_OPTION( coco_jvc, "dsk", "CoCo JVC disk image", coco_jvc_identify, coco_jvc_construct, NULL,
1172
LEGACY_FLOPPY_OPTIONS_START( coco )
1173
LEGACY_FLOPPY_OPTION( coco_jvc, "dsk", "CoCo JVC disk image", coco_jvc_identify, coco_jvc_construct, NULL,
1175
1175
TRACKS([35]-255)
1176
1176
SECTORS(1-[18]-255)
1177
1177
SECTOR_LENGTH(128/[256]/512/1024)
1178
1178
FIRST_SECTOR_ID(0-[1]))
1179
FLOPPY_OPTION( coco_os9, "os9", "CoCo OS-9 disk image", coco_os9_identify, coco_os9_construct, NULL,
1179
LEGACY_FLOPPY_OPTION( coco_os9, "os9", "CoCo OS-9 disk image", coco_os9_identify, coco_os9_construct, NULL,
1181
1181
TRACKS([35]-255)
1182
1182
SECTORS(1-[18]-255)
1183
1183
SECTOR_LENGTH([256])
1184
1184
FIRST_SECTOR_ID([1]))
1185
FLOPPY_OPTION( coco_vdk, "vdk", "CoCo VDK disk image", coco_vdk_identify, coco_vdk_construct, NULL,
1185
LEGACY_FLOPPY_OPTION( coco_vdk, "vdk", "CoCo VDK disk image", coco_vdk_identify, coco_vdk_construct, NULL,
1187
1187
TRACKS([35]-255)
1189
1189
SECTOR_LENGTH([256])
1190
1190
FIRST_SECTOR_ID([1]))
1191
FLOPPY_OPTION( coco_dmk, "dsk,dmk", "CoCo DMK disk image", coco_dmk_identify, coco_dmk_construct, NULL,
1191
LEGACY_FLOPPY_OPTION( coco_dmk, "dsk,dmk", "CoCo DMK disk image", coco_dmk_identify, coco_dmk_construct, NULL,
1193
1193
TRACKS([35]-255)
1194
1194
SECTORS(1-[18])
1195
1195
SECTOR_LENGTH(128/[256]/512/1024/2048/4096/8192)
1196
1196
INTERLEAVE(0-[6]-17)
1197
1197
FIRST_SECTOR_ID(0-[1]))
1198
LEGACY_FLOPPY_OPTIONS_END