ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/cwcbm/readcbm.c
(Generate patch)

Comparing cwcbm/readcbm.c (file contents):
Revision 1.2 by cebix, 2004-01-07T16:53:58Z vs.
Revision 1.3 by cebix, 2004-01-10T14:05:59Z

# Line 154 | Line 154 | static int decode_header(int track, int
154                  fprintf(stderr, "Track %d: header checksum incorrect\n", track);
155                  // we'll try to continue anyways
156          }
157 <        if (header[2] >= num_sectors[track]) {
157 >        if (header[2] >= format->num_sectors[track]) {
158                  fprintf(stderr, "Track %d: invalid sector number in header\n", track);
159                  return 0;
160          }
161          if (header[3] != track) {
162 <                fprintf(stderr, "Track %d: invalid track number in header (seek error?)\n", track);
162 >                fprintf(stderr, "Track %d: invalid track number (%d) in header (seek error?)\n", track, header[3]);
163                  return 0;
164          }
165  
# Line 207 | Line 207 | static void decode_sectors(int track)
207  
208          // No sector read yet
209          unsigned long sector_found = 0;
210 <        unsigned long all_sectors = (1 << num_sectors[track]) - 1;
210 >        unsigned long all_sectors = (1 << format->num_sectors[track]) - 1;
211  
212          // Reset buffer pointer
213          buf_ptr = 0;
# Line 243 | Line 243 | static void decode_sectors(int track)
243  
244          // Check if all sectors of the track were found
245          if (sector_found != all_sectors) {
246 <                for (sector = 0; sector < num_sectors[track]; sector++)
246 >                for (sector = 0; sector < format->num_sectors[track]; sector++)
247                          if (!(sector_found & (1 << sector)))
248                                  fprintf(stderr, "Track %d: sector %d not found\n", track, sector);
249          }
# Line 259 | Line 259 | static int read_track(int drive, int tra
259          seek_to(drive, track);
260  
261          // Clear buffer
262 <        memset(track_buf, 0, num_sectors[track] * SECTOR_SIZE);
262 >        memset(track_buf, 0, format->num_sectors[track] * SECTOR_SIZE);
263  
264          // Read track (1 revolution + 10%)
265 <        if (!catweasel_read(c.drives + drive, 0, 1, 1100 * 60 / drive_rpm)) {
265 >        if (!catweasel_read(c.drives + drive, track > format->tracks_per_side ? 1 : 0, 1, 1100 * 60 / drive_rpm)) {
266                  fprintf(stderr, "Error reading track %d\n", track);
267                  return 0;
268          }
# Line 318 | Line 318 | int main(int argc, char **argv)
318          start_drive(drive_num);
319  
320          // Read all tracks
321 <        for (track = 1; track <= NUM_TRACKS; track++) {
321 >        for (track = 1; track <= format->sides * format->tracks_per_side; track++) {
322                  printf("Track %d...\n", track);
323                  if (!read_track(drive_num, track))
324                          break;
325 <                fwrite(track_buf, 256, num_sectors[track], f);
325 >                fwrite(track_buf, 256, format->num_sectors[track], f);
326          }
327  
328          // Stop drive

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines