.TITLE GNBLK - GET NEXT NON-BLANK CHARACTER .IDENT "01" ; ; ; ; VERSION: 01 ; BY: H.LEV ; DATE: 1/25/74 ; ; THIS SUBROUTINE GETS THE NEXT NON-BLANK CHARACTER AND TESTS ; FOR END OF LINE ; .MCALL RETURN ; ; EQUATES SYMBOLS ; CR = 15 ; CARRIAGE RETURN ESC = 33 ; ESCAPE SPA = 40 ; SPACE ;+ ; *** - $GNBLK - GET NEXT CHARACTER FROM BUFFER AND FIND NEXT NON-BLANK ; *** - $NNBLK - STARTING WITH CHARACTER IN R2, FIND NEXT NON-BLANK ; THIS SUBROUTINE GETS THE NEXT NON-BLANK CHARACTER AND ; TESTS IT FOR BEING AN END OF LINE CHARACTER. ; ; INPUT: ; R0 - BUFFER POINTER ; R2 - $NNBLK ONLY - THE FIRST CHARACTER TO BE TESTED ; ; OUTPUT: ; R0 - UPDATED TO POINT TO NEXT CHARACTER IN BUFFER ; R2 - FIRST NON-BLANK FOUND ; CARRY CLEAR - NO END OF LINE FOUND ; CARRY SET - END OF LINE (CR, ESC) FOUND, ITS IN R2. ; ;- .PSECT CODE,RO $GNBLK::MOVB (R0)+,R2 ; GET NEXT CHARACTER $NNBLK::CLR R1 ; ZERO BLANK COUNT 5$: CMPB R2,#SPA ; IS IT BLANK? BNE 10$ ; NO INC R1 ; YES, SET BLANK FOUND MOVB (R0)+,R2 ; GET NEXT CHARACTER BR 5$ ; LOOP UNTIL NON-BLANK 10$: CMPB R2,#CR ; IS IT CARRIAGE RETURN (EOL)? BEQ 20$ ; YES CMPB R2,#ESC ; NO, IS IT ESCAPE (EOL)? BEQ 20$ ; YES TST R2 ; ZERO BYTE? BEQ 20$ ; YES CLC ; NO, SET NOT EOL FLAG BR 30$ ; 20$: SEC ; SET END OF LINE FLAG 30$: RETURN ; .END