; SUBROUTINE SCOPY(IN,OUT{,LEN{,ERR}}) ; LOGICAL*1 ERR ; ; COPIES STRING IN TO STRING OUT. ; IF LEN IS GIVEN IT SPECIFIES THE MAXIMUM LENGTH OF OUT AND IF ; THE STRING IS TRUNCATED TO THIS LENGTH, ERR(IF PRESENT) WILL BE ; SET .TRUE.. ; IF LEN=0 OUT IS SET TO A NULL STRING AND ERR IS .TRUE. UNLESS IN IS NULL. .TITLE SCOPY .IDENT /V2/ .PSECT .GLOBL SCOPY SCOPY: MOV (R5)+,R3 MOV (R5)+,R1 MOV (R5)+,R2 CMPB #2 ,R3 BEQ SCOPYA MOV @(R5)+,R4 ; FETCH LEN BEQ SCOPYD ; RETURN NULL IF LEN=0 SCOPYC: MOVB (R1)+,(R2)+ BEQ SCOPYB DEC R4 BNE SCOPYC SCOPYD: CLRB (R2)+ CMPB #4 ,R3 BHI SCOPYB TSTB (R1) BEQ SCOPYB MOVB #177777 ,@(R5)+ SCOPYB: RTS PC SCOPYA: MOVB (R1)+,(R2)+ BNE SCOPYA RTS PC .END