|
|
1.1 root 1: /***
2: *dos.h - definitions for MS-DOS interface routines
3: *
4: * Copyright (c) 1985-1990, 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: /* ensure proper alignment of struct fields */
16:
17: #pragma pack(4)
18:
19:
20: #ifndef _REGS_DEFINED
21:
22: /* word registers */
23:
24: struct WORDREGS {
25: unsigned int eax;
26: unsigned int ebx;
27: unsigned int ecx;
28: unsigned int edx;
29: unsigned int esi;
30: unsigned int edi;
31: unsigned int cflag;
32: };
33:
34:
35: /* byte registers */
36:
37: struct BYTEREGS {
38: unsigned short aw; /* high 16-bits of eax */
39: unsigned char al, ah;
40: unsigned short bw; /* high 16-bits of ebx */
41: unsigned char bl, bh;
42: unsigned short cw; /* high 16-bits of ecx */
43: unsigned char cl, ch;
44: unsigned short dw; /* high 16-bits of edx */
45: unsigned char dl, dh;
46: };
47:
48:
49: /* general purpose registers union -
50: * overlays the corresponding word and byte registers.
51: */
52:
53: union REGS {
54: struct WORDREGS x;
55: struct BYTEREGS h;
56: };
57:
58:
59: /* segment registers */
60:
61: struct 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: /* _dos_getdate/_dossetdate and _dos_gettime/_dos_settime structures */
74:
75: #ifndef _DATETIME_T_DEFINED
76:
77: struct dosdate_t {
78: unsigned char day; /* 1-31 */
79: unsigned char month; /* 1-12 */
80: unsigned int year; /* 1980-2099 */
81: unsigned char dayofweek; /* 0-6, 0=Sunday */
82: };
83:
84: struct dostime_t {
85: unsigned char hour; /* 0-23 */
86: unsigned char minute; /* 0-59 */
87: unsigned char second; /* 0-59 */
88: unsigned char hsecond; /* 0-99 */
89: };
90:
91: #define _DATETIME_T_DEFINED
92:
93: #endif
94:
95:
96: /* manifest constants for _hardresume result parameter */
97:
98: #define _HARDERR_IGNORE 0 /* Ignore the error */
99: #define _HARDERR_RETRY 1 /* Retry the operation */
100: #define _HARDERR_ABORT 2 /* Abort program issuing Interrupt 23h */
101: #define _HARDERR_FAIL 3 /* Fail the system call in progress */
102: /* _HARDERR_FAIL is not supported on DOS 2.x */
103:
104: /* File attribute constants */
105:
106: #define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
107: #define _A_RDONLY 0x01 /* Read only file */
108: #define _A_HIDDEN 0x02 /* Hidden file */
109: #define _A_SYSTEM 0x04 /* System file */
110: #define _A_VOLID 0x08 /* Volume ID file */
111: #define _A_SUBDIR 0x10 /* Subdirectory */
112: #define _A_ARCH 0x20 /* Archive file */
113:
114:
115: /* external variable declarations */
116:
117: extern unsigned int _cdecl _osversion;
118:
119:
120: /* function prototypes */
121:
122: void _cdecl segread(struct SREGS *);
123:
124:
125: /* restore default alignment */
126:
127: #pragma pack()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.