.TITLE PROGN ; JEFFREY KODOSKY ARL NOV75 ; ; FSUBR ; ENTRY: 1 ARG ; EXIT: 1 ARG ; ERRORS: NONE ; CALLS: EVAL ; CDR ; CAR .GLOBL PROGN,ZPROGN,$ALIST,QCDR,QCAR,QEVAL PROGN: ROOM 3 MOV @R5,-(R5) MOV $ALIST,2(R5) ;INSERT CURRENT CONTEXT CLR R3 PROGN1: MOV @R5,-(R5) ;IF LIST END RETURN LAST RESULT BEQ PROGN5 QCDR ;SAVE CDR OF LIST MOV (R5)+,R0 MOV @R5,-(R5) MOV R0,2(R5) QCAR ;EVALUATE CAR OF LIST QEVAL MOV (R5)+,R3;POP RESULT MOV 2(R5),$ALIST BR PROGN1 PROGN5: CMP (R5)+,(R5)+ MOV R3,@R5 JMP @-(R4) ZPROGN=.-PROGN .END