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);
30 const char * GetImageName(uint8 driveNum = 0);
32 // I/O functions ($C0Ex accesses)
34 void ControlStepper(uint8 addr);
35 void ControlMotor(uint8 addr);
36 void DriveEnable(uint8 addr);
37 uint8 ReadWrite(void);
38 uint8 GetLatchValue(void);
39 void SetLatchValue(uint8 value);
40 void SetReadMode(void);
41 void SetWriteMode(void);
44 void DetectImageType(const char * filename, uint8 driveNum);
45 void NybblizeImage(uint8 driveNum);
46 void DenybblizeImage(uint8 driveNum);
49 char imageName[2][MAX_PATH];
61 uint8 nybblizedImage[2][232960];
64 // And here are some private class variables (to reduce function redundancy):
65 static uint8 header[21];
66 static uint8 doSector[16];
67 static uint8 poSector[16];
68 static char nameBuf[MAX_PATH];
71 #endif // __FLOPPY_H__