123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- %
- % COMP-DECLS.RED - Machine-independent declaractions used by the compiler
- %
- % Author: Eric Benson
- % Symbolic Computation Group
- % Computer Science Dept.
- % University of Utah
- % Date: 16 October 1981
- % Copyright (c) 1981 University of Utah
- %
- % <PSL.COMP>COMP-DECLS.RED.16, 3-Sep-82 09:46:43, Edit by BENSON
- % Added PA1REFORMFN for WNOT
- % <PSL.COMP>COMP-DECLS.RED.5, 3-Dec-82 18:20:08, Edit by PERDUE
- % Removed PA1REFORMFN for NE
- % <PSL.COMP>COMP-DECLS.RED.6, 24-Jan-83 16:04:00, Edit by MLGriss
- % Changed W to !%!%!%W in the EQCAR to avoid subst W into EQCAR form
- % Pass 1 functions
- put('Apply, 'PA1FN, '!&PaApply);
- PUT('ASSOC, 'PA1FN, '!&PAASSOC);
- PUT('EQUAL, 'PA1FN, '!&PAEQUAL);
- PUT('MEMBER, 'PA1FN, '!&PAMEMBER);
- put('Catch, 'Pa1Fn, '!&PaCatch);
- PUT('COND, 'PA1FN, '!&PACOND);
- PUT('DIFFERENCE,'PA1FN, '!&PADIFF);
- PUT('FUNCTION, 'PA1FN, '!&PAFUNCTION);
- PUT('GETMEM, 'PA1FN, '!&PAGETMEM);
- PUT('GO, 'PA1FN, '!&PAIDENT);
- PUT('CASE, 'PA1FN, '!&PACASE);
- PUT('INTERN, 'PA1FN, '!&PAINTERN);
- PUT('LAMBDA, 'PA1FN, '!&PALAMBDA);
- PUT('LESSP, 'PA1FN, '!&PALESSP);
- PUT('LIST, 'PA1FN, '!&PALIST);
- PUT('LOC, 'PA1REFORMFN, '!&REFORMLOC);
- PUT('MAP, 'PA1FN, '!&PAMAP);
- PUT('MAPC, 'PA1FN, '!&PAMAPC);
- PUT('MAPCAN, 'PA1FN, '!&PAMAPCAN);
- PUT('MAPCAR, 'PA1FN, '!&PAMAPCAR);
- PUT('MAPCON, 'PA1FN, '!&PAMAPCON);
- PUT('MAPLIST, 'PA1FN, '!&PAMAPLIST);
- PUT('MINUS, 'PA1FN, '!&PAMINUS);
- PUT('NULL, 'PA1REFORMFN, '!&REFORMNULL);
- % PUT('NE, 'PA1REFORMFN, '!&REFORMNE); % Perdue 12/3/82
- put('Nth, 'Pa1Fn, '!&PaNth);
- put('PNth, 'Pa1Fn, '!&PaPNth);
- PUT('PLUS2, 'PA1FN, '!&PAPLUS2);
- PUT('PROG, 'PA1FN, '!&PAPROG);
- PUT('PUTMEM, 'PA1FN, '!&PAPUTMEM);
- PUT('PUTLISPVAR,'PA1FN, '!&PAPUTLISPVAR);
- PUT('LISPVAR, 'PA1FN, '!&PALISPVAR);
- PUT('QUOTE, 'PA1FN, '!&PAIDENT);
- PUT('WCONST, 'PA1FN, '!&PAWCONST);
- PUT('SETQ, 'PA1FN, '!&PASETQ);
- PUT('WPLUS2, 'PA1FN, '!&GROUP);
- PUT('WDIFFERENCE,'PA1FN, '!&GROUP);
- PUT('WMINUS, 'PA1FN, '!&GROUP);
- PUT('WTIMES2, 'PA1FN, '!&ASSOCOP);
- PUT('WAND, 'PA1FN, '!&ASSOCOP);
- PUT('WOR, 'PA1FN, '!&ASSOCOP);
- PUT('WXOR, 'PA1FN, '!&ASSOCOP);
- PUT('WPLUS2, 'PA1ALGFN, '!&GROUPV);
- PUT('WDIFFERENCE,'PA1ALGFN, '!&GROUPV);
- PUT('WMINUS, 'PA1ALGFN, '!&GROUPV);
- PUT('WTIMES2, 'PA1ALGFN, '!&ASSOCOPV);
- PUT('WAND, 'PA1ALGFN, '!&ASSOCOPV);
- PUT('WOR, 'PA1ALGFN, '!&ASSOCOPV);
- PUT('WXOR, 'PA1ALGFN, '!&ASSOCOPV);
- PUT('WSHIFT, 'PA1REFORMFN, '!&DOOP);
- PUT('WNOT, 'PA1REFORMFN, '!&DOOP);
- put('WTimes2, 'PA1Reformfn, function !&PaReformWTimes2);
- % Simplification
- PUT('WPLUS2, 'DOFN, 'PLUS2);
- PUT('WDIFFERENCE,'DOFN, 'DIFFERENCE);
- PUT('WMINUS, 'DOFN, 'MINUS);
- PUT('WTIMES2, 'DOFN, 'TIMES2);
- PUT('WQUOTIENT, 'DOFN, 'QUOTIENT);
- PUT('WREMAINDER,'DOFN, 'REMAINDER);
- PUT('WAND, 'DOFN, 'LAND);
- PUT('WOR, 'DOFN, 'LOR);
- PUT('WXOR, 'DOFN, 'LXOR);
- PUT('WNOT, 'DOFN, 'LNOT);
- PUT('WSHIFT, 'DOFN, 'LSHIFT);
- PUT('WTIMES2, 'ONE, 1);
- PUT('WTIMES2, 'ZERO, 0);
- PUT('WPLUS2, 'ONE, 0);
- PUT('WPLUS2, 'GROUPOPS, '(WPLUS2 WDIFFERENCE WMINUS));
- PUT('WMINUS, 'GROUPOPS, '(WPLUS2 WDIFFERENCE WMINUS));
- PUT('WDIFFERENCE,'GROUPOPS, '(WPLUS2 WDIFFERENCE WMINUS));
- PUT('WAND, 'ZERO, 0);
- PUT('WOR, 'ONE, 0);
- PUT('WXOR, 'ONE, 0);
- % Compile functions
- PUT('AND, 'COMPFN, '!&COMANDOR);
- PUT('APPLY, 'COMPFN, '!&COMAPPLY);
- PUT('COND, 'COMPFN, '!&COMCOND);
- PUT('CONS, 'COMPFN, '!&COMCONS);
- PUT('GO, 'COMPFN, '!&COMGO);
- PUT('CASE, 'COMPFN, '!&COMCASE);
- PUT('OR, 'COMPFN, '!&COMANDOR);
- PUT('PROG, 'COMPFN, '!&COMPROG);
- PUT('PROG2, 'COMPFN, '!&COMPROGN);
- PUT('PROGN, 'COMPFN, '!&COMPROGN);
- PUT('RETURN, 'COMPFN, '!&COMRETURN);
- % Patterns for the tests and SETQ
- PUT('EQ, 'OPENTST, '(TSTPAT !*JUMPEQ));
- PUT('EQ, 'OPENFN, '(TVPAT !*JUMPEQ));
- PUT('NE, 'OPENTST, '(TSTPAT !*JUMPNOTEQ));
- PUT('NE, 'OPENFN, '(TVPAT !*JUMPNOTEQ));
- PUT('AND, 'OPENTST, '!&TSTANDOR);
- PUT('OR, 'OPENTST, '!&TSTANDOR);
- PUT('PAIRP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE PAIR));
- PUT('ATOM, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE PAIR));
- PUT('STRINGP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE STR));
- PUT('NOTSTRINGP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE STR));
- PUT('VECTORP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE VECT));
- PUT('NOTVECTORP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE VECT));
- PUT('CODEP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE CODE));
- PUT('NOTCODEP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE CODE));
- PUT('FLOATP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE FLTN));
- PUT('NOTFLOATP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE FLTN));
- PUT('INTP, 'OPENTST, '(TSTPAT2 !*JUMPINTYPE POSINT));
- PUT('NOTINTP, 'OPENTST, '(TSTPAT2 !*JUMPNOTINTYPE POSINT));
- PUT('FIXP, 'OPENTST, '(TSTPAT2 !*JUMPINTYPE BIGN));
- PUT('NOTFIXP, 'OPENTST, '(TSTPAT2 !*JUMPNOTINTYPE BIGN));
- PUT('NUMBERP, 'OPENTST, '(TSTPAT2 !*JUMPINTYPE FLTN));
- PUT('NOTNUMBERP,'OPENTST, '(TSTPAT2 !*JUMPNOTINTYPE FLTN));
- PUT('FIXNP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE FIXN));
- PUT('NOTFIXNP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE FIXN));
- PUT('BIGP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE BIGN));
- PUT('NOTBIGP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE BIGN));
- PUT('POSINTP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE POSINT));
- PUT('NOTPOSINTP,'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE POSINT));
- PUT('NEGINTP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE NEGINT));
- PUT('NOTNEGINTP,'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE NEGINT));
- PUT('IDP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE ID));
- PUT('NOTIDP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE ID));
- PUT('BYTESP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE BYTES));
- PUT('NOTBYTESP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE BYTES));
- PUT('WRDSP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE WRDS));
- PUT('NOTWRDSP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE WRDS));
- PUT('HALFWORDSP, 'OPENTST, '(TSTPAT2 !*JUMPTYPE HALFWORDS));
- PUT('NOTHALFWORDSP, 'OPENTST, '(TSTPAT2 !*JUMPNOTTYPE HALFWORDS));
- PUT('PAIRP, 'OPENFN, '(TVPAT1 !*JUMPTYPE PAIR));
- PUT('ATOM, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE PAIR));
- PUT('STRINGP, 'OPENFN, '(TVPAT1 !*JUMPTYPE STR));
- PUT('NOTSTRINGP,'OPENFN, '(TVPAT1 !*JUMPNOTTYPE STR));
- PUT('VECTORP, 'OPENFN, '(TVPAT1 !*JUMPTYPE VECT));
- PUT('NOTVECTORP,'OPENFN, '(TVPAT1 !*JUMPNOTTYPE VECT));
- PUT('CODEP, 'OPENFN, '(TVPAT1 !*JUMPTYPE CODE));
- PUT('NOTCODEP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE CODE));
- PUT('FLOATP, 'OPENFN, '(TVPAT1 !*JUMPTYPE FLTN));
- PUT('NOTFLOATP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE FLTN));
- PUT('INTP, 'OPENFN, '(TVPAT1 !*JUMPINTYPE POSINT));
- PUT('NOTINTP, 'OPENFN, '(TVPAT1 !*JUMPNOTINTYPE POSINT));
- PUT('FIXP, 'OPENFN, '(TVPAT1 !*JUMPINTYPE BIGN));
- PUT('NOTFIXP, 'OPENFN, '(TVPAT1 !*JUMPNOTINTYPE BIGN));
- PUT('NUMBERP, 'OPENFN, '(TVPAT1 !*JUMPINTYPE FLTN));
- PUT('NOTNUMBERP,'OPENFN, '(TVPAT1 !*JUMPNOTINTYPE FLTN));
- PUT('FIXNP, 'OPENFN, '(TVPAT1 !*JUMPTYPE FIXN));
- PUT('NOTFIXNP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE FIXN));
- PUT('BIGP, 'OPENFN, '(TVPAT1 !*JUMPTYPE BIGN));
- PUT('NOTBIGP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE BIGN));
- PUT('POSINTP, 'OPENFN, '(TVPAT1 !*JUMPTYPE POSINT));
- PUT('NOTPOSINTP,'OPENFN, '(TVPAT1 !*JUMPNOTTYPE POSINT));
- PUT('NEGINTP, 'OPENFN, '(TVPAT1 !*JUMPTYPE NEGINT));
- PUT('NOTNEGINTP,'OPENFN, '(TVPAT1 !*JUMPNOTTYPE NEGINT));
- PUT('IDP, 'OPENFN, '(TVPAT1 !*JUMPTYPE ID));
- PUT('NOTIDP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE ID));
- PUT('BYTESP, 'OPENFN, '(TVPAT1 !*JUMPTYPE BYTES));
- PUT('NOTBYTESP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE BYTES));
- PUT('WRDSP, 'OPENFN, '(TVPAT1 !*JUMPTYPE WRDS));
- PUT('NOTWRDSP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE WRDS));
- PUT('HALFWORDSP, 'OPENFN, '(TVPAT1 !*JUMPTYPE HALFWORDS));
- PUT('NOTHALFWORDSP, 'OPENFN, '(TVPAT1 !*JUMPNOTTYPE HALFWORDS));
- PUT('SETQ, 'OPENFN, '(SETQPAT NIL));
- PUT('RPLACA, 'OPENFN, '(RPLACPAT CAR));
- PUT('RPLACD, 'OPENFN, '(RPLACPAT CDR));
- PUT('WPLUS2, 'OPENFN, '(ASSOCPAT !*WPLUS2));
- PUT('WDIFFERENCE,'OPENFN, '(SUBPAT !*WDIFFERENCE));
- PUT('WTIMES2, 'OPENFN, '(ASSOCPAT !*WTIMES2));
- PUT('WMINUS, 'OPENFN, '(UNARYPAT !*WMINUS));
- PUT('WAND, 'OPENFN, '(ASSOCPAT !*WAND));
- PUT('WOR, 'OPENFN, '(ASSOCPAT !*WOR));
- PUT('WXOR, 'OPENFN, '(ASSOCPAT !*WXOR));
- PUT('WNOT, 'OPENFN, '(UNARYPAT !*WNOT));
- PUT('WSHIFT, 'OPENFN, '(NONASSOCPAT !*WSHIFT));
- PUT('MKITEMREV, 'OPENFN, '(NONASSOCPAT !*MKITEM));
- PUT('LOC, 'OPENFN, '(UNARYPAT !*LOC));
- PUT('!*ADDMEM, 'OPENFN, '(MODMEMPAT !*ADDMEM));
- PUT('!*MPYMEM, 'OPENFN, '(MODMEMPAT !*MPYMEM));
- PUT('FIELD, 'OPENFN, '(FIELDPAT !*FIELD));
- PUT('SIGNEDFIELD,'OPENFN, '(FIELDPAT !*SIGNEDFIELD));
- PUT('PUTFIELDREV,'OPENFN, '(PUTFIELDPAT !*PUTFIELD));
- PUT('WGREATERP,'OPENTST, '(TSTPATC !*JUMPWGREATERP !*JUMPWLESSP));
- PUT('WLEQ, 'OPENTST, '(TSTPATC !*JUMPWLEQ !*JUMPWGEQ));
- PUT('WGEQ, 'OPENTST, '(TSTPATC !*JUMPWGEQ !*JUMPWLEQ));
- PUT('WLESSP, 'OPENTST, '(TSTPATC !*JUMPWLESSP !*JUMPWGREATERP));
- PUT('WGREATERP, 'OPENFN, '(TVPAT !*JUMPWGREATERP));
- PUT('WLEQ, 'OPENFN, '(TVPAT !*JUMPWLEQ));
- PUT('WGEQ, 'OPENFN, '(TVPAT !*JUMPWGEQ));
- PUT('WLESSP, 'OPENFN, '(TVPAT !*JUMPWLESSP));
- PUT('EQ,'FLIPTST,'NE);
- PUT('NE,'FLIPTST,'EQ);
- PUT('ATOM,'FLIPTST,'PAIRP);
- PUT('PAIRP,'FLIPTST,'ATOM);
- PUT('STRINGP,'FLIPTST,'NOTSTRINGP);
- PUT('NOTSTRINGP,'FLIPTST,'STRINGP);
- PUT('BytesP,'FLIPTST,'NOTBytesP);
- PUT('NOTBytesP,'FLIPTST,'BytesP);
- PUT('WrdsP,'FLIPTST,'NOTWrdsP);
- PUT('NOTWrdsP,'FLIPTST,'WrdsP);
- PUT('HalfwordsP,'FLIPTST,'NOTHalfwordsP);
- PUT('NOTHalfwordsP,'FLIPTST,'HalfwordsP);
- PUT('CODEP,'FLIPTST,'NOTCODEP);
- PUT('NOTCODEP, 'FLIPTST,'CODEP);
- PUT('IDP,'FLIPTST,'NOTIDP);
- PUT('NOTIDP,'FLIPTST,'IDP);
- PUT('INTP,'FLIPTST,'NOTINTP);
- PUT('NOTINTP,'FLIPTST,'INTP);
- PUT('POSINTP,'FLIPTST,'NOTPOSINTP);
- PUT('NOTPOSINTP,'FLIPTST,'POSINTP);
- PUT('NEGINTP,'FLIPTST,'NOTNEGINTP);
- PUT('NOTNEGINTP,'FLIPTST,'NEGINTP);
- PUT('FIXP,'FLIPTST,'NOTFIXP);
- PUT('NOTFIXP,'FLIPTST,'FIXP);
- PUT('NUMBERP,'FLIPTST,'NOTNUMBERP);
- PUT('NOTNUMBERP,'FLIPTST,'NUMBERP);
- PUT('FIXNP,'FLIPTST,'NOTFIXNP);
- PUT('NOTFIXNP,'FLIPTST,'FIXNP);
- PUT('FLOATP,'FLIPTST,'NOTFLOATP);
- PUT('NOTFLOATP,'FLIPTST,'FLOATP);
- PUT('BIGP,'FLIPTST,'NOTBIGP);
- PUT('NOTBIGP,'FLIPTST,'BIGP);
- PUT('VECTORP,'FLIPTST,'NOTVECTORP);
- PUT('NOTVECTORP,'FLIPTST,'VECTORP);
- PUT('WLESSP,'FLIPTST,'WGEQ);
- PUT('WGEQ,'FLIPTST,'WLESSP);
- PUT('WLEQ,'FLIPTST,'WGREATERP);
- PUT('WGREATERP,'FLIPTST,'WLEQ);
- % Match functions
- PUT('ANY,'MATCHFN,'!&ANY);
- PUT('VAR,'MATCHFN,'!&VAR);
- PUT('REG,'MATCHFN,'!®FP);
- PUT('DEST,'MATCHFN,'!&DEST);
- PUT('USESDEST,'MATCHFN,'!&USESDEST);
- PUT('REGN,'MATCHFN,'!®N);
- PUT('NOTDEST,'MATCHFN,'!&NOTDEST);
- PUT('NOTANYREG,'MATCHFN,'!&NOTANYREG);
- PUT('MEM,'MATCHFN,'!&MEM);
- PUT('ANYREGFN,'MATCHFN,'!&ANYREGFNP);
- % Tag properties
- FLAG('(!$LOCAL !$GLOBAL !$FLUID QUOTE WCONST IDLOC WVAR
- REG LABEL FRAME !*FRAMESIZE IREG),
- 'TERMINAL);
- FLAG('(!$LOCAL !$GLOBAL !$FLUID WVAR),'VAR);
- FLAG('(QUOTE WCONST IDLOC FRAMESIZE),'CONST);
- FLAG('(REG),'REG);
- FLAG('(!$FLUID !$GLOBAL),'EXTVAR);
- FLAG('(CAR CDR !$NAME MEMORY FRAMESIZE), 'ANYREG);
- FLAG('(!*ADDMEM !*MPYMEM),'MEMMOD);
- % Optimizing functions
- PUT('!*LBL, 'OPTFN, '!&LBLOPT);
- PUT('!*MOVE, 'OPTFN, '!&STOPT);
- PUT('!*JUMP, 'OPTFN, '!&JUMPOPT);
- % Things which can be compiled
- FLAG('(EXPR FEXPR MACRO NEXPR),'COMPILE);
- % Some compiler macros
- DEFLIST('((CAAR (LAMBDA (U) (CAR (CAR U))))
- (CADR (LAMBDA (U) (CAR (CDR U))))
- (CDAR (LAMBDA (U) (CDR (CAR U))))
- (CDDR (LAMBDA (U) (CDR (CDR U))))
- (CAAAR (LAMBDA (U) (CAR (CAR (CAR U)))))
- (CAADR (LAMBDA (U) (CAR (CAR (CDR U)))))
- (CADAR (LAMBDA (U) (CAR (CDR (CAR U)))))
- (CADDR (LAMBDA (U) (CAR (CDR (CDR U)))))
- (CDAAR (LAMBDA (U) (CDR (CAR (CAR U)))))
- (CDADR (LAMBDA (U) (CDR (CAR (CDR U)))))
- (CDDAR (LAMBDA (U) (CDR (CDR (CAR U)))))
- (CDDDR (LAMBDA (U) (CDR (CDR (CDR U)))))
- (EQCAR (LAMBDA (U V)
- ((LAMBDA (!%!%!%W) (AND (PAIRP !%!%!%W)
- (EQ (CAR !%!%!%W) V))) U)))
- (CONSTANTP (LAMBDA (U)
- ((LAMBDA (V) (NOT (OR (PAIRP V) (IDP V))))
- U)))
- (WEQ (LAMBDA (U V) (EQ U V)))
- (WNEQ (LAMBDA (U V) (NE U V)))
- (IPLUS2 (LAMBDA (U V) (WPLUS2 U V)))
- (IADD1 (LAMBDA (U) (WPLUS2 U 1)))
- (IDIFFERENCE (LAMBDA (U V) (WDIFFERENCE U V)))
- (ISUB1 (LAMBDA (U) (WDIFFERENCE U 1)))
- (ITIMES2 (LAMBDA (U V) (WTIMES2 U V)))
- (IQUOTIENT (LAMBDA (U V) (WQUOTIENT U V)))
- (IREMAINDER (LAMBDA (U V) (WREMAINDER U V)))
- (IGREATERP (LAMBDA (U V) (WGREATERP U V)))
- (ILESSP (LAMBDA (U V) (WLESSP U V)))
- (ILEQ (LAMBDA (U V) (WLEQ U V)))
- (IGEQ (LAMBDA (U V) (WGEQ U V)))
- (ILOR (LAMBDA (U V) (WOR U V)))
- (ILSH (LAMBDA (U V) (WSHIFT U V)))
- (ILAND (LAMBDA (U V) (WAND U V)))
- (ILXOR (LAMBDA (U V) (WXOR U V)))
- (IZEROP (LAMBDA (U) (EQ U 0)))
- (IONEP (LAMBDA (U) (EQ U 1)))
- (IMINUSP (LAMBDA (U) (WLESSP U 0)))
- (IMINUS (LAMBDA (U) (WMINUS U)))
- (PUTFIELD (LAMBDA (U V W X) (PUTFIELDREV X U V W)))
- (MKITEM (LAMBDA (U V) (MKITEMREV V U)))
- (NEQ (LAMBDA (U V) (NOT (EQUAL U V))))
- (GEQ (LAMBDA (U V) (NOT (LESSP U V))))
- (LEQ (LAMBDA (U V) (NOT (GREATERP U V))))
- (NOT (LAMBDA (U) (NULL U)))),'CMACRO);
- % Macro functions
- PUT('A1,'SUBSTFN,'!&ARG1);
- PUT('A2,'SUBSTFN,'!&ARG2);
- PUT('A3,'SUBSTFN,'!&ARG3);
- PUT('A4,'SUBSTFN,'!&ARG4);
- PUT('FN,'SUBSTFN,'!&PARAM1);
- PUT('MAC,'SUBSTFN,'!&PARAM2);
- PUT('P2,'SUBSTFN,'!&PARAM3);
- PUT('P3,'SUBSTFN,'!&PARAM4);
- PUT('T1,'SUBSTFN,'!&GETTEMP);
- PUT('T2,'SUBSTFN,'!&GETTEMP);
- PUT('T3,'SUBSTFN,'!&GETTEMP);
- PUT('T4,'SUBSTFN,'!&GETTEMP);
- PUT('L1,'SUBSTFN,'!&GETTEMPLBL);
- PUT('L2,'SUBSTFN,'!&GETTEMPLBL);
- PUT('L3,'SUBSTFN,'!&GETTEMPLBL);
- PUT('L4,'SUBSTFN,'!&GETTEMPLBL);
- % Emit functions
- PUT('!*LOAD,'EMITFN,'!&EMITLOAD);
- PUT('!*STORE,'EMITFN,'!&EMITSTORE);
- PUT('!*JUMP,'EMITFN,'!&EMITJUMP);
- PUT('!*LBL,'EMITFN,'!&EMITLBL);
- PUT('!*ADDMEM,'EMITFN,'!&EMITMEMMOD);
- PUT('!*MPYMEM,'EMITFN,'!&EMITMEMMOD);
- PUT('!*ADDMEM, 'UNMEMMOD, '!*WPLUS2);
- PUT('!*MPYMEM, 'UNMEMMOD, '!*WTIMES2);
- % In memory operations
- PUT('WPLUS2,'MEMMODFN,'!*ADDMEM);
- PUT('WTIMES2,'MEMMODFN,'!*MPYMEM);
- % Flip jump for conditional jump macros
- PUT('!*JUMPEQ,'NEGJMP,'!*JUMPNOTEQ);
- PUT('!*JUMPNOTEQ,'NEGJMP,'!*JUMPEQ);
- PUT('!*JUMPTYPE,'NEGJMP,'!*JUMPNOTTYPE);
- PUT('!*JUMPNOTTYPE,'NEGJMP,'!*JUMPTYPE);
- PUT('!*JUMPINTYPE,'NEGJMP,'!*JUMPNOTINTYPE);
- PUT('!*JUMPNOTINTYPE,'NEGJMP,'!*JUMPINTYPE);
- PUT('!*JUMPWEQ,'NEGJMP,'!*JUMPWNEQ);
- PUT('!*JUMPWNEQ,'NEGJMP,'!*JUMPWEQ);
- PUT('!*JUMPWLESSP,'NEGJMP,'!*JUMPWGEQ);
- PUT('!*JUMPWGEQ,'NEGJMP,'!*JUMPWLESSP);
- PUT('!*JUMPWLEQ,'NEGJMP,'!*JUMPWGREATERP);
- PUT('!*JUMPWGREATERP,'NEGJMP,'!*JUMPWLEQ);
- % Assorted other flags
- FLAG('(!*JUMP !*LINKE !*EXIT),'TRANSFER);
- FLAG('(!*LINK !*LINKE),'UNKNOWNUSE);
- PUT('!*LINK, 'EXITING, '!*LINKE);
- % Initialize variables
- !*MSG := T; % Do print messages
- !*INSTALLDESTROY := NIL;
- !*USINGDESTROY := T;
- !*SHOWDEST := NIL;
- !*NOFRAMEFLUID := T;
- !*USEREGFLUID := NIL;
- !*NOLINKE := NIL; %. Permit LINKE
- !*ORD := NIL; %. Dont force ORDER
- !*R2I := T; %. Do convert Rec to Iter
- GLOBALGENSYM!&:=LIST GENSYM(); % initialize symbol list
- MAXNARGS!&:=15;
- LASTACTUALREG!& := 5;
- END;
|