.TITLE PAIR ; JEFFREY KODOSKY ARL NOV75 ; ; SUBR ; ENTRY: 2 ARGS ; ; EXIT: 1 ARG ; C BIT SET IF UNEQUAL LENGTH LISTS ; ERRORS: NONE ; CALLS: GETC ; CONS ; CAR ; CDR .GLOBL PAIR,ZPAIR,QGETC,QCAR,QCDR,QCONS PAIR: ROOM 4 CLR -(R5) ;RESULT MOV R5,R0 MOV R0,-(R5);OPEN CDR PAIR1: MOV 6(R5),R3;LIST2 BEQ PAIR4 MOV R3,-(R5) QCDR MOV @R5,10(R5) ;LIST2:=CDR[LIST2] MOV R3,@R5 QCAR MOV 6(R5),R3 BEQ PAIR6 MOV R3,-(R5) QCDR MOV @R5,10(R5) ;LIST1:=CDR[LIST1] MOV R3,@R5 QCAR QCONS QGETC ;(CAR[LIST1] . CAR[LIST2]) MOV (R5)+,R0 MOV R0,@2(R5) ;CHAIN TO PREVIOUS RESULT MOV (R5)+,(R0)+ MOV R0,@R5 ;NEW OPEN CDR BR PAIR1 PAIR4: TST 4(R5) BNE PAIR7 ;JUMP IF LISTS UNEQUAL LENGTH TST (R5)+ ;POP OPEN CDR PAIR5: MOV (R5)+,@R5 ;MOVE DOWN RESULT MOV (R5)+,@R5 JMP @-(R4) PAIR6: TST (R5)+ ;POP CAR[LIST2] PAIR7: TST (R5)+ ;POP OPEN CDR OF RESULT SEC ;SET C BIT BR PAIR5 ZPAIR=.-PAIR .END