|
|
1.1 root 1: /*
1.1.1.3 root 2: Hatari - fdc.h
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
1.1 root 6: */
7:
1.1.1.3 root 8: #ifndef HATARI_FDC_H
9: #define HATARI_FDC_H
10:
1.1.1.2 root 11: /*-----------------------------------------------------------------------*/
12: /* FDC Emulation commands */
1.1.1.4 root 13: enum
14: {
15: FDCEMU_CMD_NULL = 0,
16: /* Type I */
17: FDCEMU_CMD_RESTORE,
18: FDCEMU_CMD_SEEK,
19: FDCEMU_CMD_STEP,
20: FDCEMU_CMD_STEPIN,
21: FDCEMU_CMD_STEPOUT,
22: /* Type II */
23: FDCEMU_CMD_READSECTORS,
24: FDCEMU_CMD_READMULTIPLESECTORS,
25: FDCEMU_CMD_WRITESECTORS,
1.1.1.9 ! root 26: FDCEMU_CMD_WRITEMULTIPLESECTORS,
! 27: /* Type III */
! 28: FDCEMU_CMD_READADDRESS,
1.1 root 29: };
30:
1.1.1.2 root 31: /* FDC Emulation commands */
1.1 root 32: #define FDCEMU_RUN_NULL 0
33:
1.1.1.2 root 34: /* FDC Running Restore commands */
1.1.1.4 root 35: enum
36: {
37: FDCEMU_RUN_RESTORE_SEEKTOTRACKZERO,
38: FDCEMU_RUN_RESTORE_COMPLETE
1.1 root 39: };
40:
1.1.1.2 root 41: /* FDC Running Seek commands */
1.1.1.4 root 42: enum
43: {
44: FDCEMU_RUN_SEEK_TOTRACK,
45: FDCEMU_RUN_SEEK_COMPLETE
1.1 root 46: };
47:
1.1.1.2 root 48: /* FDC Running Step commands */
1.1.1.4 root 49: enum
50: {
51: FDCEMU_RUN_STEP_ONCE,
52: FDCEMU_RUN_STEP_COMPLETE
1.1 root 53: };
54:
1.1.1.2 root 55: /* FDC Running Step In commands */
1.1.1.4 root 56: enum
57: {
58: FDCEMU_RUN_STEPIN_ONCE,
59: FDCEMU_RUN_STEPIN_COMPLETE
1.1 root 60: };
61:
1.1.1.2 root 62: /* FDC Running Step Out commands */
1.1.1.4 root 63: enum
64: {
65: FDCEMU_RUN_STEPOUT_ONCE,
66: FDCEMU_RUN_STEPOUT_COMPLETE
1.1 root 67: };
68:
1.1.1.2 root 69: /* FDC Running Read Sector/s commands */
1.1.1.4 root 70: enum
71: {
72: FDCEMU_RUN_READSECTORS_READDATA,
73: FDCEMU_RUN_READSECTORS_COMPLETE
1.1 root 74: };
75:
1.1.1.2 root 76: /* FDC Running write Sector/s commands */
1.1.1.4 root 77: enum
78: {
79: FDCEMU_RUN_WRITESECTORS_WRITEDATA,
80: FDCEMU_RUN_WRITESECTORS_COMPLETE
1.1 root 81: };
82:
1.1.1.9 ! root 83: /* FDC Running Read Address commands */
! 84: enum
! 85: {
! 86: FDCEMU_RUN_READADDRESS,
! 87: FDCEMU_RUN_READADDRESS_COMPLETE
! 88: };
! 89:
1.1.1.3 root 90:
1.1.1.9 ! root 91: /* Commands are taking the equivalent of FDC_DELAY_CYCLES cpu cycles to execute */
1.1.1.7 root 92: /* to try to simulate the speed of a real ST floppy drive */
93: #define FDC_DELAY_CYCLES 92160
94: //#define FDC_DELAY_CYCLES 1536 // 'Just Bugging Demo' by ACF requires a very fast delay (bug in the loader)
95:
96:
1.1.1.5 root 97: extern Sint16 FDCSectorCountRegister;
98: extern Uint16 DiskControllerWord_ff8604wr;
1.1.1.4 root 99: extern Uint16 DMAModeControl_ff8606wr;
1.1.1.3 root 100:
101:
1.1 root 102: extern void FDC_Reset(void);
1.1.1.8 root 103: extern void FDC_MemorySnapShot_Capture(bool bSave);
1.1 root 104: extern void FDC_ResetDMAStatus(void);
1.1.1.8 root 105: extern void FDC_SetDMAStatus(bool bError);
1.1.1.4 root 106: extern void FDC_DmaStatus_ReadWord(void);
1.1.1.2 root 107: extern int FDC_FindFloppyDrive(void);
108: extern void FDC_AcknowledgeInterrupt(void);
1.1.1.6 root 109: extern void FDC_GpipRead(void);
1.1.1.7 root 110: extern void FDC_InterruptHandler_Update(void);
1.1 root 111: extern void FDC_UpdateRestoreCmd(void);
112: extern void FDC_UpdateSeekCmd(void);
113: extern void FDC_UpdateStepCmd(void);
114: extern void FDC_UpdateStepInCmd(void);
115: extern void FDC_UpdateStepOutCmd(void);
116: extern void FDC_UpdateReadSectorsCmd(void);
117: extern void FDC_UpdateWriteSectorsCmd(void);
1.1.1.9 ! root 118: extern void FDC_UpdateReadAddressCmd(void);
1.1.1.4 root 119: extern Uint32 FDC_ReadDMAAddress(void);
120: extern void FDC_WriteDMAAddress(Uint32 Address);
1.1.1.8 root 121: extern bool FDC_ReadSectorFromFloppy(void);
122: extern bool FDC_WriteSectorFromFloppy(void);
1.1 root 123: extern void FDC_DMADataFromFloppy(void);
1.1.1.5 root 124: extern void FDC_DiskController_WriteWord(void);
125: extern void FDC_DiskControllerStatus_ReadWord(void);
1.1.1.4 root 126: extern void FDC_DmaModeControl_WriteWord(void);
1.1.1.7 root 127: extern void FDC_FloppyMode_WriteByte(void);
128: extern void FDC_FloppyMode_ReadByte(void);
1.1.1.3 root 129:
130:
131: #endif /* ifndef HATARI_FDC_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.