perm filename KLNODE[LSP,BGB] blob
sn#038363 filedate 1973-05-01 generic text, type T, neo UTF8
00100 TITLE KLNODE - KILL LISP NODES - BGB - 1 MAY 1973.
00200
00300 COMMENT ⊗ KLNODE PLACES NON ATOMIC LISP NODES ONTO THE LISP
00400 FREE STORAGE LIST. AFTER A KLNODE ANY POINTER TO THAT STRUCTURE, NOW
00500 POINT INTO THE FREE STORAGE LIST AND SO CAN GENERATE THE CLASSICAL
00600 WALL PAPER PATTERN CALLED "NIL PAPER"⊗
00700
00800 ;LISP ACCUMULATOR NAMES.
00900 A←←1 ;LISP FIRST ARG AND VALUE RETURN.
01000 B←←2 ;2ND ARG OR TEMPORARY.
01100 P←←14 ;LISP PDL.
01200 F←←15 ;HEAD OF LISP FREE STORAGE LIST.
01300
01400 INTERN KLNODE
01500 KLNODE: CAILE A,377777↔POPJ P, ;EXIT ON ATOMIC ARG.
01600 HLLE B,(A)↔AOJE B,.-2 ;EXIT ON ATOMIC ARG.
01700 PUSH P,(A) ;SAVE NODE'S CONTENTS.
01800 HRRZM F,(A)↔HRRZM A,F ;CONS NODE TO FREE LIST.
01900 HLRZ A,(P)↔PUSHJ P,KLNODE ;KILL CAR OF NODE.
02000 POP P,A↔HRRZS A↔JRST KLNODE ;KILL CDR OF NODE.
02100 END