summaryrefslogtreecommitdiff
path: root/v4.0/src/TOOLS/BLD/INC/DOS.H
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/TOOLS/BLD/INC/DOS.H')
-rw-r--r--v4.0/src/TOOLS/BLD/INC/DOS.H220
1 files changed, 220 insertions, 0 deletions
diff --git a/v4.0/src/TOOLS/BLD/INC/DOS.H b/v4.0/src/TOOLS/BLD/INC/DOS.H
new file mode 100644
index 0000000..5539156
--- /dev/null
+++ b/v4.0/src/TOOLS/BLD/INC/DOS.H
@@ -0,0 +1,220 @@
1/***
2*dos.h - definitions for MS-DOS interface routines
3*
4* Copyright (c) 1985-1988, Microsoft Corporation. All rights reserved.
5*
6*Purpose:
7* Defines the structs and unions used for the direct DOS interface
8* routines; includes macros to access the segment and offset
9* values of far pointers, so that they may be used by the routines; and
10* provides function prototypes for direct DOS interface functions.
11*
12*******************************************************************************/
13
14
15#ifndef NO_EXT_KEYS /* extensions enabled */
16 #define _CDECL cdecl
17 #define _NEAR near
18#else /* extensions not enabled */
19 #define _CDECL
20 #define _NEAR
21#endif /* NO_EXT_KEYS */
22
23
24#ifndef _REGS_DEFINED
25
26/* word registers */
27
28struct WORDREGS {
29 unsigned int ax;
30 unsigned int bx;
31 unsigned int cx;
32 unsigned int dx;
33 unsigned int si;
34 unsigned int di;
35 unsigned int cflag;
36 };
37
38
39/* byte registers */
40
41struct BYTEREGS {
42 unsigned char al, ah;
43 unsigned char bl, bh;
44 unsigned char cl, ch;
45 unsigned char dl, dh;
46 };
47
48
49/* general purpose registers union -
50 * overlays the corresponding word and byte registers.
51 */
52
53union REGS {
54 struct WORDREGS x;
55 struct BYTEREGS h;
56 };
57
58
59/* segment registers */
60
61struct SREGS {
62 unsigned int es;
63 unsigned int cs;
64 unsigned int ss;
65 unsigned int ds;
66 };
67
68#define _REGS_DEFINED
69
70#endif
71
72
73/* dosexterror structure */
74
75#ifndef _DOSERROR_DEFINED
76
77struct DOSERROR {
78 int exterror;
79 char class;
80 char action;
81 char locus;
82 };
83
84#define _DOSERROR_DEFINED
85
86#endif
87
88
89/* _dos_findfirst structure */
90
91#ifndef _FIND_T_DEFINED
92
93struct find_t {
94 char reserved[21];
95 char attrib;
96 unsigned wr_time;
97 unsigned wr_date;
98 long size;
99 char name[13];
100 };
101
102#define _FIND_T_DEFINED
103
104#endif
105
106
107/* _dos_getdate/_dossetdate and _dos_gettime/_dos_settime structures */
108
109#ifndef _DATETIME_T_DEFINED
110
111struct dosdate_t {
112 unsigned char day; /* 1-31 */
113 unsigned char month; /* 1-12 */
114 unsigned int year; /* 1980-2099 */
115 unsigned char dayofweek; /* 0-6, 0=Sunday */
116 };
117
118struct dostime_t {
119 unsigned char hour; /* 0-23 */
120 unsigned char minute; /* 0-59 */
121 unsigned char second; /* 0-59 */
122 unsigned char hsecond; /* 0-99 */
123 };
124
125#define _DATETIME_T_DEFINED
126
127#endif
128
129
130/* _dos_getdiskfree structure */
131
132#ifndef _DISKFREE_T_DEFINED
133
134struct diskfree_t {
135 unsigned total_clusters;
136 unsigned avail_clusters;
137 unsigned sectors_per_cluster;
138 unsigned bytes_per_sector;
139 };
140
141#define _DISKFREE_T_DEFINED
142
143#endif
144
145
146/* manifest constants for _hardresume result parameter */
147
148#define _HARDERR_IGNORE 0 /* Ignore the error */
149#define _HARDERR_RETRY 1 /* Retry the operation */
150#define _HARDERR_ABORT 2 /* Abort program issuing Interrupt 23h */
151#define _HARDERR_FAIL 3 /* Fail the system call in progress */
152 /* _HARDERR_FAIL is not supported on DOS 2.x */
153
154/* File attribute constants */
155
156#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
157#define _A_RDONLY 0x01 /* Read only file */
158#define _A_HIDDEN 0x02 /* Hidden file */
159#define _A_SYSTEM 0x04 /* System file */
160#define _A_VOLID 0x08 /* Volume ID file */
161#define _A_SUBDIR 0x10 /* Subdirectory */
162#define _A_ARCH 0x20 /* Archive file */
163
164/* macros to break MS C "far" pointers into their segment and offset
165 * components
166 */
167
168#define FP_SEG(fp) (*((unsigned *)&(fp) + 1))
169#define FP_OFF(fp) (*((unsigned *)&(fp)))
170
171
172/* external variable declarations */
173
174extern unsigned int _NEAR _CDECL _osversion;
175
176
177/* function prototypes */
178
179int _CDECL bdos(int, unsigned int, unsigned int);
180void _CDECL _disable(void);
181unsigned _CDECL _dos_allocmem(unsigned, unsigned *);
182unsigned _CDECL _dos_close(int);
183unsigned _CDECL _dos_creat(char *, unsigned, int *);
184unsigned _CDECL _dos_creatnew(char *, unsigned, int *);
185unsigned _CDECL _dos_findfirst(char *, unsigned, struct find_t *);
186unsigned _CDECL _dos_findnext(struct find_t *);
187unsigned _CDECL _dos_freemem(unsigned);
188void _CDECL _dos_getdate(struct dosdate_t *);
189void _CDECL _dos_getdrive(unsigned *);
190unsigned _CDECL _dos_getdiskfree(unsigned, struct diskfree_t *);
191unsigned _CDECL _dos_getfileattr(char *, unsigned *);
192unsigned _CDECL _dos_getftime(int, unsigned *, unsigned *);
193void _CDECL _dos_gettime(struct dostime_t *);
194void _CDECL _dos_keep(unsigned, unsigned);
195unsigned _CDECL _dos_open(char *, unsigned, int *);
196unsigned _CDECL _dos_setblock(unsigned, unsigned, unsigned *);
197unsigned _CDECL _dos_setdate(struct dosdate_t *);
198void _CDECL _dos_setdrive(unsigned, unsigned *);
199unsigned _CDECL _dos_setfileattr(char *, unsigned);
200unsigned _CDECL _dos_setftime(int, unsigned, unsigned);
201unsigned _CDECL _dos_settime(struct dostime_t *);
202int _CDECL dosexterr(struct DOSERROR *);
203void _CDECL _enable(void);
204void _CDECL _hardresume(int);
205void _CDECL _hardretn(int);
206int _CDECL intdos(union REGS *, union REGS *);
207int _CDECL intdosx(union REGS *, union REGS *, struct SREGS *);
208int _CDECL int86(int, union REGS *, union REGS *);
209int _CDECL int86x(int, union REGS *, union REGS *, struct SREGS *);
210void _CDECL segread(struct SREGS *);
211
212
213#ifndef NO_EXT_KEYS /* extensions enabled */
214void _CDECL _chain_intr(void (_CDECL interrupt far *)());
215void (_CDECL interrupt far * _CDECL _dos_getvect(unsigned))();
216unsigned _CDECL _dos_read(int, void far *, unsigned, unsigned *);
217void _CDECL _dos_setvect(unsigned, void (_CDECL interrupt far *)());
218unsigned _CDECL _dos_write(int, void far *, unsigned, unsigned *);
219void _CDECL _harderr(void (far *)());
220#endif /* NO_EXT_KEYS */