|
|
1.1 root 1: /*
2: Hatari
3: */
4:
5: /*
6: GEMDOS error codes, See 'The Atari Compendium' D.3
7: */
8: #define GEMDOS_EOK 0 // OK
9: #define GEMDOS_ERROR -1 // Generic error
10: #define GEMDOS_EDRVNR -2 // Drive not ready
11: #define GEMDOS_EUNCMD -3 // Unknown command
12: #define GEMDOS_E_CRC -4 // CRC error
13: #define GEMDOS_EBADRQ -5 // Bad request
14: #define GEMDOS_E_SEEK -6 // Seek error
15: #define GEMDOS_EMEDIA -7 // Unknown media
16: #define GEMDOS_ESECNF -8 // Sector not found
17: #define GEMDOS_EPAPER -9 // Out of paper
18: #define GEMDOS_EWRITF -10 // Write fault
19: #define GEMDOS_EREADF -11 // Read fault
20: #define GEMDOS_EWRPRO -12 // Device is write protected
21: #define GEMDOS_E_CHNG -14 // Media change detected
22: #define GEMDOS_EUNDEV -15 // Unknown device
23: #define GEMDOS_EINVFN -32 // Invalid function
24: #define GEMDOS_EFILNF -33 // File not found
25: #define GEMDOS_EPTHNF -34 // Path not found
26: #define GEMDOS_ENHNDL -35 // No more handles
27: #define GEMDOS_EACCDN -36 // Access denied
28: #define GEMDOS_EIHNDL -37 // Invalid handle
29: #define GEMDOS_ENSMEM -39 // Insufficient memory
30: #define GEMDOS_EIMBA -40 // Invalid memory block address
31: #define GEMDOS_EDRIVE -46 // Invalid drive specification
32: #define GEMDOS_ENSAME -48 // Cross device rename
33: #define GEMDOS_ENMFIL -49 // No more files
34: #define GEMDOS_ELOCKED -58 // Record is already locked
35: #define GEMDOS_ENSLOCK -59 // Invalid lock removal request
36: #define GEMDOS_ERANGE -64 // Range error
37: #define GEMDOS_EINTRN -65 // Internal error
38: #define GEMDOS_EPLFMT -66 // Invalid program load format
39: #define GEMDOS_EGSBF -67 // Memory block growth failure
40: #define GEMDOS_ELOOP -80 // Too many symbolic links
41: #define GEMDOS_EMOUNT -200 // Mount point crossed (indicator)
42:
43: /*
44: GemDOS file attributes
45: */
46: #define GEMDOS_FILE_ATTRIB_READONLY 0x01
47: #define GEMDOS_FILE_ATTRIB_HIDDEN 0x02
48: #define GEMDOS_FILE_ATTRIB_SYSTEM_FILE 0x04
49: #define GEMDOS_FILE_ATTRIB_VOLUME_LABEL 0x08
50: #define GEMDOS_FILE_ATTRIB_SUBDIRECTORY 0x10
51: #define GEMDOS_FILE_ATTRIB_WRITECLOSE 0x20
52:
53: /*
54: Disc Tranfer Address (DTA)
55: */
56: #define TOS_NAMELEN 14
57:
58: //typedef struct {
59: // HANDLE FileHandle;
60: // WIN32_FIND_DATA FindFileData;
61: //} INTERNAL_DTA;
62:
63: typedef struct {
64: unsigned char index[2];
65: unsigned char magic[4];
66: char dta_pat[TOS_NAMELEN];
67: char dta_sattrib;
68: char dta_attrib;
69: unsigned char dta_time[2];
70: unsigned char dta_date[2];
71: unsigned char dta_size[4];
72: char dta_name[TOS_NAMELEN];
73: } DTA;
74: #define DTA_MAGIC_NUMBER 0x12983476
75: #define MAX_DTAS_FILES 256 // Must be ^2
76:
77: //typedef struct {
78: // HANDLE FileHandle;
79: // BOOL bUsed;
80: //} FILE_HANDLE;
81:
82: #define BASE_FILEHANDLE 64 // Our emulation handles - MUST not be valid TOS ones, but MUST be <256
83: #define MAX_FILE_HANDLES 32 // We can allow 32 files open at once
84:
85: // DateTime
86: typedef struct {
87: unsigned hour:5;
88: unsigned minute:6;
89: unsigned second:5;
90: unsigned year:7;
91: unsigned month:4;
92: unsigned day:5;
93: } DATETIME;
94:
95: #define ISHARDDRIVE(Drive) (Drive!=-1)
96:
97: extern BOOL bInitGemDOS;
98: extern unsigned short int CurrentDrive;
99:
100: extern void GemDOS_Init(void);
101: extern void GemDOS_Reset(void);
102: extern void GemDOS_MemorySnapShot_Capture(BOOL bSave);
103: extern void GemDOS_CreateHardDriveFileName(int Drive,char *pszFileName,char *pszDestName);
104: extern BOOL GemDOS(void);
105: extern void GemDOS_OpCode(void);
106: extern void GemDOS_RunOldOpCode(void);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.