ZX81 Listing for pu.p


ZX81 program listing for *PRINT USING**SLR/2024*

*PRINT USING**SLR/2024* (pu.p)

Read an interesting post on print using which the ZX81 doesn’t have. So, I wrote my own version.


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 17986
VARS  : 18779
E-LINE: 18780
STKBOT: 18780
STKEND: 18780


LEGEND

9999 means line number
PRINT means treat as KEYWORD P


PROGRAM LISTING

  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