/* Power Assembly Library C header file */
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned long ulong;
typedef void *pvoid;
typedef char *pchar;
#define PAL_H
#ifndef FASTCALLS
#define _fastcall
#endif
#ifdef __cplusplus
extern "C" {
#endif
/****************************************************************************
* STARTUP
***************************************************************************/
extern ulong dos32version; /* version of DOS32. */
extern char dos32system; /* system type-RAW,XMS,VCPI or DPMI */
extern ulong exesize; /* size in bytes */
extern char * exename; /* PSZ to executable name */
extern pvoid _psp; /* program segment prefix pointer */
extern char *_environ; /* environment pointer */
extern char **environ; /* pointer of environment pointer table */
extern ulong envsize; /* environment table size */
extern pvoid _zero; /* zero pointer */
extern ulong _zero_sel; /* selector of zero based semgnet */
extern char **_argv; /* pointer to array of cmd line pointers */
extern ulong _argc; /* numnber of pointers in command line list */
extern pvoid DMA_addr; /* DMA near pointer address */
extern ulong DMA_size; /* DMA buffer size */
extern pvoid DMA_phys; /* DMA physical address */
/****************************************************************************
* FILEIO - file I/O
***************************************************************************/
extern long _fastcall chdir(pchar path);
extern long _fastcall close(long handle);
extern long _fastcall filelength(long handle);
extern long fprint(long handle,pchar fmtstr,...);
extern long _fastcall lseek(long handle,long filepos,long whence);
extern long _fastcall mkdir(pchar path);
extern long _fastcall open(pchar filename,ulong filemode);
extern long _fastcall read(long handle,pvoid buf,ulong len);
extern long _fastcall rename(pchar oldname,pchar newname);
extern long _fastcall rmdir(pchar path);
extern long _fastcall unlink(pchar filename);
extern long _fastcall write(long handle,pvoid buf,ulong len);
extern long _fastcall creat(pchar filename, long filemode);
extern pchar _fastcall getcwd(char *buf, long buflen);
extern pchar _fastcall _getdcwd(int drive, char *buf, long buflen);
extern long _fastcall getcurdir(int drive, char *directory);
extern long _fastcall getdisk(void);
extern long _fastcall setdisk(long drive);
#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_APPEND 4 /* File pointer will be set to the end of file */
#define O_CREAT 8 /* Creates the file if it doesn't exist */
#define O_TRUNC 16 /* Truncate the file when open */
#define O_EXCL 32 /* Returns an error if file exists (O_CREAT) */
#define SEEK_SET 0 /* Seek from file beginning */
#define SEEK_CUR 1 /* Seek from current file position */
#define SEEK_END 2 /* Seek from end of file */
/* compatibility with other compilers */
#define remove(s) unlink(s)
/*****************************************************************************
* MALLOC - memory allocation
****************************************************************************/
extern pvoid _fastcall malloc(ulong blocksize);
extern pvoid _fastcall calloc(ulong blocksize,ulong items);
extern void _fastcall free(pvoid blockptr);
extern ulong maxavail(void);
extern ulong memavail(void);
extern pvoid _fastcall realloc(pvoid blockptr,ulong size);
extern pvoid _fastcall resize(pvoid blockptr,ulong size);
/*****************************************************************************
* MATH - math functions
****************************************************************************/
extern ulong _fastcall max(ulong a,ulong b);
extern ulong _fastcall max3(ulong a,ulong b,ulong c);
extern ulong _fastcall min(ulong a,ulong b);
extern ulong _fastcall max3(ulong a,ulong b,ulong c);
extern ulong _fastcall atoi(pchar string);
/*****************************************************************************
* STRINGS - various string I/O
****************************************************************************/
extern ulong _fastcall isdigit(char chr);
extern ulong _fastcall isxdigit(char chr);
extern ulong _fastcall isalpha(char chr);
extern ulong _fastcall islower(char chr);
extern ulong _fastcall isupper(char chr);
extern ulong _fastcall isalnum(char chr);
extern ulong _fastcall iscntrl(char chr);
extern ulong _fastcall isspace(char chr);
extern ulong _fastcall ispunct(char chr);
extern ulong _fastcall isascii(char chr);
extern ulong _fastcall isprint(char chr);
extern ulong _fastcall toupper(char chr);
extern ulong _fastcall tolower(char chr);
extern pchar _fastcall btoa(ulong value,pchar string);
extern pchar _fastcall ltoa(long value,pchar string,int radix);
extern pchar _fastcall ultoa(ulong value,pchar string,int radix);
extern pchar _fastcall otoa(ulong value,pchar string);
extern pchar _fastcall xtoa(ulong value,pchar string);
extern pchar _fastcall ptos(pvoid pascalstr);
extern ulong sprintf(pchar dest,pchar fmtstr,...);
extern pchar _fastcall stpcpy(pchar dest,pchar source);
extern pchar _fastcall strcat(pchar dest,pchar source);
extern pchar _fastcall strchr(pchar string,char chr);
extern pchar _fastcall strchrn(char string,char chr);
extern pchar _fastcall strcpy(const char *,const char *);
extern pchar _fastcall strdup(pchar string);
extern int _fastcall strcmp(const char *,const char * );
extern long _fastcall strncmp(pchar srcptr,pchar destptr,long max_len);
extern long _fastcall stricmp(pchar srcptr,pchar destptr);
extern ulong _fastcall strlen(pchar string);
extern pchar _fastcall strlwr(pchar string);
extern pchar _fastcall strupr(pchar string);
extern pchar _fastcall strncpy(pchar dest,pchar source,ulong length);
extern pchar _fastcall strpbrk(pchar s1,pchar s2);
/* compatibility with other compilers */
#define strcmpi(s1,s2) stricmp(s1,s2)
#define strncmpi(s1,s2,n) strnicmp(s1,s2,n)
/**************************************************************************
* CONIO - console I/O
*************************************************************************/
extern long printf(pchar fmtstr,...);
extern long kbhit(void);
/**************************************************************************
* STREAMS - file stream I/O
*************************************************************************/
#define BUFSIZ 2048
#define _IOFBF 0
#define _IOLBF 1
#define _IONBF 2
typedef struct {
uchar _mode;
uchar _type;
short _handle; /* DOS 16bit file handle */
ulong _size; /* current size of buffer */
ulong _buffersize; /* maximum size of buffer */
ulong _position; /* Current active position in buffer*/
ulong _base; /* pointer to data transfer buffer */
} FILE;
extern FILE _stdin_fstream;
extern FILE _stdout_fstream;
extern FILE _stderr_fstream;
extern FILE _stdaux_fstream;
extern FILE _stdprn_fstream;
#define stdin &_stdin_fstream /* Standard input file ptr */
#define stdout &_stdout_fstream /* Standard output file ptr */
#define stderr &_stderr_fstream /* Standard error file ptr */
#define stdaux &_stdaux_fstream /* Standard auxilary file ptr */
#define stdprn &_stdprn_fstream /* Standard printer file ptr */
#define getc fgetc
#define putc fputc
#define getchar() fgetc(stdin)
#define putchar(c) fputc((c),stdout)
#define rewind(c) fseek((c),0,SEEK_SET)
extern long fprintf(FILE * stream, pchar fmtstr,...);
extern FILE* _fastcall fopen(const char *, const char *);
extern FILE* _fastcall freopen(const char *, const char * ,FILE *);
extern long _fastcall fclose(FILE * file_pointer);
extern long _fastcall fcloseall(void);
extern long _fastcall fread(void * e, ulong _size, int count, FILE *fileptr);
extern long _fastcall fwrite(void * e, ulong _size, int count, FILE *fileptr);
extern long _fastcall fgetc(FILE * stream);
extern long _fastcall fputc(char , FILE *);
extern char* _fastcall fgets(char *s, int n, FILE *stream);
extern long _fastcall fputs(FILE * stream);
extern long _fastcall fflush(FILE * stream);
extern long _fastcall fflushall(void);
extern long _fastcall fseek(FILE * file_pointer, int offset, int whence );
extern long _fastcall ftell(FILE * file_pointer);
extern long _fastcall setvbuf(FILE *stream, uchar *buf, ulong type, ulong size_t);
extern void _fastcall setbuf(FILE *stream, char *buf);
/*****************************************************************************
* SYSTEM - system specific
****************************************************************************/
extern void abort(void);
extern ulong _fastcall atexit(pvoid exitfunc);
extern void _fastcall exit(int errorlevel);
extern pvoid _fastcall _getfarptr(pvoid PTR, char type);
extern pvoid _fastcall getvect(ulong _int);
extern pvoid _fastcall setvect(ulong _int, pvoid vect);
extern ulong _fastcall MK_FP(pvoid address);
extern pvoid _fastcall MK_FAR(ulong);
extern void _fastcall memset(pvoid buf,char value,ulong length);
extern pvoid _fastcall memcpy(const void * dest,const void *,int length);
extern int _fastcall memcmp(void * dest,void * source,int length);
extern pvoid _fastcall memmove(void * dest, void * source, ulong count);
extern void _fastcall _exit(ulong errorlevel);
extern void _fastcall _cexit(void);
extern pvoid _fastcall getenv(char * name);
extern int _fastcall inp(unsigned portid);
extern unsigned _fastcall inpw(unsigned portid);
extern int _fastcall outp(unsigned portid, int value);
extern unsigned _fastcall outpw(unsigned portid, unsigned value);
extern pvoid _fastcall loadlibrary(char* filename, int seekset);
extern int _fastcall GetLibrarySize(void);
extern long errno; /* System error code */
extern char ctrl_break_count; /* number of time it's been pushed */
#ifdef __cplusplus
}
#endif
/******************************************************************************
* Standed macros
******************************************************************************/
#define EOF -1
#define NULL 0
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1