home *** CD-ROM | disk | FTP | other *** search
- /* dos.h
-
- Defines structs, unions, macros, and functions for dealing
- with MSDOS and the Intel iAPX86 microprocessor family.
-
- Copyright (c) Borland International 1987,1988,1990
- All Rights Reserved.
- */
- #ifndef __DOS_H
- #define __DOS_H
-
- #if __STDC__
- #define _Cdecl
- #else
- #define _Cdecl cdecl
- #endif
-
- #ifndef __PAS__
- #define _CType _Cdecl
- #else
- #define _CType pascal
- #endif
-
- /* Variables */
- extern int const _Cdecl _8087;
- extern int _Cdecl _argc;
- extern char **_Cdecl _argv;
- extern char **_Cdecl environ;
-
- extern int _Cdecl _doserrno;
-
- extern unsigned _Cdecl _heaplen;
- extern unsigned char _Cdecl _osmajor;
- extern unsigned char _Cdecl _osminor;
- extern unsigned _Cdecl _psp;
- extern unsigned _Cdecl _stklen;
- extern unsigned _Cdecl _fpstklen;
- extern unsigned _Cdecl _version;
-
- #define FA_RDONLY 0x01 /* Read only attribute */
- #define FA_HIDDEN 0x02 /* Hidden file */
- #define FA_SYSTEM 0x04 /* System file */
- #define FA_LABEL 0x08 /* Volume label */
- #define FA_DIREC 0x10 /* Directory */
- #define FA_ARCH 0x20 /* Archive */
-
- #define NFDS 20 /* Maximum number of fds */
-
- struct fcb {
- char fcb_drive; /* 0 = default, 1 = A, 2 = B */
- char fcb_name[8]; /* File name */
- char fcb_ext[3]; /* File extension */
- short fcb_curblk; /* Current block number */
- short fcb_recsize; /* Logical record size in bytes */
- long fcb_filsize; /* File size in bytes */
- short fcb_date; /* Date file was last written */
- char fcb_resv[10]; /* Reserved for DOS */
- char fcb_currec; /* Current record in block */
- long fcb_random; /* Random record number */
- };
-
- struct xfcb {
- char xfcb_flag; /* Contains 0xff to indicate xfcb */
- char xfcb_resv[5]; /* Reserved for DOS */
- char xfcb_attr; /* Search attribute */
- struct fcb xfcb_fcb; /* The standard fcb */
- };
-
- struct COUNTRY {
- int co_date;
- char co_curr[5];
- char co_thsep[2];
- char co_desep[2];
- char co_dtsep[2];
- char co_tmsep[2];
- char co_currstyle;
- char co_digits;
- char co_time;
- long co_case;
- char co_dasep[2];
- char co_fill[10];
- };
-
- struct DOSERROR {
- int de_exterror;
- int de_class;
- char de_action;
- char de_locus;
- };
-
- struct dfree {
- unsigned df_avail;
- unsigned df_total;
- unsigned df_bsec;
- unsigned df_sclus;
- };
-
- struct fatinfo {
- char fi_sclus;
- char fi_fatid;
- int fi_nclus;
- int fi_bysec;
- };
-
- struct devhdr {
- long dh_next; /* Next device pointer */
- short dh_attr; /* Attributes */
- unsigned short dh_strat; /* Driver strategy routine */
- unsigned short dh_inter; /* Driver interrupt routine */
- char dh_name[8]; /* Device name */
- };
-
- struct time {
- unsigned char ti_min; /* Minutes */
- unsigned char ti_hour; /* Hours */
- unsigned char ti_hund; /* Hundredths of seconds */
- unsigned char ti_sec; /* Seconds */
- };
-
- struct date {
- int da_year; /* Year - 1980 */
- char da_day; /* Day of the month */
- char da_mon; /* Month (1 = Jan) */
- };
-
- struct WORDREGS {
- unsigned int ax, bx, cx, dx, si, di, cflag, flags;
- };
-
- struct BYTEREGS {
- unsigned char al, ah, bl, bh, cl, ch, dl, dh;
- };
-
- union REGS {
- struct WORDREGS x;
- struct BYTEREGS h;
- };
-
- struct SREGS {
- unsigned int es;
- unsigned int cs;
- unsigned int ss;
- unsigned int ds;
- };
-
- struct REGPACK {
- unsigned r_ax, r_bx, r_cx, r_dx;
- unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags;
- };
-
- typedef struct {
- char ds_drive; /* do not change */
- char ds_pattern [13]; /* these fields, */
- char ds_reserved [7]; /* Microsoft reserved */
- char ds_attrib;
- short ds_time;
- short ds_date;
- long ds_size;
- char ds_nameZ [13]; /* result of the search, asciiz */
- } dosSearchInfo; /* used with DOS functions 4E, 4F */
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- int _Cdecl absread (int __drive, int __nsects, long __lsect, void *__buffer);
- int _Cdecl abswrite(int __drive, int __nsects, long __lsect, void *__buffer);
- int _Cdecl allocmem(unsigned __size, unsigned *__segp);
- int _CType bdos (int __dosfun, unsigned __dosdx, unsigned __dosal);
- int _Cdecl bdosptr (int __dosfun, void *__argument, unsigned __dosal);
- struct COUNTRY *_Cdecl country (int __xcode, struct COUNTRY *__cp);
- void _Cdecl ctrlbrk (int _Cdecl (*handler)(void));
- void _Cdecl delay (unsigned __milliseconds);
- void _Cdecl disable (void);
- int _Cdecl dosexterr (struct DOSERROR *__eblkp);
- long _Cdecl dostounix (struct date *__d, struct time *__t);
- void __emit__();
- void _Cdecl enable (void);
- int _Cdecl freemem (unsigned __segx);
- int _Cdecl getcbrk (void);
- void _CType getdate (struct date *__datep);
- void _Cdecl getdfree(unsigned char __drive, struct dfree *__dtable);
- void _Cdecl getfat (unsigned char __drive, struct fatinfo *__dtable);
- void _Cdecl getfatd (struct fatinfo *__dtable);
- unsigned _Cdecl getpsp (void);
- int _Cdecl getswitchar (void);
- void _CType gettime (struct time *__timep);
- int _Cdecl getverify (void);
- void _Cdecl harderr (int _Cdecl (*handler)());
- void _Cdecl hardresume (int __axret);
- void _Cdecl hardretn(int __retn);
- int _Cdecl inport (int __portid);
- unsigned char _Cdecl inportb(int __portid);
- int _Cdecl int86 (int __intno, union REGS *__inregs, union REGS *__outregs);
- int _Cdecl int86x (int __intno, union REGS *__inregs, union REGS *__outregs,
- struct SREGS *__segregs);
- int _Cdecl intdos (union REGS *__inregs, union REGS *__outregs);
- int _Cdecl intdosx (union REGS *__inregs, union REGS *__outregs,
- struct SREGS *__segregs);
- void _Cdecl intr (int __intno, struct REGPACK *__preg);
- void _Cdecl keep (unsigned char __status, unsigned __size);
- void _Cdecl nosound (void);
- void _Cdecl outport (int __portid, int __value);
- void _Cdecl outportb(int __portid, unsigned char __value);
- char *_Cdecl parsfnm (const char *__cmdline, struct fcb *__fcb, int __opt);
- int _Cdecl peek (unsigned __segment, unsigned __offset);
- char _Cdecl peekb (unsigned __segment, unsigned __offset);
- void _Cdecl poke (unsigned __segment, unsigned __offset, int __value);
- void _Cdecl pokeb (unsigned __segment, unsigned __offset, char __value);
- int _Cdecl randbrd (struct fcb *__fcb, int __rcnt);
- int _Cdecl randbwr (struct fcb *__fcb, int __rcnt);
- void _Cdecl segread (struct SREGS *__segp);
- int _Cdecl setblock(unsigned __segx, unsigned __newsize);
- int _Cdecl setcbrk (int __cbrkvalue);
- void _Cdecl setdate (struct date *__datep);
- void _Cdecl setswitchar (char __ch);
- void _Cdecl settime (struct time *__timep);
- void _Cdecl setverify (int __value);
- void _Cdecl sleep (unsigned __seconds);
- void _Cdecl sound (unsigned __frequency);
- void _Cdecl unixtodos (long __time, struct date *__d, struct time *__t);
- int _CType unlink (const char *__path);
-
- /* These are in-line functions. These prototypes just clean up
- some syntax checks and code generation.
- */
-
- void _Cdecl __cli__ (void);
- void _Cdecl __sti__ (void);
- void _Cdecl __int__ (int __interruptnum);
-
- #define disable() __emit__( (char)(0xfa) )
- #define enable() __emit__( (char)(0xfb) )
-
- #define geninterrupt(i) __int__(i) /* Interrupt instruction */
-
- /* some other compilers use inp, outp for inportb, outportb */
- #define inp(portid) inportb(portid)
- #define outp(portid,v) outportb(portid,v)
-
- extern unsigned _Cdecl _ovrbuffer;
-
- #if !__STDC__
- int cdecl far _OvrInitEms( unsigned __emsHandle, unsigned __emsFirst, unsigned __emsPages );
- int cdecl far _OvrInitExt( unsigned long __extStart, unsigned long __extLength );
-
- char far *cdecl getdta(void);
- void cdecl setdta(char far *__dta);
-
- #define MK_FP(seg,ofs) ((void _seg *)(seg) + (void near *)(ofs))
- #define FP_SEG(fp) ((unsigned)(void _seg *)(void far *)(fp))
- #define FP_OFF(fp) ((unsigned)(fp))
-
- #ifdef __cplusplus
- void interrupt (far * _CType getvect(int __interruptno)) (...);
- void _CType setvect (int __interruptno, void interrupt (far *__isr) (...));
- int inline _Cdecl peek(unsigned __segment, unsigned __offset)
- { return (*((int far*)MK_FP(__segment, __offset))); }
- char inline _Cdecl peekb(unsigned __segment, unsigned __offset)
- { return (*((char far*)MK_FP(__segment, __offset))); }
- void inline _Cdecl poke(unsigned __segment, unsigned __offset, int __value)
- { (*((int far*)MK_FP(__segment, __offset)) = __value); }
- void inline _Cdecl pokeb(unsigned __segment, unsigned __offset, char __value)
- { (*((char far*)MK_FP(__segment, __offset)) = __value); }
- #else
- void interrupt (far * _CType getvect(int __interruptno)) ();
- void _CType setvect (int __interruptno, void interrupt (far *__isr) ());
- #define peek(a,b) (*((int far*)MK_FP((a),(b))))
- #define peekb(a,b) (*((char far*)MK_FP((a),(b))))
- #define poke(a,b,c) (*((int far*)MK_FP((a),(b))) = (int)(c))
- #define pokeb(a,b,c) (*((char far*)MK_FP((a),(b))) = (char)(c))
- #endif
-
- #endif
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-