; SPYBX - BIT SET, CLEAR AND TEST ; ; SPY VS02.0 OCTOBER 23, 1979 FOR IAS VERSION 3.0 ; ; AERONAUTICAL RESEARCH ASSOCIATES OF PRINCETON (A.R.A.P.) ; BOX 2229, PRINCETON, NJ 08540 (609) 452-2950 ; ; AUTHOR: J.D. LEONARD ; ; .TITLE SPYBX ; ; MULTI WORD BIT BITVEC FOR SPY ; ; CALL SPYBS (BITNUM, BITVEC) ; CALL SPYBC (BITNUM, BITVEC) ; LBITON = SPYBT (BITNUM, BITVEC) ; ; WHERE BITNUM - NUMBER OF BIT TO TEST (0-N) ; AND N = (16*DIMENSION OF BITVEC) - 1 ; BITVEC - BIT VECTOR, DIMENSIONED N I*2 WORDS ; SPYBT - LOGICAL FUNCTION ; .TRUE. IF BIT IS SET, .FALSE. IF BIT IS CLEAR ; SPYBS:: CLR R3 BR COMMON ; SPYBC:: MOV #2,R3 BR COMMON ; SPYBT:: MOV #4,R3 ; COMMON: MOV @2(R5),R0 ; BITNUM MOV R0,R1 ; AND R1 FOR MOD 16 BITNUM ASH #-4,R0 ; CALCULATE OFFSET INTO - ASL R0 ; BITVEC (BYTE OFFSET) ADD 4(R5),R0 ; PLUS START OF BITVEC ; BIC #177760,R1 ; 0-15 SIGNIFICANT MOV #1,R2 ; SET TO 1 FOR SET/CLEAR/TEST ASH R1,R2 ; TURN ON APPROPRIATE BIT TO CHECK ; ; JUMP TO THE PROPER ROUTINE ; JMP @TRVEC(R3) ; SET: BIS R2,(R0) BR RETURN ; CLEAR: BIC R2,(R0) BR RETURN ; TEST: BIT R2,(R0) BEQ OFF MOV #177777,R0 ; IT'S ON SPYBT = .TRUE. BR RETURN OFF: CLR R0 ; IT'S OFF, SPYBT = .FALSE. ; RETURN: RETURN ; TRVEC: .WORD SET .WORD CLEAR .WORD TEST ; .END