1 REM PR_STR(AZ%, PR%) -> R$
6 REM PRINT "AZ%: " + STR$(AZ%) + ", T%: " + STR$(T%) + ", V%: " + STR$(Z%(AZ%,1))
7 IF T
%=14 THEN AZ
%=Z
%(AZ
%,1): GOTO PR_STR_RECUR
8 IF T
%=0 THEN R
$="nil": RETURN
9 IF (T
%=1) AND (Z
%(AZ
%,1)=0) THEN R
$="false": RETURN
10 IF (T
%=1) AND (Z
%(AZ
%,1)=1) THEN R
$="true": RETURN
11 IF T
%=2 THEN PR_INTEGER
12 IF (T
%=4) AND (PR
%=0) THEN PR_STRING
13 IF (T
%=4) AND (PR
%=1) THEN PR_STRING_READABLY
14 IF T
%=5 THEN PR_SYMBOL
18 IF T
%=9 THEN PR_FUNCTION
19 IF T
%=10 THEN PR_MAL_FUNCTION
27 REM Remove initial space
28 R
$=RIGHT$(R$, LEN(R
$)-1)
34 R
$=CHR$(34) + ZS
$(Z%(AZ%,1)) + CHR
$(34)
40 IF T
%=6 THEN RR
$=RR$+"("
41 IF T
%=7 THEN RR
$=RR$+"["
42 IF T
%=8 THEN RR
$=RR$+"{"
43 REM push where we are in the sequence
47 IF Z
%(AZ
%,1) = 0 THEN PR_SEQ_DONE
49 REM Push type we are rendering on the stack
51 ZZ
%(ZL
%) = Z
%(AZ
%,0)AND15
53 REM if we just rendered a non-sequence, then append it
54 IF (T
% < 6) OR (T
% > 8) THEN RR
$=RR$+R$
55 REM pop type off stack and check it
58 REM Go to next list element
61 IF Z
%(AZ
%,1) <> 0 THEN RR
$=RR$+" "
65 T%=Z%(ZZ%(ZL%),0)AND15
66 REM pop where we are the sequence
68 IF T%=6 THEN RR$=RR$+")"
69 IF T%=7 THEN RR$=RR$+"]"
70 IF T%=8 THEN RR$=RR$+"}"
75 R$="#<function" + STR$(T1%) + ">"
79 AZ%=Z%(T1%+1,0): GOSUB PR_STR_RECUR
81 AZ
%=Z
%(T1
%,1): GOSUB PR_STR_RECUR
82 R
$=T7$ + " " + R$
+ ")"
85 REM PR_STR_SEQ(AZ%, PR%, SE$) -> R$
90 IF Z
%(T9
%,1)=0 THEN R
$=R1$: RETURN
91 AZ
%=T9
%+1: GOSUB PR_STR
92 REM goto the next sequence element
94 IF Z
%(T9
%,1)=0 THEN R1
$=R1$+R$
95 IF Z
%(T9
%,1)<>0 THEN R1
$=R1$+R$+SE$