.TITLE BINRTA .MCALL .TTYOUT,.PRINT,.EXIT ; TEST CODE BINRTA::CLR R5 1$: MOV R5,R0 ADD #'0,R0 .TTYOUT MOV R5,R0 MOV #DATA,R1 MOV #DATEND,R2 JSR PC,BINSRC BEQ 2$ .PRINT #4$ BR 3$ 2$: .PRINT #5$ 3$: INC R5 CMP R5,#^D10 BLT 1$ .EXIT 4$: .ASCII / NOT/ 5$: .ASCIZ / FOUND/ .EVEN ; TEST DATA DATA: .WORD 1, 2, 3, 5, 7 DATEND = . + 2 ; BINARY SEARCH ; INPUT: R0 = VALUE, R1 = LOW PTR, R2 = HIGH PTR ; OUTPUT: ZF SET IF VALUE FOUND; R1 = INSERTION POINT BINSRC: BR 3$ 1$: MOV R1,R3 ADD R2,R3 ROR R3 CMP (R3),R0 BGE 2$ ADD #2,R3 MOV R3,R1 BR 3$ 2$: SUB #2,R3 MOV R3,R2 3$: CMP R2,R1 BGE 1$ CMP (R1),R0 RTS PC .END BINRTA