(gui/label.tal) Use UF2 properly

This commit is contained in:
neauoire 2022-01-09 17:04:54 -08:00
parent a8c384daec
commit 4657fe2490
3 changed files with 599 additions and 291 deletions

View File

@ -1,194 +0,0 @@
( uxnasm projects/examples/demos/font.tal bin/font.rom && uxnemu bin/font.rom )
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%RTN { JMP2r }
%TOS { #00 SWP }
%GET-WIDTH { TOS ;font-data ++ LDA }
%GET-GLYPH { TOS #50 SFT2 ;font-data/glyphs ++ }
%AUTO-NONE { #00 .Screen/auto DEO }
%AUTO-X { #01 .Screen/auto DEO }
%AUTO-Y { #02 .Screen/auto DEO }
%AUTO-ADDR { #04 .Screen/auto DEO }
%AUTO-X-ADDR { #05 .Screen/auto DEO }
%AUTO-Y-ADDR { #06 .Screen/auto DEO }
( devices )
|00 @System &vector $2 &pad $6 &r $2 &g $2 &b $2
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
( variables )
|0000
( init )
|0100 ( -> )
( theme )
#0fa7 .System/r DEO2
#0fa7 .System/g DEO2
#0fa7 .System/b DEO2
( load font )
#4900 .File/length DEO2
;font-path-large .File/name DEO2
;font-data .File/read DEO2
( draw label )
#0020 #0020 ;title #01 ;draw-uf3 JSR2
( load font )
#2100 .File/length DEO2
;font-path-medium .File/name DEO2
;font-data .File/read DEO2
( draw label )
#0020 #0048 ;body #02 ;draw-uf2 JSR2
( load font )
#0900 .File/length DEO2
;font-path-small .File/name DEO2
;font-data .File/read DEO2
( draw label )
#0030 #00b8 ;footer #03 ;draw-uf1 JSR2
BRK
@draw-uf1 ( x* y* text* color -- )
STH
SWP2 .Screen/y DEO2
SWP2 DUP2 .Screen/x DEO2 SWP2
&loop
LDAk
DUP #0a ! ,&no-linebreak JCN
( move down ) STH OVR2 .Screen/x DEO2 STHr
( incr y ) .Screen/y DEI2 #0010 ++ .Screen/y DEO2
POP ,&continue JMP &no-linebreak
( get addr ) STHk TOS #30 SFT2 ;font-data #0100 ++ ++ .Screen/addr DEO2
( get width ) STHr TOS ;font-data ++ LDA TOS
( draw ) STHkr .Screen/sprite DEO
( use width ) .Screen/x DEI2 ++ .Screen/x DEO2
&continue
( incr addr ) INC2
LDAk ,&loop JCN
POP2 POP2 POPr
RTN
@draw-uf2 ( x* y* text* color -- )
STH
SWP2 .Screen/y DEO2
SWP2 .Screen/x DEO2
AUTO-Y-ADDR
&while
LDAk #0a ! ,&no-linebreak JCN
( reset ) #0020 .Screen/x DEO2
( down ) .Screen/y DEI2k #0010 ++ ROT DEO2
,&continue JMP &no-linebreak
LDAk STHkr ,&sprite JSR
&continue
INC2 LDAk ,&while JCN
POP2 POPr
AUTO-NONE
RTN
&sprite ( char color -- )
.Screen/x DEI2 STH2
.Screen/y DEI2 STH2
( glyph ) OVR GET-GLYPH .Screen/addr DEO2
DUP .Screen/sprite DEOk DEO
STH2kr .Screen/y DEO2
SWP GET-WIDTH
DUP #09 < ,&narrow JCN
.Screen/x DEI2k #0008 ++ ROT DEO2
OVR .Screen/sprite DEOk DEO
STH2kr .Screen/y DEO2
&narrow
POP2r
( width ) TOS STH2r ++ .Screen/x DEO2
POP
RTN
RTN
@draw-uf3 ( x* y* text* color -- )
STH
SWP2 .Screen/y DEO2
SWP2 DUP2 .Screen/x DEO2 SWP2
&loop
LDAk
DUP #0a ! ,&no-linebreak JCN
( move down ) OVR2 .Screen/x DEO2
( incr y ) .Screen/y DEI2 #0010 ++ .Screen/y DEO2
POP ,&continue JMP &no-linebreak
STHkr ,&sprite JSR
&continue
( incr addr ) INC2
LDAk ,&loop JCN
POP2 POP2 POPr
RTN
&sprite ( char color -- )
STH
( get addr ) DUP TOS #30 SFT2 #30 SFT2k ROT POP ADD2 ;font-data #0100 ++ ++ .Screen/addr DEO2
( get width ) TOS ;font-data ++ LDA TOS
#0300
&ver
#0300
&hor
STHkr .Screen/sprite DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
.Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
INC GTHk ,&hor JCN
POP2
.Screen/y DEI2 #0008 ++ .Screen/y DEO2
.Screen/x DEI2 #0018 -- .Screen/x DEO2
INC GTHk ,&ver JCN
POP2
.Screen/y DEI2 #0018 -- .Screen/y DEO2
( use width ) .Screen/x DEI2 ++ .Screen/x DEO2
POPr
RTN
RTN
@title
5468 6520 466f 6720 486f 726e $1
@body
4927 6c6c 206d 616b 6520 6120 736f 756e
6420 7468 6174 2773 2073 6f20 616c 6f6e
6520 0a74 6861 7420 6e6f 206f 6e65 2063
616e 206d 6973 7320 6974 2c20 7468 6174
2077 686f 6576 6572 200a 6865 6172 7320
6974 2077 696c 6c20 7765 6570 2069 6e20
7468 6569 7220 736f 756c 732c 200a 616e
6420 6865 6172 7468 7320 7769 6c6c 2073
6565 6d20 7761 726d 6572 2c20 0a61 6e64
2062 6569 6e67 2069 6e73 6964 6520 7769
6c6c 2073 6565 6d20 6265 7474 6572 200a
746f 2061 6c6c 2077 686f 2068 6561 7220
6974 2069 6e20 7468 6520 6469 7374 616e
7420 746f 776e 732e 20 $1
@footer
2d20 4279 2052 6179 2042 7261 6462 7572
79 $1
@font-path-large
"projects/fonts/geneva24.uf3 $1
@font-path-medium
"projects/fonts/venice14.uf2 $1
@font-path-small
"projects/fonts/atari8.uf1 $1
@font-data $100 &glyphs

View File

@ -1,13 +1,37 @@
( GUI Labels ) ( GUI Labels )
%+ { ADD } %- { SUB } %* { MUL } %/ { DIV }
%< { LTH } %> { GTH } %= { EQU } %! { NEQ }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%=~ { EQUk NIP } %!~ { NEQk NIP }
%<~ { LTHk NIP } %>~ { GTHk NIP }
%2* { #10 SFT } %2/ { #01 SFT } %2** { #10 SFT2 } %2// { #01 SFT2 }
%4* { #20 SFT } %4/ { #02 SFT } %4** { #20 SFT2 } %4// { #02 SFT2 }
%8* { #30 SFT } %8/ { #03 SFT } %8** { #30 SFT2 } %8// { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }
%IS-VALID { DUP #1f > SWP #7f < AND }
%RTN { JMP2r } %RTN { JMP2r }
%2// { #01 SFT2 } %TOS { #00 SWP }
%8** { #30 SFT2 } %AUTO-NONE { #00 .Screen/auto DEO }
%AUTO-Y { #02 .Screen/auto DEO }
%AUTO-YADDR { #06 .Screen/auto DEO }
%HALT { #010f DEO }
%EMIT { #18 DEO }
%PRINT { ;print-str JSR2 #0a EMIT }
%DEBUG { ;print-hex/byte JSR2 #0a EMIT }
%DEBUG2 { ;print-hex JSR2 #0a EMIT }
( devices ) ( devices )
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ] |00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ] |20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
( variables ) ( variables )
@ -21,118 +45,596 @@
|0100 |0100
( theme ) ( theme )
#0f0f .System/r DEO2 #f0d7 .System/r DEO2
#0fff .System/g DEO2 #f0de .System/g DEO2
#0ff0 .System/b DEO2 #f0dc .System/b DEO2
( find screen center ) ( find screen center )
.Screen/width DEI2 2// .center/x STZ2 .Screen/width DEI2 2// .center/x STZ2
.Screen/height DEI2 2// .center/y STZ2 .Screen/height DEI2 2// .center/y STZ2
( draw ver line ) ( ver )
.center/x LDZ2 .Screen/x DEO2 #0000 .Screen/y DEO2 AUTO-Y
&draw-ver #0000 .Screen/y DEO2
( draw ) #02 .Screen/pixel DEO .center/x LDZ2 .Screen/x DEO2
( incr ) .Screen/y DEI2 #0002 ADD2 .Screen/y DEO2 .Screen/height DEI2 #0000
.Screen/y DEI2 .Screen/height DEI2 LTH2 ,&draw-ver JCN &ver
#43 .Screen/pixel DEO
.Screen/y DEI2k INC2 ROT DEO2
INC2 GTH2k ,&ver JCN
POP2 POP2
.center/x LDZ2 .center/y LDZ2 #0010 SUB2 #0c ;text1 ;draw-label-left JSR2 .center/x LDZ2 .Screen/x DEO2
.center/x LDZ2 .center/y LDZ2 #0c ;text2 ;draw-label-middle JSR2 .center/y LDZ2 #0020 -- .Screen/y DEO2
.center/x LDZ2 .center/y LDZ2 #0010 ADD2 #0c ;text3 ;draw-label-right JSR2 ;left-txt #09 ;draw-uf2 JSR2
.center/x LDZ2 .center/y LDZ2 #0020 ADD2 #0c ;text4 ;draw-label-middle JSR2
.center/x LDZ2 .center/y LDZ2 #0030 ADD2 #0c ;text5 ;draw-label-middle JSR2 .center/x LDZ2 .Screen/x DEO2
.center/y LDZ2 .Screen/y DEO2
;center-txt #09 ;draw-uf2-center JSR2
.center/x LDZ2 .Screen/x DEO2
.center/y LDZ2 #0020 ++ .Screen/y DEO2
;right-txt #09 ;draw-uf2-right JSR2
BRK
@draw-uf2-center ( text* color -- )
STH
DUP2 ,get-width JSR 2// .Screen/x DEI2 SWP2 -- .Screen/x DEO2
STHr ,draw-uf2 JSR
RTN RTN
@draw-label-left ( x y color addr -- ) @draw-uf2-right ( text* color -- )
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEO2 STH
.label/addr LDZ2 DUP2 ,get-width JSR .Screen/x DEI2 SWP2 -- .Screen/x DEO2
&loop STHr ,draw-uf2 JSR
( draw ) LDAk #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/sprite DEO
( incr ) INC2 RTN
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
LDAk ,&loop JCN @get-width ( text* -- width* )
LIT2r 0000
&while
LDAk TOS ;font ++ LDA TOS STH2 ADD2r
INC2 LDAk ,&while JCN
POP2 POP2
STH2r
RTN RTN
@draw-label-middle ( x y color addr -- ) @draw-uf2 ( text* color -- )
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 STH
( align ) .label/addr LDZ2 ;get-text-length JSR2 8** 2// SUB2 .Screen/x DEO2 AUTO-YADDR
.label/addr LDZ2 &while
&loop LDAk STHkr ,draw-glyph JSR
( draw ) LDAk #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/sprite DEO INC2 LDAk ,&while JCN
( incr ) INC2 POP2 POPr
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 AUTO-NONE
LDAk ,&loop JCN
POP2
RTN RTN
@draw-label-right ( x y color addr -- ) @draw-glyph ( char color -- )
( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2 .Screen/x DEI2 STH2
( align ) .label/addr LDZ2 ;get-text-length JSR2 8** SUB2 .Screen/x DEO2 .Screen/y DEI2 STH2
.label/addr LDZ2 ( glyph ) OVR ,get-glyph JSR .Screen/addr DEO2
&loop DUP .Screen/sprite DEOk DEO
( draw ) LDAk #00 SWP 8** ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/sprite DEO STH2kr .Screen/y DEO2
( incr ) INC2 ( get width ) SWP TOS ;font ++ LDA
( incr ) .Screen/x DEI2 #0008 ADD2 .Screen/x DEO2 DUP #09 < ,&narrow JCN
LDAk ,&loop JCN .Screen/x DEI2k #0008 ++ ROT DEO2
POP2 OVR .Screen/sprite DEOk DEO
STH2kr .Screen/y DEO2
&narrow
POP2r
( width ) TOS STH2r ++ .Screen/x DEO2
POP
RTN RTN
@get-text-length ( label* -- length ) @get-glyph ( char -- addr* )
#0000 ( counter ) #09 =~ ,&tab JCN ( tab )
&loop #0a =~ ,&linebreak JCN ( linebreak )
( incr ) INC2 OVR2 OVR2 ADD2 #0d =~ ,&linebreak JCN ( linebreak )
LDA ,&loop JCN DUP IS-VALID ,&valid JCN
NIP2 POP ;unknown-icn RTN
&linebreak
POP ;linebreak-icn RTN
&tab
POP ;tab-icn RTN
&valid
TOS 20** ;font
#0100 ++ ++
RTN RTN
@font ( spectrum-zx font ) @print-hex ( value* -- )
[
0000 0000 0000 0000 0000 2400 7e3c 0000 0000 2400 3c42 0000 0000 6c7c 7c38 1000
0010 387c 7c38 1000 0038 387c 6c10 3800 0010 387c 7c10 3800 0000 0018 1800 0000
007e 4242 4242 7e00 0000 1824 2418 0000 0018 2442 4224 1800 001e 063a 4a48 3000
0038 446c 107c 1000 000c 0808 0838 3800 003e 2222 2266 6600 0000 0822 0022 0800
0000 1018 1c18 1000 0000 0818 3818 0800 0008 1c00 001c 0800 0028 2828 2800 2800
003e 4a4a 3a0a 0a00 000c 3046 620c 3000 0000 0000 0000 ffff 0010 3800 3810 0038
0008 1c2a 0808 0800 0008 0808 2a1c 0800 0000 0804 7e04 0800 0000 1020 7e20 1000
0000 4040 7e00 0000 0000 0024 6624 0000 0000 1038 7c00 0000 0000 007c 3810 0000
0000 0000 0000 0000 0008 0808 0800 0800 0014 1400 0000 0000 0024 7e24 247e 2400
0008 1e28 1c0a 3c08 0042 0408 1020 4200 0030 4832 4c44 3a00 0008 1000 0000 0000
0004 0808 0808 0400 0010 0808 0808 1000 0000 1408 3e08 1400 0000 0808 3e08 0800
0000 0000 0008 0810 0000 0000 3c00 0000 0000 0000 0000 0800 0000 0204 0810 2000
003c 464a 5262 3c00 0018 2808 0808 3e00 003c 4202 3c40 7e00 003c 421c 0242 3c00
0008 1828 487e 0800 007e 407c 0242 3c00 003c 407c 4242 3c00 007e 0204 0810 1000
003c 423c 4242 3c00 003c 4242 3e02 3c00 0000 0008 0000 0800 0000 0800 0008 0810
0000 0810 2010 0800 0000 003e 003e 0000 0000 1008 0408 1000 003c 4202 0c00 0800
003c 425a 5442 3c00 0018 2442 7e42 4200 007c 427c 4242 7c00 003c 4240 4042 3c00
0078 4442 4244 7800 007e 407c 4040 7e00 003e 4040 7c40 4000 003c 4240 4e42 3c00
0042 427e 4242 4200 003e 0808 0808 3e00 0002 0202 4242 3c00 0044 4870 4844 4200
0040 4040 4040 7e00 0042 665a 4242 4200 0042 6252 4a46 4200 003c 4242 4242 3c00
007c 4242 7c40 4000 003c 4242 524a 3c00 007c 4242 7c44 4200 003c 403c 0242 3c00
00fe 1010 1010 1000 0042 4242 4242 3c00 0042 4242 4224 1800 0042 4242 5a66 4200
0042 2418 1824 4200 0082 4428 1010 1000 007e 0408 1020 7e00 000c 0808 0808 0c00
0040 2010 0804 0200 0018 0808 0808 1800 0008 1422 0000 0000 0000 0000 0000 7e00
0008 0400 0000 0000 0000 1c02 1e22 1e00 0020 203c 2222 3c00 0000 1e20 2020 1e00
0002 021e 2222 1e00 0000 1c22 3c20 1e00 000c 101c 1010 1000 0000 1c22 221e 021c
0020 202c 3222 2200 0008 0018 0808 0400 0008 0008 0808 4830 0020 2428 3028 2400
0010 1010 1010 0c00 0000 6854 5454 5400 0000 5864 4444 4400 0000 3844 4444 3800
0000 7844 4478 4040 0000 3c44 443c 0406 0000 2c30 2020 2000 0000 3840 3804 7800
0010 103c 1010 0c00 0000 4444 4444 3800 0000 4444 2828 1000 0000 4454 5454 2800
0000 4428 1028 4400 0000 4444 443c 0438 0000 7c08 1020 7c00 000c 0810 1008 0c00
0008 0808 0808 0800 0030 1008 0810 3000 0000 0032 4c00 0000 3c42 99a1 a199 423c
]
@text1 [ "Left 20 "Aligned 00 ] SWP ,&byte JSR
@text2 [ "Middle 20 "Aligned 00 ] &byte ( byte -- )
@text3 [ "Right 20 "Aligned 00 ] STHk #04 SFT ,&parse JSR #18 DEO
@text4 [ "even 00 ] STHr #0f AND ,&parse JSR #18 DEO
@text5 [ "odd 00 ] JMP2r
&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 ADD JMP2r
&above #57 ADD JMP2r
JMP2r
@left-txt "Left 20 "Aligned 20 "Label $1
@center-txt "Center 20 "Aligned 20 "Label $1
@right-txt "Right 20 "Aligned 20 "Label $1
@unknown-icn
aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55
aa55 aa55 aa55 aa55
@tab-icn
0000 0000 0000 1008
1000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
@linebreak-icn
0000 0000 0000 1028
1000 0000 0000 0000
0000 0000 0000 0000
0000 0000 0000 0000
@font ( venice14 )
0000 0000 0000 0000 0009 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0505 0809 080c 0d05 0707 0a09 0609 0608
0808 0808 0908 0808 0808 0505 0708 0709
000d 0a08 0b0a 090a 0c08 070c 090e 0c09
0a09 0c08 090b 0a0d 0d0a 0906 0806 0809
0509 0807 0a07 0708 0906 0609 050f 0a08
0908 0707 060a 090e 0a09 0807 0507 0800
0d0d 080a 0c09 0b09 0909 0909 0907 0707
0707 0606 0606 0a08 0808 0808 0a0a 0a0a
0000 0000 0000 000a 0000 0005 0000 1009
0000 0000 0000 0000 0000 0000 0000 0c08
0905 0000 0000 000a 0a00 080d 0d09 0e0c
090c 0808 0505 0000 0907 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3030 3030 3030 3000 3030 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 2424 2400 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1212 7f24 24fe 4848 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1038 5450 7038 1c14 5438 1000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3748 494b 360d 1a32 6241 0000 0000
0000 c0c0 8000 0080 4040 4080 0000 0000
0000 1c22 261c 1835 6343 463c 0000 0000
0000 0000 0000 e090 1020 8060 0000 0000
0000 2020 2000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0008 1030 2060 6060 6020 3010 0800 0000
0000 0000 0000 0000 0000 0000 0000 0000
0020 1018 080c 0c0c 0c08 1810 2000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0012 0c3f 0c12 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0008 0808 7f08 0808 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 3030 1020 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 7f00 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 3030 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0206 040c 0818 1030 2060 4000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3c66 6666 6666 6666 663c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0818 3818 1818 1818 183c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3c46 8606 0c18 3060 c2fc 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7e8c 1830 7c06 4686 8c78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 040c 1c2c 4c8d fe0c 0c1e 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7c62 6078 0c06 0606 4c38 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1c22 606c 7666 6666 663c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7e86 060c 0c18 1830 3030 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3c66 6666 3c66 6666 663c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3c66 6666 666e 3606 4438 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0030 3000 0000 3030 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0030 3000 0000 3030 1020 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0c18 3060 3018 0c00 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 7e00 7e00 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 6030 180c 1830 6000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3c46 0606 0c18 1000 1010 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0001 0200 0001 0306 7f98 30e0 0000 0000
00c0 6060 e0e0 6060 e060 6038 0000 0000
0010 7eb3 b333 3e31 3131 31ff 0000 0000
0000 0000 0000 0080 8080 8000 0000 0000
0000 7cc2 c2c4 c0c0 c0c2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0010 7fb1 b030 3030 3030 30ff 0000 0000
0000 0080 c0c0 c0c0 c0c0 8000 0000 0000
0010 7fb0 b030 3e30 3030 30ff 0000 0000
0000 8080 0000 0000 0040 8000 0000 0000
0010 7fb0 b030 3e30 3030 30e0 0000 0000
0000 8080 0000 0000 0000 0000 0000 0000
0000 3f61 c2c0 cfc3 c3c7 cb73 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0000 71b1 b131 7fb1 3131 31e1 0000 0000
00e0 8080 8080 8080 8090 a0c0 0000 0000
0000 7898 9818 1818 1819 1a1c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7898 9818 1818 1818 1818 1810 20c0
0000 0000 0000 0000 0000 0000 0000 0000
0000 70b1 b336 3c38 3c36 33e1 0000 0000
0000 c080 0000 0000 0010 20c0 0000 0000
0000 3860 6060 6060 6060 61fe 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0000 70b8 bd2e 2420 2020 20c0 0000 0000
0000 70e0 6060 6060 6064 6870 0000 0000
0000 70b8 bc2e 2723 2120 20c0 0000 0000
0000 6040 4040 40c0 c0c0 4040 0000 0000
0000 3c46 c3c3 c3c3 c3c2 4438 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7fb1 b131 313f 3030 30e0 0000 0000
0000 0080 8080 8000 0000 0000 0000 0000
0000 3c46 c3c3 c3c3 c3d3 4a3c 0402 0000
0000 0000 0000 0000 0000 0000 0000 0000
0010 7fb1 b131 313f 3633 31e0 0000 0000
0000 0080 8080 8000 0000 90e0 0000 0000
0000 7cc2 e470 381c 4e86 c67c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 7f8c 8c0c 0c0c 0c0c 0c38 0000 0000
0000 8000 0000 0000 0000 0000 0000 0000
0000 61e1 6161 6161 6365 6931 0000 0000
0000 8080 8080 8080 80a0 c080 0000 0000
0000 61e3 6161 6163 666c 7870 0000 0000
0000 0080 8080 8000 0000 0000 0000 0000
0000 60e0 6060 6266 6e76 6747 0000 0000
0000 2070 3030 3030 60c0 8000 0000 0000
0000 60b0 980d 0707 0d18 3060 0000 0000
0000 3060 c080 0000 80c8 6830 0000 0000
0000 61e1 6161 6161 6163 6539 0101 021c
0000 8080 8080 8080 8080 8080 8000 0000
0000 7f83 860c 1830 60c0 c1fe 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0078 6060 6060 6060 6060 6060 7800 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 4060 2030 1018 080c 0406 0200 0000
0000 0000 0000 0000 0000 0000 0000 0000
0078 1818 1818 1818 1818 1818 7800 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0010 2844 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 00ff 0000 0000
0000 0000 0000 0000 0000 0080 0000 0000
0040 2010 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0070 c0c0 c0dc e6c6 c6c6 ccf8 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007c c4c0 c0c4 c870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0003 0606 067e c6c6 c6ce d667 0000 0000
0080 0000 0000 0000 0040 8000 0000 0000
0000 0000 007c c4c8 d0e2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
001c 3030 3078 3030 3030 3030 3030 20c0
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007e c6c6 c6ce d666 0604 0830
0000 0000 0000 0000 0000 0000 0000 0000
0070 c0c0 c0ce d6e6 c6c6 c7c6 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0000 2040 0060 e060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1020 0030 70b0 3030 3030 3020 4080
0000 0000 0000 0000 0000 0000 0000 0000
0070 c0c0 c0d8 e4c4 f8d8 cdc6 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0070 c0c0 c0c0 c0c0 c0c8 d0e0 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0067 eb73 6363 6363 0000 0000
0000 0000 0038 5898 181a 1c18 0000 0000
0000 0000 0067 eb73 6363 6363 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0000 0000 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 006e f363 6363 667c 6060 60c0
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007e c6c6 c6ce d666 0606 0706
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 006c f060 6060 7060 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0078 c4c0 780c 8c78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0020 60f8 6060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0063 e363 6367 6b33 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0000 0000 0042 e763 6264 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0042 e763 676b 7363 0000 0000
0000 0000 0010 3818 1020 4080 0000 0000
0000 0000 0061 b21c 0c16 2341 0000 0000
0000 0000 0000 0000 0000 4080 0000 0000
0000 0000 0063 e363 6367 6b33 0302 0438
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007e 860c 1830 61fe 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1830 3030 3060 3030 3030 3018 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 2020 2020 2020 2020 2020 2020 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3018 1818 180c 1818 1818 1830 0000
0000 0000 0000 0000 0000 0000 0000 0000
4c00 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0001 0200 0001 0306 7f98 30e0 0000 0000
00c0 6060 e0e0 6060 e060 6038 0000 0000
0001 0200 0001 0306 7f98 30e0 0000 0000
c0c0 6060 e0e0 6060 e060 6038 0000 0000
0000 7cc2 c2c4 c0c0 c0c2 c478 1010 2000
0000 0000 0000 0000 0000 0000 0000 0000
0010 7fb0 b030 3e30 3030 30ff 0000 0000
0000 8080 0000 0000 0040 8000 0000 0000
1300 70b8 bc2e 2723 2120 20c0 0000 0000
0000 6040 4040 40c0 c0c0 4040 0000 0000
0000 3c46 c3c3 c3c3 c3c2 4438 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 61e1 6161 6161 6365 6931 0000 0000
0000 8080 8080 8080 80a0 c080 0000 0000
0008 1000 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0010 0800 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
1028 4400 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0000 2400 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0032 4c00 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
1824 2418 007e c6c6 c6ce d766 0000 0000
0000 0000 0000 0000 0080 0000 0000 0000
0000 0000 007c c4c0 c0c4 c870 1010 2000
0000 0000 0000 0000 0000 0000 0000 0000
0008 1000 007c c4c8 d0e2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0020 1000 007c c4c8 d0e2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
1028 4400 007c c4c8 d0e2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 4800 007c c4c8 d0e2 c478 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0020 4000 0060 e060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0040 2000 0060 e060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
2050 8800 0060 e060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 9000 0060 e060 6064 6870 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0019 2600 0067 eb73 6363 6363 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0008 1000 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0020 1000 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
1028 4400 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 2400 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0032 4c00 007c c6c6 c6c6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0008 1000 0063 e363 6367 6b33 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0010 0800 0063 e363 6367 6b33 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0814 2200 0063 e363 6367 6b33 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0000 2400 0063 e363 6367 6b33 0000 0000
0000 0000 0000 0000 0040 8000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 1e33 3333 3631 3131 33e6 0000 0000
0000 0000 0000 0000 8080 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0010 2040 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0001 0200 0001 0306 7f98 30e1 0000 0000
00c0 7f61 e0e0 7c60 e060 61fe 0000 0000
0000 3d42 c7cb cbd3 d3e2 44b8 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 007d c6c6 c6cf d663 0000 0000
0000 0000 00e0 2040 8010 20c0 0000 0000
0000 0000 007c c6ce d6e6 cc78 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0808 0008 1830 6060 623c 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 6060 0060 6060 6060 6060 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0009 1224 4824 1209 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0024 1209 0409 1224 0000 0000
0000 0000 0000 0000 8000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0001 0200 0001 0306 7f98 30e0 0000 0000
00c0 6060 e0e0 6060 e060 6038 0000 0000
0001 0200 0001 0306 7f98 30e0 0000 0000
00c0 6060 e0e0 6060 e060 6038 0000 0000
4c00 3c46 c3c3 c3c3 c3c2 4438 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3f47 c3c3 c3c3 c3c3 473b 0000 0000
0000 f808 0000 e000 0004 08f0 0000 0000
0000 0000 007d c6c6 c6c7 ce79 0000 0000
0000 0000 00e0 2040 8010 20c0 0000 0000
0000 0000 0000 7f00 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 7f00 0000 0000 0000 0000
0000 0000 0000 e000 0000 0000 0000 0000
0000 2448 6c6c 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3636 1224 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 2040 6060 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 3030 1020 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 2400 0063 e363 6367 6b33 0302 0438
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0070 98ce 6438 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

View File

@ -148,12 +148,12 @@ RTN
( working stack ) ( working stack )
#0010 .Screen/y DEO2 #0010 .Screen/y DEO2
DUP2 #0018 ** #0010 ++ .Screen/x DEO2 DUP2 #0018 ** #0010 ++ .Screen/x DEO2
DUP #fe00 LDA ( ptr ) EQU #41 + STH DUP #fe00 LDA ( ptr ) EQU #4b + STH
DUP2 #fe01 ++ LDA STHr ;draw-byte JSR2 DUP2 #fe01 ++ LDA STHr ;draw-byte JSR2
( return stack ) ( return stack )
#0028 .Screen/y DEO2 #0028 .Screen/y DEO2
DUP2 #0018 ** #0010 ++ .Screen/x DEO2 DUP2 #0018 ** #0010 ++ .Screen/x DEO2
DUP #ff00 LDA ( ptr ) EQU #41 + STH DUP #ff00 LDA ( ptr ) EQU #4b + STH
DUP2 #ff01 ++ LDA STHr ;draw-byte JSR2 DUP2 #ff01 ++ LDA STHr ;draw-byte JSR2
INC2 GTH2k ,&wst JCN INC2 GTH2k ,&wst JCN
POP2 POP2 POP2 POP2