; SUBROUTINE REPEAT(IN,OUT,I{,LEN{,ERR}}) ; ; CONCATENATES STRING IN WITH ITSELF TO PRODUCE I COPIES IN ; STRING OUT. LEN IS THE MAXIMUM LENGTH OF OUT, AND ERR IS SET ; .TRUE. IF THE STRING IS TRUNCATED TO LEN. .TITLE REPEAT .IDENT /V2/ .PSECT .GLOBL REPEAT REPEAT: MOV (R5)+,-(SP) MOV (R5)+,R1 MOV R1,R3 MOV (R5)+,R2 CLRB (R2) MOV @(R5)+,R0 BEQ REPTA CMPB #4 ,(SP) BHI REPTB MOV @(R5)+,R4 REPTD: MOVB (R1)+,(R2)+ BEQ REPTC DEC R4 BNE REPTD CLRB (R2)+ CMPB #5 ,(SP) BHI REPTA DEC R0 BNE REPTE TSTB (R1) BEQ REPTA REPTE: MOVB #177777 ,@(R5)+ REPTA: TST (SP)+ RTS PC REPTC: DEC R0 BEQ REPTA DEC R2 MOV R3,R1 BR REPTD REPTB: MOVB (R1)+,(R2)+ BNE REPTB DEC R0 BEQ REPTA DEC R2 MOV R3,R1 BR REPTB .END