/*** *general.h - definitions/declarations for general C programs * *for Public Domain, 1995, Gregg Jennings. All wrongs reserved. * P O Box 200, Falmouth, MA 02541-0200 * *Purpose: * Compiler specifics. * *Notice: * This source file may be freely used and distributed without restriction. *******************************************************************************/ /* Versions This will change very often (the more compiler testing I do, ...). Notes: I like the use of leading underscores for all non-ANSI library functions and typedefs. Only CL 7.00+ adheres to this "standard". */ #ifndef GENERAL_H #define GENERAL_H /* compiler dependencies -- see ALLOC.H for more */ #if defined(_MSC_VER) #if defined(M_I86LM) || defined(M_I86CM) /* determine memory model */ #define __LARGE__ /* (easier to remember) */ #endif #if _MSC_VER >= 600 #define _ASM_DEFINED #endif #if _MSC_VER < 700 #define __far _far #define __huge _huge #define _MK_FP(seg, offset) (void __far *)(((unsigned long)seg << 16) \ + (unsigned long)(unsigned)offset) #endif #elif defined(__BORLANDC__) || defined(__TURBOC__) #if !defined(__BORLANDC__) #define __BORLANDC__ __TURBOC__ /* stupid Turbo C! */ #endif #endif #if (defined(_MSC_VER) && (_MSC_VER < 700)) || !defined(_MSC_VER) #ifndef __WATCOMC__ #define _ASM_DEFINED #endif #define __inline #define _chdir chdir #define _getcwd getcwd #define _intdos intdos #define _intdosx intdosx #define _int86 int86 #define _int86x int86x #define _segread segread #ifndef _FP_OFF #define _FP_OFF FP_OFF #define _FP_SEG FP_SEG #endif #ifndef _MK_FP #define _MK_FP(seg, offset) (void __far *)(((unsigned long)seg << 16) \ + (unsigned long)(unsigned)offset) #endif #define _REGS REGS #define _SREGS SREGS #define _access access #define _file_t file_t #define _find_t find_t #define _diskfree_t diskfree_t #define _open open #define _write write #define _read read #define _close close #define _filelength filelength #define _O_RDONLY O_RDONLY #define _O_BINARY O_BINARY #define _O_CREAT O_CREAT #define _O_TRUNC O_TRUNC #define _O_RDWR O_RDWR #define _S_IWRITE S_IWRITE #define _S_IREAD S_IREAD #endif #define OK 1 #define FALSE 0 #define TRUE 1 #define ERROR (-1) #define ABORT (-2) #define ESC 0x1b /* These are for (potentially) moving to a 32-bit compiler. word will then have to be unsigned short (if done now, there will be many "integral mismatch" warnings). */ typedef unsigned char byte; typedef unsigned int word; typedef unsigned long dword; #endif