mirror of
https://github.com/kanaka/mal.git
synced 2024-09-20 01:57:09 +03:00
cc9dbd92e3
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
80 lines
2.8 KiB
QBasic
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
|