EJECT PAGE/100-140 POP1=POP PUSH1=PUSH RET1, EVRET EV1=EV TEST1=TEST /LISTIN2 ROUTINE /INPUTS A LIST AND RETURNS A REFERENCE TO IT. ALSTIN, JMS I LITEST /REALLY? JMP I LIRET /NO JMS INCHR /READ A CHAR INTO INBUFF JMS INLIST /GET A LIST OR AN ATOM JMP I LIRET /RETURN LIRET=RET1 LITEST=TEST1 INLIST, 0 JMS I INPUSH INLIST JMS I INPUSH LILIST JMS I INPUSH LILAST TAD INBUFF TAD INMCL /-')' SNA HLT /')' CANNOT OCCUR HERE TAD INDIF /')'-'(' SZA CLA JMP INAT /READ IN AN ATOM TAD LIALST /A(LILIST) DCA LILAST / INTO LILAST INBACK, JMS INCHR /READ A CHAR INTO INBUFF DCA I LILAST /NIL INTO L(LILAST) TAD INBUFF TAD INMCL /-')' SNA CLA JMP INRET /RETURN JMS I INEXTR /EXTRACT DCA INCELL / INTO CELL TAD INCELL /A(CELL+1) INTO L(LAST) IAC DCA I LILAST TAD INCELL /A(CELL) INTO LAST DCA LILAST JMS INLIST /GET A LIST DCA I LILAST / INTO L(INLAST) ISZ LILAST /INLAST=INLAST+1 JMP INBACK INAT, JMS I INAM /GET AN ATOM INTO LILIST INRET, TAD LILIST JMS I INPOP LILAST JMS I INPOP LILIST JMS I INPOP INLIST JMP I INLIST INCHR, 0 /GET A CHARACTER TAD INBUF2 /SHIFT BUFFER DCA INBUFF DCA INBUF2 TAD INBUFF /BUFFER EMPTY? SZA CLA JMP INARND JMS I EVIN DCA INBUFF TAD INBUFF TAD INMQUT /-"'" SZA CLA JMP .+4 JMS I EVIN TAD IN4000 DCA INBUFF TAD INBUFF JMS I INQCTL /CONTROL? JMP INARND /NO TAD INBUFF /YES: SET BUFF2 TO BUFF DCA INBUF2 TAD INSP /SET BUFF TO SPACE DCA INBUFF INARND, TAD INBUFF /PRES CHAR = ' '? TAD INMSP /-' ' SZA CLA JMP INZIP /NO TAD INLCHR/YES: LAST CHAR = CONTROL ( '(',')',' ' )? JMS I INQCTL /CONTROL? JMP INZIP /NO JMP INCHR+1 INZIP, TAD INBUFF /LAST CHAR = PRES CHAR DCA INLCHR JMP I INCHR LILAST, 0 INAM, INATOM INQCTL, INCTLQ INBUFF, 0 INBUF2, 0 INMCL, -51 INMSP, -40 INSP, 40 INMQUT, -47 INDIF, 51-50 INDIF2, 50-40 INEXTR, XTRACT INCELL, 0 INLCHR, 40 LIALST, LILIST IN4000, 4000 INPUSH=PUSH1 INPOP=POP1 /NOT ROUTINE /IF ARG VAL=0 THEN RETURNS 1; ELSE RETURNS 0. ANOT, JMS I NTEV /GET AN ARG JMS I NTTEST /REALLY? JMP I NTRET /NO SNA CLA /VALUE T? IAC /NO: RETURN T JMP I NTRET /ELSE RETURN F NTEV=EV NTTEST=TEST NTRET=RET1 /ENTRY ROUTINE /USED IN CONJUNCTION WITH QUOTE. ENTERS THE ROUTINE INDICATED / BY THE CONTENTS OF THE CONTENTS OF THE CELL FOLLOWING / THE CALL ON 'ENTRY'. AENTRY, JMS I EV DCA ENSAV ISZ I ENEVAL TAD I ENEVAL DCA ENLOC TAD ENSAV DCA I ENLOC STA TAD I ENEVAL DCA I ENEVAL JMS I EV JMP I ENRET ENEVAL, LEVAL ENLOC, 0 ENSAV, 0 ENRET=RET1 PAGE /Added by VRS