Browse code

Optimized some MOD operations

Andrew Alderwick authored on 15/05/2021 08:44:20
Showing 4 changed files
... ...
@@ -13,6 +13,7 @@
13 13
 %DECR { SWP #01 - SWP }
14 14
 %TOS  { #00 SWP } %TOB  { SWP POP }
15 15
 %RTN  { JMP2r }   %MOD  { DUP2 / * - }
16
+%MOD8 { #07 AND } %MOD2 { #01 AND }
16 17
 %SFL  { #40 SFT SFT }
17 18
 
18 19
 %WIDTH { #40 }   %HEIGHT { #40 }
... ...
@@ -72,7 +73,7 @@ BRK
72 73
 	( incr frame ) .world/frame LDZ #01 + [ DUP ] .world/frame STZ
73 74
 	( reset count ) #0000 .world/count STZ2
74 75
 
75
-	#02 MOD #00 = #01 JCN [ BRK ] 
76
+	MOD2 #00 = #01 JCN [ BRK ] 
76 77
 
77 78
 	( clear buffer )
78 79
 	BANK2 DUP2 GET-SIZE ++
... ...
@@ -173,7 +174,7 @@ RTN
173 174
 @set-cell ( x y -- )
174 175
 	
175 176
 	DUP2 ,get-index JSR STH2
176
-	POP #08 MOD #01 SWP SFL 
177
+	POP MOD8 #01 SWP SFL 
177 178
 	LDAkr STHr SWP ORA
178 179
 	STH2r STA
179 180
 
... ...
@@ -183,7 +184,7 @@ RTN
183 184
 	
184 185
 	DUP2 ,get-index JSR LDA 
185 186
 	SWP POP SWP
186
-	#08 MOD
187
+	MOD8
187 188
 	SFT #01 AND
188 189
 
189 190
 RTN 
... ...
@@ -245,7 +246,7 @@ RTN
245 246
 	.world/count LDZ2 #0001 ADD2 .world/count STZ2
246 247
 	( save in buffer )
247 248
 	STH2
248
-	DUP2 POP #08 MOD #01 SWP SFL 
249
+	DUP2 POP MOD8 #01 SWP SFL 
249 250
 	LDAkr STHr SWP ORA
250 251
 	STH2r STA
251 252
 
... ...
@@ -4,7 +4,7 @@
4 4
 %8+ { #0008 ADD2 } %8- { #0008 SUB2 }
5 5
 %8* { #0008 MUL2 } %8/ { #0008 DIV2 }
6 6
 %++ { #0001 ADD2 }
7
-%MOD { DUP2 DIV MUL SUB }
7
+%MOD8 { #07 AND }
8 8
 %TRACK { ;track/ch1 #00 .track/active LDZ #0020 MUL2 ADD2 }
9 9
 
10 10
 ( variables )
... ...
@@ -79,7 +79,7 @@ BRK
79 79
 	
80 80
 	;move-head JSR2
81 81
 	;draw-vu JSR2
82
-	.head/pos LDZ #08 MOD ,&skip JCN
82
+	.head/pos LDZ MOD8 ,&skip JCN
83 83
 		;bang JSR2
84 84
 	&skip
85 85
 
... ...
@@ -1,7 +1,5 @@
1 1
 ( dev/audio )
2 2
 
3
-%MOD { DUP2 DIV MUL SUB }
4
-
5 3
 @timer    $1
6 4
 @progress $1
7 5
 
... ...
@@ -49,7 +47,7 @@ BRK
49 47
 	;dot .Screen/addr DEO2
50 48
 	#21 .Screen/color DEO
51 49
 
52
-	( incr ) .progress LDZ #01 ADD #20 MOD .progress STZ
50
+	( incr ) .progress LDZ #01 ADD #1f AND .progress STZ
53 51
 
54 52
 	#00 .timer STZ
55 53
 
... ...
@@ -16,6 +16,8 @@
16 16
 %8+ { #0008 ADD2 }
17 17
 %8* { #0008 MUL2 } %8/ { #0008 DIV2 }
18 18
 %MOD { DUP2 DIV MUL SUB }
19
+%MOD8 { #07 AND }
20
+%MOD2 { #01 AND }
19 21
 
20 22
 %DATA-CELLS { #2000 }
21 23
 %DATA-LOCKS { #3000 }
... ...
@@ -195,8 +197,8 @@ RTN
195 197
 	DUP #2e NEQ ,&no-bar JCN
196 198
 		( check if x,y is grid )
197 199
 		POP
198
-		DUP2 #08 MOD #00 EQU SWP #08 MOD #00 EQU #0101 NEQ2 ,&no-marker8 JCN POP2 ;marker8_icn RTN &no-marker8
199
-		DUP2 #02 MOD #00 EQU SWP #02 MOD #00 EQU #0101 NEQ2 ,&no-marker4 JCN POP2 ;marker4_icn RTN &no-marker4
200
+		DUP2 MOD8 #00 EQU SWP MOD8 #00 EQU #0101 NEQ2 ,&no-marker8 JCN POP2 ;marker8_icn RTN &no-marker8
201
+		DUP2 MOD2 #00 EQU SWP MOD2 #00 EQU #0101 NEQ2 ,&no-marker4 JCN POP2 ;marker4_icn RTN &no-marker4
200 202
 		POP2 ;font RTN
201 203
 	&no-bar
202 204
 	STH POP2 STHr
... ...
@@ -236,7 +238,7 @@ RTN
236 238
 	
237 239
 	POP
238 240
 	++
239
-	#30 .timer/frame LDZ #08 MOD ADD SET-CELL
241
+	#30 .timer/frame LDZ MOD8 ADD SET-CELL
240 242
 
241 243
 RTN
242 244
 
... ...
@@ -517,7 +519,7 @@ RTN
517 519
 
518 520
 	#0040 .Screen/x DEO2
519 521
 	;beat_icn .Screen/addr DEO2
520
-	#21 .timer/frame LDZ #08 MOD #00 EQU #02 MUL ADD .Screen/color DEO
522
+	#21 .timer/frame LDZ MOD8 #00 EQU #02 MUL ADD .Screen/color DEO
521 523
 
522 524
 	( Speed )
523 525
 	#0050 .Screen/x DEO2