Commit | Line | Data |
---|---|---|
a742287e JM |
1 | REM CHECK_FREE_LIST |
2 | CHECK_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 | 16 | PR_MEMORY_SUMMARY: |
9e8f5211 | 17 | |
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 | 27 | REM REM PR_MEMORY(P1, P2) -> nil |
9e8f5211 | 28 | REM PR_MEMORY: |
bbab5c5d | 29 | REM IF P2<P1 THEN P2=ZI-1 |
9e8f5211 | 30 | REM PRINT "vvvvvv" |
bbab5c5d | 31 | REM PRINT "Z% Value Memory"+STR$(P1)+"->"+STR$(P2); |
cc9dbd92 | 32 | REM PRINT " (ZI: "+STR$(ZI)+", ZK: "+STR$(ZK)+"):" |
bbab5c5d JM |
33 | REM IF P2<P1 THEN PRINT " ---":GOTO PR_MEMORY_AFTER_VALUES |
34 | REM I=P1 | |
9e8f5211 | 35 | REM PR_MEMORY_VALUE_LOOP: |
bbab5c5d | 36 | REM IF I>P2 THEN GOTO PR_MEMORY_AFTER_VALUES |
9e8f5211 | 37 | REM PRINT " "+STR$(I); |
bbab5c5d JM |
38 | REM IF (Z%(I,0)AND31)=15 THEN GOTO PR_MEMORY_FREE |
39 | REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-32)/32); | |
40 | REM PRINT ", type: "+STR$(Z%(I,0)AND31)+", value: "+STR$(Z%(I,1)); | |
41 | REM IF (Z%(I,0)AND31)=4 THEN PRINT " '"+S$(Z%(I,1))+"'"; | |
42 | REM IF (Z%(I,0)AND31)=5 THEN PRINT " "+S$(Z%(I,1))+""; | |
9e8f5211 JM |
43 | REM PRINT |
44 | REM I=I+1 | |
bbab5c5d | 45 | REM IF (Z%(I-1,0)AND31)<>10 THEN GOTO PR_MEMORY_VALUE_LOOP |
9e8f5211 JM |
46 | REM PRINT " "+STR$(I)+": "; |
47 | REM PRINT "params: "+STR$(Z%(I+1,0))+", env:"+STR$(Z%(I+1,1)) | |
48 | REM I=I+1 | |
49 | REM GOTO PR_MEMORY_VALUE_LOOP | |
50 | REM PR_MEMORY_FREE: | |
bbab5c5d | 51 | REM PRINT ": FREE size: "+STR$((Z%(I,0)AND-32)/32)+", next: "+STR$(Z%(I,1)); |
cc9dbd92 | 52 | REM IF I=ZK THEN PRINT " (free list start)"; |
9e8f5211 | 53 | REM PRINT |
bbab5c5d | 54 | REM IF (Z%(I,0)AND-32)=64 THEN I=I+1:PRINT " "+STR$(I)+": ---" |
9e8f5211 JM |
55 | REM I=I+1 |
56 | REM GOTO PR_MEMORY_VALUE_LOOP | |
57 | REM PR_MEMORY_AFTER_VALUES: | |
bbab5c5d JM |
58 | REM PRINT "S$ String Memory (S: "+STR$(S)+"):" |
59 | REM IF S<=0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STRINGS | |
60 | REM FOR I=0 TO S-1 | |
cc9dbd92 | 61 | REM PRINT " "+STR$(I)+": '"+S$(I)+"'" |
9e8f5211 JM |
62 | REM NEXT I |
63 | REM PR_MEMORY_SKIP_STRINGS: | |
bbab5c5d | 64 | REM PRINT "X% Stack Memory (X: "+STR$(X)+"):" |
cc9dbd92 JM |
65 | REM IF X<0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STACK |
66 | REM FOR I=0 TO X | |
bbab5c5d | 67 | REM PRINT " "+STR$(I)+": "+STR$(X%(I)) |
9e8f5211 JM |
68 | REM NEXT I |
69 | REM PR_MEMORY_SKIP_STACK: | |
70 | REM PRINT "^^^^^^" | |
71 | REM RETURN | |
70f29a2b | 72 | REM |
bbab5c5d | 73 | REM REM PR_OBJECT(P1) -> nil |
70f29a2b | 74 | REM PR_OBJECT: |
bbab5c5d | 75 | REM RD=0 |
70f29a2b | 76 | REM |
bbab5c5d | 77 | REM RD=RD+1:X=X+1:X%(X)=P1 |
70f29a2b JM |
78 | REM |
79 | REM PR_OBJ_LOOP: | |
bbab5c5d JM |
80 | REM IF RD=0 THEN RETURN |
81 | REM I=X%(X):RD=RD-1:X=X-1 | |
70f29a2b | 82 | REM |
bbab5c5d | 83 | REM P2=Z%(I,0)AND31 |
70f29a2b | 84 | REM PRINT " "+STR$(I); |
bbab5c5d JM |
85 | REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-32)/32); |
86 | REM PRINT ", type: "+STR$(P2)+", value: "+STR$(Z%(I,1)); | |
87 | REM IF P2=4 THEN PRINT " '"+S$(Z%(I,1))+"'"; | |
88 | REM IF P2=5 THEN PRINT " "+S$(Z%(I,1))+""; | |
70f29a2b | 89 | REM PRINT |
bbab5c5d JM |
90 | REM IF P2<=5 OR P2=9 THEN GOTO PR_OBJ_LOOP |
91 | REM IF Z%(I,1)<>0 THEN RD=RD+1:X=X+1:X%(X)=Z%(I,1) | |
92 | REM IF P2>=6 AND P2<=8 THEN RD=RD+1:X=X+1:X%(X)=I+1 | |
70f29a2b | 93 | REM GOTO PR_OBJ_LOOP |