Browse code

Progress on Nasu

neauoire authored on 09/05/2021 18:22:21
Showing 2 changed files
... ...
@@ -34,7 +34,7 @@ else
34 34
 fi
35 35
 
36 36
 echo "Assembling.."
37
-./bin/assembler projects/demos/drum-rack.usm bin/boot.rom
37
+./bin/assembler projects/software/nasu.usm bin/boot.rom
38 38
 
39 39
 echo "Running.."
40 40
 if [ "${2}" = '--cli' ]; 
... ...
@@ -17,12 +17,14 @@
17 17
 %RTN { JMP2r }
18 18
 %STEP8 { #0033 SFT2 }
19 19
 
20
-%++ { #0001 ADD2 } %-- { #0001 SUB2 }
21
-%2/ { #0001 SFT2 } %2* { #0010 SFT2 }
22
-%8/ { #0003 SFT2 } %8* { #0030 SFT2 }
23
-%8- { #0008 SUB2 } %8+ { #0008 ADD2 }
24 20
 %SFL { #40 SFT SFT }
25 21
 %MOD { DUP2 DIV MUL SUB }
22
+
23
+%TOB { SWP POP }
24
+
25
+%DEBUG  { .Console/byte DEO #0a .Console/char DEO }
26
+%DEBUG2 { .Console/short DEO2 #0a .Console/char DEO }
27
+
26 28
 %LTS2  { #8000 ADD2 SWP2 #8000 ADD2 GTH2 }
27 29
 %GTS2  { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
28 30
 
... ...
@@ -42,12 +44,12 @@
42 44
 
43 45
 ( devices )
44 46
 
45
-|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
46
-|10 @Console [ &vector $2 &pad $6 &char $1 &byte $1 &short $2 &string $2 ]
47
-|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
48
-|80 @Controller [ &vector $2 &button $1 &key $1 ]
49
-|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ]
50
-|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
47
+|00 @System     [ &vector $2 &pad     $6 &r $2 &g $2 &b $2 ]
48
+|10 @Console    [ &vector $2 &pad     $6 &char $1 &byte $1 &short $2 &string $2 ]
49
+|20 @Screen     [ &vector $2 &width   $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &color $1 ]
50
+|80 @Controller [ &vector $2 &button  $1 &key $1 ]
51
+|90 @Mouse      [ &vector $2 &x       $2 &y $2 &state $1 &chord $1 ]
52
+|a0 @File       [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
51 53
 
52 54
 ( variables )
53 55
 
... ...
@@ -56,35 +58,46 @@
56 58
 @settings [ &blending $1 &depth $1 &brush $1 &page $2 &tile $2 ]
57 59
 
58 60
 @frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 &width $2 &height $2 ]
59
-@bankview [ &x $2 &y $2 &mode $1 &selection $1 ]
60
-@tileview [ &x $2 &y $2 ]
61
+
62
+( interface )
63
+@bankview  [ &x  $2 &y  $2 &mode $1 &selection $1 ]
64
+@tileview  [ &x  $2 &y  $2 ]
61 65
 @colorview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
62 66
 @blendview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
63
-@dataview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
67
+@dataview  [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
68
+@preview   [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
69
+
64 70
 @rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
65 71
 @mouse [ &x $2 &y $2 ]
66
-@color [ &byte $1 ]
67
-@i [ &byte $1 ]
68 72
 @pt [ &x $1 &y $1 ]
69 73
 @addr [ &short $2 ]
70 74
 @pos [ &x $2 &y $2 ]
71 75
 
76
+@color $1 
77
+@i     $1
78
+@ratio $1
79
+
72 80
 ( program )
73 81
 
74 82
 |0100
75 83
 
76
-	( theme ) #0efc .System/r DEO2 #03cc .System/g DEO2 #03ac .System/b DEO2
77
-	( vectors ) ;on-button .Controller/vector DEO2
78
-	( vectors ) ;on-mouse .Mouse/vector DEO2
79
-	( vectors ) ;on-transfer .File/vector DEO2
84
+	( theme ) 
85
+	#0efc .System/r DEO2 
86
+	#03cc .System/g DEO2 
87
+	#03ac .System/b DEO2
88
+
89
+	( vectors )
90
+	;on-button   .Controller/vector DEO2
91
+	;on-mouse    .Mouse/vector DEO2
92
+	;on-transfer .File/vector DEO2
80 93
 
81
-	( set frame )
94
+	( set defaults )
82 95
 	#0130 .frame/width POK2
83 96
 	#00a8 .frame/height POK2
84 97
 	#01 .settings/brush POK
85 98
 
86
-	.Screen/width DEI2 2/ .frame/width PEK2 2/ SUB2
87
-	.Screen/height DEI2 2/ .frame/height PEK2 2/ SUB2 #0010 ADD2
99
+	.Screen/width DEI2 #0001 SFT2 .frame/width PEK2 #0001 SFT2 SUB2
100
+	.Screen/height DEI2 #0001 SFT2 .frame/height PEK2 #0001 SFT2 SUB2 #0010 ADD2
88 101
 	.frame/width PEK2 .frame/height PEK2
89 102
 	SIZE-TO-RECT ;frame SET-RECT
90 103
 
... ...
@@ -98,6 +111,7 @@
98 111
 
99 112
 	.frame/x1 PEK2 #0010 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
100 113
 	.frame/x1 PEK2 #0038 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
114
+	.frame/x1 PEK2 #0068 ADD2 .frame/y2 PEK2 #0020 SUB2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
101 115
 	.frame/x2 PEK2 #0010 SUB2 .frame/y1 PEK2 #0010 #0080 SIZE-TO-RECT ;dataview SET-RECT
102 116
 
103 117
 	#01 .settings/blending POK
... ...
@@ -111,8 +125,6 @@
111 125
 
112 126
 	#40 DUP .bankview/selection POK ;select-tile JSR2
113 127
 
114
-	( ~frame.x1 ~frame.y1 ~frame.x2 ~frame.y2 #01 ,line-rect JSR2 )
115
-
116 128
 BRK
117 129
 
118 130
 @on-transfer ( -> )
... ...
@@ -123,13 +135,19 @@ BRK
123 135
 
124 136
 @on-button ( -> )
125 137
 	
126
-	( arrow button )
127
-	.Controller/button DEI #00 EQU ;&no-button JNZ2
128
-		.Controller/button DEI #11 NEQ ,&no-pageup JNZ .settings/page PEK2
129
-			#0800 SUB2 .settings/page POK2 ;redraw JSR2 BRK &no-pageup
130
-		.Controller/button DEI #21 NEQ ,&no-pagedown JNZ .settings/page PEK2
131
-			#0800 ADD2 .settings/page POK2 ;redraw JSR2 BRK &no-pagedown
132
-		.Controller/button DEI #f0 AND
138
+	( skip ) .Controller/button DEI #00 NEQ #01 JNZ [ BRK ]
139
+
140
+	.Controller/button DEI #11 NEQ ,&no-pageup JNZ .settings/page PEK2
141
+		#0800 SUB2 .settings/page POK2 
142
+		;redraw JSR2 
143
+		BRK &no-pageup
144
+
145
+	.Controller/button DEI #21 NEQ ,&no-pagedown JNZ .settings/page PEK2
146
+		#0800 ADD2 .settings/page POK2 
147
+		;redraw JSR2 
148
+		BRK &no-pagedown
149
+
150
+	.Controller/button DEI #f0 AND
133 151
 		DUP #04 SFT #01 AND #01 NEQ ,&no-up JNZ
134 152
 			( move ) .bankview/selection PEK #10 SUB .bankview/selection POK &no-up
135 153
 		DUP #05 SFT #01 AND #01 NEQ ,&no-down JNZ
... ...
@@ -139,20 +157,8 @@ BRK
139 157
 		DUP #07 SFT #01 AND #01 NEQ ,&no-right JNZ
140 158
 			( move ) .bankview/selection PEK #01 ADD .bankview/selection POK &no-right
141 159
 		POP
142
-		.bankview/selection PEK ;select-tile JSR2
143
-	&no-button
144
-
145
-	.Controller/key DEI #00 EQU ,&no-key JNZ
146
-		.Controller/key DEI #31 LTH ,&no-number JNZ
147
-		.Controller/key DEI #33 GTH ,&no-number JNZ
148
-		( select ) .Controller/key DEI #31 SUB .bankview/mode POK
149
-			;redraw JSR2
150
-		&no-number
151
-		.Controller/key DEI #20 NEQ ,&no-space JNZ
152
-			;toggle-depth JSR2
153
-			;redraw JSR2
154
-		&no-space
155
-	&no-key
160
+
161
+	.bankview/selection PEK ;select-tile JSR2
156 162
 
157 163
 BRK
158 164
 
... ...
@@ -160,16 +166,16 @@ BRK
160 166
 	
161 167
 	;draw-cursor JSR2
162 168
 
163
-	.Mouse/state DEI #00 NEQ ,&no-touch JNZ BRK &no-touch
169
+	( skip ) .Mouse/state DEI #00 NEQ #01 JNZ [ BRK ]
164 170
 
165 171
 	( toolbar )
166
-	.Mouse/y DEI2 .bankview/y PEK2 #0010 SUB2 SUB2 8/ #0000 NEQ2 ;&no-toolbar-click JNZ2
172
+	.Mouse/y DEI2 .bankview/y PEK2 #0010 SUB2 SUB2 #0008 DIV2 #0000 NEQ2 ;&no-toolbar-click JNZ2
167 173
 		( brush )
168
-		.Mouse/x DEI2 .bankview/x PEK2 SUB2 8/ #000d LTH2 ,&no-brush-click JNZ
169
-		.Mouse/x DEI2 .bankview/x PEK2 SUB2 8/ #000f GTH2 ,&no-brush-click JNZ
170
-			( select ) .mouse/x PEK2 .bankview/x PEK2 SUB2 8/ #000d SUB2 SWP POP .bankview/mode POK
174
+		.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #000d LTH2 ,&no-brush-click JNZ
175
+		.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #000f GTH2 ,&no-brush-click JNZ
176
+			( select ) .mouse/x PEK2 .bankview/x PEK2 SUB2 #0008 DIV2 #000d SUB2 TOB .bankview/mode POK
171 177
 		&no-brush-click
172
-		.Mouse/x DEI2 .bankview/x PEK2 SUB2 8/ #0005 NEQ2 ,&no-toggle-depth JNZ
178
+		.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 #0005 NEQ2 ,&no-toggle-depth JNZ
173 179
 			;toggle-depth JSR2
174 180
 		&no-toggle-depth
175 181
 			( release ) #00 .Mouse/state DEO
... ...
@@ -201,6 +207,11 @@ BRK
201 207
 	.Mouse/y DEI2 DUP2 .colorview/y1 PEK2 GTH2 ROT ROT .colorview/y2 PEK2 LTH2 #0101 EQU2
202 208
 	#0101 EQU2 ;on-touch-colorview JNZ2
203 209
 
210
+	( preview )
211
+	.Mouse/x DEI2 DUP2 .preview/x1 PEK2 GTH2 ROT ROT .preview/x2 PEK2 LTH2 #0101 EQU2
212
+	.Mouse/y DEI2 DUP2 .preview/y1 PEK2 GTH2 ROT ROT .preview/y2 PEK2 LTH2 #0101 EQU2
213
+	#0101 EQU2 ;on-touch-preview JNZ2
214
+
204 215
 BRK
205 216
 
206 217
 @on-touch-bankview ( -> )
... ...
@@ -235,8 +246,8 @@ BRK
235 246
 
236 247
 	( select )
237 248
 
238
-	.Mouse/x DEI2 .bankview/x PEK2 SUB2 8/ SWP POP
239
-	.Mouse/y DEI2 .bankview/y PEK2 SUB2 8/ SWP POP #40 SFT ADD
249
+	.Mouse/x DEI2 .bankview/x PEK2 SUB2 #0008 DIV2 TOB
250
+	.Mouse/y DEI2 .bankview/y PEK2 SUB2 #0008 DIV2 TOB #40 SFT ADD
240 251
 	DUP .bankview/selection POK
241 252
 	;select-tile JSR2
242 253
 
... ...
@@ -245,30 +256,30 @@ BRK
245 256
 @on-touch-tileview ( -> )
246 257
 	
247 258
 	.Mouse/x DEI2 .tileview/x PEK2 SUB2 STEP8 #0040 DIV2
248
-	.Mouse/y DEI2 .tileview/y PEK2 SUB2 STEP8 #0040 DIV2 2* ADD2
249
-	8*
259
+	.Mouse/y DEI2 .tileview/y PEK2 SUB2 STEP8 #0040 DIV2 #0002 DIV2 ADD2
260
+	#0008 MUL2
250 261
 	.settings/tile PEK2 ADD2 .addr POK2 ( addr offset )
251 262
 	.Mouse/x DEI2 .tileview/x PEK2 SUB2 .Mouse/x DEI2 .tileview/x PEK2 SUB2 #0040 DIV2 #0040 MUL2 SUB2 .pos/x POK2
252 263
 	.Mouse/y DEI2 .tileview/y PEK2 SUB2 .Mouse/y DEI2 .tileview/y PEK2 SUB2 #0040 DIV2 #0040 MUL2 SUB2 .pos/y POK2
253 264
 	.Mouse/state DEI #10 NEQ ,&no-erase-mode JNZ
254
-		( load ) .addr PEK2 .pos/y PEK2 8/ ADD2 LDA
255
-		( mask ) #01 #07 .pos/x PEK2 8/ SWP POP SUB SFL
265
+		( load ) .addr PEK2 .pos/y PEK2 #0008 DIV2 ADD2 LDA
266
+		( mask ) #01 #07 .pos/x PEK2 #0008 DIV2 TOB SUB SFL
256 267
 		#ff EOR AND
257
-		( save ) .addr PEK2 .pos/y PEK2 8/ ADD2 STA
268
+		( save ) .addr PEK2 .pos/y PEK2 #0008 DIV2 ADD2 STA
258 269
 		;redraw JSR2 BRK
259 270
 	&no-erase-mode
260
-	( load ) .addr PEK2 .pos/y PEK2 8/ ADD2 LDA
261
-	( mask ) #01 #07 .pos/x PEK2 8/ SWP POP SUB SFL
271
+	( load ) .addr PEK2 .pos/y PEK2 #0008 DIV2 ADD2 LDA
272
+	( mask ) #01 #07 .pos/x PEK2 #0008 DIV2 TOB SUB SFL
262 273
 	ORA
263
-	( save ) .addr PEK2 .pos/y PEK2 8/ ADD2 STA
274
+	( save ) .addr PEK2 .pos/y PEK2 #0008 DIV2 ADD2 STA
264 275
 	;redraw JSR2
265 276
 
266 277
 BRK
267 278
 
268 279
 @on-touch-dataview ( -> )
269 280
 
270
-	.Mouse/y DEI2 .dataview/y1 PEK2 SUB2 STEP8 SWP POP #60 EQU ,&skip JNZ BRK &skip
271
-	.Mouse/x DEI2 .dataview/x1 PEK2 SUB2 #0008 DIV2 SWP POP
281
+	.Mouse/y DEI2 .dataview/y1 PEK2 SUB2 STEP8 TOB #60 EQU ,&skip JNZ BRK &skip
282
+	.Mouse/x DEI2 .dataview/x1 PEK2 SUB2 #0008 DIV2 TOB
272 283
 	DUP #00 NEQ ,&no-move-up JNZ
273 284
 		;op_shiftup JSR2
274 285
 		( release ) #00 .Mouse/state DEO
... ...
@@ -283,8 +294,8 @@ BRK
283 294
 
284 295
 @on-touch-blendview ( -> )
285 296
 
286
-	.Mouse/x DEI2 .blendview/x1 PEK2 SUB2 8/ SWP POP
287
-	.Mouse/y DEI2 .blendview/y1 PEK2 SUB2 8/ SWP POP #04 MUL ADD
297
+	.Mouse/x DEI2 .blendview/x1 PEK2 SUB2 #0008 DIV2 TOB
298
+	.Mouse/y DEI2 .blendview/y1 PEK2 SUB2 #0008 DIV2 TOB #04 MUL ADD
288 299
 	.settings/blending POK
289 300
 	( release ) #00 .Mouse/state DEO
290 301
 	;redraw JSR2
... ...
@@ -293,8 +304,8 @@ BRK
293 304
 
294 305
 @on-touch-colorview ( -> )
295 306
 
296
-	( channel ) .Mouse/y DEI2 .colorview/y1 PEK2 SUB2 8/ SWP POP STH
297
-	( rgb ) .Mouse/x DEI2 .colorview/x1 PEK2 SUB2 8/ SWP POP
307
+	( channel ) .Mouse/y DEI2 .colorview/y1 PEK2 SUB2 #0008 DIV2 TOB STH
308
+	( rgb ) .Mouse/x DEI2 .colorview/x1 PEK2 SUB2 #0008 DIV2 TOB
298 309
 	DUP #00 NEQ ,&no-brush JNZ
299 310
 		DUPr STHr .settings/brush POK &no-brush
300 311
 	DUP #01 NEQ ,&no-red JNZ
... ...
@@ -309,6 +320,19 @@ BRK
309 320
 
310 321
 BRK
311 322
 
323
+@on-touch-preview ( -> )
324
+
325
+	( y ) .Mouse/y DEI2 .preview/y1 PEK2 SUB2 #0008 DIV2 TOB
326
+	( x ) .Mouse/x DEI2 .preview/x1 PEK2 SUB2 #0008 DIV2 TOB
327
+
328
+	#40 SFT ADD #11 ADD
329
+	DEBUG
330
+
331
+	( release ) #00 .Mouse/state DEO
332
+	;redraw JSR2
333
+
334
+BRK
335
+
312 336
 @set-color ( color rgb -- )
313 337
 	
314 338
 	STH
... ...
@@ -340,8 +364,8 @@ RTN
340 364
 @select-tile ( pos -- )
341 365
 
342 366
 	( x y ) DUP #0f AND SWP #04 SFT
343
-	( y ) #10 MOD #10 MUL #00 SWP 8*
344
-	( x ) ROT #10 MOD #00 SWP 8* ADD2
367
+	( y ) #10 MOD #10 MUL #00 SWP #0008 MUL2
368
+	( x ) ROT #10 MOD #00 SWP #0008 MUL2 ADD2
345 369
 	( 2-bit mode ) #00 .settings/depth PEK #01 ADD MUL2
346 370
 	( offset ) .settings/page PEK2 ADD2 .settings/tile POK2
347 371
 	;redraw JSR2
... ...
@@ -391,6 +415,7 @@ RTN
391 415
 	;draw-blendview JSR2
392 416
 	;draw-colorview JSR2
393 417
 	;draw-dataview JSR2
418
+	;draw-preview JSR2
394 419
 
395 420
 RTN
396 421
 
... ...
@@ -409,18 +434,18 @@ RTN
409 434
 	.bankview/y PEK2 #0010 SUB2 .Screen/y DEO2
410 435
 
411 436
 	.bankview/x PEK2 #0028 ADD2 .Screen/x DEO2
412
-	;depth_icns #00 .settings/depth PEK 8* ADD2 .Screen/addr DEO2
437
+	;depth_icns #00 .settings/depth PEK #0008 MUL2 ADD2 .Screen/addr DEO2
413 438
 	#23 .Screen/color DEO
414 439
 
415 440
 	.bankview/x PEK2 #0068 ADD2 .Screen/x DEO2
416 441
 	;tool_selector .Screen/addr DEO2
417 442
 	#21 .bankview/mode PEK #00 EQU ADD .Screen/color DEO
418 443
 
419
-	.Screen/x DEI2 8+ .Screen/x DEO2
444
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
420 445
 	;tool_hand .Screen/addr DEO2
421 446
 	#21 .bankview/mode PEK #01 EQU ADD .Screen/color DEO
422 447
 
423
-	.Screen/x DEI2 8+ .Screen/x DEO2
448
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
424 449
 	;tool_eraser .Screen/addr DEO2
425 450
 	#21 .bankview/mode PEK #02 EQU ADD .Screen/color DEO
426 451
 
... ...
@@ -432,8 +457,8 @@ RTN
432 457
 	#00 #10
433 458
 	&guides
434 459
 		( draw ) OVR .bankview/selection PEK #04 SFT EQU #22 ADD .Screen/color DEO
435
-		.Screen/addr DEI2 8+ .Screen/addr DEO2
436
-		.Screen/y DEI2 8+ .Screen/y DEO2
460
+		.Screen/addr DEI2 #0008 ADD2 .Screen/addr DEO2
461
+		.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
437 462
 		SWP #01 ADD SWP
438 463
 		DUP2 LTH ,&guides JNZ
439 464
 	POP2
... ...
@@ -451,11 +476,11 @@ RTN
451 476
 			( get blending ) .settings/blending PEK
452 477
 			( get depth ) .settings/depth PEK #20 MUL
453 478
 			( draw ) #20 ADD ADD ADD .Screen/color DEO
454
-			( incr ) SWP2 8+ SWP2
455
-			( incr ) .Screen/addr DEI2 8+ #00 .settings/depth PEK #0008 MUL2 ADD2 .Screen/addr DEO2
479
+			( incr ) SWP2 #0008 ADD2 SWP2
480
+			( incr ) .Screen/addr DEI2 #0008 ADD2 #00 .settings/depth PEK #0008 MUL2 ADD2 .Screen/addr DEO2
456 481
 			OVR2 OVR2 LTH2 ,&hor JNZ
457 482
 		POP2 POP2
458
-		( incr ) SWP2 8+ SWP2
483
+		( incr ) SWP2 #0008 ADD2 SWP2
459 484
 		OVR2 OVR2 LTH2 ,&ver JNZ
460 485
 	POP2 POP2
461 486
 
... ...
@@ -488,17 +513,17 @@ RTN
488 513
 
489 514
 	.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2
490 515
 	.tileview/y PEK2 .Screen/y DEO2
491
-	.settings/tile PEK2 8+ .settings/tile POK2
516
+	.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
492 517
 	;draw-tileview-icn JSR2
493 518
 
494 519
 	.tileview/x PEK2 .Screen/x DEO2
495 520
 	.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2
496
-	.settings/tile PEK2 8+ .settings/tile POK2
521
+	.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
497 522
 	;draw-tileview-icn JSR2
498 523
 
499 524
 	.tileview/x PEK2 #0040 ADD2 .Screen/x DEO2
500 525
 	.tileview/y PEK2 #0040 ADD2 .Screen/y DEO2
501
-	.settings/tile PEK2 8+ .settings/tile POK2
526
+	.settings/tile PEK2 #0008 ADD2 .settings/tile POK2
502 527
 	;draw-tileview-icn JSR2
503 528
 
504 529
 	( line hor )
... ...
@@ -530,12 +555,12 @@ RTN
530 555
 			( get bit )
531 556
 			;blank_icn #00
532 557
 			.settings/tile PEK2 #00 .pt/y PEK ADD2 LDA #07 .pt/x PEK SUB SFT #01 AND ( get bit )
533
-			8* ADD2 .Screen/addr DEO2 ( add *8 )
558
+			#0008 MUL2 ADD2 .Screen/addr DEO2 ( add *8 )
534 559
 			( draw ) #21 .Screen/color DEO
535
-			( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
560
+			( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
536 561
 			( incr ) .pt/x PEK #01 ADD .pt/x POK
537 562
 			.pt/x PEK #08 LTH ;&hor JNZ2
538
-		( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
563
+		( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
539 564
 		( incr ) .pt/y PEK #01 ADD .pt/y POK
540 565
 		.Screen/x DEI2 #0040 SUB2 .Screen/x DEO2
541 566
 		.pt/y PEK #08 LTH ;&ver JNZ2
... ...
@@ -577,15 +602,15 @@ RTN
577 602
 		.tileview/x PEK2 #0088 ADD2 .Screen/x DEO2
578 603
 		.settings/tile PEK2 #00 .i PEK ADD2 LDA #22 ;draw-byte JSR2
579 604
 		( incr ) .i PEK #01 ADD .i POK
580
-		( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
605
+		( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
581 606
 	.i PEK #08 LTH ;&bytes JNZ2
582 607
 
583 608
 	( operations )
584 609
 
585
-	.Screen/y DEI2 8+ .Screen/y DEO2
610
+	.Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
586 611
 	;movedown_icn .Screen/addr DEO2
587 612
 	#21 .Screen/color DEO
588
-	.Screen/x DEI2 8- .Screen/x DEO2
613
+	.Screen/x DEI2 #0008 SUB2 .Screen/x DEO2
589 614
 	;moveup_icn .Screen/addr DEO2
590 615
 	#21 .Screen/color DEO
591 616
 
... ...
@@ -598,12 +623,12 @@ RTN
598 623
 		.tileview/x PEK2 #0088 ADD2 .Screen/x DEO2
599 624
 		&tiles-hor
600 625
 			( draw ) #23 .Screen/color DEO
601
-			( incr ) .Screen/x DEI2 8+ .Screen/x DEO2
602
-			( incr ) .Screen/addr DEI2 8+ .Screen/addr DEO2
626
+			( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
627
+			( incr ) .Screen/addr DEI2 #0008 ADD2 .Screen/addr DEO2
603 628
 			( incr ) .pt/x PEK #01 ADD .pt/x POK
604 629
 			.pt/x PEK #02 LTH ;&tiles-hor JNZ2
605 630
 		( incr ) .pt/y PEK #01 ADD .pt/y POK
606
-		( incr ) .Screen/y DEI2 8+ .Screen/y DEO2
631
+		( incr ) .Screen/y DEI2 #0008 ADD2 .Screen/y DEO2
607 632
 		.pt/y PEK #02 LTH ;&tiles-ver JNZ2
608 633
 
609 634
 RTN
... ...
@@ -634,6 +659,12 @@ RTN
634 659
 
635 660
 RTN
636 661
 
662
+@draw-preview ( -- )
663
+
664
+	.preview/x1 PEK2 #0002 SUB2 .preview/y1 PEK2 #0002 SUB2 .preview/x2 PEK2 #0001 ADD2 .preview/y2 PEK2 #0001 ADD2 #03 ;line-rect JSR2
665
+
666
+RTN
667
+
637 668
 @draw-color-code ( color* -- )
638 669
 	
639 670
 	DUP ;font_hex ROT #0f AND #08 MUL #00 SWP ADD2 .Screen/addr DEO2
... ...
@@ -655,7 +686,6 @@ RTN
655 686
 	( clear last cursor )
656 687
 	.mouse/x PEK2 .Screen/x DEO2
657 688
 	.mouse/y PEK2 .Screen/y DEO2
658
-	;blank_icn .Screen/addr DEO2
659 689
 	#30 .Screen/color DEO
660 690
 
661 691
 	( record mouse positions )
... ...
@@ -675,7 +705,7 @@ RTN
675 705
 	.color POK STH
676 706
 	;font_hex #00 DUPr STHr #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
677 707
 	( draw ) .color PEK .Screen/color DEO
678
-	.Screen/x DEI2 8+ .Screen/x DEO2
708
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
679 709
 	;font_hex #00 STHr #0f AND #08 MUL ADD2 .Screen/addr DEO2
680 710
 	( draw ) .color PEK .Screen/color DEO
681 711
 
... ...
@@ -686,14 +716,14 @@ RTN
686 716
 	.addr POK2
687 717
 	;font_hex #00 ;addr LDA #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
688 718
 	( draw ) #22 .Screen/color DEO
689
-	.Screen/x DEI2 8+ .Screen/x DEO2
719
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
690 720
 	;font_hex #00 ;addr LDA #0f AND #08 MUL ADD2 .Screen/addr DEO2
691 721
 	( draw ) #22 .Screen/color DEO
692
-	.Screen/x DEI2 8+ .Screen/x DEO2
693
-	;font_hex #00 ;addr ++ LDA #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
722
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
723
+	;font_hex #00 ;addr #0001 ADD2 LDA #f0 AND #04 SFT #08 MUL ADD2 .Screen/addr DEO2
694 724
 	( draw ) #22 .Screen/color DEO
695
-	.Screen/x DEI2 8+ .Screen/x DEO2
696
-	;font_hex #00 ;addr ++ LDA #0f AND #08 MUL ADD2 .Screen/addr DEO2
725
+	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
726
+	;font_hex #00 ;addr #0001 ADD2 LDA #0f AND #08 MUL ADD2 .Screen/addr DEO2
697 727
 	( draw ) #22 .Screen/color DEO
698 728
 
699 729
 RTN
... ...
@@ -708,7 +738,7 @@ RTN
708 738
 		( save ) OVR2 .Screen/y DEO2
709 739
 		( draw ) .rect/x1 PEK2 .Screen/x DEO2 .color PEK DUP .Screen/color DEO
710 740
 		( draw ) .rect/x2 PEK2 .Screen/x DEO2 .Screen/color DEO
711
-		( incr ) SWP2 ++ SWP2
741
+		( incr ) SWP2 #0001 ADD2 SWP2
712 742
 		OVR2 OVR2 LTS2 ,&ver JNZ
713 743
 	POP2 POP2
714 744
 	.rect/x1 PEK2 .rect/x2 PEK2
... ...
@@ -716,8 +746,8 @@ RTN
716 746
 		( save ) OVR2 .Screen/x DEO2
717 747
 		( draw ) .rect/y1 PEK2 .Screen/y DEO2 .color PEK DUP .Screen/color DEO
718 748
 		( draw ) .rect/y2 PEK2 .Screen/y DEO2 .Screen/color DEO
719
-		( incr ) SWP2 ++ SWP2
720
-		OVR2 OVR2 ++ LTS2 ,&hor JNZ
749
+		( incr ) SWP2 #0001 ADD2 SWP2
750
+		OVR2 OVR2 #0001 ADD2 LTS2 ,&hor JNZ
721 751
 	POP2 POP2
722 752
 
723 753
 RTN