$MACRO LEN string ?? 2 mov #@{1},r0 #@2=. tstb (r0)+ bne #@2 sub #@{1},r0 dec r0 $ENDM / PROGRAM cat ; AUTO s[100.] ; AUTO t[100.] ; FUNCTION main[argc,argv] ; LET s = #0 ; LET t = "~new string here~" ; . cat[&s,"start",.argv[#1],"end:",#0] ; . cat[&s,t,&s,#0] ; PRINTF "-%s-" &s ; RET FUNCTION cat[too,a1,a2,a3,a4,a5] LET r4 = &a1 DO FOREVER IF (r4) = #0 RET ELSE . cat$[too,(r4)] FI add #2,r4 OD RET FUNCTION cat$[too,from] LET r4 = from LEN r4 mov r0,r2 LEN too mov r0,r3 LET r0 = too + r3 IF r2 GT #0 10$: movb(r4)+,(r0)+ sob r2,10$ FI clrb (r0) RET FUNCTION moveb[from,too,n] LET r0 = too LET r1 = from LET r2 = n IF r2 GE #0 10$: movb (r1)+,(r0)+ sob r2,10$ FI RET FUNCTION scopy[a,b] clrb @a(r5) . cat[a,b,#0] RET .end