1 REM PR_STR(AZ, PR) -> R$
6 REM PRINT "AZ: "+STR$(AZ)+", T: "+STR$(T)+", V: "+STR$(Z%(AZ,1))
7 IF T
=0 THEN R
$="nil":RETURN
8 ON T
GOTO PR_BOOLEAN
,PR_INTEGER
,PR_UNKNOWN
,PR_STRING
,PR_SYMBOL
,PR_SEQ
,PR_SEQ
,PR_SEQ
,PR_FUNCTION
,PR_MAL_FUNCTION
,PR_MAL_FUNCTION
,PR_ATOM
,PR_ENV
,PR_RECUR
,PR_FREE
18 IF Z
%(AZ
,1)=0 THEN R
$="false"
24 REM Remove initial space
25 R
$=RIGHT$(R$, LEN(R
$)-1)
28 IF PR
=1 THEN PR_STRING_READABLY
33 S1
$=CHR$(92):S2$=CHR$(92)+CHR$(92):GOSUB REPLACE
: REM escape backslash
34 S1
$=CHR$(34):S2$=CHR$(92)+CHR$(34):GOSUB REPLACE
: REM escape quotes
35 S1
$=CHR$(13):S2$=CHR$(92)+"n":GOSUB REPLACE
: REM escape newlines
36 R
$=CHR$(34)+R$+CHR$(34)
42 IF T
=6 THEN RR
$=RR$+"("
43 IF T
=7 THEN RR
$=RR$+"["
44 IF T
=8 THEN RR
$=RR$+"{"
45 REM push the type and where we are in the sequence
50 IF Z
%(AZ
,1)=0 THEN PR_SEQ_DONE
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 restore current seq type
57 REM Go to next list element
60 IF Z
%(AZ
,1)<>0 THEN RR
$=RR$+" "
65 REM pop where we are the sequence and type
67 IF T=6 THEN RR$=RR$+")"
68 IF T=7 THEN RR$=RR$+"]"
69 IF T=8 THEN RR$=RR$+"}"
74 R$="#<function"+STR$(T1)+">"
78 AZ=Z%(T1+1,0):GOSUB PR_STR_RECUR
80 AZ
=Z
%(T1
,1):GOSUB PR_STR_RECUR
84 AZ=Z%(AZ,1):GOSUB PR_STR_RECUR
88 R
$="#<env"+STR$(AZ)+", data
"+STR$(Z%(AZ,1))+">"
91 R$="#<free memory "+STR
$(AZ)+", next"+STR$(Z%(AZ,1))+">"
94 REM PR_STR_SEQ(AZ, PR, SE$) -> R$
99 IF Z%(T9,1)=0 THEN R$=R1$:RETURN
101 REM goto the next sequence element
103 IF Z%(T9,1)=0 THEN R1$=R1$+R$
104 IF Z%(T9,1)<>0 THEN R1$=R1$+R$+SE$