Basic: enable Travis testing.
[jackhill/mal.git] / basic / debug.in.bas
CommitLineData
a742287e
JM
1REM CHECK_FREE_LIST
2CHECK_FREE_LIST:
3 REM start and accumulator
bbab5c5d
JM
4 P1=ZK
5 P2=0
a742287e 6 CHECK_FREE_LIST_LOOP:
bbab5c5d
JM
7 IF P1>=ZI THEN GOTO CHECK_FREE_LIST_DONE
8 IF (Z%(P1,0)AND31)<>15 THEN P2=-1:GOTO CHECK_FREE_LIST_DONE
9 P2=P2+(Z%(P1,0)AND-32)/32
10 P1=Z%(P1,1)
a742287e
JM
11 GOTO CHECK_FREE_LIST_LOOP
12 CHECK_FREE_LIST_DONE:
bbab5c5d 13 IF P2=-1 THEN PRINT "corrupt free list at "+STR$(P1)
a742287e
JM
14 RETURN
15
9e8f5211 16PR_MEMORY_SUMMARY:
9e8f5211 17 PRINT
0e508fa5
JM
18 PRINT "Free (FRE) :"+STR$(FRE(0))
19 PRINT "Values (Z%) :"+STR$(ZI-1)+" /"+STR$(Z1)
20 GOSUB CHECK_FREE_LIST: REM get count in P2
21 PRINT " used:"+STR$(ZI-1-P2)+", freed:"+STR$(P2);
22 PRINT ", after repl_env:"+STR$(ZT)
23 PRINT "Strings (S$) :"+STR$(S)+" /"+STR$(Z2)
24 PRINT "Stack (X%) :"+STR$(X+1)+" /"+STR$(Z3)
9e8f5211
JM
25 RETURN
26
bbab5c5d 27REM REM PR_MEMORY(P1, P2) -> nil
9e8f5211 28REM PR_MEMORY:
bbab5c5d 29REM IF P2<P1 THEN P2=ZI-1
9e8f5211 30REM PRINT "vvvvvv"
bbab5c5d 31REM PRINT "Z% Value Memory"+STR$(P1)+"->"+STR$(P2);
cc9dbd92 32REM PRINT " (ZI: "+STR$(ZI)+", ZK: "+STR$(ZK)+"):"
bbab5c5d
JM
33REM IF P2<P1 THEN PRINT " ---":GOTO PR_MEMORY_AFTER_VALUES
34REM I=P1
9e8f5211 35REM PR_MEMORY_VALUE_LOOP:
bbab5c5d 36REM IF I>P2 THEN GOTO PR_MEMORY_AFTER_VALUES
9e8f5211 37REM PRINT " "+STR$(I);
bbab5c5d
JM
38REM IF (Z%(I,0)AND31)=15 THEN GOTO PR_MEMORY_FREE
39REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-32)/32);
40REM PRINT ", type: "+STR$(Z%(I,0)AND31)+", value: "+STR$(Z%(I,1));
41REM IF (Z%(I,0)AND31)=4 THEN PRINT " '"+S$(Z%(I,1))+"'";
42REM IF (Z%(I,0)AND31)=5 THEN PRINT " "+S$(Z%(I,1))+"";
9e8f5211
JM
43REM PRINT
44REM I=I+1
bbab5c5d 45REM IF (Z%(I-1,0)AND31)<>10 THEN GOTO PR_MEMORY_VALUE_LOOP
9e8f5211
JM
46REM PRINT " "+STR$(I)+": ";
47REM PRINT "params: "+STR$(Z%(I+1,0))+", env:"+STR$(Z%(I+1,1))
48REM I=I+1
49REM GOTO PR_MEMORY_VALUE_LOOP
50REM PR_MEMORY_FREE:
bbab5c5d 51REM PRINT ": FREE size: "+STR$((Z%(I,0)AND-32)/32)+", next: "+STR$(Z%(I,1));
cc9dbd92 52REM IF I=ZK THEN PRINT " (free list start)";
9e8f5211 53REM PRINT
bbab5c5d 54REM IF (Z%(I,0)AND-32)=64 THEN I=I+1:PRINT " "+STR$(I)+": ---"
9e8f5211
JM
55REM I=I+1
56REM GOTO PR_MEMORY_VALUE_LOOP
57REM PR_MEMORY_AFTER_VALUES:
bbab5c5d
JM
58REM PRINT "S$ String Memory (S: "+STR$(S)+"):"
59REM IF S<=0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STRINGS
60REM FOR I=0 TO S-1
cc9dbd92 61REM PRINT " "+STR$(I)+": '"+S$(I)+"'"
9e8f5211
JM
62REM NEXT I
63REM PR_MEMORY_SKIP_STRINGS:
bbab5c5d 64REM PRINT "X% Stack Memory (X: "+STR$(X)+"):"
cc9dbd92
JM
65REM IF X<0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STACK
66REM FOR I=0 TO X
bbab5c5d 67REM PRINT " "+STR$(I)+": "+STR$(X%(I))
9e8f5211
JM
68REM NEXT I
69REM PR_MEMORY_SKIP_STACK:
70REM PRINT "^^^^^^"
71REM RETURN
70f29a2b 72REM
bbab5c5d 73REM REM PR_OBJECT(P1) -> nil
70f29a2b 74REM PR_OBJECT:
bbab5c5d 75REM RD=0
70f29a2b 76REM
bbab5c5d 77REM RD=RD+1:X=X+1:X%(X)=P1
70f29a2b
JM
78REM
79REM PR_OBJ_LOOP:
bbab5c5d
JM
80REM IF RD=0 THEN RETURN
81REM I=X%(X):RD=RD-1:X=X-1
70f29a2b 82REM
bbab5c5d 83REM P2=Z%(I,0)AND31
70f29a2b 84REM PRINT " "+STR$(I);
bbab5c5d
JM
85REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-32)/32);
86REM PRINT ", type: "+STR$(P2)+", value: "+STR$(Z%(I,1));
87REM IF P2=4 THEN PRINT " '"+S$(Z%(I,1))+"'";
88REM IF P2=5 THEN PRINT " "+S$(Z%(I,1))+"";
70f29a2b 89REM PRINT
bbab5c5d
JM
90REM IF P2<=5 OR P2=9 THEN GOTO PR_OBJ_LOOP
91REM IF Z%(I,1)<>0 THEN RD=RD+1:X=X+1:X%(X)=Z%(I,1)
92REM IF P2>=6 AND P2<=8 THEN RD=RD+1:X=X+1:X%(X)=I+1
70f29a2b 93REM GOTO PR_OBJ_LOOP