; .NLIST TOC ;NO TABLE OF CONTENTS .TITLE IRNSC .SBTTL NUMBER OF SIGNIFICANT CHARACTERS ; ;* FUNCTION IRNSC (IVEC, IS, NCH) ; ; RETURNS NUMBER OF SIGNIFICANT CHARACTERS ; WHERE ; IVEC = INTEGER*2 VECTOR OF ASCII CHARS ; IS = START POSITION IN IVEC ; NCH = NUMBER OF CHARS TO SEARCH ; ; BACKSCANS IVEC STARTING WITH IVEC(IS+NCH-1) UNTIL FIRST ; NON-BLANK CHARACTER IS FOUND ; E.G. IVEC = '13 CHARACTERS ' ; ICH = IRNSC(IVEC,1,17) ; (ICH IS SET TO 13) ; ; ; ;- BLANK: .ASCII / / .EVEN ; IRNSC:: MOV (R5)+,R1 ;NUMBER OF ARGS(UPDATE R5 PAST) MOV (R5)+,R1 ;ADDR OF IVEC ADD @(R5)+,R1 ;START CHAR IN IVEC DEC R1 ;+1 OFFSET MOV @(R5)+,R0 ;GET NCH ADD R0,R1 ;POSITION OF LAST CHAR TO BACKSCAN ; ; BEGIN LOOP TO BACKSCAN TILL NON-BLANK CHAR FOUND ; LOOP: CMPB -(R1),BLANK ;CHECK IF BLANK BNE DONE SOB R0,LOOP ;DECREMENT NCH, R0 RETURNS FUNCTION RESULT ; DONE: RTS PC ;RETURN TO CALLER .END