; SUBROUTINE CONCAT(A,B,OUT{,LEN{,ERR}}) ; ; CONCATENATES STRINGS A(LEFT) AND B(RIGHT) GIVING STRING OUT. ; LEN IS THE MAXIMUM LENGTH OF OUT, AND ERR IS SET .TRUE. IF ; THIS IS EXCEEDED, IN WHICH CASE THE STRING IS TRUNCATED. .TITLE CONCAT .IDENT /V2/ .PSECT .GLOBL CONCAT CONCAT: MOV (R5)+,R3 MOV (R5)+,R1 MOV (R5)+,R2 MOV (R5)+,R0 CMPB #3 ,R3 BEQ CONCTA MOV @(R5)+,R4 CONCTH: MOVB (R1)+,(R0)+ BEQ CONCTG DEC R4 BNE CONCTH CONCTD: CLRB (R0)+ CMPB #5 ,R3 BHI CONCTB TSTB (R1) BNE CONCTF TSTB (R2) BEQ CONCTB CONCTF: MOVB #177777 ,@(R5)+ CONCTB: RTS PC CONCTG: CMPB -(R0),-(R1) CONCTC: MOVB (R2)+,(R0)+ BEQ CONCTB DEC R4 BNE CONCTC BR CONCTD CONCTA: MOVB (R1)+,(R0)+ BNE CONCTA DEC R0 CONCTE: MOVB (R2)+,(R0)+ BNE CONCTE RTS PC .END