Browse code

Optimized nasu

neauoire authored on 18/04/2021 00:27:24
Showing 2 changed files
... ...
@@ -45,7 +45,7 @@
45 45
 ;tileview { x 2 y 2 addr 2 }
46 46
 ;colorview { x1 2 y1 2 x2 2 y2 2 }
47 47
 ;blendview { x1 2 y1 2 x2 2 y2 2 }
48
-;fileview { x1 2 y1 2 x2 2 y2 2 }
48
+;dataview { x1 2 y1 2 x2 2 y2 2 }
49 49
 ;rect { x1 2 y1 2 x2 2 y2 2 }
50 50
 ;mouse { x 2 y 2 }
51 51
 ;color { byte 1 }
... ...
@@ -73,27 +73,26 @@
73 73
 	( vectors ) ,on-transfer =File.vector
74 74
 
75 75
 	( set frame )
76
-	#0140 =frame.width
77
-	#0080 =frame.height
76
+	#0130 =frame.width
77
+	#00a8 =frame.height
78 78
 	#01 =settings.brush
79 79
 
80 80
 	~Screen.width 2/ ~frame.width 2/ SUB2 
81
-	~Screen.height 2/ ~frame.height 2/ SUB2
81
+	~Screen.height 2/ ~frame.height 2/ SUB2 #0010 ADD2
82 82
 	~frame.width ~frame.height
83 83
 	SIZE-TO-RECT ,frame SET-RECT
84 84
 
85
-	~frame.x1 #0018 ADD2 =bankview.x 
86
-	~frame.y1 #0010 ADD2 =bankview.y 
85
+	~frame.x1 #0010 ADD2 =bankview.x 
86
+	~frame.y1 =bankview.y 
87 87
 	BANK =settings.page
88 88
 
89
-	~Screen.width 2/ #0002 ADD2 =tileview.x 
90
-	~frame.y1 #0010 ADD2 =tileview.y 
89
+	~frame.x2 #0098 SUB2 =tileview.x 
90
+	~frame.y1 =tileview.y 
91 91
 	BANK #0448 ADD2 =tileview.addr
92 92
 
93
-	~frame.x1 #0068 ADD2 ~Screen.height 2/ #0070 SUB2 #0020 #0020 SIZE-TO-RECT ,colorview SET-RECT
94
-	~frame.x1 #0018 ADD2 ~Screen.height 2/ #0070 SUB2 #0020 #0020 SIZE-TO-RECT ,blendview SET-RECT
95
-
96
-	~frame.x1 ~Screen.height #0018 SUB2 ~frame.x2 ~Screen.height #0008 SUB2 ,fileview SET-RECT
93
+	~frame.x1 #0010 ADD2 ~frame.y2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ,blendview SET-RECT
94
+	~frame.x1 #0038 ADD2 ~frame.y2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ,colorview SET-RECT
95
+	~frame.x2 #0010 SUB2 ~frame.y1 #0010 #0080 SIZE-TO-RECT ,dataview SET-RECT
97 96
 
98 97
 	#01 =settings.blending
99 98
 
... ...
@@ -104,7 +103,7 @@
104 103
 	,filepath5 =File.name #1000 =File.length BANK #2800 ADD2 =File.load
105 104
 	,filepath6 =File.name #1000 =File.length BANK #3800 ADD2 =File.load
106 105
 
107
-	,redraw JSR2
106
+	#40 DUP =bankview.selection ,select-tile JSR2
108 107
 
109 108
 	( ~frame.x1 ~frame.y1 ~frame.x2 ~frame.y2 #01 ,line-rect JSR2 )
110 109
 
... ...
@@ -120,12 +119,10 @@ BRK
120 119
 	
121 120
 	( arrow button )
122 121
 	~Controller.button #00 EQU ,$no-button JNZ2
123
-
124 122
 		~Controller.button #11 NEQ ^$no-pageup JNZ ~settings.page 
125 123
 			#0800 SUB2 =settings.page ,redraw JSR2 BRK $no-pageup
126 124
 		~Controller.button #21 NEQ ^$no-pagedown JNZ ~settings.page 
127 125
 			#0800 ADD2 =settings.page ,redraw JSR2 BRK $no-pagedown
128
-
129 126
 		~Controller.button #f0 AND
130 127
 		DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ 
131 128
 			( move ) ~bankview.selection #10 SUB =bankview.selection $no-up
... ...
@@ -137,7 +134,6 @@ BRK
137 134
 			( move ) ~bankview.selection #01 ADD =bankview.selection $no-right
138 135
 		POP
139 136
 		~bankview.selection ,select-tile JSR2
140
-
141 137
 	$no-button
142 138
 
143 139
 	~Controller.key #00 EQU ^$no-key JNZ
... ...
@@ -158,84 +154,46 @@ BRK
158 154
 	
159 155
 	,draw-cursor JSR2
160 156
 
161
-	~Mouse.state #00 EQU ,$click-end JNZ2
162
-
163
-		( toolbar )
164
-
165
-		~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,$no-toolbar-click JNZ2
166
-			( brush )
167
-			~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ^$no-brush-click JNZ
168
-			~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
169
-				( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
170
-			$no-brush-click
171
-			~Mouse.x ~bankview.x SUB2 8/ #0005 NEQ2 ^$no-toggle-depth JNZ
172
-				,toggle-depth JSR2
173
-			$no-toggle-depth
174
-				( release ) #00 =Mouse.state
175
-				,redraw JSR2 ,$click-end JMP2
176
-		$no-toolbar-click
177
-
178
-		( blendbiew )
179
-		~Mouse.x DUP2 ~blendview.x1 GTH2 ROT ROT ~blendview.x2 LTH2 #0101 EQU2
180
-		~Mouse.y DUP2 ~blendview.y1 GTH2 ROT ROT ~blendview.y2 LTH2 #0101 EQU2
181
-		#0101 EQU2 ,on-touch-blendview JNZ2
182
-
183
-		( bankview )
184
-		~Mouse.x DUP2 ~colorview.x1 GTH2 ROT ROT ~colorview.x2 LTH2 #0101 EQU2
185
-		~Mouse.y DUP2 ~colorview.y1 GTH2 ROT ROT ~colorview.y2 LTH2 #0101 EQU2
186
-		#0101 EQU2 ,on-touch-colorview JNZ2
187
-
188
-		( bankview )
189
-		~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
190
-		~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
191
-		#0101 EQU2 ,on-touch-bankview JNZ2
192
-
193
-		( tileview )
194
-
195
-		~Mouse.x ~tileview.x GTH2 ~Mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
196
-		~Mouse.y ~tileview.y GTH2 ~Mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
197
-		#0101 NEQ2 ,$no-tile-click JNZ2
198
-
199
-			~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2 
200
-			~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2 
201
-			8*
202
-			~tileview.addr ADD2 =addr ( addr offset )
203
-			~Mouse.x ~tileview.x SUB2 ~Mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
204
-			~Mouse.y ~tileview.y SUB2 ~Mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
205
-			~Mouse.state #10 NEQ ^$no-erase-mode JNZ
206
-				( load ) ~addr ~pos.y 8/ ADD2 PEK2
207
-				( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
208
-				#ff EOR AND
209
-				( save ) ~addr ~pos.y 8/ ADD2 POK2
210
-				,redraw JSR2 ,$click-end JMP2
211
-			$no-erase-mode
212
-			( load ) ~addr ~pos.y 8/ ADD2 PEK2
213
-			( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
214
-			ORA
215
-			( save ) ~addr ~pos.y 8/ ADD2 POK2
216
-			,redraw JSR2 ,$click-end JMP2
217
-
218
-		$no-tile-click
219
-
220
-		( operations )
221
-
222
-		~Mouse.y ~tileview.y SUB2 8/ #000c NEQ2 ,$no-operations JNZ2
223
-
224
-			~Mouse.x ~tileview.x SUB2 8/ #0011 NEQ2 ^$no-move-up JNZ
225
-				,op_shiftup JSR2 
226
-				( release ) #00 =Mouse.state
227
-				,redraw JSR2 ,$click-end JMP2
228
-			$no-move-up
229
-
230
-			~Mouse.x ~tileview.x SUB2 8/ #0012 NEQ2 ^$no-move-down JNZ
231
-				,op_shiftdown JSR2 
232
-				( release ) #00 =Mouse.state
233
-				,redraw JSR2 ,$click-end JMP2
234
-			$no-move-down
235
-
236
-		$no-operations
237
-
238
-	$click-end
157
+	~Mouse.state #00 NEQ ^$no-touch JNZ BRK $no-touch
158
+
159
+	( toolbar )
160
+	~Mouse.y ~bankview.y #0010 SUB2 SUB2 8/ #0000 NEQ2 ,$no-toolbar-click JNZ2
161
+		( brush )
162
+		~Mouse.x ~bankview.x SUB2 8/ #000d LTH2 ^$no-brush-click JNZ
163
+		~Mouse.x ~bankview.x SUB2 8/ #000f GTH2 ^$no-brush-click JNZ
164
+			( select ) ~mouse.x ~bankview.x SUB2 8/ #000d SUB2 SWP POP =bankview.mode
165
+		$no-brush-click
166
+		~Mouse.x ~bankview.x SUB2 8/ #0005 NEQ2 ^$no-toggle-depth JNZ
167
+			,toggle-depth JSR2
168
+		$no-toggle-depth
169
+			( release ) #00 =Mouse.state
170
+			,redraw JSR2 BRK
171
+	$no-toolbar-click
172
+
173
+	( bankview )
174
+	~Mouse.x ~bankview.x GTH2 ~Mouse.x ~bankview.x #0080 ADD2 LTH2 #0101 EQU2
175
+	~Mouse.y ~bankview.y GTH2 ~Mouse.y ~bankview.y #0080 ADD2 LTH2 #0101 EQU2
176
+	#0101 EQU2 ,on-touch-bankview JNZ2
177
+
178
+	( tileview )
179
+	~Mouse.x ~tileview.x GTH2 ~Mouse.x ~tileview.x #0080 ADD2 LTH2 #0101 EQU2
180
+	~Mouse.y ~tileview.y GTH2 ~Mouse.y ~tileview.y #0080 ADD2 LTH2 #0101 EQU2
181
+	#0101 EQU2 ,on-touch-tileview JNZ2
182
+
183
+	( dataview )
184
+	~Mouse.x DUP2 ~dataview.x1 GTH2 ROT ROT ~dataview.x2 LTH2 #0101 EQU2
185
+	~Mouse.y DUP2 ~dataview.y1 GTH2 ROT ROT ~dataview.y2 LTH2 #0101 EQU2
186
+	#0101 EQU2 ,on-touch-dataview JNZ2
187
+
188
+	( blendbiew )
189
+	~Mouse.x DUP2 ~blendview.x1 GTH2 ROT ROT ~blendview.x2 LTH2 #0101 EQU2
190
+	~Mouse.y DUP2 ~blendview.y1 GTH2 ROT ROT ~blendview.y2 LTH2 #0101 EQU2
191
+	#0101 EQU2 ,on-touch-blendview JNZ2
192
+
193
+	( colorview )
194
+	~Mouse.x DUP2 ~colorview.x1 GTH2 ROT ROT ~colorview.x2 LTH2 #0101 EQU2
195
+	~Mouse.y DUP2 ~colorview.y1 GTH2 ROT ROT ~colorview.y2 LTH2 #0101 EQU2
196
+	#0101 EQU2 ,on-touch-colorview JNZ2
239 197
 
240 198
 BRK
241 199
 
... ...
@@ -278,6 +236,45 @@ BRK
278 236
 
279 237
 BRK
280 238
 
239
+@on-touch-tileview ( -> )
240
+	
241
+	~Mouse.x ~tileview.x SUB2 STEP8 #0040 DIV2 
242
+	~Mouse.y ~tileview.y SUB2 STEP8 #0040 DIV2 2* ADD2 
243
+	8*
244
+	~tileview.addr ADD2 =addr ( addr offset )
245
+	~Mouse.x ~tileview.x SUB2 ~Mouse.x ~tileview.x SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.x
246
+	~Mouse.y ~tileview.y SUB2 ~Mouse.y ~tileview.y SUB2 #0040 DIV2 #0040 MUL2 SUB2 =pos.y
247
+	~Mouse.state #10 NEQ ^$no-erase-mode JNZ
248
+		( load ) ~addr ~pos.y 8/ ADD2 PEK2
249
+		( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
250
+		#ff EOR AND
251
+		( save ) ~addr ~pos.y 8/ ADD2 POK2
252
+		,redraw JSR2 BRK
253
+	$no-erase-mode
254
+	( load ) ~addr ~pos.y 8/ ADD2 PEK2
255
+	( mask ) #01 #07 ~pos.x 8/ SWP POP SUB SFL 
256
+	ORA
257
+	( save ) ~addr ~pos.y 8/ ADD2 POK2
258
+	,redraw JSR2 
259
+
260
+BRK
261
+
262
+@on-touch-dataview ( -> )
263
+
264
+	~Mouse.y ~dataview.y1 SUB2 STEP8 SWP POP #60 EQU ^$skip JNZ BRK $skip
265
+	~Mouse.x ~dataview.x1 SUB2 #0008 DIV2 SWP POP
266
+	DUP #00 NEQ ^$no-move-up JNZ
267
+		,op_shiftup JSR2 
268
+		( release ) #00 =Mouse.state
269
+		,redraw JSR2 POP BRK $no-move-up
270
+	DUP #01 NEQ ^$no-move-down JNZ
271
+		,op_shiftdown JSR2 
272
+		( release ) #00 =Mouse.state
273
+		,redraw JSR2 POP BRK $no-move-down
274
+	POP
275
+
276
+BRK
277
+
281 278
 @on-touch-blendview ( -> )
282 279
 
283 280
 	~Mouse.x ~blendview.x1 SUB2 8/ SWP POP
... ...
@@ -387,7 +384,7 @@ RTN
387 384
 	,draw-tileview JSR2
388 385
 	,draw-blendview JSR2
389 386
 	,draw-colorview JSR2
390
-	,draw-fileview JSR2
387
+	,draw-dataview JSR2
391 388
 
392 389
 RTN
393 390
 
... ...
@@ -423,17 +420,17 @@ RTN
423 420
 
424 421
 	( guides )
425 422
 
426
-	#00 =i ,font_hex =Screen.addr
423
+	~bankview.x #0010 SUB2 =Screen.x
424
+	~bankview.y =Screen.y
425
+	,font_hex =Screen.addr
426
+	#00 #10
427 427
 	$guides
428
-		~bankview.x #0010 SUB2 =Screen.x
429
-		~bankview.y #00 ~i #08 MUL ADD2 =Screen.y
430
-		( draw ) #22 =Screen.color
431
-		~bankview.x #00 ~i #08 MUL ADD2 =Screen.x
432
-		~bankview.y #0088 ADD2 =Screen.y
433
-		( draw ) #22 =Screen.color
428
+		( draw ) OVR ~bankview.selection #04 SFT EQU #22 ADD =Screen.color 
434 429
 		~Screen.addr 8+ =Screen.addr
435
-		( incr ) ~i #01 ADD =i
436
-		~i #10 LTH ^$guides JNZ
430
+		~Screen.y 8+ =Screen.y
431
+		SWP #01 ADD SWP
432
+		DUP2 LTH ^$guides JNZ
433
+	POP2
437 434
 
438 435
 	( draw page )
439 436
 
... ...
@@ -516,43 +513,6 @@ RTN
516 513
 
517 514
 	( rewind ) ~tileview.addr #0018 SUB2 =tileview.addr
518 515
 
519
-	( bytes )
520
-
521
-	~tileview.y #0018 ADD2 =Screen.y
522
-	#00 =i
523
-	$bytes
524
-		~tileview.x #0088 ADD2 =Screen.x
525
-		~tileview.addr #00 ~i ADD2 PEK2 #22 ,draw-byte JSR2
526
-		( incr ) ~i #01 ADD =i
527
-		( incr ) ~Screen.y 8+ =Screen.y
528
-	~i #08 LTH ,$bytes JNZ2
529
-
530
-	( operations )
531
-
532
-	~Screen.y 8+ =Screen.y
533
-	,movedown_icn =Screen.addr
534
-	#21 =Screen.color
535
-	~Screen.x 8- =Screen.x
536
-	,moveup_icn =Screen.addr
537
-	#21 =Screen.color
538
-
539
-	( draw tiles 2x2 )
540
-	~tileview.y =Screen.y
541
-	#00 =pt.x #00 =pt.y ~tileview.addr =Screen.addr
542
-
543
-	$tiles-ver
544
-		#00 =pt.x
545
-		~tileview.x #0088 ADD2 =Screen.x
546
-		$tiles-hor
547
-			( draw ) #23 =Screen.color
548
-			( incr ) ~Screen.x 8+ =Screen.x
549
-			( incr ) ~Screen.addr 8+ =Screen.addr
550
-			( incr ) ~pt.x #01 ADD =pt.x
551
-			~pt.x #02 LTH ,$tiles-hor JNZ2
552
-		( incr ) ~pt.y #01 ADD =pt.y
553
-		( incr ) ~Screen.y 8+ =Screen.y
554
-		~pt.y #02 LTH ,$tiles-ver JNZ2
555
-
556 516
 RTN
557 517
 
558 518
 @draw-tileview-icn
... ...
@@ -601,6 +561,47 @@ RTN
601 561
 
602 562
 RTN
603 563
 
564
+@draw-dataview ( -- )
565
+
566
+	( bytes )
567
+
568
+	~tileview.y #0018 ADD2 =Screen.y
569
+	#00 =i
570
+	$bytes
571
+		~tileview.x #0088 ADD2 =Screen.x
572
+		~tileview.addr #00 ~i ADD2 PEK2 #22 ,draw-byte JSR2
573
+		( incr ) ~i #01 ADD =i
574
+		( incr ) ~Screen.y 8+ =Screen.y
575
+	~i #08 LTH ,$bytes JNZ2
576
+
577
+	( operations )
578
+
579
+	~Screen.y 8+ =Screen.y
580
+	,movedown_icn =Screen.addr
581
+	#21 =Screen.color
582
+	~Screen.x 8- =Screen.x
583
+	,moveup_icn =Screen.addr
584
+	#21 =Screen.color
585
+
586
+	( draw tiles 2x2 )
587
+	~tileview.y =Screen.y
588
+	#00 =pt.x #00 =pt.y ~tileview.addr =Screen.addr
589
+
590
+	$tiles-ver
591
+		#00 =pt.x
592
+		~tileview.x #0088 ADD2 =Screen.x
593
+		$tiles-hor
594
+			( draw ) #23 =Screen.color
595
+			( incr ) ~Screen.x 8+ =Screen.x
596
+			( incr ) ~Screen.addr 8+ =Screen.addr
597
+			( incr ) ~pt.x #01 ADD =pt.x
598
+			~pt.x #02 LTH ,$tiles-hor JNZ2
599
+		( incr ) ~pt.y #01 ADD =pt.y
600
+		( incr ) ~Screen.y 8+ =Screen.y
601
+		~pt.y #02 LTH ,$tiles-ver JNZ2
602
+
603
+RTN
604
+
604 605
 @draw-colorview ( -- )
605 606
 	
606 607
 	~colorview.y1 #18 ADD =Screen.y
... ...
@@ -627,31 +628,6 @@ RTN
627 628
 
628 629
 RTN
629 630
 
630
-@draw-fileview ( -- )
631
-
632
-	( line hor )
633
-	~fileview.y1 =Screen.y
634
-	~fileview.x1 ~fileview.x2
635
-	$line-hor
636
-		OVR2 =Screen.x
637
-		( draw ) #03 =Screen.color
638
-		( incr ) SWP2 #0002 ADD2 SWP2
639
-		OVR2 OVR2 LTH2 ^$line-hor JNZ
640
-	POP2 POP2
641
-
642
-	~fileview.y1 #0008 ADD2 =Screen.y
643
-	~fileview.x1 #0008 ADD2 =Screen.x
644
-	,rename_icn =Screen.addr
645
-	#21 =Screen.color
646
-	~fileview.x2 #0018 SUB2 =Screen.x
647
-	,load_icn =Screen.addr
648
-	#21 =Screen.color
649
-	~fileview.x2 #0010 SUB2 =Screen.x
650
-	,save_icn =Screen.addr
651
-	#21 =Screen.color
652
-
653
-RTN
654
-
655 631
 @draw-color-code ( color* -- )
656 632
 	
657 633
 	DUP ,font_hex ROT #0f AND #08 MUL #00 SWP ADD2 =Screen.addr
... ...
@@ -743,30 +719,22 @@ RTN
743 719
 @circle_icns 
744 720
 	[ 0038 7cfe fefe 7c38 ] ( full )
745 721
 	[ 0038 4482 8282 4438 ] ( line )
746
-
722
+@eye_icns
723
+	[ 0038 4492 2810 0000 ] ( open )
724
+	[ 0000 0082 4438 0000 ] ( closed )
747 725
 @tool_selector [ 80c0 e0f0 f8e0 1000 ]
748 726
 @tool_hand     [ 4040 4070 f8f8 f870 ]
749 727
 @tool_eraser   [ 2050 b87c 3e1c 0800 ]
728
+@moveup_icn    [ 0010 387c fe10 1000 ]
729
+@movedown_icn  [ 0010 1010 fe7c 3810 ]
750 730
 @blank_icn     [
751 731
 	0000 0000 0000 0000
752 732
 	7cfe fefe fefe 7c00
753 733
 ]
754
-
755 734
 @depth_icns [
756 735
 	00fe 8282 fe82 82fe
757 736
 	00fe 9292 fe92 92fe
758 737
 ]
759
-
760
-@eye_icns
761
-	[ 0038 4492 2810 0000 ] ( open )
762
-	[ 0000 0082 4438 0000 ] ( closed )
763
-
764
-@rename_icn     [ 1054 28c6 2854 1000 ]
765
-@load_icn       [ feaa d6aa d4aa f400 ]
766
-@save_icn       [ fe82 8282 848a f400 ]
767
-
768
-@moveup_icn    [ 0010 387c fe10 1000 ]
769
-@movedown_icn  [ 0010 1010 fe7c 3810 ]
770 738
 @filepath1     [ projects/fonts/specter8.bit 00 ]
771 739
 @filepath2     [ projects/pictures/cibo.bit 00 ]
772 740
 @filepath3     [ projects/pictures/zerotwo10x10.chr 00 ]
... ...
@@ -844,7 +844,7 @@ RTN
844 844
 
845 845
 RTN
846 846
 
847
-@draw-label ( addr -- )
847
+@draw-label ( addr color -- )
848 848
 	
849 849
 	=color 
850 850
 	$loop