mirror of
https://git.sr.ht/~rabbits/uxn
synced 2024-11-27 16:23:02 +00:00
86 lines
1.6 KiB
Tal
86 lines
1.6 KiB
Tal
( dev/console )
|
|
|
|
%RTN { JMP2r }
|
|
%PRINT { .Console/string DEO2 }
|
|
%BR { #0a .Console/char DEO }
|
|
|
|
( devices )
|
|
|
|
|10 @Console [ &pad $8 &char $1 &byte $1 &short $2 &string $2 ]
|
|
|
|
( variables )
|
|
|
|
|0000
|
|
|
|
@number [ &started $1 ]
|
|
|
|
( init )
|
|
|
|
|0100 ( -> )
|
|
|
|
;char-txt PRINT #42 .Console/char DEO BR
|
|
;byte-txt PRINT #ab .Console/byte DEO BR
|
|
;short-txt PRINT #cdef .Console/short DEO2 BR
|
|
;string-txt PRINT ;hello-word .Console/string DEO2 BR
|
|
|
|
;hello-word ;print JSR2
|
|
#ffff ;print-hexadecimal JSR2
|
|
;is-word ;print JSR2
|
|
#ffff ;print-decimal JSR2
|
|
|
|
BRK
|
|
|
|
@print ( addr -- )
|
|
|
|
&loop
|
|
( send ) DUP2 LDA .Console/char DEO
|
|
( incr ) #0001 ADD2
|
|
( loop ) DUP2 LDA ,&loop JCN
|
|
POP2
|
|
|
|
RTN
|
|
|
|
@print-hexadecimal ( short -- )
|
|
LIT '0 .Console/char DEO
|
|
LIT 'x .Console/char DEO
|
|
DUP2 #0c SFT2 ,&digit JSR
|
|
DUP2 #08 SFT2 ,&digit JSR
|
|
DUP2 #04 SFT2 ,&digit JSR
|
|
,&digit JSR
|
|
RTN
|
|
|
|
&digit
|
|
#0f AND DUP #0a LTH ,¬-alpha JCN
|
|
#27 ADD
|
|
¬-alpha
|
|
LIT '0 ADD .Console/char DEO
|
|
POP
|
|
RTN
|
|
|
|
@print-decimal ( short -- )
|
|
#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
|
|
.number/started LDZ ,&end JCN
|
|
LIT '0 .Console/char DEO
|
|
&end
|
|
RTN
|
|
|
|
&digit
|
|
SWP POP
|
|
DUP .number/started LDZ ORA #02 JCN
|
|
POP JMP2r
|
|
LIT '0 ADD .Console/char DEO
|
|
#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
|