/* PostScript interpreter file "postlib.h" - library interface header (Amiga) * (C) Adrian Aylward 1989, 1991. * * You may freely copy and use this file. It was written for Lattice C * V5.05. N.B. all ints are 32 bits! * * This file defines the library interface, so that other programs can * use the PostScript drawing machinery. It is totally Amiga specific. * * N.B. the symbol STATICLINK is used for building a statically linked * version of Post for debugging purposes. It should not be defined for * normal use. */ # ifndef POSTLIB_H # define POSTLIB_H /* The version number */ # define POSTVER "Post V1.5" # define POSTVERNO 15 /* Default and minimum memory sizes */ # define defmemflen 60000 # define defmemhlen 20000 # define defmemvlen 50000 # define defmemllen 10000 # define minmemflen 5000 # define minmemhlen 1000 # define minmemvlen 5000 # define minmemllen 1000 /* The device page and parameter block */ struct PSdevice { char *buf[24]; int len; short depth, reserved[3]; short xoff, yoff; short xbytes, xsize, ysize, ybase, yheight; short xden, yden, ydir; }; /* The parameter block */ struct PSparm { struct PSdevice page; int memvlen, memflen, memllen, memhlen; APTR userdata, flushfunc, copyfunc; BPTR infh, outfh, errfh; int funcmax; APTR *functab; int reserved[2]; }; /* Virtual machine objects */ struct PSobject { unsigned char type, flags; unsigned short length; union { int ival; float rval; unsigned vref; } value; }; /* Object types and flags */ # ifndef POST_H # define typenull 0 /* null object is binary zeros */ # define typemark 1 /* mark */ # define typesave 2 /* save object */ # define typeoper 3 /* operator */ # define typefile 4 /* file */ # define typeint 5 /* integer */ # define typereal 6 /* real */ # define typebool 7 /* boolean */ # define typearray 8 /* array */ # define typepacked 9 /* packedarray */ # define typestring 10 /* string */ # define typename 11 /* name */ # define typedict 12 /* dictionary */ # define typefont 13 /* fontID */ # define typemax 14 # define flagexec 128 /* executable (not literal) */ # define flagwprot 64 /* write protection */ # define flagrprot 32 /* read protection */ # define flagxprot 16 /* execute protection */ # endif /* Errors */ # ifndef POST_H # define errdictfull 1 # define errdictstackoverflow 2 # define errdictstackunderflow 3 # define errexecstackoverflow 4 # define errinterrupt 5 # define errinvalidaccess 6 # define errinvalidexit 7 # define errinvalidfileaccess 8 # define errinvalidfont 9 # define errinvalidrestore 10 # define errinvalidstop 11 # define errioerror 12 # define errlimitcheck 13 # define errnocurrentpoint 14 # define errrangecheck 15 # define errstackoverflow 16 # define errstackunderflow 17 # define errsyntaxerror 18 # define errtimeout 19 # define errtypecheck 20 # define errundefined 21 # define errundefinedfilename 22 # define errundefinedresult 23 # define errunmatchedmark 24 # define errunregistered 25 # define errVMerror 26 # define errmemoryallocation 27 # define errmax 27 # endif /* Flags */ # define PSFLAGSTRING 1 /* Interpret string */ # define PSFLAGFILE 2 /* Interpret file */ # define PSFLAGINTER 4 /* Interactive, issue propmts */ # define PSFLAGCLEAR 8 /* Clear stacks afterwards */ # define PSFLAGSAVE 16 /* Save and restore */ # define PSFLAGERASE 32 /* Erase page afterwards */ /* Entry points */ # ifdef STATICLINK # define PScreateact(parm) initialise(parm) # define PSdeleteact(arec) terminate() # define PSintstring(arec, s, l, f) intstring(s, l, f) # define PSsignalint(arec, f) signalint(f) # define PSsignalfpe(arec) signalfpe() # define PSerror(arec, n) error(n) # endif /* Entry points */ extern int PScreateact(struct PSparm *parm); extern void PSdeleteact(int arec); extern int PSintstring(int arec, char *string, int length, int flags); extern void PSsignalint(int arec, int flag); extern void PSsignalfpe(int arec); extern void PSerror(int arec, int errnum); extern unsigned PSallocvm(int arec, int size); extern void *PSvreftoptr(int arec, unsigned vref); extern void PSsetdevice(int arec, struct PSdevice *page); # ifndef STATICLINK # ifdef LATTICE # pragma libcall PSbase PScreateact 1e 901 ; d0 = (a1) # pragma libcall PSbase PSdeleteact 24 801 ; (a0) # pragma libcall PSbase PSintstring 2A 109804 ; d0 = (a0, a1, d0, d1) # pragma libcall PSbase PSsignalint 30 0802 ; (a0, d0) # pragma libcall PSbase PSsignalfpe 36 801 ; (a0) # pragma libcall PSbase PSerror 3C 0802 ; (a0, d0) # pragma libcall PSbase PSallocvm 42 0802 ; d0 = (a0, d0) # pragma libcall PSbase PSvreftoptr 48 0802 ; d0 = (a0, d0) # pragma libcall PSbase PSsetdevice 4E 9802 ; (a0, a1) # endif # endif # endif /* End of file "postlib.h" */