#ifndef __DOS_H__ #define __DOS_H__ #include struct BYTEREGS { byte al, ah; word _1; byte bl, bh; word _2; byte cl, ch; word _3; byte dl, dh; word _4; }; struct WORDREGS { word ax,_1; word bx,_2; word cx,_3; word dx,_4; word si,_5; word di,_6; word cflag,_7; word flags,_8; }; struct DWORDREGS { dword eax, ebx, ecx, edx; dword esi, edi, cflag, flags; }; union REGS { struct DWORDREGS x; struct WORDREGS w; struct BYTEREGS h; }; // NOTE: int86x() & int386x() ignores ss,cs struct SREGS { word es; word cs; word ss; word ds; word fs; word gs; }; struct ffblk { byte ff_reserved[21]; /* reserved by DOS */ byte ff_attrib; /* attribute found */ word ff_ftime; /* file time */ word ff_fdate; /* file date */ dword ff_fsize; /* file size */ byte ff_name[13]; /* found file name */ }; struct time { byte ti_min; /* minutes */ byte ti_hour; /* hours */ byte ti_hund; /* hundredths of seconds */ byte ti_sec; /* seconds */ }; struct date { word da_year; /* current year */ byte da_day; /* day of the month */ byte da_mon; /* month (1 = Jan) */ }; #ifdef __cplusplus extern "C" { #endif extern void int86(byte i,union REGS *rin,union REGS *rout); extern void int86x(byte i,union REGS *rin,union REGS *rout,struct SREGS *sreg); extern void int386(byte i,union REGS *rin,union REGS *rout); extern void int386x(byte i,union REGS *rin,union REGS *rout,struct SREGS *sreg); extern word errno; extern sword open(char *strg,word acc); extern void close(sword hand); extern word creat(char *strg,word attr); extern sdword read(sword hand,void* buf,dword len); extern sdword write(sword hand,void* buf,dword len); extern sdword lseek(sword hand,dword pos,byte typ); extern sdword tell(sword hand); extern sdword filelength(sword hand); extern sword eof(sword hand); extern sword unlink(char * strg); extern sword getdisk(void); extern sword setdisk(byte drv); extern sword mkdir(char * strg); extern sword chdir(char * strg); extern sword rmdir(char * strg); extern sword rename(char * _old,char * _new); extern char *getcwd(char * buf); extern char *getdcwd(byte drv,char * buf); extern sword findfirst(byte* str1,word attr,void * ffb); extern sword findnext(void* ffb); extern void gettime(struct time*); extern void settime(struct time*); extern void getdate(struct date*); extern void setdate(struct date*); extern void sleep(word); extern void delay(word); extern void sound(word); extern void nosound(void); #ifndef SEEK_SET #define SEEK_SET 0 // Seeks from beginning of file #define SEEK_CUR 1 // Seeks from current position #define SEEK_END 2 // Seeks from end of file #define O_NOINHERIT 0x80 #define O_DENYALL 0x10 #define O_DENYWRITE 0x20 #define O_DENYREAD 0x30 #define O_DENYNONE 0x40 #define O_BINARY 0 // Binary mode #define O_RDONLY 0 // Read only #define O_WRONLY 1 // Write only #define O_RDWR 2 // Read and write #define O_CREAT 0x0100 /* create and open file */ #define O_TRUNC 0x0200 /* open with truncation */ #define O_EXCL 0x0400 /* exclusive open */ #define O_APPEND 0x0800 /* to end of file */ #define FA_NORMAL 0x00 /* Normal file, no attributes */ #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 */ #endif //SEEK_SET #ifdef __cplusplus } #endif #endif