2 // Apple 2 floppy disk support
8 // MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...
11 #define MAX_PATH _POSIX_PATH_MAX
13 #include <stdlib.h> // for MAX_PATH on MinGW/Darwin
17 enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };
25 bool LoadImage(const char * filename, uint8 driveNum = 0);
26 bool SaveImage(uint8 driveNum = 0);
27 bool SaveImageAs(const char * filename, uint8 driveNum = 0);
28 void CreateBlankImage(uint8 driveNum = 0);
29 void SwapImages(void);
31 // I/O functions ($C0Ex accesses)
33 void ControlStepper(uint8 addr);
34 void ControlMotor(uint8 addr);
35 void DriveEnable(uint8 addr);
36 uint8 ReadWrite(void);
37 uint8 GetLatchValue(void);
38 void SetLatchValue(uint8 value);
39 void SetReadMode(void);
40 void SetWriteMode(void);
43 void DetectImageType(const char * filename, uint8 driveNum);
44 void NybblizeImage(uint8 driveNum);
45 void DenybblizeImage(uint8 driveNum);
48 char imageName[2][MAX_PATH];
60 uint8 nybblizedImage[2][232960];
63 // And here are some private class variables (to reduce function redundancy):
64 static uint8 header[21];
65 static uint8 doSector[16];
66 static uint8 poSector[16];
69 #endif // __FLOPPY_H__