-//\r
-// Apple 2 floppy disk support\r
-//\r
-\r
-#ifndef __FLOPPY_H__\r
-#define __FLOPPY_H__\r
-\r
-// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...\r
-#ifdef __GCCUNIX__\r
-#include <limits.h>\r
-#define MAX_PATH _POSIX_PATH_MAX\r
-#else\r
-#include <stdlib.h> // for MAX_PATH on MinGW/Darwin\r
-#endif\r
-#include "types.h"\r
-\r
-enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };\r
-\r
-class FloppyDrive\r
-{\r
- public:\r
- FloppyDrive();\r
- ~FloppyDrive();\r
-\r
- bool LoadImage(const char * filename, uint8 driveNum = 0);\r
- bool SaveImage(uint8 driveNum = 0);\r
- bool SaveImageAs(const char * filename, uint8 driveNum = 0);\r
- void CreateBlankImage(uint8 driveNum = 0);\r
- void SwapImages(void);\r
-\r
- // I/O functions ($C0Ex accesses)\r
-\r
- void ControlStepper(uint8 addr);\r
- void ControlMotor(uint8 addr);\r
- void DriveEnable(uint8 addr);\r
- uint8 ReadWrite(void);\r
- uint8 GetLatchValue(void);\r
- void SetLatchValue(uint8 value);\r
- void SetReadMode(void);\r
- void SetWriteMode(void);\r
-\r
- protected:\r
- void DetectImageType(const char * filename, uint8 driveNum);\r
- void NybblizeImage(uint8 driveNum);\r
- void DenybblizeImage(uint8 driveNum);\r
-\r
- private:\r
- char imageName[2][MAX_PATH];\r
- uint8 * disk[2];\r
- uint32 diskSize[2];\r
- uint8 diskType[2];\r
- bool imageDirty[2];\r
- uint8 motorOn;\r
- uint8 activeDrive;\r
- uint8 ioMode;\r
- uint8 latchValue;\r
- uint8 phase;\r
- uint8 track;\r
-\r
- uint8 nybblizedImage[2][232960];\r
- uint32 currentPos;\r
-\r
- // And here are some private class variables (to reduce function redundancy):\r
- static uint8 header[21];\r
- static uint8 doSector[16];\r
- static uint8 poSector[16];\r
-};\r
-\r
-#endif // __FLOPPY_H__\r
+//
+// Apple 2 floppy disk support
+//
+
+#ifndef __FLOPPY_H__
+#define __FLOPPY_H__
+
+// MAX_PATH isn't defined in stdlib.h on *nix, so we do it here...
+#ifdef __GCCUNIX__
+#include <limits.h>
+#define MAX_PATH _POSIX_PATH_MAX
+#else
+#include <stdlib.h> // for MAX_PATH on MinGW/Darwin
+#endif
+#include "types.h"
+
+enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };
+
+class FloppyDrive
+{
+ public:
+ FloppyDrive();
+ ~FloppyDrive();
+
+ bool LoadImage(const char * filename, uint8 driveNum = 0);
+ bool SaveImage(uint8 driveNum = 0);
+ bool SaveImageAs(const char * filename, uint8 driveNum = 0);
+ void CreateBlankImage(uint8 driveNum = 0);
+ void SwapImages(void);
+ const char * GetImageName(uint8 driveNum = 0);
+ void EjectImage(uint8 driveNum = 0);
+ bool DriveIsEmpty(uint8 driveNum = 0);
+ bool DiskIsWriteProtected(uint8 driveNum = 0);
+ void SetWriteProtect(bool, uint8 driveNum = 0);
+
+ // I/O functions ($C0Ex accesses)
+
+ void ControlStepper(uint8 addr);
+ void ControlMotor(uint8 addr);
+ void DriveEnable(uint8 addr);
+ uint8 ReadWrite(void);
+ uint8 GetLatchValue(void);
+ void SetLatchValue(uint8 value);
+ void SetReadMode(void);
+ void SetWriteMode(void);
+
+ protected:
+ void DetectImageType(const char * filename, uint8 driveNum);
+ void NybblizeImage(uint8 driveNum);
+ void DenybblizeImage(uint8 driveNum);
+
+ private:
+ char imageName[2][MAX_PATH];
+ uint8 * disk[2];
+ uint32 diskSize[2];
+ uint8 diskType[2];
+ bool imageDirty[2];
+ bool writeProtected[2];
+ uint8 motorOn;
+ uint8 activeDrive;
+ uint8 ioMode;
+ uint8 latchValue;
+ uint8 phase;
+ uint8 track;
+
+ uint8 nybblizedImage[2][232960];
+ uint32 currentPos;
+
+ // And here are some private class variables (to reduce function redundancy):
+ static uint8 header[21];
+ static uint8 doSector[16];
+ static uint8 poSector[16];
+ static char nameBuf[MAX_PATH];
+};
+
+#endif // __FLOPPY_H__