EJECT PAGE/100-180 EV3=EV POP3=POP PUSH3=PUSH RET3, EVRET /CONS ROUTINE /FORMS A NEW CELL WHOSE DOWN POINTER POINTS TO THE FIRST /PARAMETER, AND WHOSE RIGHT POINTER POINTS TO THE SECOND /PARAMETER. THE SECOND PARAMETER MUST BE ZERO OR A LIST /REFERENCE (1 IN BIT 11). ACONS, JMS I ACPUSH /RECURSIVE SELF-PROTECTION ACLST1 JMS I ACEV /GET ARGUMENT DCA ACLST1 JMS I ACEV /GET 2ND ARG DCA ACLST2 /ARGUMENT PROTECTION JMS I ACTEST JMP ACEXIT JMS I ACXTR DCA ACVAL TAD ACLST1 DCA I ACVAL ISZ ACVAL TAD ACLST2 SNA JMP ACOK RAR SNL HLT /INVALID ARGUMENT RAL ACOK, DCA I ACVAL DCA ACLST2 TAD ACVAL ACEXIT, JMS I ACPOP ACLST1 JMP I ACRET ACVAL, 0 ACRET=RET3 ACTMP, 0 ACXTR, XTRACT ACTEST, ATEST ACPUSH=PUSH3 ACPOP=POP3 ACEV=EV3 /INATOM ROUTINE INATOM, 0 TAD LILLST /SET BLD TO A(LILIST) DCA INBLD INEXEL, DCA I INBLD /SET L(BLD) TO NIL JMS INCTL /SKIP IF BUFF NOT ' ', ERROR EXIT IF '(' OR ')' JMP INOUT /RETURN MQL /SET MQ TAD I INLBUF SHL 5 DCA INSAVE /STORE SHIFTED CHAR IN INSAVE JMS I INCHRL /GET ANOTHER JMS INCTL /CONTROL? JMP INAR2 /YES: SKIP NEXT PART TAD I INLBUF /GET CHAR AND IN77 /MASK OFF TAD INSAVE /ADD INSAVE DCA INSAVE /STORE JMS I INCHRL /GET ANOTHER INAR2, JMS XTRACT /EXTRACT DCA INCEL2 / INTO INCELL TAD INCEL2 /INCELL TO L(INBLD) DCA I INBLD TAD INCEL2 /INCELL+1 INTO INBLD IAC DCA INBLD TAD INSAVE /CHARS INTO L(CELL) DCA I INCEL2 JMP INEXEL INOUT, TAD I LILIST /IS IT 0? TAD INM0 SNA CLA DCA LILIST/YES: RETURN NIL JMP I INATOM INCTL, 0 TAD I INLBUF TAD I INLMCL /-')' SNA HLT TAD I INLDIF /')'-'(' SNA HLT TAD I INLDF2 /'('-' ' SZA CLA ISZ INCTL JMP I INCTL INCTLQ, 0 /SKIP IF CONTROL TAD I INLMCL /-')' SNA ISZ INCTLQ TAD I INLDIF /')'-'(' SNA ISZ INCTLQ TAD I INLDF2 /'('-' ' SNA CLA ISZ INCTLQ JMP I INCTLQ LILLST, LILIST INBLD, 0 INSAVE, 0 IN77, 77 INM0, -6000 INLMCL, INMCL INLDIF, INDIF INLDF2, INDIF2 INLBUF, INBUFF INCHRL, INCHR INCEL2, 0 /XTRACT ROUTINE /EXTRACTS A CELL FROM THE FREE LIST AND RETURNS THE ADDRESS OF /THIS CELL. HD & TL OF THE CELL ARE SET TO NIL. XTRACT, 0 TAD FREE SNA JMP XTARND DCA XTVAL TAD I FREE DCA FREE DCA I XTVAL/SET TL(CELL) TO NIL. (HD(CELL) ALREADY SET TO NIL) STA TAD XTVAL JMP I XTRACT XTARND, JMS I XTCOL JMP XTRACT+1 XTVAL, 0 XTCOL, COLECT /WORK LOCATIONS FOR ENTER/EXIT WORK, 0 PAGE *.-1 ENDWRK=.+1 PAGE /Added by VRS