0
0
Fork 0
mirror of https://git.sr.ht/~rabbits/uxn synced 2024-11-05 13:55:06 +00:00
uxn/projects/examples/devices/console.lib.tal

92 lines
1.7 KiB
Tal
Raw Normal View History

( dev/console )
%RTN { JMP2r }
%PRINT { ;print JSR2 }
%BR { #0a .Console/write DEO }
( devices )
|10 @Console [ &pad $8 &write $1 ]
( variables )
|0000
@number [ &started $1 ]
( init )
|0100 ( -> )
;char-txt PRINT #42 .Console/write DEO BR
;byte-txt PRINT #ab ;print-byte JSR2 BR
;short-txt PRINT #cdef ;print-short JSR2 BR
;string-txt PRINT ;hello-word ;print JSR2 BR
;hello-word ;print JSR2
#ffff ;print-short JSR2
;is-word ;print JSR2
#ffff ;print-short-decimal JSR2
BRK
@print ( addr* -- )
&loop
( send ) DUP2 LDA .Console/write DEO
( incr ) #0001 ADD2
2021-05-11 18:12:07 +00:00
( loop ) DUP2 LDA ,&loop JCN
POP2
RTN
@print-short ( short* -- )
LIT '0 .Console/write DEO
LIT 'x .Console/write DEO
OVR #04 SFT ,&hex JSR
SWP #0f AND ,&hex JSR
DUP #04 SFT ,&hex JSR
#0f AND ,&hex JMP
&hex
#30 ADD DUP #39 GTH #27 MUL ADD .Console/write DEO
RTN
@print-byte ( byte -- )
LIT '0 .Console/write DEO
LIT 'x .Console/write DEO
DUP #04 SFT ,&hex JSR
#0f AND ,&hex JMP
&hex
#30 ADD DUP #39 GTH #27 MUL ADD .Console/write DEO
RTN
@print-short-decimal ( short -- )
2021-05-11 18:14:52 +00:00
#00 .number/started STZ
DUP2 #2710 DIV2 DUP2 ,&digit JSR #2710 MUL2 SUB2
DUP2 #03e8 DIV2 DUP2 ,&digit JSR #03e8 MUL2 SUB2
DUP2 #0064 DIV2 DUP2 ,&digit JSR #0064 MUL2 SUB2
DUP2 #000a DIV2 DUP2 ,&digit JSR #000a MUL2 SUB2
,&digit JSR
2021-05-11 18:14:52 +00:00
.number/started LDZ ,&end JCN
LIT '0 .Console/write DEO
&end
RTN
&digit
2021-08-15 20:25:58 +00:00
NIP
2021-05-11 18:14:52 +00:00
DUP .number/started LDZ ORA #02 JCN
POP JMP2r
LIT '0 ADD .Console/write DEO
2021-05-11 18:14:52 +00:00
#01 .number/started STZ
RTN
@char-txt "char: 20 $1
@byte-txt "byte: 20 $1
@short-txt "short: 20 $1
@string-txt "string: 20 $1
@hello-word "hello 20 "World! 0a 00
@is-word 20 "is 20 00