summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/formats/d64_dsk.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/formats/d64_dsk.c')
-rw-r--r--src/lib/formats/d64_dsk.c172
1 files changed, 86 insertions, 86 deletions
diff --git a/src/lib/formats/d64_dsk.c b/src/lib/formats/d64_dsk.c
index aa5936ebce7..add49e62d88 100644
--- a/src/lib/formats/d64_dsk.c
+++ b/src/lib/formats/d64_dsk.c
@@ -26,27 +26,27 @@
PARAMETERS
***************************************************************************/
-#define MAX_HEADS 2
-#define MAX_TRACKS 84
-#define MAX_ERROR_SECTORS 4166
-#define SECTOR_SIZE 256
-#define SECTOR_SIZE_GCR 368
-
-#define INVALID_OFFSET 0xbadbad
-
-#define D64_SIZE_35_TRACKS 174848
-#define D64_SIZE_35_TRACKS_WITH_ERRORS 175531
-#define D64_SIZE_40_TRACKS 196608
-#define D64_SIZE_40_TRACKS_WITH_ERRORS 197376
-#define D64_SIZE_42_TRACKS 205312
-#define D64_SIZE_42_TRACKS_WITH_ERRORS 206114
-#define D67_SIZE_35_TRACKS 176640
-#define D71_SIZE_70_TRACKS 349696
-#define D71_SIZE_70_TRACKS_WITH_ERRORS 351062
-#define D80_SIZE_77_TRACKS 533248
-#define D80_SIZE_77_TRACKS_WITH_ERRORS 535331
-#define D82_SIZE_154_TRACKS 1066496
-#define D82_SIZE_154_TRACKS_WITH_ERRORS 1070662
+#define MAX_HEADS 2
+#define MAX_TRACKS 84
+#define MAX_ERROR_SECTORS 4166
+#define SECTOR_SIZE 256
+#define SECTOR_SIZE_GCR 368
+
+#define INVALID_OFFSET 0xbadbad
+
+#define D64_SIZE_35_TRACKS 174848
+#define D64_SIZE_35_TRACKS_WITH_ERRORS 175531
+#define D64_SIZE_40_TRACKS 196608
+#define D64_SIZE_40_TRACKS_WITH_ERRORS 197376
+#define D64_SIZE_42_TRACKS 205312
+#define D64_SIZE_42_TRACKS_WITH_ERRORS 206114
+#define D67_SIZE_35_TRACKS 176640
+#define D71_SIZE_70_TRACKS 349696
+#define D71_SIZE_70_TRACKS_WITH_ERRORS 351062
+#define D80_SIZE_77_TRACKS 533248
+#define D80_SIZE_77_TRACKS_WITH_ERRORS 535331
+#define D82_SIZE_154_TRACKS 1066496
+#define D82_SIZE_154_TRACKS_WITH_ERRORS 1070662
enum
{
@@ -60,17 +60,17 @@ static const char *const DOS_VERSION[] = { "1.0", "2.0", "2.5" };
enum
{
ERROR_00 = 1,
- ERROR_20, /* header block not found */
- ERROR_21, /* no sync character */
- ERROR_22, /* data block not present */
- ERROR_23, /* checksum error in data block */
- ERROR_24, /* write verify (on format) UNIMPLEMENTED */
- ERROR_25, /* write verify error UNIMPLEMENTED */
- ERROR_26, /* write protect on UNIMPLEMENTED */
- ERROR_27, /* checksum error in header block */
- ERROR_28, /* write error UNIMPLEMENTED */
- ERROR_29, /* disk ID mismatch */
- ERROR_74, /* disk not ready (no device 1) UNIMPLEMENTED */
+ ERROR_20, /* header block not found */
+ ERROR_21, /* no sync character */
+ ERROR_22, /* data block not present */
+ ERROR_23, /* checksum error in data block */
+ ERROR_24, /* write verify (on format) UNIMPLEMENTED */
+ ERROR_25, /* write verify error UNIMPLEMENTED */
+ ERROR_26, /* write protect on UNIMPLEMENTED */
+ ERROR_27, /* checksum error in header block */
+ ERROR_28, /* write error UNIMPLEMENTED */
+ ERROR_29, /* disk ID mismatch */
+ ERROR_74, /* disk not ready (no device 1) UNIMPLEMENTED */
};
static const char *const ERROR_CODE[] = { "00", "00", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "74" };
@@ -129,21 +129,21 @@ static const int DOS2_SECTORS_PER_TRACK[] =
static const int DOS25_SECTORS_PER_TRACK[] =
{
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, /* 1-39 */
- 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, /* 40-53 */
- 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, /* 54-64 */
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 65-77 */
- 23, 23, 23, 23, 23, 23, 23 /* 78-84 */
+ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, /* 1-39 */
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, /* 40-53 */
+ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, /* 54-64 */
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, /* 65-77 */
+ 23, 23, 23, 23, 23, 23, 23 /* 78-84 */
};
static const int DOS25_SPEED_ZONE[] =
{
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 1-39 */
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 40-53 */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 54-64 */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 65-77 */
- 0, 0, 0, 0, 0, 0, 0 /* 78-84 */
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 1-39 */
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 40-53 */
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 54-64 */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 65-77 */
+ 0, 0, 0, 0, 0, 0, 0 /* 78-84 */
};
/***************************************************************************
@@ -152,17 +152,17 @@ static const int DOS25_SPEED_ZONE[] =
struct d64dsk_tag
{
- int dos; /* CBM DOS version */
- int heads; /* number of physical heads */
- int tracks; /* number of physical tracks */
- int dos_tracks; /* number of logical tracks */
- int track_offset[MAX_HEADS][MAX_TRACKS]; /* offset within image for each physical track */
- UINT32 speed_zone[MAX_TRACKS]; /* speed zone for each physical track */
- bool has_errors; /* flag to check for available error codes */
- UINT8 error[MAX_ERROR_SECTORS]; /* error code for each logical sector */
- int error_offset[MAX_HEADS][MAX_TRACKS]; /* offset within error array for sector 0 of each logical track */
-
- UINT8 id1, id2; /* DOS disk format ID */
+ int dos; /* CBM DOS version */
+ int heads; /* number of physical heads */
+ int tracks; /* number of physical tracks */
+ int dos_tracks; /* number of logical tracks */
+ int track_offset[MAX_HEADS][MAX_TRACKS]; /* offset within image for each physical track */
+ UINT32 speed_zone[MAX_TRACKS]; /* speed zone for each physical track */
+ bool has_errors; /* flag to check for available error codes */
+ UINT8 error[MAX_ERROR_SECTORS]; /* error code for each logical sector */
+ int error_offset[MAX_HEADS][MAX_TRACKS]; /* offset within error array for sector 0 of each logical track */
+
+ UINT8 id1, id2; /* DOS disk format ID */
};
/***************************************************************************
@@ -214,9 +214,9 @@ static int d64_get_sectors_per_track(floppy_image_legacy *floppy, int head, int
switch (get_tag(floppy)->dos)
{
- case DOS1: sectors_per_track = DOS1_SECTORS_PER_TRACK[track / 2]; break;
- case DOS2: sectors_per_track = DOS2_SECTORS_PER_TRACK[track / 2]; break;
- case DOS25: sectors_per_track = DOS25_SECTORS_PER_TRACK[track]; break;
+ case DOS1: sectors_per_track = DOS1_SECTORS_PER_TRACK[track / 2]; break;
+ case DOS2: sectors_per_track = DOS2_SECTORS_PER_TRACK[track / 2]; break;
+ case DOS25: sectors_per_track = DOS25_SECTORS_PER_TRACK[track]; break;
}
return sectors_per_track;
@@ -436,13 +436,13 @@ static floperr_t d64_read_track(floppy_image_legacy *floppy, int head, int track
int i;
/*
- 1. Header sync FF FF FF FF FF (40 'on' bits, not GCR encoded)
- 2. Header info 52 54 B5 29 4B 7A 5E 95 55 55 (10 GCR bytes)
- 3. Header gap 55 55 55 55 55 55 55 55 55 (9 bytes, never read)
- 4. Data sync FF FF FF FF FF (40 'on' bits, not GCR encoded)
- 5. Data block 55...4A (325 GCR bytes)
- 6. Inter-sector gap 55 55 55 55...55 55 (4 to 19 bytes, never read)
- */
+ 1. Header sync FF FF FF FF FF (40 'on' bits, not GCR encoded)
+ 2. Header info 52 54 B5 29 4B 7A 5E 95 55 55 (10 GCR bytes)
+ 3. Header gap 55 55 55 55 55 55 55 55 55 (9 bytes, never read)
+ 4. Data sync FF FF FF FF FF (40 'on' bits, not GCR encoded)
+ 5. Data block 55...4A (325 GCR bytes)
+ 6. Inter-sector gap 55 55 55 55...55 55 (4 to 19 bytes, never read)
+ */
if (sector_error == ERROR_29)
id1 ^= 0xff;
@@ -499,11 +499,11 @@ static floperr_t d64_read_track(floppy_image_legacy *floppy, int head, int track
sector_checksum ^= 0xff;
/*
- $00 - data block ID ($07)
- $01-100 - 256 bytes sector data
- $101 - data block checksum (EOR of $01-100)
- $102-103 - $00 ("off" bytes, to make the sector size a multiple of 5)
- */
+ $00 - data block ID ($07)
+ $01-100 - 256 bytes sector data
+ $101 - data block checksum (EOR of $01-100)
+ $102-103 - $00 ("off" bytes, to make the sector size a multiple of 5)
+ */
gcr_double_2_gcr(data_block_id, d64_track_data[d64_pos], d64_track_data[d64_pos + 1], d64_track_data[d64_pos + 2], gcr_track_data + gcr_pos);
gcr_pos += 5;
@@ -536,7 +536,7 @@ static floperr_t d64_read_track(floppy_image_legacy *floppy, int head, int track
LOG_FORMATS("D64 track %.1f length %u\n", get_dos_track(track), gcr_track_size);
}
- else /* half tracks */
+ else /* half tracks */
{
/* set track length to 0 */
memset(buffer, 0, buflen);
@@ -566,27 +566,27 @@ static void d64_identify(floppy_image_legacy *floppy, int *dos, int *heads, int
switch (floppy_image_size(floppy))
{
/* 2040/3040 */
- case D67_SIZE_35_TRACKS: *dos = DOS1; *heads = 1; *tracks = 35; *has_errors = false; break;
+ case D67_SIZE_35_TRACKS: *dos = DOS1; *heads = 1; *tracks = 35; *has_errors = false; break;
/* 4040/2031/1541/1551 */
- case D64_SIZE_35_TRACKS: *dos = DOS2; *heads = 1; *tracks = 35; *has_errors = false; break;
- case D64_SIZE_35_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 35; *has_errors = true; break;
- case D64_SIZE_40_TRACKS: *dos = DOS2; *heads = 1; *tracks = 40; *has_errors = false; break;
- case D64_SIZE_40_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 40; *has_errors = true; break;
- case D64_SIZE_42_TRACKS: *dos = DOS2; *heads = 1; *tracks = 42; *has_errors = false; break;
- case D64_SIZE_42_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 42; *has_errors = true; break;
+ case D64_SIZE_35_TRACKS: *dos = DOS2; *heads = 1; *tracks = 35; *has_errors = false; break;
+ case D64_SIZE_35_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 35; *has_errors = true; break;
+ case D64_SIZE_40_TRACKS: *dos = DOS2; *heads = 1; *tracks = 40; *has_errors = false; break;
+ case D64_SIZE_40_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 40; *has_errors = true; break;
+ case D64_SIZE_42_TRACKS: *dos = DOS2; *heads = 1; *tracks = 42; *has_errors = false; break;
+ case D64_SIZE_42_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 1; *tracks = 42; *has_errors = true; break;
/* 1571 */
- case D71_SIZE_70_TRACKS: *dos = DOS2; *heads = 2; *tracks = 35; *has_errors = false; break;
- case D71_SIZE_70_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 2; *tracks = 35; *has_errors = true; break;
+ case D71_SIZE_70_TRACKS: *dos = DOS2; *heads = 2; *tracks = 35; *has_errors = false; break;
+ case D71_SIZE_70_TRACKS_WITH_ERRORS: *dos = DOS2; *heads = 2; *tracks = 35; *has_errors = true; break;
/* 8050 */
- case D80_SIZE_77_TRACKS: *dos = DOS25; *heads = 1; *tracks = 77; *has_errors = false; break;
- case D80_SIZE_77_TRACKS_WITH_ERRORS: *dos = DOS25; *heads = 1; *tracks = 77; *has_errors = true; break;
+ case D80_SIZE_77_TRACKS: *dos = DOS25; *heads = 1; *tracks = 77; *has_errors = false; break;
+ case D80_SIZE_77_TRACKS_WITH_ERRORS: *dos = DOS25; *heads = 1; *tracks = 77; *has_errors = true; break;
/* 8250/SFD1001 */
- case D82_SIZE_154_TRACKS: *dos = DOS25; *heads = 2; *tracks = 77; *has_errors = false; break;
- case D82_SIZE_154_TRACKS_WITH_ERRORS: *dos = DOS25; *heads = 2; *tracks = 77; *has_errors = true; break;
+ case D82_SIZE_154_TRACKS: *dos = DOS25; *heads = 2; *tracks = 77; *has_errors = false; break;
+ case D82_SIZE_154_TRACKS_WITH_ERRORS: *dos = DOS25; *heads = 2; *tracks = 77; *has_errors = true; break;
}
}
@@ -803,11 +803,11 @@ FLOPPY_CONSTRUCT( d64_dsk_construct )
/* read format ID from directory */
/*
- id1, id2 are the same for extended d64 (i.e. with error tables), for d67 and for d71
+ id1, id2 are the same for extended d64 (i.e. with error tables), for d67 and for d71
- for d81 they are at track 40 bytes 0x17 & 0x18
- for d80 & d82 they are at track 39 bytes 0x18 & 0x19
- */
+ for d81 they are at track 40 bytes 0x17 & 0x18
+ for d80 & d82 they are at track 39 bytes 0x18 & 0x19
+ */
if (dos == DOS25)
floppy_image_read(floppy, id, tag->track_offset[0][38] + 0x18, 2);
else