]> 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 d0207ca..12b5e98
@@ -12,9 +12,9 @@
 #else
 #include <stdlib.h>                                                            // for MAX_PATH on MinGW/Darwin
 #endif
-#include "types.h"
+#include <stdint.h>
 
-enum { DT_UNKNOWN, DT_DOS33, DT_PRODOS, DT_NYBBLE };
+enum { DT_UNKNOWN, DT_DOS33, DT_DOS33_HDR, DT_PRODOS, DT_NYBBLE };
 
 class FloppyDrive
 {
@@ -22,48 +22,55 @@ class FloppyDrive
                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);
+               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 addr);
-               void ControlMotor(uint8 addr);
-               void DriveEnable(uint8 addr);
-               uint8 ReadWrite(void);
-               uint8 GetLatchValue(void);
-               void SetLatchValue(uint8 value);
+               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 driveNum);
-               void NybblizeImage(uint8 driveNum);
-               void DenybblizeImage(uint8 driveNum);
+               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 * disk[2];
-               uint32 diskSize[2];
-               uint8 diskType[2];
+               uint8_t * disk[2];
+               uint32_t diskSize[2];
+               uint8_t diskType[2];
                bool imageDirty[2];
-               uint8 motorOn;
-               uint8 activeDrive;
-               uint8 ioMode;
-               uint8 latchValue;
-               uint8 phase;
-               uint8 track;
+               bool writeProtected[2];
+               uint8_t motorOn;
+               uint8_t activeDrive;
+               uint8_t ioMode;
+               uint8_t latchValue;
+               uint8_t phase;
+               uint8_t track;
 
-               uint8 nybblizedImage[2][232960];
-               uint32 currentPos;
+               uint8_t nybblizedImage[2][232960];
+               uint32_t 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 uint8_t header[21];
+               static uint8_t doSector[16];
+               static uint8_t poSector[16];
+               static char nameBuf[MAX_PATH];
 };
 
 #endif // __FLOPPY_H__