Cleaned up font example

This commit is contained in:
neauoire 2021-07-03 09:11:29 -07:00
parent 1bf35de7ad
commit b8d06b7e6e
1 changed files with 36 additions and 127 deletions

View File

@ -10,9 +10,6 @@
%INCR { SWP #01 ADD SWP } %INCR { SWP #01 ADD SWP }
%GET-ITERATORS { SWP2k POP SWP POP } %GET-ITERATORS { SWP2k POP SWP POP }
%DEBUG { ;print-hex JSR2 #0a .Console/write DEO }
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
( 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 ]
@ -40,141 +37,53 @@
( load font ) ( load font )
#4000 .File/length DEO2 #4000 .File/length DEO2
;fontpath .File/name DEO2 ;font-path .File/name DEO2
;font-data .File/load DEO2 ;font-data .File/load DEO2
#0000 #0030 ;sometext #21 ;draw-label JSR2 ( draw label )
#0000 #0030 ;body #21 ;draw-uf2 JSR2
BRK BRK
@draw-uf3 ( x* y* text* color -- ) @draw-uf2 ( x* y* text* color -- )
STH STH
STH2 SWP2 .Screen/y DEO2
.Screen/y DEO2 SWP2 DUP2 .Screen/x DEO2 SWP2
.Screen/x DEO2
STH2r
&loop &loop
LDAk #0a ! ,&no-linebreak JCN LDAk
#0000 .Screen/x DEO2 DUP #0a ! ,&no-linebreak JCN
.Screen/y DEI2 #0018 ++ .Screen/y DEO2 ( move down ) OVR2 .Screen/x DEO2
&no-linebreak ( incr y ) .Screen/y DEI2 #0010 ++ .Screen/y DEO2
LDAk STHkr ;draw-letter3 JSR2 POP ,&continue JMP &no-linebreak
#0001 ++ STHkr ,&sprite JSR
&continue
( incr addr ) #0001 ++
LDAk ,&loop JCN LDAk ,&loop JCN
POP2 POP2 POP2 POPr
POPr RTN
RTN &sprite ( char color -- )
STH
@draw-letter3 ( char color -- ) ( get addr ) STHk TOS #0020 ** ;font-data #0100 ++ ++ .Screen/addr DEO2
SWPr
POP ( top-left ) STHkr .Screen/color DEO
.Screen/y DEI2 #0008 ++ .Screen/y DEO2
DUP TOS #0048 ** ;font-data #0100 ++ ++ .Screen/addr DEO2 .Screen/addr DEI2 #0010 ++ .Screen/addr DEO2
( bottom-left ) STHkr .Screen/color DEO
.Screen/x DEI2 .position/x STZ2 .Screen/x DEI2 #0008 ++ .Screen/x DEO2
.Screen/y DEI2 .position/y STZ2 .Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
( bottom-right ) STHkr .Screen/color DEO
#00 #03 .Screen/y DEI2 #0008 -- .Screen/y DEO2
&ver .Screen/addr DEI2 #0010 -- .Screen/addr DEO2
#00 #03 ( top-right ) STHkr .Screen/color DEO
&hor SWPr
GET-ITERATORS ( get width ) STHkr TOS ;font-data ++ LDA TOS .Screen/x DEI2 ++ #0008 -- .Screen/x DEO2
TOS #0008 ** .position/y LDZ2 ++ .Screen/y DEO2 POPr POPr
TOS #0008 ** .position/x LDZ2 ++ .Screen/x DEO2
#21 .Screen/color DEO
.Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
INCR
LTHk ,&hor JCN
POP2
INCR
LTHk ,&ver JCN
POP2
TOS ;font-data ++ LDA TOS .position/x LDZ2 ++ .Screen/x DEO2
.position/y LDZ2 .Screen/y DEO2
RTN
@draw-label ( x* y* text* color -- )
STH
STH2
.Screen/y DEO2
.Screen/x DEO2
STH2r
&loop
LDAk #0a ! ,&no-linebreak JCN
#0000 .Screen/x DEO2
.Screen/y DEI2 #0010 ++ .Screen/y DEO2
&no-linebreak
LDAk STHkr ;draw-letter JSR2
#0001 ++
LDAk ,&loop JCN
POP2
POPr
RTN
@draw-letter ( char color -- )
STH
STHk TOS #0020 ** ;font-data #0100 ++ ++ .Screen/addr DEO2
OVRr STHr .Screen/color DEO
.Screen/y DEI2 #0008 ++ .Screen/y DEO2
.Screen/addr DEI2 #0010 ++ .Screen/addr DEO2
OVRr STHr .Screen/color DEO
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
.Screen/addr DEI2 #0008 ++ .Screen/addr DEO2
OVRr STHr .Screen/color DEO
.Screen/y DEI2 #0008 -- .Screen/y DEO2
.Screen/addr DEI2 #0010 -- .Screen/addr DEO2
OVRr STHr .Screen/color DEO
STHkr TOS ;font-data ++ LDA TOS .Screen/x DEI2 ++ #0008 -- .Screen/x DEO2
POPr POPr
RTN
@draw-short ( short* color -- )
STH SWP
DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
( draw ) STHkr .Screen/color DEO
#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
( draw ) STHkr .Screen/color DEO
DUP #04 SFT TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
( draw ) STHkr .Screen/color DEO
#0f AND TOS #0008 ** ;font-hex ++ .Screen/addr DEO2
.Screen/x DEI2 #0008 ++ .Screen/x DEO2
( draw ) STHr .Screen/color DEO
RTN
@print-hex ( value -- )
STHk #04 SFT ,&parse JSR .Console/write DEO
STHr #0f AND ,&parse JSR .Console/write DEO
RTN RTN
&parse ( value -- char )
DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN
RTN RTN
@cursor
ffff ffff ffff ffff
@font-hex @font-hex
003c 464a 5262 3c00 0018 0808 0808 1c00 003c 464a 5262 3c00 0018 0808 0808 1c00
003c 4202 3c40 7e00 003c 421c 0242 3c00 003c 4202 3c40 7e00 003c 421c 0242 3c00
@ -185,7 +94,7 @@ RTN
003c 4240 4042 3c00 007c 4242 4242 7c00 003c 4240 4042 3c00 007c 4242 4242 7c00
007e 4078 4040 7e00 007e 4078 4040 4000 007e 4078 4040 7e00 007e 4078 4040 4000
@sometext @body
4927 6c6c 206d 616b 6520 6120 736f 756e 4927 6c6c 206d 616b 6520 6120 736f 756e
6420 7468 6174 2773 2073 6f20 616c 6f6e 6420 7468 6174 2773 2073 6f20 616c 6f6e
6520 0a74 6861 7420 6e6f 206f 6e65 2063 6520 0a74 6861 7420 6e6f 206f 6e65 2063
@ -201,6 +110,6 @@ RTN
6974 2069 6e20 7468 6520 6469 7374 616e 6974 2069 6e20 7468 6520 6469 7374 616e
7420 746f 776e 732e 20 $1 7420 746f 776e 732e 20 $1
@fontpath "projects/fonts/venice14.uf2 @font-path "projects/fonts/venice14.uf2
@font-data @font-data