EJECT PAGE/100-320 PUSH11=PUSH POP11=POP RET11, EVRET EV11=EV TEST11=TEST EVAL11, LEVAL /NULL ROUTINE /RETURNS +1 IF THE CELL POINTED TO BY THE ARGUMENT IS NULL. /RETURNS 0 OTHERWISE. ANULL, JMS I ANEV /GET ARG JMS I ANTEST JMP I ANRET RAR CLL SNA CLA IAC JMP I ANRET ANTEST=TEST11 ANEV=EV11 ANRET=RET11 /PROG ROUTINE /PERMITS IN-LINE CODING OF LISP INSTRUCTIONS /VALUE RETURNED IS THAT OF LAST ARGUMENT /FORM: / PROG / T1 / T2 / . / . / . / END / (INSTRUCTIONS) / END /WHERE TI IS A TEMPORARY WORKING LOCATION WHICH IS PUSHED / DOWN ON ENTRY TO PROG & SET TO NULL. IT IS POPPED ON / EXIT. APROG, JMS I PRPUSH /RECURSIVE SELF-PROTECTION PRPNT TAD I PREVAL /PUSH THE TEMP LOCATIONS & SET THEM TO NULL DCA PRPNT DCA I PR1 PRLP1, ISZ PRPNT TAD I PRPNT DCA PRTMP TAD I PRTMP /-1? CMA SNA CLA JMP PRON JMS I PRPUSH PRTMP, 0 DCA I PRTMP JMP PRLP1 PRON, TAD PRPNT DCA I PREVAL PRON2, JMS I PREV /GET AN ARGUMENT CMA SNA /END? JMP PRZOT /YES CMA /NO DCA I PR1 JMP PRON2 PRZOT, STA /POP TEMP LOCS TAD PRPNT DCA PRPNT TAD I PRPNT TAD PRMPROG SNA CLA JMP PRZAP TAD I PRPNT DCA PRTMP2 JMS I PRPOP PRTMP2, 0 JMP PRZOT PRZAP, TAD I PR1 JMS I PRPOP PRPNT JMP I PRRET PRPNT, 0 PR1, BGVAL PREVAL=EVAL11 PRMPROG, -PROG PRPUSH=PUSH11 PRPOP=POP11 PREV=EV11 PRRET=RET11 /BINDEC ROUTINE BINDEC, 0 /CONVERTS A BINARY WORD TO A CHARACTER CODED ATOM. DCA BIN1 /SAVE DCA BINCTR /INITIALIZE DCA BINSW TAD BININS DCA BINARR TAD I BINEV /SAVE DCA BINSAV TAD EVIN /SAVE INPUT ROUTINE DCA BININ TAD BINSUB DCA EVIN EVAL /CONVERT LISTIN DCA BINCTR /SAVE TAD BININ /RESTORE INPUT ROUTINE DCA EVIN TAD BINSAV /RESTORE DCA I BINEV TAD BINCTR JMP I BINDEC /RETURN BIN1, 0 BININ, 0 BINCTR, 0 BINSW, 0 BININS, TAD BIN10P BINEV=EVAL11 BINSAV, 0 BINSTR, 0 BINSUB, BINBIN BINBIN, 0 /CONVERSION SUBROUTINE. LEADING ZEROS STRIPPED. TAD BINCTR /0 IS CONVETED TO 0. TAD BINM3 SNA /LAST? ISZ BINSW /YES SMA SZA CLA /THROUGH? JMP BINRET /YES ISZ BINCTR /INCREMENT COUNTER BINARR, TAD BIN10P /GET DIVISOR ISZ .-1 DCA .+3 TAD BIN1 /GET DIVIDEND MQL DIV /DIVIDE 0 DCA BIN1 MQA /GET REMAINDER DCA BINLOC TAD BINSW /SWITCH SET? SZA CLA JMP BINON /YES TAD BINLOC /NO; = 0? SNA CLA JMP BINBIN+1 /YES ISZ BINSW /NO BINON, TAD BINLOC TAD BIN60 /MAKE STRIPPED ASCII CHAR JMP I BINBIN /RETURN BINRET, TAD BIN40 /BL JMP I BINBIN BINM3, -3 BINLOC, 0 BIN40, 40 BIN60, 60 DECIMAL BIN10P, 1000 100 10 1 OCTAL PAGE /Added by VRS