#define CYLINDERS 80 #define SECTORS 18 #define BASE 0x03F0 #define IMG_SIZE 1474560 /* Make sure IRQ6 is on and pointed to the correct handler! */ U8 DskImg() { U64 i; // Open image file for writing CFile *img = FOpen("Floppy.IMG","w",IMG_SIZE/BLK_SIZE); // Initialize the controller FDCReset(BASE); Sleep(100); /* Loop through each sector, reading each into the buffer, then writing it into the file */ for (i = 0; i < CYLINDERS; i++) { "Track %d\n", i; if (FDCSeek(BASE, i, 0)) {  FDCReset(BASE); FClose(img); return 1; } if (FDCSeek(BASE, i, 1)) { FDCReset(BASE); FClose(img); return 1; } FDCReadMulti(BASE, i, 0, 1, 18); FBlkWrite(img, &FDC_DMA, 36 * i, 36); } // Return to track 0 "Returning to track 0...\n"; if (FDCSeek(BASE, 0, 0)) { FDCReset(BASE); FClose(img); return 1; } if (FDCSeek(BASE, 0, 1)) { FDCReset(BASE); FClose(img); return 1; } // Close the image file FClose(img); return 0; } DskImg;