Browse code

(piano.tal) Optimized octave drawing routine

neauoire authored on 09/02/2022 03:45:29
Showing 1 changed files
... ...
@@ -18,11 +18,15 @@
18 18
 %8//  { #03 SFT2 }
19 19
 %8**  { #30 SFT2 }
20 20
 
21
+%AUTO-NONE   { #00 .Screen/auto DEO }
22
+%AUTO-X      { #01 .Screen/auto DEO }
23
+%AUTO-YADDR  { #06 .Screen/auto DEO }
24
+
21 25
 ( devices )
22 26
 
23 27
 |00 @System     &vector $2 &wst      $1 &rst    $1 &pad    $4 &r      $2 &g      $2 &b      $2 &debug  $1 &halt $1
24 28
 |10 @Console    &vector $2 &read     $1 &pad    $5 &write  $1 &error  $1
25
-|20 @Screen     &vector $2 &width    $2 &height $2 &pad    $2 &x      $2 &y      $2 &addr   $2 &pixel  $1 &sprite $1
29
+|20 @Screen     &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
26 30
 |30 @Audio0     &vector $2 &position $2 &output $1 &pad    $3 &adsr   $2 &length $2 &addr   $2 &volume $1 &pitch $1
27 31
 |80 @Controller &vector $2 &button   $1 &key    $1
28 32
 |90 @Mouse      &vector $2 &x        $2 &y      $2 &state  $1 &pad    $3 &modx   $2 &mody   $2
... ...
@@ -277,16 +281,6 @@ RTN
277 281
 
278 282
 @draw-octave ( -- )
279 283
 	
280
-	.octave-view/x1 LDZ2 .octave-view/y1 LDZ2
281
-
282
-	OVR2 OVR2 ;keys-left-icns .last-note LDZ #00 = INC ;draw-key JSR2
283
-	OVR2 #0008 ++ OVR2 ;keys-middle-icns .last-note LDZ #02 = INC ;draw-key JSR2
284
-	OVR2 #0010 ++ OVR2 ;keys-right-icns .last-note LDZ #04 = INC ;draw-key JSR2
285
-	OVR2 #0018 ++ OVR2 ;keys-left-icns .last-note LDZ #05 = INC ;draw-key JSR2
286
-	OVR2 #0020 ++ OVR2 ;keys-middle-icns .last-note LDZ #07 = INC ;draw-key JSR2
287
-	OVR2 #0028 ++ OVR2 ;keys-middle-icns .last-note LDZ #09 = INC ;draw-key JSR2
288
-	SWP2 #0030 ++ SWP2 ;keys-right-icns .last-note LDZ #0b = INC ;draw-key JSR2
289
-
290 284
 	.octave-view/x1 LDZ2 #0048 ++ .Screen/x DEO2
291 285
 
292 286
 	;arrow-icns .Screen/addr DEO2
... ...
@@ -301,21 +295,29 @@ RTN
301 295
 	.octave-view/y1 LDZ2 #0008 ++ .Screen/y DEO2
302 296
 	#03 .Screen/sprite DEO
303 297
 
298
+	.octave-view/x1 LDZ2 .Screen/x DEO2
299
+	.octave-view/y1 LDZ2 .Screen/y DEO2
300
+	AUTO-YADDR
301
+	.last-note LDZ STH
302
+	;keys-left-icns STHkr #00 = INC ,draw-key JSR
303
+	;keys-middle-icns STHkr #02 = INC ,draw-key JSR
304
+	;keys-right-icns STHkr #04 = INC ,draw-key JSR
305
+	;keys-left-icns STHkr #05 = INC ,draw-key JSR
306
+	;keys-middle-icns STHkr #07 = INC ,draw-key JSR
307
+	;keys-middle-icns STHkr #09 = INC ,draw-key JSR
308
+	;keys-right-icns STHr #0b = INC ,draw-key JSR
309
+	AUTO-NONE
310
+
304 311
 RTN
305 312
 
306
-@draw-key ( x* y* addr* color -- )
313
+@draw-key ( addr* color -- )
307 314
 		
308 315
 	STH
309
-	.Screen/addr DEO2 
310
-	SWP2 .Screen/x DEO2
311
-	DUP2 #0018 ++ SWP2
312
-	&loop
313
-		( move ) DUP2 .Screen/y DEO2
314
-		( draw ) STHkr .Screen/sprite DEO
315
-		( incr ) .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2  
316
-		#0008 ++ GTH2k ,&loop JCN
317
-	POP2 POP2 
318
-	POPr
316
+	.Screen/addr DEO2
317
+	.Screen/y DEI2
318
+	STHr .Screen/sprite DEOk DEOk DEO
319
+	.Screen/x DEI2k #0008 ++ ROT DEO2
320
+	.Screen/y DEO2
319 321
 
320 322
 RTN
321 323
 
... ...
@@ -376,11 +378,13 @@ RTN
376 378
 	POP2
377 379
 
378 380
 	( range )
381
+	AUTO-X
379 382
 	.wave-view/x1 LDZ2 .Screen/x DEO2
380 383
 	.wave-view/y1 LDZ2 #0010 -- .Screen/y DEO2
381 384
 	.Audio0/addr DEI2 #02 ;draw-short JSR2
382 385
 	.wave-view/x2 LDZ2 #0020 -- .Screen/x DEO2
383 386
 	.Audio0/length DEI2 #02 ;draw-short JSR2
387
+	AUTO-NONE
384 388
 
385 389
 RTN
386 390
 
... ...
@@ -425,18 +429,20 @@ RTN
425 429
 
426 430
 @draw-short ( short* color -- )
427 431
 
428
-	STH SWP 
429
-	DUP #04 SFT TOS 8** ;font-hex ++ .Screen/addr DEO2
430
-		( draw ) STHkr .Screen/sprite DEO
431
-	#0f AND TOS 8** ;font-hex ++ .Screen/addr DEO2
432
-	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
433
-		( draw ) STHkr .Screen/sprite DEO
434
-	DUP #04 SFT TOS 8** ;font-hex ++ .Screen/addr DEO2
435
-	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
436
-		( draw ) STHkr .Screen/sprite DEO
437
-	#0f AND TOS 8** ;font-hex ++ .Screen/addr DEO2
438
-	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
439
-		( draw ) STHr .Screen/sprite DEO
432
+	STH 
433
+	SWP STHkr ,draw-byte JSR 
434
+	STHr 
435
+
436
+@draw-byte ( byte color -- )
437
+
438
+	STH 
439
+	DUP #04 SFT STHkr ,draw-hex JSR #0f AND 
440
+	STHr 
441
+
442
+@draw-hex ( char color -- )
443
+
444
+	SWP TOS 8** ;font-hex ++ .Screen/addr DEO2
445
+	.Screen/sprite DEO
440 446
 
441 447
 RTN
442 448
 
... ...
@@ -528,42 +534,6 @@ RTN
528 534
 	007c 8280 8080 827c 00fc 8282 8282 82fc
529 535
 	007c 8280 f080 827c 007c 8280 f080 8080 
530 536
 
531
-@piano-pcm
532
-	8182 8588 8d91 959b a1a6 aaad b2b5 b8bd
533
-	c1c7 cbd0 d5d9 dde1 e5e5 e4e4 e1dc d7d1
534
-	cbc5 bfb8 b2ac a6a2 9c97 928d 8884 807c
535
-	7977 7574 7372 7272 7273 7372 706d 6964
536
-	605b 5650 4d49 4643 4342 4244 4548 4a4d
537
-	5052 5556 5758 5554 5150 4c4a 4744 423f
538
-	3d3c 3a38 3835 3431 3030 2f31 3336 393e
539
-	4449 4e54 5a60 666b 7175 7b82 8990 989e
540
-	a6ab b1b6 babd bebf bfbe bbb9 b6b3 b0ae
541
-	aaa8 a6a3 a19e 9c9a 9997 9696 9798 9b9e
542
-	a1a4 a6a9 a9ac adad adae aeaf b0b0 b1b1
543
-	b3b3 b4b4 b4b3 b3b1 b0ad abab a9a9 a8a8
544
-	a7a5 a19d 9891 8b84 7e77 726e 6b6b 6b6c
545
-	6f71 7477 7776 7370 6c65 5e56 4e48 423f
546
-	3d3c 3b3a 3a39 3838 3839 393a 3c3e 4146
547
-	4a50 575b 6064 686a 6e70 7274 7677 7a7d
548
-
549
-@violin-pcm
550
-	8186 8d94 9ba0 a3a7 acb1 b5bc c2c7 cacc
551
-	cecf d0d1 d3d5 d8db dee1 e3e5 e6e5 e5e3
552
-	dfdc d7d0 c8c2 bbb2 a99f 968c 847c 746e
553
-	675f 5851 4b43 3e3a 3533 312e 2c2b 2826
554
-	2422 2122 2327 2d34 3c44 4c57 5f68 7075
555
-	7b80 8487 8789 8a8c 8d90 9397 999c 9ea0
556
-	a2a2 a2a0 9c97 9491 8f8e 908f 918f 8e88
557
-	827a 726a 6058 5047 423f 3f40 4245 4748
558
-	4949 4746 4545 4a4f 5863 717f 8b9a a6b1
559
-	b8be c1c1 bfbd bab5 b1af acac aeb1 b7bc
560
-	c2c9 cfd3 d5d4 d3d3 d1ce cbc6 c0ba b3ab
561
-	a39a 8f85 7b72 6c67 6462 605f 5e5d 5b58
562
-	5550 4d49 4848 4949 4a4d 5052 5558 5b5e
563
-	6164 686c 7074 7677 7979 7a7b 7b7a 7977
564
-	7473 6f6e 6b69 696b 6f72 7576 7574 716b
565
-	655d 554e 4742 3f3f 4045 4b52 5a62 6b74
566
-
567 537
 @sin-pcm
568 538
 	8083 8689 8c8f 9295 989b 9ea1 a4a7 aaad
569 539
 	b0b3 b6b9 bbbe c1c3 c6c9 cbce d0d2 d5d7
... ...
@@ -581,39 +551,3 @@ RTN
581 551
 	0b0c 0e0f 1012 1415 1719 1a1c 1e20 2225
582 552
 	2729 2b2e 3032 3537 3a3d 3f42 4547 4a4d
583 553
 	5053 5659 5c5f 6265 686b 6e71 7477 7a7d
584
-
585
-@tri-pcm
586
-	8082 8486 888a 8c8e 9092 9496 989a 9c9e
587
-	a0a2 a4a6 a8aa acae b0b2 b4b6 b8ba bcbe
588
-	c0c2 c4c6 c8ca ccce d0d2 d4d6 d8da dcde
589
-	e0e2 e4e6 e8ea ecee f0f2 f4f6 f8fa fcfe
590
-	fffd fbf9 f7f5 f3f1 efed ebe9 e7e5 e3e1
591
-	dfdd dbd9 d7d5 d3d1 cfcd cbc9 c7c5 c3c1
592
-	bfbd bbb9 b7b5 b3b1 afad aba9 a7a5 a3a1
593
-	9f9d 9b99 9795 9391 8f8d 8b89 8785 8381
594
-	7f7d 7b79 7775 7371 6f6d 6b69 6765 6361
595
-	5f5d 5b59 5755 5351 4f4d 4b49 4745 4341
596
-	3f3d 3b39 3735 3331 2f2d 2b29 2725 2321
597
-	1f1d 1b19 1715 1311 0f0d 0b09 0705 0301
598
-	0103 0507 090b 0d0f 1113 1517 191b 1d1f
599
-	2123 2527 292b 2d2f 3133 3537 393b 3d3f
600
-	4143 4547 494b 4d4f 5153 5557 595b 5d5f
601
-	6163 6567 696b 6d6f 7173 7577 797b 7d7f
602
-
603
-@saw-pcm
604
-	8282 8183 8384 8685 8888 8889 8a8b 8c8c
605
-	8e8e 8f90 9092 9193 9494 9596 9699 9899
606
-	9b9a 9c9c 9c9d 9ea0 a1a0 a2a2 a3a5 a4a6
607
-	a7a7 a9a8 a9aa aaac adad aeae b0b0 b1b3
608
-	b2b4 b5b5 b6b7 b9b8 b9bb babc bdbc bdbe
609
-	bfc1 bfc1 c3c1 c4c5 c5c6 c6c7 c9c7 cbca
610
-	cbcc cdcd cfcf d2d0 d2d2 d2d5 d4d5 d6d7
611
-	d8d8 d9dc d9df dadf dce1 dde5 dce6 dceb
612
-	cb1f 1b1e 1c21 1c21 1f23 2025 2127 2329
613
-	2529 2829 2a2b 2b2e 2d2f 302f 3231 3234
614
-	3334 3536 3836 3939 3a3b 3b3d 3e3d 3f40
615
-	4042 4242 4444 4646 4748 474a 4a4b 4d4c
616
-	4e4e 4f50 5052 5252 5554 5557 5759 5959
617
-	5b5b 5c5d 5d5f 5e60 6160 6264 6365 6566
618
-	6867 6969 6a6c 6c6d 6d6e 706f 7071 7174
619
-	7475 7576 7777 797a 7a7c 7b7c 7e7d 7f7f