( 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 ) LDAk .Console/write DEO ( incr ) INC2 ( loop ) LDAk ,&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 #3a LTH ,¬-alpha JCN #27 ADD ¬-alpha .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 -- ) #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/write DEO &end RTN &digit NIP DUP .number/started LDZ ORA #02 JCN POP JMP2r LIT '0 ADD .Console/write 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