/* This file defines certain low level operations and characteristics that * are likely to be machine dependent. */ #if (MPU8086 || MPU8080 || vax) #define LITTLE_ENDIAN /* Low order bytes are first in memory */ #endif #ifdef AMIGA #ifdef AMIGADEVDRV #define disable() Forbid() /* doesn't really return a value */ #define restore(intst) Permit() #else #define disable() (0) /* got to return a value */ #define restore(intst) /* but we're not gonna do anything */ #endif #ifdef WINDOWIO #ifdef putchar #undef putchar #endif #ifdef fflush #undef fflush #endif #define putchar(c) amigaputchar(c) #ifdef LATTICE #define fflush(fp) ((fp)==stdout ? amigaflush() : _flsbf(-1, fp)) #else #define fflush(fp) ((fp)==stdout ? amigaflush() : flsh_(fp, -1)) #endif /* this has to be the same as in stdio.h */ #ifdef LATTICE #define index strchr #endif #endif #ifdef LATTICE #undef printf #endif #endif WINDOWIO /* These two lines assume that your compiler's longs are 32 bits and * shorts are 16 bits. It is already assumed that chars are 8 bits, * but it doesn't matter if they're signed or unsigned. */ typedef long int32; /* 32-bit signed integer */ typedef unsigned short int16; /* 16-bit unsigned integer */ #define bcopy(a,b,cnt) movmem(a,b,cnt) #ifdef LITTLE_ENDIAN int32 ntohl(); int16 ntohs(); #else /* Degenerate case for Big Endian machines */ #define ntohl(x) (x) #define ntohs(x) (x) #endif #define min(x,y) ((x)<(y)?(x):(y)) #define max(x,y) ((x)>(y)?(x):(y)) int16 cksum(); /* Host-to-network and network-to-host are symmetrical */ #define htonl(x) ntohl(x) #define htons(x) ntohs(x) #ifdef MPU8080 /* Assembler routines are available */ int16 hinibble(),lonibble(),hibyte(),lobyte(),hiword(),loword(); #else /* Extract a short from a long */ #define hiword(x) ((int16)((x) >> 16)) #define loword(x) ((int16)(x)) /* Extract a byte from a short */ #define hibyte(x) (((x) >> 8) & 0xff) #define lobyte(x) ((x) & 0xff) /* Extract nibbles from a byte */ #define hinibble(x) (((x) >> 4) & 0xf) #define lonibble(x) ((x) & 0xf) #endif /* Define null object pointer in case stdio.h isn't included */ #ifndef NULL /* General purpose NULL pointer */ #define NULL (void *)0 #endif #define NULLCHAR (char *)NULL /* Null character pointer */ #define NULLFP (int (*)())0 /* Null pointer to function returning int */ #define NULLVFP (void (*)())0 /* Null pointer to function returning void */ #define NULLFILE (FILE *)NULL /* Null file pointer */