Browse code

Added printout of heap usage

Andrew Alderwick authored on 16/05/2021 08:27:06
Showing 1 changed files
... ...
@@ -69,13 +69,14 @@
69 69
 )
70 70
 
71 71
 %asma-IF-ERROR { ;asma/error LDA2 ORA }
72
-%asma-LOG { #01 }
72
+%asma-LOG { #09 }
73 73
 (
74 74
 	asma-LOG is a log-level parameter for helping to debug stuff.
75
-	It's value is the bitwise OR of all the following output types:
75
+	Its value is the bitwise OR of all the following output types:
76 76
 		#01 prints the number of lines in the source code,
77
-		#02 prints tokens as they are processed, and
78
-		#04 dumps all defined labels at end.
77
+		#02 prints tokens as they are processed,
78
+		#04 dumps all defined labels at end, and
79
+		#08 prints the heap usage.
79 80
 )
80 81
 %asma-DEO2 { asma-LOG AND #00 EQU JMP DEO2k POP POP2 }
81 82
 %asma-DEO { asma-LOG AND #00 EQU JMP DEOk POP2 }
... ...
@@ -100,7 +101,8 @@
100 101
 	asma-IF-ERROR ,&error JCN
101 102
 
102 103
 	;asma-trees/labels ;asma-print-labels JSR2 ( DEBUG )
103
-	;asma-print-linecount JSR2 ( DEBUG )
104
+	;asma-print-line-count JSR2 ( DEBUG )
105
+	;asma-print-heap-usage JSR2 ( DEBUG )
104 106
 	JMP2r
105 107
 
106 108
 	&error
... ...
@@ -121,7 +123,6 @@
121 123
 	#20 .Console/char DEO
122 124
 	;asma/orig-token LDA2 .Console/string DEO2
123 125
 	;&line .Console/string DEO2
124
-	( FIXME it would be nicer if line numbers were in decimal )
125 126
 	;asma/line LDA2 .Console/short DEO2
126 127
 	#2e .Console/char DEO
127 128
 	#0a .Console/char DEO
... ...
@@ -129,13 +130,22 @@
129 130
 
130 131
 	&line 20 "on 20 "line 20 00
131 132
 
132
-@asma-print-linecount ( -- )
133
-	( FIXME it would be nicer if line numbers were in decimal )
133
+@asma-print-line-count ( -- )
134 134
 	;asma/line LDA2 .Console/short #01 asma-DEO2
135 135
 	;&lines .Console/string #01 asma-DEO2
136 136
 	JMP2r
137 137
 
138
-	&lines [ 20 "lines 20 "in 20 "total. 0a 00 ]
138
+	&lines [ 20 "lines 20 "of 20 "source 20 "code. 0a 00 ]
139
+
140
+@asma-print-heap-usage ( -- )
141
+	;asma/heap LDA2 ;asma-heap SUB2 .Console/short #08 asma-DEO2
142
+	;&str1 .Console/string #08 asma-DEO2
143
+	;asma-heap/end ;asma/heap LDA2 SUB2 .Console/short #08 asma-DEO2
144
+	;&str2 .Console/string #08 asma-DEO2
145
+	JMP2r
146
+
147
+	&str1 [ 20 "bytes 20 "of 20 "heap 20 "used, 20 00 ]
148
+	&str2 [ 20 "bytes 20 "free. 0a 00 ]
139 149
 
140 150
 @asma-print-sublabels ( incoming-ptr* -- )
141 151
 	LDA2
... ...
@@ -640,7 +650,7 @@
640 650
 	,&new-label JCN
641 651
 
642 652
 	( label already exists )
643
-	( FIXME check label address )
653
+	( FIXME check label address hasn't changed (label defined twice) )
644 654
 	#01 JMP2r
645 655
 
646 656
 	&new-label ( incoming-ptr* )