库函数 头文件 2008-04-16 14:36

字号:    
/* dos.h

Defines   structs,   unions,   macros,   and   functions   for   dealing
with   MSDOS   and   the   Intel   iAPX86   microprocessor   family.

Copyright   (c)   Borland   International   1987,1988
All   Rights   Reserved.
*/
#if   __STDC__
#define   _Cdecl
#else
#define   _Cdecl cdecl
#endif

#if           !defined(__DOS_DEF_)
#define   __DOS_DEF_

/*   Variables   */
extern int _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   _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 exterror;
char class;
char action;
char 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;
};

#define   FP_OFF(fp) ((unsigned)(fp))
#define   FP_SEG(fp) ((unsigned)((unsigned   long)(fp)   > >   16))


typedef   struct   {
char drive; /*   do   not   change */
char pattern   [13]; /*     these   fields, */
char reserved   [7]; /*       Microsoft   reserved   */
char attrib;
short time;
short date;
long size;
char nameZ   [13]; /*   result   of   the   search,   asciiz   */
} dosSearchInfo; /*   used   with   DOS   functions   4E,   4F */


int   _Cdecl   absread (int   drive,   int   nsects,   int   lsect,   void   *buffer);
int   _Cdecl   abswrite(int   drive,   int   nsects,   int   lsect,   void   *buffer);
int   _Cdecl   allocmem(unsigned   size,   unsigned   *segp);
int   _Cdecl   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   _Cdecl   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   _Cdecl   gettime (struct   time   *timep);
void interrupt   (*   _Cdecl   getvect(int   interruptno))   ();
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   setvect (int   interruptno,   void   interrupt   (*isr)   ());
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   _Cdecl 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);
unsigned   char   _Cdecl   __inportb__(int   portid);
void _Cdecl __outportb__ (int   portid,   unsigned   char   value);
void _Cdecl __int__ (int   interruptnum);

#define   disable() __cli__() /*   Clear   interrupt   flag   */
#define   enable() __sti__() /*   Set   interrupt   flag   */
#define   inportb(portid)   __inportb__(portid) /*   Byte   IN   instruction   */
#define   outportb(portid,   v)   __outportb__(portid,v)/*   Byte   OUT   instruction   */
#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)

#if   !__STDC__
char   far   *cdecl   getdta(void);
void     cdecl   setdta(char   far   *dta);

#define   MK_FP(seg,ofs) ((void   far   *)   \
      (((unsigned   long)(seg)   < <   16)   |   (unsigned)(ofs)))

#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))
#define   peek(a,b) (*((int     far*)MK_FP((a),(b))))
#define   peekb(a,b) (*((char   far*)MK_FP((a),(b))))
#endif

#endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
网易公司版权所有 ©1997-2009