|
|
1.1 ! root 1: /*** ! 2: *dos.h - definitions for MS-DOS interface routines ! 3: * ! 4: * Copyright (c) 1985-1987, 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: ! 28: struct 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: ! 41: struct 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: ! 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: /* dosexterror structure */ ! 74: ! 75: #ifndef _DOSERROR_DEFINED ! 76: ! 77: struct 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: ! 93: struct 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: ! 111: struct 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: ! 118: struct 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: ! 134: struct 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: ! 174: extern unsigned int _NEAR _CDECL _osversion; ! 175: ! 176: ! 177: /* function prototypes */ ! 178: ! 179: int _CDECL bdos(int, unsigned int, unsigned int); ! 180: void _CDECL _disable(void); ! 181: unsigned _CDECL _dos_allocmem(unsigned, unsigned *); ! 182: unsigned _CDECL _dos_close(int); ! 183: unsigned _CDECL _dos_creat(char *, unsigned, int *); ! 184: unsigned _CDECL _dos_creatnew(char *, unsigned, int *); ! 185: unsigned _CDECL _dos_findfirst(char *, unsigned, struct find_t *); ! 186: unsigned _CDECL _dos_findnext(struct find_t *); ! 187: unsigned _CDECL _dos_freemem(unsigned); ! 188: void _CDECL _dos_getdate(struct dosdate_t *); ! 189: void _CDECL _dos_getdrive(unsigned *); ! 190: unsigned _CDECL _dos_getdiskfree(unsigned, struct diskfree_t *); ! 191: unsigned _CDECL _dos_getfileattr(char *, unsigned *); ! 192: unsigned _CDECL _dos_getftime(int, unsigned *, unsigned *); ! 193: void _CDECL _dos_gettime(struct dostime_t *); ! 194: void _CDECL _dos_keep(unsigned, unsigned); ! 195: unsigned _CDECL _dos_open(char *, unsigned, int *); ! 196: unsigned _CDECL _dos_setblock(unsigned, unsigned, unsigned *); ! 197: unsigned _CDECL _dos_setdate(struct dosdate_t *); ! 198: void _CDECL _dos_setdrive(unsigned, unsigned *); ! 199: unsigned _CDECL _dos_setfileattr(char *, unsigned); ! 200: unsigned _CDECL _dos_setftime(int, unsigned, unsigned); ! 201: unsigned _CDECL _dos_settime(struct dostime_t *); ! 202: int _CDECL dosexterr(struct DOSERROR *); ! 203: void _CDECL _enable(void); ! 204: void _CDECL _hardresume(int); ! 205: void _CDECL _hardretn(int); ! 206: int _CDECL intdos(union REGS *, union REGS *); ! 207: int _CDECL intdosx(union REGS *, union REGS *, struct SREGS *); ! 208: int _CDECL int86(int, union REGS *, union REGS *); ! 209: int _CDECL int86x(int, union REGS *, union REGS *, struct SREGS *); ! 210: void _CDECL segread(struct SREGS *); ! 211: ! 212: ! 213: #ifndef NO_EXT_KEYS /* extensions enabled */ ! 214: void _CDECL _chain_intr(void (_CDECL interrupt far *)()); ! 215: void (_CDECL interrupt far * _CDECL _dos_getvect(unsigned))(); ! 216: unsigned _CDECL _dos_read(int, void far *, unsigned, unsigned *); ! 217: void _CDECL _dos_setvect(unsigned, void (_CDECL interrupt far *)()); ! 218: unsigned _CDECL _dos_write(int, void far *, unsigned, unsigned *); ! 219: void _CDECL _harderr(void (far *)()); ! 220: #endif /* NO_EXT_KEYS */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.