.TITLE SPL ; JEFFREY KODOSKY ARL NOV75 ; ; UTILITY: SEARCH PROPERTY LIST OF ARG1 FOR INDICATOR ARG2 ; ENTRY: 2 ARGS ; ; EXIT: 1 ARG ; R0:=PROP LIST PORTION WHOSE CADR IS ; C BIT IS SET AND NIL RETURNED IF NOT ; FOUND ON PROP LIST OF ; ERRORS: NONE ; CALLS: NONE ; R2,R3 PRESERVED .GLOBL SPL SPL: MOV (R5)+,R0;NO CHECK TO INSURE ARG1 IS LITATM MOV @R5,R1 ;NO CHECK FOR ARG2 EITHER SPL01: BIT #3,@R0 ;ANY UNEXPECTED NUMBERS CAUSE BNE SPL02 ;UNSUCESSFUL SEARCH MOV 2(R0),R0;CDR[ARG1] BIC #3,R0 ;REMOVE ANY FLAG BITS BEQ SPL02 ;JUMP IF END OF PROP LIST BIT #3,@R0 ;UNEXPECTED NUMBERS CAUSE SEARCH FAIL BNE SPL02 CMP @R0,R1 ;EQ[CADR[ARG1];ARG2]? BEQ SPL03 ;JUMP IF INDICATOR FOUND MOV 2(R0),R0;ARG1:=CDDR[ARG1] BIC #3,R0 ;LOOP BACK IF PROP LIST NOT ENDED MOV R0,-2(R5) BNE SPL01 ;(IT SHOULDN'T END ON ODD NUMBER CELL) SPL02: CLR @R5 ;PROPERTY LIST EXHAUSTED: RETURN NIL SEC ;AND SET SEARCH FAIL FLAG JMP @-(R4) SPL03: MOV R0,@R5 ;RETURN REMAINDER OF PROP LIST MOV -2(R5),R0 CLC JMP @-(R4) .END