Browse code

Optimized Nasu

neauoire authored on 27/03/2021 01:18:16
Showing 2 changed files
... ...
@@ -28,7 +28,7 @@ else
28 28
 fi
29 29
 
30 30
 echo "Assembling.."
31
-./bin/assembler projects/examples/gui.shapes.usm bin/boot.rom
31
+./bin/assembler projects/software/nasu.usm bin/boot.rom
32 32
 
33 33
 echo "Running.."
34 34
 if [ "${2}" = '--cli' ]; 
... ...
@@ -62,109 +62,104 @@ BRK
62 62
 
63 63
 	( keyboard controls )
64 64
 
65
-	~Keys #00 EQU ,no-key JNZ2
65
+	~Keys #00 EQU ^$no-key JNZ
66 66
 
67
-		~Keys #31 LTH ,no-key JNZ2
68
-		~Keys #33 GTH ,no-key JNZ2
67
+		~Keys #31 LTH ^$no-key JNZ
68
+		~Keys #33 GTH ^$no-key JNZ
69 69
 		( select ) ~Keys #31 SUB =bankview.mode
70 70
 		( release ) #00 =Keys
71 71
 		,redraw JSR2 
72 72
 
73
-	@no-key
74
-
75
-	~Controller.buttons #00 EQU ,no-ctrl JNZ2
76
-
77
-		~Controller.buttons #10 EQU ,no-ctrl-up JNZ2
78
-			~tileview.addr #0080 ADD2 =tileview.addr
79
-		@no-ctrl-up
80
-		~Controller.buttons #20 EQU ,no-ctrl-down JNZ2
81
-			~tileview.addr #0080 SUB2 =tileview.addr
82
-		@no-ctrl-down
83
-		~Controller.buttons #40 EQU ,no-ctrl-left JNZ2
84
-			~tileview.addr 8+ =tileview.addr
85
-		@no-ctrl-left
86
-		~Controller.buttons #80 EQU ,no-ctrl-right JNZ2
87
-			~tileview.addr 8- =tileview.addr
88
-		@no-ctrl-right
73
+	$no-key
74
+
75
+	~Controller.buttons #00 EQU ^$no-ctrl JNZ
76
+
77
+		~Controller.buttons
78
+		DUP #10 EQU ^$no-ctrl-up JNZ
79
+			~tileview.addr #0080 ADD2 =tileview.addr $no-ctrl-up
80
+		DUP #20 EQU ^$no-ctrl-down JNZ
81
+			~tileview.addr #0080 SUB2 =tileview.addr $no-ctrl-down
82
+		DUP #40 EQU ^$no-ctrl-left JNZ
83
+			~tileview.addr 8+ =tileview.addr $no-ctrl-left
84
+		DUP #80 EQU ^$no-ctrl-right JNZ
85
+			~tileview.addr 8- =tileview.addr $no-ctrl-right
86
+		POP
87
+
89 88
 		~tileview.addr #0800 DIV2 #0800 MUL2 =bankview.addr
90 89
 		,redraw JSR2
91 90
 
92
-	@no-ctrl
91
+	$no-ctrl
93 92
 
94 93
 	( mouse controls )
95 94
 
96
-	~Mouse.state #00 EQU ,click-end JNZ2
95
+	~Mouse.state #00 EQU ,$click-end JNZ2
97 96
 
98 97
 		( toolbar )
99 98
 
100
-		~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,no-toolbar-click JNZ2
101
-
99
+		~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,$no-toolbar-click JNZ2
102 100
 			( brush )
103
-			~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ,no-brush-click JNZ2
104
-			~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ,no-brush-click JNZ2
101
+			~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ^$no-brush-click JNZ
102
+			~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
105 103
 				( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
106 104
 				( release ) #00 =Mouse.state
107
-				,redraw JSR2 ,click-end JMP2
108
-			@no-brush-click
109
-
110
-			~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ,no-load-click JNZ2
105
+				,redraw JSR2 ,$click-end JMP2
106
+			$no-brush-click
107
+			~Mouse.x ~tileview.x SUB2 8/ #000e NEQU2 ^$no-load-click JNZ
111 108
 				( load ) ,filepath  =File.name #0800 =File.length ~bankview.addr =File.load
112 109
 				( release ) #00 =Mouse.state
113
-				,redraw JSR2 ,click-end JMP2
114
-			@no-load-click
115
-
116
-			~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ,no-save-click JNZ2
110
+				,redraw JSR2 ,$click-end JMP2
111
+			$no-load-click
112
+			~Mouse.x ~tileview.x SUB2 8/ #000f NEQU2 ^$no-save-click JNZ
117 113
 				( save ) ,filepath  =File.name #0800 =File.length ~bankview.addr =File.save
118 114
 				( release ) #00 =Mouse.state
119
-				,redraw JSR2 ,click-end JMP2
120
-			@no-save-click
121
-
122
-		@no-toolbar-click
115
+				,redraw JSR2 ,$click-end JMP2
116
+			$no-save-click
117
+		$no-toolbar-click
123 118
 
124 119
 		( bankview )
125 120
 
126 121
 		~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
127 122
 		~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
128
-		#0101 NEQ2 ,no-bank-click JNZ2
123
+		#0101 NEQ2 ,$no-bank-click JNZ2
129 124
 
130
-			~bankview.mode #01 NEQ ,not-copy-mode JNZ2
125
+			~bankview.mode #01 NEQ ^$not-copy-mode JNZ
131 126
 				#00 =i
132
-				@copy-loop NOP
127
+				$copy-loop
133 128
 					( load ) ~tileview.addr ~i ADD PEK2 
134 129
 					( get touch addr )
135 130
 					~Mouse.x ~bankview.x SUB2 STEP8 
136 131
 					~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
137 132
 					~bankview.addr ADD2 #00 ~i ADD2 POK2
138 133
 					( incr ) ~i #01 ADD =i
139
-					~i #08 LTH ^copy-loop MUL JMP
140
-				,redraw JSR2 ,click-end JMP2
141
-			@not-copy-mode
134
+					~i #08 LTH ^$copy-loop JNZ
135
+				,redraw JSR2 ,$click-end JMP2
136
+			$not-copy-mode
142 137
 
143
-			~bankview.mode #02 NEQ ,not-erase-mode JNZ2
138
+			~bankview.mode #02 NEQ ^$not-erase-mode JNZ
144 139
 				#00 =i
145
-				@erase-loop NOP
140
+				$erase-loop
146 141
 					#00 
147 142
 					( get touch addr )
148 143
 					~Mouse.x ~bankview.x SUB2 STEP8 
149 144
 					~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
150 145
 					~bankview.addr ADD2 #00 ~i ADD2 POK2
151 146
 					( incr ) ~i #01 ADD =i
152
-					~i #08 LTH ^erase-loop MUL JMP
153
-				,redraw JSR2 ,click-end JMP2
154
-			@not-erase-mode
147
+					~i #08 LTH ^$erase-loop JNZ
148
+				,redraw JSR2 ,$click-end JMP2
149
+			$not-erase-mode
155 150
 
156 151
 			~Mouse.x ~bankview.x SUB2 STEP8 
157 152
 			~Mouse.y ~bankview.y SUB2 STEP8 #0010 MUL2 ADD2
158 153
 			~bankview.addr ADD2 =tileview.addr
159
-			,redraw JSR2 ,click-end JMP2
154
+			,redraw JSR2 ,$click-end JMP2
160 155
 
161
-		@no-bank-click
156
+		$no-bank-click
162 157
 
163 158
 		( tileview )
164 159
 
165 160
 		~Mouse.x ~tileview.x GTH2 ~Mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
166 161
 		~Mouse.y ~tileview.y GTH2 ~Mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
167
-		#0101 NEQ2 ,no-tile-click JNZ2
162
+		#0101 NEQ2 ,$no-tile-click JNZ2
168 163
 
169 164
 			~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2 
170 165
 			~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2 
... ...
@@ -172,40 +167,40 @@ BRK
172 167
 			~tileview.addr ADD2 =addr ( addr offset )
173 168
 			~Mouse.x ~tileview.x SUB2 ~Mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
174 169
 			~Mouse.y ~tileview.y SUB2 ~Mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
175
-			~Mouse.state #10 NEQ ,no-erase-mode JNZ2
170
+			~Mouse.state #10 NEQ ^$no-erase-mode JNZ
176 171
 				( load ) ~addr ~pos.y 8/ ADD2 PEK2
177 172
 				( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
178 173
 				#ff EOR AND
179 174
 				( save ) ~addr ~pos.y 8/ ADD2 POK2
180
-				,redraw JSR2 ,click-end JMP2
181
-			@no-erase-mode
175
+				,redraw JSR2 ,$click-end JMP2
176
+			$no-erase-mode
182 177
 			( load ) ~addr ~pos.y 8/ ADD2 PEK2
183 178
 			( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
184 179
 			ORA
185 180
 			( save ) ~addr ~pos.y 8/ ADD2 POK2
186
-			,redraw JSR2 ,click-end JMP2
181
+			,redraw JSR2 ,$click-end JMP2
187 182
 
188
-		@no-tile-click
183
+		$no-tile-click
189 184
 
190 185
 		( operations )
191 186
 
192
-		~Mouse.y ~tileview.y SUB2 8/ #000c NEQ2 ,no-operations JNZ2
187
+		~Mouse.y ~tileview.y SUB2 8/ #000c NEQ2 ,$no-operations JNZ2
193 188
 
194
-			~Mouse.x ~tileview.x SUB2 8/ #0011 NEQ2 ,no-move-up JNZ2
189
+			~Mouse.x ~tileview.x SUB2 8/ #0011 NEQ2 ^$no-move-up JNZ
195 190
 				,op_shiftup JSR2 
196 191
 				( release ) #00 =Mouse.state
197
-				,redraw JSR2 ,click-end JMP2
198
-			@no-move-up
192
+				,redraw JSR2 ,$click-end JMP2
193
+			$no-move-up
199 194
 
200
-			~Mouse.x ~tileview.x SUB2 8/ #0012 NEQ2 ,no-move-down JNZ2
195
+			~Mouse.x ~tileview.x SUB2 8/ #0012 NEQ2 ^$no-move-down JNZ
201 196
 				,op_shiftdown JSR2 
202 197
 				( release ) #00 =Mouse.state
203
-				,redraw JSR2 ,click-end JMP2
204
-			@no-move-down
198
+				,redraw JSR2 ,$click-end JMP2
199
+			$no-move-down
205 200
 
206
-		@no-operations
201
+		$no-operations
207 202
 
208
-	@click-end
203
+	$click-end
209 204
 
210 205
 	,draw-cursor JSR2
211 206
 
... ...
@@ -297,7 +292,7 @@ RTN
297 292
 		( draw ) #02 =Sprite.color
298 293
 		~Sprite.addr 8+ =Sprite.addr
299 294
 		( incr ) ~i #01 ADD =i
300
-		~i #10 LTH ,$guides JNZ2
295
+		~i #10 LTH ^$guides JNZ
301 296
 
302 297
 	( body )
303 298
 
... ...
@@ -364,7 +359,7 @@ RTN
364 359
 	$line-hor
365 360
 		( draw ) #03 =Screen.color
366 361
 		( incr ) ~Screen.x #0002 ADD2 =Screen.x
367
-	~Screen.x ~tileview.x #0082 ADD2 LTH2 ,$line-hor JNZ2
362
+	~Screen.x ~tileview.x #0082 ADD2 LTH2 ^$line-hor JNZ
368 363
 
369 364
 	( line ver )
370 365
 	~tileview.y =Screen.y
... ...
@@ -372,7 +367,7 @@ RTN
372 367
 	$line-ver
373 368
 		( draw ) #03 =Screen.color
374 369
 		( incr ) ~Screen.y #0002 ADD2 =Screen.y
375
-	~Screen.y ~tileview.y #0081 ADD2 LTH2 ,$line-ver JNZ2
370
+	~Screen.y ~tileview.y #0081 ADD2 LTH2 ^$line-ver JNZ
376 371
 
377 372
 	( rewind ) ~tileview.addr #0018 SUB2 =tileview.addr
378 373
 
... ...
@@ -487,17 +482,17 @@ RTN
487 482
 @line-rect ( x1 y1 x2 y2 color )
488 483
 
489 484
 	( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
490
-	$hor NOP
485
+	$hor
491 486
 		( incr ) ~Screen.x ++ =Screen.x
492 487
 		( draw ) ~rect.y1 =Screen.y ~color =Screen.color
493 488
 		( draw ) ~rect.y2 =Screen.y ~color =Screen.color
494
-		~Screen.x ~rect.x2 LTH2 ^$hor MUL JMP
489
+		~Screen.x ~rect.x2 LTH2 ^$hor JNZ
495 490
 	~rect.y1 =Screen.y
496
-	$ver NOP
491
+	$ver
497 492
 		( draw ) ~rect.x1 =Screen.x ~color =Screen.color
498 493
 		( draw ) ~rect.x2 =Screen.x ~color =Screen.color
499 494
 		( incr ) ~Screen.y ++ =Screen.y
500
-		~Screen.y ~rect.y2 ++ LTH2 ^$ver MUL JMP
495
+		~Screen.y ~rect.y2 ++ LTH2 ^$ver JNZ
501 496
 
502 497
 RTN
503 498