Read an interesting post on print using which the ZX81 doesn’t have. So, I wrote my own version.
PROG : 16509
D-FILE: 17986
VARS : 18779
E-LINE: 18780
STKBOT: 18780
STKEND: 18780
9999 means line number
PRINT means treat as KEYWORD P
10 REM *PRINT USING**SLR/2024*
20 LET I=0
30 LET XPI=ATN (1)*4
40 LET XA=I*XPI/180
50 LET XS=SIN (XA)
60 LET XC=COS (XA)
70 LET K=INT (8+8*XS)
80 LET U$="NNN NN.NN NN.NN.I,X
A,XS;"
90 GOSUB 200
100 PRINT "
"( TO K);"*"
110 IF I>=360 THEN GOTO 140
120 LET I=I+30
130 GOTO 40
140 PAUSE 1500
150 CLS
160 RUN
170 SAVE "PU"
180 RUN
200 REM **PRINT USING**
210 DIM V(10)
220 GOSUB 500
300 REM **PRINT STRING**
310 LET L=1
320 LET VAR=1
330 IF U$(L)="." THEN RETURN
340 IF U$(L)="N" THEN GOTO 400
350 PRINT U$(L);
360 LET L=L+1
370 GOTO 330
400 REM **GET FORMAT**
410 LET INT=0
420 LET FRA=-1
430 IF U$(L)="N" THEN LET INT=I
NT+1
440 IF U$(L)="." THEN GOTO 700
450 IF U$(L)<>"N" THEN GOTO 750
460 LET L=L+1
470 GOTO 430
500 REM **GET VARS**
510 DIM V(10)
515 LET VAR=1
520 LET L=1
530 IF U$(L)="." OR U$(L)=","
THEN GOSUB 600
535 IF U$(L)=";" THEN RETURN
540 LET L=L+1
550 IF L<=LEN U$ THEN GOTO 530
560 RETURN
600 REM **GET VAR**
610 LET V$=""
620 LET L=L+1
630 IF U$(L)="," OR U$(L)=";"
THEN GOTO 660
640 LET V$=V$+U$(L)
650 GOTO 620
660 LET V(VAR)=VAL V$
670 LET VAR=VAR+1
675 LET L=L-1
690 RETURN
700 REM **DEAL WITH FRACTIONAL
**
710 GOSUB 800
720 LET FRA=0
725 LET INT=0
730 PRINT ".";
740 GOTO 460
750 GOSUB 800
760 LET VAR=VAR+1
770 GOTO 330
800 REM **PRINT FORMAT**
810 IF FRA=0 THEN GOTO 850
820 LET V$=STR$ INT V(VAR)
830 PRINT " "( TO INT-
LEN V$);V$;
840 RETURN
850 LET V$=STR$ (V(VAR)-INT V(V
AR))
851 IF LEN V$>1 AND V$(1)="0"
THEN LET V$=V$(2 TO )
852 IF V$(1)="." THEN LET V$=V$
(2 TO )
855 IF LEN V$>INT THEN LET V$=V
$( TO INT)
860 PRINT V$;"00000000"( TO INT
-LEN V$);
870 RETURN