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