home *** CD-ROM | disk | FTP | other *** search
- /*
- * dos.h -- non-ANSI
- *
- * DOS-related functions and services.
- *
- * Copyright (c) 1990, MetaWare Incorporated
- */
-
- #ifndef _DOS_H
- #define _DOS_H
-
- #define _HARDERR_IGNORE 0
- #define _HARDERR_RETRY 1
- #define _HARDERR_ABORT 2
- #define _HARDERR_FAIL 3
-
- #define _A_NORMAL 0
- #define _A_RDONLY 1
- #define _A_HIDDEN 2
- #define _A_SYSTEM 4
- #define _A_VOLID 8
- #define _A_SUBDIR 16
- #define _A_ARCH 32
-
- #define _FP_SEG(farptr) (*(unsigned short *)((unsigned *)&(farptr) + 1))
- #define _FP_OFF(farptr) (*((unsigned *)&(farptr)))
-
- extern unsigned int _osversion;
-
- extern int _bdos(int __fnumber, unsigned int __dxreg, unsigned int __alreg);
- extern void _disable(void );
- extern unsigned _dos_allocmem(unsigned __size,unsigned * __segment);
- extern unsigned _dos_close(int __handle);
- extern unsigned _dos_creat(char * __path,unsigned __attribute,int * __handle);
- extern unsigned _dos_creatnew(char * __path,unsigned __attribute,int * __handle);
- extern unsigned _dos_freemem(unsigned __segment);
- extern void _dos_getdrive(unsigned * __drive);
- extern unsigned _dos_getfileattr(char * __path,unsigned * __attributes);
- extern unsigned _dos_getftime(int __handle,unsigned * __date,unsigned * __time);
- extern void _dos_keep(unsigned __retcode,unsigned __memsize);
- extern unsigned _dos_open(char * __path,unsigned __mode,int * __handle);
- extern unsigned _dos_setblock(unsigned __size,unsigned __segment,unsigned * __maxsize);
- extern void _dos_setdrive(unsigned __newdrive,unsigned * __drives);
- extern unsigned _dos_setfileattr(char * __path,unsigned __attributes);
- extern unsigned _dos_setftime(int __handle,unsigned __date,unsigned __time);
- extern void _enable(void );
-
- #ifndef _REGS_DEFINED
- #define _REGS_DEFINED
-
- struct _WORDREGS {
- unsigned int ax;
- unsigned int bx;
- unsigned int cx;
- unsigned int dx;
- unsigned int si;
- unsigned int di;
- unsigned int cflag;
- };
-
- struct _BYTEREGS {
- unsigned char al, ah, xax[sizeof(int)-2];
- unsigned char bl, bh, xbx[sizeof(int)-2];
- unsigned char cl, ch, xcx[sizeof(int)-2];
- unsigned char dl, dh, xdx[sizeof(int)-2];
- };
-
- union _REGS {
- struct _WORDREGS x;
- struct _BYTEREGS h;
- struct _BYTEREGS l;
- };
-
- struct _SREGS {
- unsigned short int es;
- unsigned short int cs;
- unsigned short int ss;
- unsigned short int ds;
- };
-
- #endif /* _REGS_DEFINED */
-
- #ifndef _DOSERROR_DEFINED
- #define _DOSERROR_DEFINED
-
- struct _DOSERROR {
- short int exterror;
- char class;
- char action;
- char locus;
- };
-
- #endif /* _DOSERROR_DEFINED */
-
- #ifndef _FIND_T_DEFINED
- #define _FIND_T_DEFINED
-
- struct _find_t {
- char reserved[21];
- char attrib;
- unsigned short int wr_time;
- unsigned short int wr_date;
- long int size;
- char name[13];
- };
-
- #endif /* _FIND_T_DEFINED */
-
- #ifndef _DATETIME_T_DEFINED
- #define _DATETIME_T_DEFINED
-
- struct _dosdate_t {
- unsigned char day;
- unsigned char month;
- unsigned short int year;
- unsigned char dayofweek;
- };
-
- struct _dostime_t {
- unsigned char hour;
- unsigned char minute;
- unsigned char second;
- unsigned char hsecond;
- };
-
- #endif /* _DATETIME_T_DEFINED */
-
- #ifndef _DISKFREE_T_DEFINED
- #define _DISKFREE_T_DEFINED
-
- struct _diskfree_t {
- unsigned short total_clusters;
- unsigned short avail_clusters;
- unsigned short sectors_per_cluster;
- unsigned short bytes_per_sector;
- };
-
- #endif /* _DISKFREE_T_DEFINED */
-
- extern unsigned _dos_findfirst(char * __path,unsigned __attributes,struct _find_t * __buffer);
- extern unsigned _dos_findnext(struct _find_t * __buffer);
- extern void _dos_getdate(struct _dosdate_t * __date);
- extern unsigned _dos_getdiskfree(unsigned __drive,struct _diskfree_t * __diskinfo);
- extern void _dos_gettime(struct _dostime_t * __time);
- extern unsigned _dos_setdate(struct _dosdate_t * __date);
- extern unsigned _dos_settime(struct _dostime_t * __time);
-
- extern int _dosexterr(struct _DOSERROR * __buffer);
- extern int _intdos(union _REGS * __before, union _REGS * __after);
- extern int _intdosx(union _REGS * __before, union _REGS * __after,struct _SREGS * __segregs);
- extern int _int86(int __number,union _REGS * __before, union _REGS * __after);
- extern int _int86x(int __number,union _REGS * __before, union _REGS * __after,struct _SREGS * __segregs);
- extern void _segread(struct _SREGS * __segregs);
-
- #if __HIGHC__
-
- #define FP_SEG(farptr) _FP_SEG(farptr)
- #define FP_OFF(farptr) _FP_OFF(farptr)
- #define dosdate_t _dosdate_t
- #define dostime_t _dostime_t
- #define diskfree_t _diskfree_t
- #define find_t _find_t
- #define REGS _REGS
- #define SREGS _SREGS
- #define WORDREGS _WORDREGS
- #define BYTEREGS _BYTEREGS
- #define DOSERROR _DOSERROR
-
- extern int bdos(int __fnumber, unsigned int __dxreg, unsigned int __alreg);
- extern int dosexterr(struct DOSERROR * __buffer);
- extern int intdos(union REGS * __before, union REGS * __after);
- extern int intdosx(union REGS * __before, union REGS * __after,struct SREGS * __segregs);
- extern int int86(int __number,union REGS * __before, union REGS * __after);
- extern int int86x(int __number,union REGS * __before, union REGS * __after,struct SREGS * __segregs);
- extern void segread(struct SREGS * __segregs);
-
- extern unsigned _dos_read(int __handle,_Far void * __buffer,unsigned __length,unsigned * __bytes);
- extern unsigned _dos_write(int __handle,_Far void * __buffer,unsigned __length,unsigned * __bytes);
-
- /* Functions to get and set interrupt handlers under
- * the Phar Lap and Ergo runtime environments.
- * See the Library Reference Manual for details on the use of these functions.
- */
-
- /* Calling-convention. */
- #ifndef _INTERRPT
- # define _INTERRPT _CC(_INTERRUPT|_CALLING_CONVENTION)
- #endif
-
- /* The real mode handler is a 32-bit seg:off address */
- typedef long int _real_int_handler_t;
-
- /* Get current protected mode interrupt handler. */
- /* A function that returns a pointer to a function returning void. */
- extern _Far _INTERRPT void (* _getpvect (int intno)) ();
-
- /* Get current real mode interrupt handler */
- extern _real_int_handler_t _getrvect (int intno);
-
- /* Set protected-mode interrupt handler */
- extern int _setpvect (int intno, _Far _INTERRPT void (*handler)());
-
- /* Set real-mode interrupt handler */
- extern int _setrvect (int intno, _real_int_handler_t rmhandler);
-
- /* Set current real mode and protected mode interrupt handlers. */
- /* Both will point to a protected-mode handler. */
- extern int _setrpvectp (int intno, _Far _INTERRPT void (*pmhandler)());
-
- #ifdef _I286
- extern _far void (* _dos_getvect(unsigned ))();
- extern void _dos_setvect(unsigned ,_far void (*v)());
- #endif
-
- #endif /* __HIGHC__ */
-
- #endif /*_DOS_H*/
-