Browse code

Added NIP optimisations

Andrew Alderwick authored on 15/08/2021 20:25:58
Showing 9 changed files
... ...
@@ -261,7 +261,7 @@ JMP2r
261 261
 		#ff
262 262
 		JMP2r
263 263
 	&found
264
-		SWP POP ( remove loop limit )
264
+		NIP ( remove loop limit )
265 265
 		DUP ;&src_i LDA NEQ ,&end JCN ( check if result is the same as index )
266 266
 		POP #ff
267 267
 		JMP2r
... ...
@@ -9,7 +9,7 @@
9 9
 %4** { #20 SFT2 } %4// { #02 SFT2 }
10 10
 %8** { #30 SFT2 } %8// { #03 SFT2 }
11 11
 
12
-%TOB { SWP POP } %TOS { #00 SWP }
12
+%TOB { NIP } %TOS { #00 SWP }
13 13
 %RTN { JMP2r }
14 14
 %MOD { DUP2 / * - }
15 15
 %LTS2  { #8000 ++ SWP2 #8000 ++ >> } %GTS2  { #8000 ++ SWP2 #8000 ++ << }
... ...
@@ -9,7 +9,7 @@
9 9
 %++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
10 10
 %<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
11 11
 
12
-%TOS  { #00 SWP } %TOB  { SWP POP }
12
+%TOS  { #00 SWP } %TOB  { NIP }
13 13
 %RTN  { JMP2r }   %MOD  { DUP2 / * - }
14 14
 %MOD8 { #07 AND } %MOD2 { #01 AND }
15 15
 %SFL  { #40 SFT SFT }
... ...
@@ -20,8 +20,8 @@
20 20
 %BANK1 { #8000 } %BANK2 { #a000 }
21 21
 
22 22
 %GET-SIZE { WIDTH TOS 8// HEIGHT TOS ** }
23
-%GET-ITERATORS { SWP2k POP SWP POP }
24
-%GET-ITER { OVR2 SWP POP OVR SWP }
23
+%GET-ITERATORS { SWP2k POP NIP }
24
+%GET-ITER { OVR2 NIP OVR SWP }
25 25
 
26 26
 ( devices )
27 27
 
... ...
@@ -226,7 +226,7 @@ RTN
226 226
 @get-cell ( x y -- cell )
227 227
 	
228 228
 	DUP2 ,get-index JSR LDA 
229
-	SWP POP SWP
229
+	NIP SWP
230 230
 	MOD8
231 231
 	SFT MOD2
232 232
 
... ...
@@ -135,10 +135,10 @@ RTN
135 135
 	
136 136
 	;clear-notes JSR2
137 137
 	( get note )
138
-	#0e .Mouse/y DEI2 .trkframe/y1 LDZ2 SUB2 SWP POP #08 DIV SUB
138
+	#0e .Mouse/y DEI2 .trkframe/y1 LDZ2 SUB2 NIP #08 DIV SUB
139 139
 	.Mouse/state DEI #10 NEQ ,&no-erase JCN POP #00 &no-erase
140 140
 	( edit note )
141
-	TRACK #00 .Mouse/x DEI2 .trkframe/x1 LDZ2 SUB2 SWP POP #08 DIV ADD2 STA
141
+	TRACK #00 .Mouse/x DEI2 .trkframe/x1 LDZ2 SUB2 NIP #08 DIV ADD2 STA
142 142
 	( release ) #00 .Mouse/state DEO
143 143
 	;draw-notes JSR2
144 144
 
... ...
@@ -147,7 +147,7 @@ BRK
147 147
 @touch-chn ( -- )
148 148
 	
149 149
 	;clear-notes JSR2
150
-	( save ) .Mouse/y DEI2 .chnframe/y1 LDZ2 SUB2 SWP POP #08 DIV #01 SUB .track/active STZ
150
+	( save ) .Mouse/y DEI2 .chnframe/y1 LDZ2 SUB2 NIP #08 DIV #01 SUB .track/active STZ
151 151
 	( release ) #00 .Mouse/state DEO
152 152
 	;draw-channels JSR2
153 153
 	;draw-notes JSR2
... ...
@@ -157,7 +157,7 @@ BRK
157 157
 
158 158
 @touch-ctl ( -- )
159 159
 	
160
-	.Mouse/x DEI2 .ctlframe/x1 LDZ2 SUB2 8-- 8// SWP POP #02 DIV
160
+	.Mouse/x DEI2 .ctlframe/x1 LDZ2 SUB2 8-- 8// NIP #02 DIV
161 161
 	DUP ,&no-a JCN
162 162
 		.Audio0/adsr .track/active LDZ #10 MUL ADD DEI
163 163
 		#10 .Mouse/state DEI #10 EQU #e0 MUL ADD ADD
... ...
@@ -278,7 +278,7 @@ RTN
278 278
 	;font_hex .Screen/addr DEO2
279 279
 	#0000 #0100
280 280
 	&loop
281
-		OVR2 SWP POP #02 DIV #0f AND ,&skip JCN
281
+		OVR2 NIP #02 DIV #0f AND ,&skip JCN
282 282
 			OVR2 .trkframe/x1 LDZ2 ADD2 .Screen/x DEO2
283 283
 			.trkframe/y1 LDZ2 #0010 SUB2 .Screen/y DEO2
284 284
 			#02 .Screen/sprite DEO
... ...
@@ -123,7 +123,7 @@
123 123
 	.lines/x2 LDZ2 .lines/x1 LDZ2 DUP2 .neralie/x STZ2 SUB2 .neralie/w STZ2
124 124
 	.lines/y2 LDZ2 .lines/y1 LDZ2 DUP2 .neralie/y STZ2 SUB2 .neralie/h STZ2
125 125
 
126
-	;neralie/n4 SWP POP .neralie/n0123 LDZ2
126
+	;neralie/n4 NIP .neralie/n0123 LDZ2
127 127
 	DUP2 ;&h JSR2
128 128
 	;&next JSR2 #0001 .Screen/x DEO2 .neralie/y LDZ2 #0003 SUB2 .Screen/y DEO2 ,digit JSR
129 129
 	DUP2 ;&v JSR2
... ...
@@ -79,22 +79,22 @@ BRK
79 79
 	DUP2 #0010 NEQ2 ,&no-touch-red JCN
80 80
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-red JCN
81 81
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-red JCN
82
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/r1 #00 .selection LDZ ADD2 STA
82
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// NIP ;theme/r1 #00 .selection LDZ ADD2 STA
83 83
 	&no-touch-red
84 84
 	DUP2 #0020 NEQ2 ,&no-touch-green JCN
85 85
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-green JCN
86 86
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-green JCN
87
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/g1 #00 .selection LDZ ADD2 STA
87
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// NIP ;theme/g1 #00 .selection LDZ ADD2 STA
88 88
 	&no-touch-green
89 89
 	DUP2 #0030 NEQ2 ,&no-touch-blue JCN
90 90
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-blue JCN
91 91
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-blue JCN
92
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/b1 #00 .selection LDZ ADD2 STA
92
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// NIP ;theme/b1 #00 .selection LDZ ADD2 STA
93 93
 	&no-touch-blue
94 94
 	DUP2 #0040 NEQ2 ,&no-touch-radio JCN
95 95
 		.Mouse/x DEI2 .window/x1 LDZ2 #0050 ADD2 LTH2 ,&no-touch-radio JCN
96 96
 		.Mouse/x DEI2 .window/x1 LDZ2 #008c ADD2 GTH2 ,&no-touch-radio JCN
97
-		.Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0050 SUB2 STEP8 2// #0008 DIV2 SWP POP .selection STZ
97
+		.Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0050 SUB2 STEP8 2// #0008 DIV2 NIP .selection STZ
98 98
 	&no-touch-radio
99 99
 	POP2
100 100
 
... ...
@@ -75,7 +75,7 @@ RTN
75 75
 RTN
76 76
 
77 77
 	&digit
78
-	SWP POP
78
+	NIP
79 79
 	DUP .number/started LDZ ORA #02 JCN
80 80
 	POP JMP2r
81 81
 	LIT '0 ADD .Console/write DEO
... ...
@@ -94,7 +94,7 @@ RTN
94 94
 	&loop
95 95
 		( incr ) #0001 ADD2 OVR2 OVR2 ADD2
96 96
 		LDA ,&loop JCN
97
-	SWP2 POP2
97
+	NIP2
98 98
 
99 99
 RTN
100 100
 
... ...
@@ -370,7 +370,7 @@
370 370
 
371 371
 	( tree-offset* token-routine-ptr* / end* )
372 372
 	STH2r ;asma/token STA2
373
-	SWP2 POP2 LDA2
373
+	NIP2 LDA2
374 374
 	JMP2 ( tail call )
375 375
 
376 376
 	&not-found ( tree-offset* dummy* / end* )
... ...
@@ -523,7 +523,7 @@
523 523
 	&flush ( ptr* -- start-of-buffer* )
524 524
 	;asma-write-buffer SUB2k ( ptr* start* len* )
525 525
 	;asma/flush-fn LDA2 JSR2
526
-	SWP2 POP2 ( start* )
526
+	NIP2 ( start* )
527 527
 	,&after-flush JMP
528 528
 
529 529
 @asma-output [ &ptr $2 &offset $2 &filename $2 ]