(picture.tal) Optimization

This commit is contained in:
Devine Lu Linvega 2023-02-27 11:21:03 -08:00
parent 5091d90e77
commit 41294b7537
1 changed files with 34 additions and 38 deletions

View File

@ -3,12 +3,6 @@
|00 @System &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
( variables )
|0000
( program )
|0100
( theme )
@ -16,55 +10,57 @@
#f00e .System/g DEO2
#f00c .System/b DEO2
#0030 .Screen/x DEO2
#0030 .Screen/y DEO2
;picture-icn #20 #10 #01 ;draw-icn JSR2
#0010
DUP2 .Screen/x DEO2
.Screen/y DEO2
;akane20x10 #20 #10 #01 draw-icn
#0100 .Screen/x DEO2
#0090 .Screen/y DEO2
#10 #10 ;dafu10x10 #0a ;draw-small JSR2
#0028 .Screen/y DEO2
#1010 ;dafu10x10 #0a draw-fast
BRK
@draw-icn ( addr* width height color -- )
#05 .Screen/auto DEO
STH
( set bounds ) ,&height STR ,&width STR .Screen/addr DEO2
( set origin ) .Screen/x DEI2 ,&x STR2
LIT &height $1 #00
,&color STR
,&height STR
,&width STR
.Screen/addr DEO2
.Screen/x DEI2
,&x STR2
[ LIT2 00 &height $1 ] SUB
&ver
LIT2 &x $2 .Screen/x DEO2
LIT &width $1 #00
[ LIT2 &x $2 ] .Screen/x DEO2
[ LIT2 00 &width $1 ] SUB
&hor
STHkr .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
[ LIT &color $1 ] .Screen/sprite DEO
INC DUP ?&hor
POP
.Screen/y DEI2k #0008 ADD2 ROT DEO2
INC GTHk ,&ver JCN
POP2
POPr
INC DUP ?&ver
POP
#00 .Screen/auto DEO
JMP2r
( makes use of the auto byte )
@draw-small ( w h addr* color -- )
@draw-fast ( w h addr* color -- )
STH
,&color STR
.Screen/addr DEO2
SWP #01 SUB #40 SFT #06 ADD .Screen/auto DEO
#00
SWP #01 SUB #40 SFT #06 ORA .Screen/auto DEO
#00 SWP SUB
&loop
STHkr .Screen/sprite DEO
INC GTHk ,&loop JCN
POP2
POPr
[ LIT2 &color $1 -Screen/sprite ] DEO
INC DUP ?&loop
POP
JMP2r
@picture-icn ( akane2010.bit 20 x 10 )
@akane20x10
0000 0000 0000 0000 2b41 2341 2b41 2341
8881 8081 8880 8080 0a00 2000 8800 2000
8004 2004 8804 2a04 0000 0000 8000 0000