Browse code

Limited push/pop in calc.tal

neauoire authored on 19/09/2021 15:25:23
Showing 1 changed files
... ...
@@ -5,11 +5,10 @@
5 5
 %++ { ADD2 } %-- { SUB2 }              %// { DIV2 }
6 6
 %<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7 7
 
8
-%2* { #10 SFT } 
9
-%4/ { #02 SFT }
10
-%4* { #20 SFT }
8
+%2*   { #10 SFT } 
9
+%4*   { #20 SFT } %4/ { #02 SFT }
11 10
 %2**  { #10 SFT2 } %2// { #01 SFT2 }
12
-%4** { #20 SFT2 }
11
+%4**  { #20 SFT2 }
13 12
 %8**  { #30 SFT2 } %8// { #03 SFT2 }
14 13
 %10** { #40 SFT2 } %10// { #04 SFT2 }
15 14
 
... ...
@@ -164,10 +163,14 @@ BRK
164 163
 	POP2
165 164
 	.input-frame/x LDZ2 #0008 ++ -- 10// NIP
166 165
 	DUP #01 ! ,&no-push JCN
167
-		.input/value LDZ2 ;push JSR2
166
+		.input/value LDZ2 #0001 << ,&no-push-empty JCN
167
+			.input/value LDZ2 ;push JSR2
168
+			&no-push-empty
168 169
 		&no-push
169 170
 	DUP #02 ! ,&no-pop JCN
170
-		;pop JSR2 POP2
171
+		.stack/length LDZ #01 < ,&no-pop-empty JCN
172
+			;pop JSR2 POP2
173
+			&no-pop-empty
171 174
 		&no-pop
172 175
 	POP
173 176
 
... ...
@@ -216,9 +219,10 @@ RTN
216 219
 
217 220
 	#08 #00
218 221
 	&loop
222
+		( color ) DUP .stack/length LDZ < STH
219 223
 		( value ) DUP 2* .stack/items + LDZ2 STH2
220 224
 		( y ) DUP TOS 8** #0070 SWP2 -- STH2
221
-		( x ) #0088 STH2r STH2r #01 ;draw-short JSR2
225
+		( x ) #0088 STH2r STH2r STHr ;draw-short JSR2
222 226
 		INC GTHk ,&loop JCN
223 227
 	POP2
224 228
 
... ...
@@ -226,19 +230,18 @@ RTN
226 230
 
227 231
 @draw-short ( x* y* value* color -- )
228 232
 
229
-	POP STH2
233
+	STH STH2
230 234
 	.Screen/y DEO2
231 235
 	.Screen/x DEO2
232
-
233 236
 	#04 #00
234 237
 	&loop
235 238
 		.Screen/x DEI2 #0008 -- .Screen/x DEO2
236 239
 		( value ) DUP STH2kr ROT 4* SFT2 #000f AND2
237 240
 		( value glyph ) 8** ;font-hex ++ .Screen/addr DEO2
238
-		#01 .Screen/sprite DEO
241
+		ROTr STHkr ROTr ROTr .Screen/sprite DEO
239 242
 		INC GTHk ,&loop JCN
240 243
 	POP2
241
-	POP2r
244
+	POP2r POPr
242 245
 
243 246
 RTN
244 247