home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
vol_100
/
122_01
/
pistol.h
< prev
next >
Wrap
Text File
|
1984-03-07
|
5KB
|
232 lines
/*********************************************************/
/* */
/* PISTOL-Portably Implemented Stack Oriented Language */
/* Version 2.0 */
/* (C) 1983 by Ernest E. Bergmann */
/* Physics, Building #16 */
/* Lehigh Univerisity */
/* Bethlehem, Pa. 18015 */
/* */
/* Permission is hereby granted for all reproduction and */
/* distribution of this material provided this notice is */
/* included. */
/* */
/*********************************************************/
/* for PISTOL v2.0 in BDS 'C' v1.45a */
/* September 5, 1982 */
#define W 2
#define VERSION 20
#define RAMSIZE 5000
#define RAMMIN -21 /* most negative constant */
#define COMPBUF RAMSIZE-W*200
#define NSAVE 124 /* used by coredump&restore */
#define STRINGSSIZE NSAVE*128-W*RAMSIZE+W*RAMMIN
#define LINEBUF 3300
#define NFUNCS 73
#define SSIZE 200
#define LSIZE 30
#define CSIZE 30
#define RSIZE 30
#define VBASE 41
#define VSIZE 8
#define CHKLMT 20
#define MAXORD 128
#define MAXINT 32767
#define MININT -32768
#define MAXLINNO 300
#define NAMESIZE 20
#define FALS 0
#define TRU -1
#define NEWLINE 10 /* for 'C' */
#define RPROTECT TRU
#define WPROTECT TRU
#define TERMWIDTH 64
#define TERMLENGTH 20
#define PSEMICOLON 0
#define WSTORE 1
#define TIMES 2
#define PLUS 3
#define SUBTRACT 4
#define DIVMOD 5
#define PIF 6
#define WAT 7
#define ABRT 8
#define SP 9
#define LOAD 10
#define PELSE 11
#define WRD 12
#define RP 13
#define DROPOP 14
#define PUSER 15
#define EXEC 16
#define EXITOP 17
#define LIT 18
#define STRLIT 19
#define RPOP 20
#define SWP 21
#define TYI 22
#define TYO 23
#define RPSH 24
#define SEMICF 25
#define RAT 26
#define COMPME 27
#define COMPHERE 28
#define DOLLARC 29
#define COLON 30
#define SEMICOLON 31
#define IFOP 32
#define ELSEOP 33
#define THENOP 34
#define DOOP 35
#define LOOPOP 36
#define BEGINOP 37
#define ENDOP 38
#define REPET 39
#define PERCENT 40
#define PDOLLAR 41
#define PCOLON 42
#define CASAT 43
#define PDOOP 44
#define PPLOOP 45
#define PLLOOP 46
#define CAT 47
#define CSTORE 48
#define PLOOP 49
#define DOTDOT 50
#define SEMIDOL 51
#define PRMQ 52
#define CORDMP 53
#define RESTOR 54
#define SAT 55
#define FINDOP 56
#define LISTFIL 57
#define VFINDOP 58
#define LAT 59
#define OFCAS 60
#define CCOLON 61
#define SEMICC 62
#define NDCAS 63
#define POFCAS 64
#define PCCOL 65
#define PSEMICC 66
#define GTLIN 67
#define WORD 68
#define OPENR 69
#define OPENW 70
#define READL 71
#define WRITL 72
char ldfil[BUFSIZ],list[BUFSIZ]; /* will overlay init() */
union word
{int in;
char cr;
unsigned un;
char *pc;
union word *pw;
};
char jbuf[JBUFSIZE]; /* to use in setjmp(),longjump() */
unsigned ip; /* but can be used for machine addresses */
unsigned instr;
int temp;
int savlevel,savinstr; /*for trace in interpret();*/
int stkptr;
int rptr;
int lptr;
int cptr;
int *Pw,*Pw2; /* needed for pointer conversions */
char *Pc,*Pc2; /* needed for pointer conversions */
int (*farray[NFUNCS])(); /* to hold pointers to interpreted
primitive functions */
int mstack[3]; /* extra padding */
int stack[SSIZE];
int pstack[3]; /* extra padding */
int lstack[LSIZE];
int rstack[RSIZE];
int cstack[CSIZE];
char imagename[NAMESIZE];
char namein[NAMESIZE];
char namout[NAMESIZE];
char infil[NAMESIZE];
char listname[NAMESIZE];
char c;/*??? assignable to eof()?*/
char nullname;
char *feof;
char *nopen;
char *id;
char *synt;
char *ovflo;
char *undflo;
char *redef;
char *divby0;
char *readv;
char *writv;
int addr;
int val;
int i,j;
union word nram[-RAMMIN]; /* space for negative args for ram */
union word ram[RAMSIZE];
char strings[STRINGSSIZE];
char edin[BUFSIZ],edout[BUFSIZ];/*for editor file i/o buffs */
/*"static variables" for vfind,pstrcmp*/
int *ptoken;
int *vloc;
char vmatch;
char pcount,*Pc3;
int *prev;
/* "static" for ttyi() */
char keycurs,keylen,keystring[MAXORD];
/* "static" for pdo() */
int start,nd;
/* "static" for move() */
char *as,*ad,*endaddr;
int nowd;
/* "static" for swap() */
int hold;
/* "static" for many interpreter functions */
int tos,ntt,param;
/* "static" for compline() */
int inf,*pad;
/* "static" for slit() and longstring() */
char ic, *sstart;
/* "static" for intoken() */
char count, *ptr2;
/* "static" for convert() */
char *tend;
/* "static" for touchup() */
int ref;
ar nullname;
char *feof;
char *nopen;
char *id;
char *synt;
char *ovflo;
char *undflo;
char *redef;
char *divby