]> Shamusworld >> Repos - apple2/blobdiff - src/floppy.h
Added floppy #2 saving, statistics to makefile.
[apple2] / src / floppy.h
old mode 100755 (executable)
new mode 100644 (file)
index 45e8ce4..12b5e98
@@ -1,69 +1,76 @@
-//\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 <stdint.h>
+
+enum { DT_UNKNOWN, DT_DOS33, DT_DOS33_HDR, DT_PRODOS, DT_NYBBLE };
+
+class FloppyDrive
+{
+       public:
+               FloppyDrive();
+               ~FloppyDrive();
+
+               bool LoadImage(const char * filename, uint8_t driveNum = 0);
+               bool SaveImage(uint8_t driveNum = 0);
+               bool SaveImageAs(const char * filename, uint8_t driveNum = 0);
+               void CreateBlankImage(uint8_t driveNum = 0);
+               void SwapImages(void);
+               const char * GetImageName(uint8_t driveNum = 0);
+               void EjectImage(uint8_t driveNum = 0);
+               bool DriveIsEmpty(uint8_t driveNum = 0);
+               bool DiskIsWriteProtected(uint8_t driveNum = 0);
+               void SetWriteProtect(bool, uint8_t driveNum = 0);
+
+               // I/O functions ($C0Ex accesses)
+
+               void ControlStepper(uint8_t addr);
+               void ControlMotor(uint8_t addr);
+               void DriveEnable(uint8_t addr);
+               uint8_t ReadWrite(void);
+               uint8_t GetLatchValue(void);
+               void SetLatchValue(uint8_t value);
+               void SetReadMode(void);
+               void SetWriteMode(void);
+
+       protected:
+               void DetectImageType(const char * filename, uint8_t driveNum);
+               void NybblizeImage(uint8_t driveNum);
+               void DenybblizeImage(uint8_t driveNum);
+
+       private:
+               char imageName[2][MAX_PATH];
+               uint8_t * disk[2];
+               uint32_t diskSize[2];
+               uint8_t diskType[2];
+               bool imageDirty[2];
+               bool writeProtected[2];
+               uint8_t motorOn;
+               uint8_t activeDrive;
+               uint8_t ioMode;
+               uint8_t latchValue;
+               uint8_t phase;
+               uint8_t track;
+
+               uint8_t nybblizedImage[2][232960];
+               uint32_t currentPos;
+
+               // And here are some private class variables (to reduce function redundancy):
+               static uint8_t header[21];
+               static uint8_t doSector[16];
+               static uint8_t poSector[16];
+               static char nameBuf[MAX_PATH];
+};
+
+#endif // __FLOPPY_H__