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