.TITLE MVSTR .SBTTL MVSTR FUNCTION FOR FORTRAN (OPTIMIZED) .GLOBL MVSTR ; ; CALL: ; ; CALL MVSTR(S1,S2) ;OR CALL MVSTR(S1,S2,LEN) ; ; WHERE S1 AND S2 ARE THE USUAL STRING ARGUMENTS; ; LEN IS THE LENGTH FOR THE MOVE. ; STRING S2 IS MOVED TO S1 (NOTE: DEST <- SOURCE). ; IF LEN IS <=0 OR OMITTED, MOVE UP TO AND INCLUDING THE FIRST NULL. ; OTHERWISE, MOVE UP TO THE FIRST NULL, OR MOVE LEN-1 ; CHARACTERS, THEN ADD A NULL. ; MVSTR: MOV 2(R5),R1 ;POINT TO S1 MOV 4(R5),R2 ;AND S2 CMPB @R5,#2 ;2-ARGUMENT FORM? BEQ MVS1 BLT RETURN ;LESS MOV @6(R5),R3 ;GET LENGTH DEC R3 ;ALLOW FOR TERMINATING NULL BLE MVS1 ;IF <=0, SAME AS 2-ARG FORM 1$: MOVB (R2)+,(R1)+ ;MOVE BEQ RETURN ;NULL? SOB R3,1$ ;COUNT AND LOOP CLRB (R1)+ BR RETURN MVS1: MOVB (R2)+,(R1)+ ;MOVE TO NULL BNE MVS1 RETURN: RTS PC .END