home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c220 / 4.ddi / INC / DOS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-16  |  6.7 KB  |  218 lines

  1. /*
  2.  *   dos.h -- non-ANSI 
  3.  *
  4.  *   DOS-related functions and services.
  5.  *
  6.  *           Copyright (c) 1990, MetaWare Incorporated
  7.  */
  8.  
  9. #ifndef _DOS_H
  10. #define _DOS_H
  11.  
  12. #define _HARDERR_IGNORE 0
  13. #define _HARDERR_RETRY 1
  14. #define _HARDERR_ABORT 2
  15. #define _HARDERR_FAIL 3
  16.  
  17. #define _A_NORMAL 0
  18. #define _A_RDONLY 1
  19. #define _A_HIDDEN 2
  20. #define _A_SYSTEM 4
  21. #define _A_VOLID 8
  22. #define _A_SUBDIR 16
  23. #define _A_ARCH 32
  24.  
  25. #define _FP_SEG(farptr) (*(unsigned short *)((unsigned *)&(farptr) + 1))
  26. #define _FP_OFF(farptr) (*((unsigned *)&(farptr)))
  27.  
  28. extern unsigned int _osversion;
  29.  
  30. extern int _bdos(int __fnumber, unsigned int __dxreg, unsigned int __alreg);
  31. extern void _disable(void );
  32. extern unsigned _dos_allocmem(unsigned __size,unsigned * __segment);
  33. extern unsigned _dos_close(int __handle);
  34. extern unsigned _dos_creat(char * __path,unsigned __attribute,int * __handle);
  35. extern unsigned _dos_creatnew(char * __path,unsigned __attribute,int * __handle);
  36. extern unsigned _dos_freemem(unsigned __segment);
  37. extern void _dos_getdrive(unsigned * __drive);
  38. extern unsigned _dos_getfileattr(char * __path,unsigned * __attributes);
  39. extern unsigned _dos_getftime(int __handle,unsigned * __date,unsigned * __time);
  40. extern void _dos_keep(unsigned __retcode,unsigned __memsize);
  41. extern unsigned _dos_open(char * __path,unsigned __mode,int * __handle);
  42. extern unsigned _dos_setblock(unsigned __size,unsigned __segment,unsigned * __maxsize);
  43. extern void _dos_setdrive(unsigned __newdrive,unsigned * __drives);
  44. extern unsigned _dos_setfileattr(char * __path,unsigned __attributes);
  45. extern unsigned _dos_setftime(int __handle,unsigned __date,unsigned __time);
  46. extern void _enable(void );
  47.  
  48. #ifndef _REGS_DEFINED
  49. #define _REGS_DEFINED
  50.  
  51. struct _WORDREGS {
  52.     unsigned int ax;
  53.     unsigned int bx;
  54.     unsigned int cx;
  55.     unsigned int dx;
  56.     unsigned int si;
  57.     unsigned int di;
  58.     unsigned int cflag;
  59.     };
  60.  
  61. struct _BYTEREGS {
  62.     unsigned char al, ah, xax[sizeof(int)-2];
  63.     unsigned char bl, bh, xbx[sizeof(int)-2];
  64.     unsigned char cl, ch, xcx[sizeof(int)-2];
  65.     unsigned char dl, dh, xdx[sizeof(int)-2];
  66.     };
  67.  
  68. union _REGS {
  69.     struct _WORDREGS x;
  70.     struct _BYTEREGS h;
  71.     struct _BYTEREGS l;
  72.     };
  73.  
  74. struct _SREGS {
  75.     unsigned short int es;
  76.     unsigned short int cs;
  77.     unsigned short int ss;
  78.     unsigned short int ds;
  79.     };
  80.  
  81. #endif /* _REGS_DEFINED */
  82.  
  83. #ifndef _DOSERROR_DEFINED
  84. #define _DOSERROR_DEFINED
  85.  
  86. struct _DOSERROR {
  87.     short int exterror;
  88.     char class;
  89.     char action;
  90.     char locus;
  91.     };
  92.  
  93. #endif /* _DOSERROR_DEFINED */
  94.  
  95. #ifndef _FIND_T_DEFINED
  96. #define _FIND_T_DEFINED
  97.  
  98. struct _find_t {
  99.     char reserved[21];
  100.     char attrib;
  101.     unsigned short int wr_time;
  102.     unsigned short int wr_date;
  103.     long int size;
  104.     char name[13];
  105.     };
  106.  
  107. #endif /* _FIND_T_DEFINED */
  108.  
  109. #ifndef _DATETIME_T_DEFINED
  110. #define _DATETIME_T_DEFINED
  111.  
  112. struct _dosdate_t {
  113.     unsigned char day;
  114.     unsigned char month;
  115.     unsigned short int year;
  116.     unsigned char dayofweek;
  117.     };
  118.  
  119. struct _dostime_t {
  120.     unsigned char hour;
  121.     unsigned char minute;
  122.     unsigned char second;
  123.     unsigned char hsecond;
  124.     };
  125.  
  126. #endif /* _DATETIME_T_DEFINED */
  127.  
  128. #ifndef _DISKFREE_T_DEFINED
  129. #define _DISKFREE_T_DEFINED
  130.  
  131. struct _diskfree_t {
  132.     unsigned short total_clusters;
  133.     unsigned short avail_clusters;
  134.     unsigned short sectors_per_cluster;
  135.     unsigned short bytes_per_sector;
  136.     };
  137.  
  138. #endif /* _DISKFREE_T_DEFINED */ 
  139.  
  140. extern unsigned _dos_findfirst(char * __path,unsigned __attributes,struct _find_t * __buffer);
  141. extern unsigned _dos_findnext(struct _find_t * __buffer);
  142. extern void _dos_getdate(struct _dosdate_t * __date);
  143. extern unsigned _dos_getdiskfree(unsigned __drive,struct _diskfree_t * __diskinfo);
  144. extern void _dos_gettime(struct _dostime_t * __time);
  145. extern unsigned _dos_setdate(struct _dosdate_t * __date);
  146. extern unsigned _dos_settime(struct _dostime_t * __time);
  147.  
  148. extern int _dosexterr(struct _DOSERROR * __buffer);
  149. extern int _intdos(union _REGS * __before, union _REGS * __after);
  150. extern int _intdosx(union _REGS * __before, union _REGS * __after,struct _SREGS * __segregs);
  151. extern int _int86(int __number,union _REGS * __before, union _REGS * __after);
  152. extern int _int86x(int __number,union _REGS * __before, union _REGS * __after,struct _SREGS * __segregs);
  153. extern void _segread(struct _SREGS * __segregs);
  154.  
  155. #if __HIGHC__
  156.  
  157. #define FP_SEG(farptr) _FP_SEG(farptr)
  158. #define FP_OFF(farptr) _FP_OFF(farptr)
  159. #define dosdate_t _dosdate_t
  160. #define dostime_t _dostime_t
  161. #define diskfree_t _diskfree_t
  162. #define find_t _find_t
  163. #define REGS _REGS
  164. #define SREGS _SREGS
  165. #define WORDREGS _WORDREGS
  166. #define BYTEREGS _BYTEREGS
  167. #define DOSERROR _DOSERROR
  168.  
  169. extern int bdos(int __fnumber, unsigned int __dxreg, unsigned int __alreg);
  170. extern int dosexterr(struct DOSERROR * __buffer);
  171. extern int intdos(union REGS * __before, union REGS * __after);
  172. extern int intdosx(union REGS * __before, union REGS * __after,struct SREGS * __segregs);
  173. extern int int86(int __number,union REGS * __before, union REGS * __after);
  174. extern int int86x(int __number,union REGS * __before, union REGS * __after,struct SREGS * __segregs);
  175. extern void segread(struct SREGS * __segregs);
  176.  
  177. extern unsigned _dos_read(int __handle,_Far void * __buffer,unsigned __length,unsigned * __bytes);
  178. extern unsigned _dos_write(int __handle,_Far void * __buffer,unsigned __length,unsigned * __bytes);
  179.  
  180. /*  Functions to get and set interrupt handlers under
  181.  *  the Phar Lap and Ergo runtime environments.
  182.  *  See the Library Reference Manual for details on the use of these functions.
  183.  */
  184.  
  185.     /* Calling-convention.  */
  186. #ifndef _INTERRPT
  187. #  define _INTERRPT _CC(_INTERRUPT|_CALLING_CONVENTION)
  188. #endif
  189.  
  190.     /* The real mode handler is a 32-bit seg:off address */
  191. typedef long int _real_int_handler_t;
  192.  
  193.     /* Get current protected mode interrupt handler. */
  194.     /* A function that returns a pointer to a function returning void. */
  195. extern _Far _INTERRPT void (* _getpvect (int intno)) ();
  196.  
  197.     /* Get current real mode interrupt handler */
  198. extern  _real_int_handler_t _getrvect (int intno);
  199.  
  200.     /* Set protected-mode interrupt handler */
  201. extern int _setpvect (int intno, _Far _INTERRPT void (*handler)());
  202.  
  203.     /* Set real-mode interrupt handler */
  204. extern int _setrvect (int intno, _real_int_handler_t rmhandler);
  205.  
  206.     /* Set current real mode and protected mode interrupt handlers. */
  207.     /* Both will point to a protected-mode handler. */
  208. extern int _setrpvectp (int intno, _Far _INTERRPT void (*pmhandler)());
  209.  
  210. #ifdef _I286
  211. extern _far void (* _dos_getvect(unsigned ))();
  212. extern void _dos_setvect(unsigned ,_far void (*v)());
  213. #endif
  214.  
  215. #endif /* __HIGHC__ */
  216.  
  217. #endif /*_DOS_H*/
  218.