/***************************************************************************** Sector-level disk I/O code for DOS. This code is public domain (no copyright). You can do whatever you want with it. EXPORTS: peekb(), peekw() *****************************************************************************/ #ifndef __DISKIO_DOS_H #define __DISKIO_DOS_H #ifdef __cplusplus extern "C" { #endif /********************************* TURBO C **********************************/ #if defined(__TURBOC__) #include <dos.h> /* peekb(), peek() */ #define peekw(S,O) peek(S,O) /* xxx - I'm not sure of the Turbo C version where these were introduced. They are present in Turbo C++ 3.0 (__TURBOC__ == 0x401) but not in Turbo C++ 1.0 (__TURBOC__ == 0x296) */ #if __TURBOC__<0x300 #define _DISK_RESET 0 /* controller hard reset */ #define _DISK_STATUS 1 /* status of last operation */ #define _DISK_READ 2 /* read sectors */ #define _DISK_WRITE 3 /* write sectors */ #define _DISK_VERIFY 4 /* verify sectors */ #define _DISK_FORMAT 5 /* format track */ #endif /********************************* DJGPP ************************************/ #elif defined(__DJGPP__) #include <sys/farptr.h> /* _farpeek[b|w]() */ #include <go32.h> /* _dos_ds */ #define peekb(S,O) _farpeekb(_dos_ds, 16uL * (S) + (O)) #define peekw(S,O) _farpeekw(_dos_ds, 16uL * (S) + (O)) /******************************** WATCOM C **********************************/ #elif defined(__WATCOMC__) #if defined(__386__) /* CauseWay DOS extender only */ #define peekb(S,O) *(unsigned char *)(16uL * (S) + (O)) #define peekw(S,O) *(unsigned short *)(16uL * (S) + (O)) #else #include <dos.h> /* MK_FP() */ #define peekb(S,O) *(unsigned char far *)MK_FP(S,O) #define peekw(S,O) *(unsigned short far *)MK_FP(S,O) #endif /****************************************************************************/ #else #error Not Turbo C, not DJGPP, not Watcom C. Sorry. #endif #ifdef __cplusplus } #endif #endif