.TITLE PACKL .ENABL LC ; ; CALL PACKL( STRING, LNGTH ) -- This subroutine takes the specified ; character string an removes all of the spaces and nulls by shifting ; everything to the left of the string. ; ; STRING INPUT: Character string to be packed. ; OUTPUT: Packed character string. ; LNGTH INPUT: Number of characters in the unpacked string. ; OUTPUT: Number of characters in the packed string. ; .PSECT PACKL ; PACKL:: MOV 2(R5),R0 ;GET ADDRESS OF STRING MOV R0,R1 ;DUPLICATE ADDRESS MOV @4(R5),R2 ;GET NUMBER OF CHARACTERS. ; 1$: CMPB (R0),#40 ;IS CHARACTER A ? BEQ 2$ ;BRANCH IF TRUE TSTB (R0) ;IS CHARACTER A ? BEQ 2$ ;BRANCH IF TRUE MOVB (R0)+,(R1)+ ;TRANSFER CHARACTER SOB R2,1$ ;CONTINUE UNTIL DONE BR 3$ ;BRANCH TO COMPLETE 2$: INC R0 ;SKIP CHARACTER SOB R2,1$ ;CONTINUE UNTIL DONE. ; 3$: SUB 2(R5),R1 ;HOW MANY CHARACTERS. MOV R1,@4(R5) ;SAVE NUMBER OF PACKED CHARACTERS RTS PC ;RETURN .END