src/mess/formats/fdi_dsk.c
| r7898 | r7899 | |
| 85 | 85 | int heads; /* number of physical heads */ |
| 86 | 86 | int tracks; /* number of physical tracks */ |
| 87 | 87 | UINT32 track_offset[MAX_TRACKS]; /* offset within data for each track */ |
| 88 | UINT8 track_type[MAX_TRACKS]; |
| 88 | 89 | }; |
| 89 | 90 | |
| 91 | struct fdi_track |
| 92 | { |
| 93 | UINT8 type; |
| 94 | UINT8 size; |
| 95 | }; |
| 96 | |
| 90 | 97 | struct fdi_header |
| 91 | 98 | { |
| 92 | 99 | UINT8 signature[27]; |
| r7898 | r7899 | |
| 102 | 109 | UINT8 tpi; |
| 103 | 110 | UINT8 headwidth; |
| 104 | 111 | UINT8 reserved[2]; |
| 112 | struct fdi_track track[MAX_TRACKS]; |
| 105 | 113 | }; |
| 106 | 114 | |
| 115 | struct fdi_pulse_track_header |
| 116 | { |
| 117 | UINT8 numpulses[4]; |
| 118 | UINT8 averagesz[3]; |
| 119 | UINT8 minsize[3]; |
| 120 | UINT8 maxsize[3]; |
| 121 | UINT8 indexsize[3]; |
| 122 | // UINT8 averagedt[averagesz]; |
| 123 | // UINT8 mindata[minsize]; |
| 124 | // UINT8 maxdata[maxsize]; |
| 125 | // UINT8 indexdata[indexsize]; |
| 126 | }; |
| 127 | |
| 107 | 128 | /*************************************************************************** |
| 108 | 129 | INLINE FUNCTIONS |
| 109 | 130 | ***************************************************************************/ |
| r7898 | r7899 | |
| 234 | 255 | } |
| 235 | 256 | |
| 236 | 257 | /* find track offsets */ |
| 258 | int offset = sizeof(header); |
| 237 | 259 | |
| 260 | for (int track = 0; track < tag->tracks; track++) |
| 261 | { |
| 262 | UINT8 type = header.track[track].type; |
| 263 | int size = header.track[track].size * 256; |
| 264 | |
| 265 | if (LOG) logerror("FDI track %u type %02x size %u offset %u\n", track, type, size, offset); |
| 266 | |
| 267 | tag->track_offset[track] = offset; |
| 268 | tag->track_type[track] = type; |
| 269 | |
| 270 | offset += size; |
| 271 | } |
| 272 | |
| 238 | 273 | /* set callbacks */ |
| 239 | 274 | struct FloppyCallbacks *callbacks = floppy_callbacks(floppy); |
| 240 | 275 | |