Annotation of os2sdk/include/dos.h, revision 1.1.1.1

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 */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.