1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-20 01:57:09 +03:00
mal/basic/debug.in.bas
Joel Martin cc9dbd92e3 Basic: variable renaming. Save 2 kbytes.
Also, add variables.txt file with start of documenting meanings of
variables.

List of renamings/savings:

ZZ%   -> S%   : 131 bytes
ZL%   -> X    : 550 bytes
A%    -> A    : 192 bytes
E%    -> E    :  32 bytes
R%    -> R    : 381 bytes
AR%   -> AR   :  30 bytes
AY%   -> AY   :  71 bytes
AZ%   -> AZ   :  33 bytes
B%    -> B    :  47 bytes
AA%   -> AA   :  64 bytes
AB%   -> AB   :  25 bytes
F%    -> F    :  21 bytes
FF%   -> FF   :  14 bytes
ER%   -> ER   :  41 bytes
PR%   -> PR   :   7 bytes
T%    -> T    :  46 bytes
R0-9% -> R0-9 :  31 bytes
T0-9% -> T0-9 :  42 bytes
S1-4% -> S1-4 :  25 bytes
U0-9% -> U0-9 :  44 bytes
ZK%   -> ZK   :  10 bytes
ZI%   -> ZI   :  10 bytes
RC%   -> RC   :  16 bytes
K%/V% -> K/V  :  21 bytes
SD%   -> SD   :  16 bytes
ZS$   -> S$   :  40 bytes
HM%   -> H    :  10 bytes
SZ%   -> SZ   :  39 bytes
LV%   -> LV   :   9 bytes
EO%   -> O    :  18 bytes
C%    -> C    :   4 bytes
P%    -> P    :   4 bytes
2016-10-14 22:42:56 -05:00

80 lines
2.8 KiB
QBasic

PR_MEMORY_SUMMARY:
GOSUB CHECK_FREE_LIST: REM get count in P2%
PRINT
PRINT "Free memory (FRE) : "+STR$(FRE(0))
PRINT "Value memory (Z%) : "+STR$(ZI-1)+" /"+STR$(Z1)
PRINT " ";
PRINT " used:"+STR$(ZI-1-P2%)+", freed:"+STR$(P2%);
PRINT ", post repl_env:"+STR$(ZT%)
PRINT "String values (S$) : "+STR$(ZJ)+" /"+STR$(Z2)
PRINT "Call stack size (S%) : "+STR$(X+1)+" /"+STR$(Z3)
RETURN
REM REM PR_MEMORY(P1%, P2%) -> nil
REM PR_MEMORY:
REM IF P2%<P1% THEN P2%=ZI-1
REM PRINT "vvvvvv"
REM PRINT "Z% Value Memory"+STR$(P1%)+"->"+STR$(P2%);
REM PRINT " (ZI: "+STR$(ZI)+", ZK: "+STR$(ZK)+"):"
REM IF P2%<P1% THEN PRINT " ---":GOTO PR_MEMORY_AFTER_VALUES
REM I=P1%
REM PR_MEMORY_VALUE_LOOP:
REM IF I>P2% THEN GOTO PR_MEMORY_AFTER_VALUES
REM PRINT " "+STR$(I);
REM IF (Z%(I,0)AND15)=15 THEN GOTO PR_MEMORY_FREE
REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-16)/16);
REM PRINT ", type: "+STR$(Z%(I,0)AND15)+", value: "+STR$(Z%(I,1));
REM IF (Z%(I,0)AND15)=4 THEN PRINT " '"+S$(Z%(I,1))+"'";
REM IF (Z%(I,0)AND15)=5 THEN PRINT " "+S$(Z%(I,1))+"";
REM PRINT
REM I=I+1
REM IF (Z%(I-1,0)AND15)<>10 THEN GOTO PR_MEMORY_VALUE_LOOP
REM PRINT " "+STR$(I)+": ";
REM PRINT "params: "+STR$(Z%(I+1,0))+", env:"+STR$(Z%(I+1,1))
REM I=I+1
REM GOTO PR_MEMORY_VALUE_LOOP
REM PR_MEMORY_FREE:
REM PRINT ": FREE size: "+STR$((Z%(I,0)AND-16)/16)+", next: "+STR$(Z%(I,1));
REM IF I=ZK THEN PRINT " (free list start)";
REM PRINT
REM IF (Z%(I,0)AND-16)=32 THEN I=I+1:PRINT " "+STR$(I)+": ---"
REM I=I+1
REM GOTO PR_MEMORY_VALUE_LOOP
REM PR_MEMORY_AFTER_VALUES:
REM PRINT "ZS% String Memory (ZJ: "+STR$(ZJ)+"):"
REM IF ZJ<=0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STRINGS
REM FOR I=0 TO ZJ-1
REM PRINT " "+STR$(I)+": '"+S$(I)+"'"
REM NEXT I
REM PR_MEMORY_SKIP_STRINGS:
REM PRINT "S% Stack Memory (X: "+STR$(X)+"):"
REM IF X<0 THEN PRINT " ---":GOTO PR_MEMORY_SKIP_STACK
REM FOR I=0 TO X
REM PRINT " "+STR$(I)+": "+STR$(S%(I))
REM NEXT I
REM PR_MEMORY_SKIP_STACK:
REM PRINT "^^^^^^"
REM RETURN
REM
REM REM PR_OBJECT(P1%) -> nil
REM PR_OBJECT:
REM RD%=0
REM
REM RD%=RD%+1:X=X+1:S%(X)=P1%
REM
REM PR_OBJ_LOOP:
REM IF RD%=0 THEN RETURN
REM I=S%(X):RD%=RD%-1:X=X-1
REM
REM P2%=Z%(I,0)AND15
REM PRINT " "+STR$(I);
REM PRINT ": ref cnt: "+STR$((Z%(I,0)AND-16)/16);
REM PRINT ", type: "+STR$(P2%)+", value: "+STR$(Z%(I,1));
REM IF P2%=4 THEN PRINT " '"+S$(Z%(I,1))+"'";
REM IF P2%=5 THEN PRINT " "+S$(Z%(I,1))+"";
REM PRINT
REM IF P2%<=5 OR P2%=9 THEN GOTO PR_OBJ_LOOP
REM IF Z%(I,1)<>0 THEN RD%=RD%+1:X=X+1:S%(X)=Z%(I,1)
REM IF P2%>=6 AND P2%<=8 THEN RD%=RD%+1:X=X+1:S%(X)=I+1
REM GOTO PR_OBJ_LOOP