opcodes[]: global scope global { global scope implicit__main { } type SioData: uint16 avail_in ( SioData¢ channel ) { var SioData¢ channel lvar+0+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+0+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) tor ( uint16 -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } uint16 avail_out ( SioData¢ channel ) { var SioData¢ channel 16 ( -- uint16 ) lvar+0+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+0+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) - ( uint16, uint16 -- uint16 ) tor ( uint16 -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } void irpt ( SioData¢ this, uint8 SR, uint8 IO, uint8 mIMR_RX_ready, uint8 mIMR_TX_ready ) { var SioData¢ this var uint8 SR var uint8 IO var uint8 mIMR_RX_ready var uint8 mIMR_TX_ready var uint8 c 0 ( -- uint8 ) L27: lvar+7+2 "SR" ( -- uint8& ) peek ( uint8& -- uint8 ) in ( uint8 -- uint8 ) 1 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L29 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) 16 ( -- uint16 ) < ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) L29: !! ( uint8 -- bool ) jp_z ( bool -- ) -> L28 lvar+5+2 "IO" ( -- uint8& ) peek ( uint8& -- uint8 ) in ( uint8 -- uint8 ) lvar-1+4 "c" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+9 "sw_handshake" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L33 lvar-1+2 "c" ( -- uint8& ) peek ( uint8& -- uint8 ) 17 ( -- uint8 ) == ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) or1 ( bool -- ) -> L32 lvar-1+2 "c" ( -- uint8& ) peek ( uint8& -- uint8 ) 19 ( -- uint8 ) == ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) L32: !! ( uint8 -- bool ) L33: !! ( uint8 -- bool ) jp_z ( bool -- ) -> L31 lvar-1+2 "c" ( -- uint8& ) peek ( uint8& -- uint8 ) 19 ( -- uint8 ) == ( uint8, uint8 -- bool ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+10 "xoff_received" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L27 L31: lvar-1+2 "c" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+0 "ibu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+8+6 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peekpp ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( uint8[]¢, int16 -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L27 L28: lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+9 "sw_handshake" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L36 lvar+7+2 "SR" ( -- uint8& ) peek ( uint8& -- uint8 ) in ( uint8 -- uint8 ) 4 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) !! ( uint8 -- bool ) L36: !! ( uint8 -- bool ) jp_z ( bool -- ) -> L43 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L38 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) peek ( bool& -- bool ) ! ( uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L43 19 ( -- uint8 ) lvar+5+4 "IO" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) 1 ( -- bool ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L43 L38: lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L43 17 ( -- uint8 ) lvar+5+4 "IO" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) 0 ( -- bool ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L43 L43: lvar+7+2 "SR" ( -- uint8& ) peek ( uint8& -- uint8 ) in ( uint8 -- uint8 ) 4 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L45 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) != ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) L45: !! ( uint8 -- bool ) and0 ( bool -- ) -> L46 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+10 "xoff_received" ( -- bool& ) peek ( bool& -- bool ) ! ( uint8 -- bool ) !! ( uint8 -- bool ) L46: !! ( uint8 -- bool ) jp_z ( bool -- ) -> L44 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+2 "obu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peekpp ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( uint8[]¢, int16 -- uint8& ) peek ( uint8& -- uint8 ) lvar+5+4 "IO" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) jp ( -- ) -> L43 L44: lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L48 lvar+3+2 "mIMR_RX_ready" ( -- uint8& ) peek ( uint8& -- uint8 ) ~ ( uint8 -- uint8 ) gvar "imr_value" ( -- uint8& ) &= ( uint8, uint8& -- ) jp ( -- ) -> L47 L48: lvar+3+2 "mIMR_RX_ready" ( -- uint8& ) peek ( uint8& -- uint8 ) gvar "imr_value" ( -- uint8& ) |= ( uint8, uint8& -- ) L47: lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+8+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) == ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) or1 ( bool -- ) -> L51 lvar+8+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+10 "xoff_received" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) L51: !! ( uint8 -- bool ) jp_z ( bool -- ) -> L50 lvar+1+2 "mIMR_TX_ready" ( -- uint8& ) peek ( uint8& -- uint8 ) ~ ( uint8 -- uint8 ) gvar "imr_value" ( -- uint8& ) &= ( uint8, uint8& -- ) jp ( -- ) -> L49 L50: lvar+1+2 "mIMR_TX_ready" ( -- uint8& ) peek ( uint8& -- uint8 ) gvar "imr_value" ( -- uint8& ) |= ( uint8, uint8& -- ) L49: gvar "imr_value" ( -- uint8& ) peek ( uint8& -- uint8 ) 5 ( -- uint8 ) out ( uint8, uint8 ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) } void set_baudrate ( SioData¢ this, uint8 baudrate ) { var SioData¢ this var uint8 baudrate var uint8 chx8 var uint8 i var uint8 t var uint16 v var uint8 csr_mask lvar+2+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+12 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+1+2 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) msbit ( uint16 -- uint8 ) lvar-3+4 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L54 lvar+1+4 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar-3+6 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) >> ( uint16, int16 -- uint16 ) 1 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) L54: gvar "uart_values_for_baudrate" ( -- uint16[16]& ) peek ( uint16[16]& -- uint16[16]¢ ) lvar-5+8 "t" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) lvar-3+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) atindex ( uint16[16]¢, int16 -- uint16& ) peek ( uint16& -- uint16 ) lvar-5+8 "t" ( -- uint8& ) peek ( uint8& -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L57 3 ( -- uint16 ) lvar-3+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) << ( uint16, int16 -- uint16 ) jp ( -- ) -> L58 L57: lvar-3+8 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) 6 ( -- uint8 ) < ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L55 1 ( -- uint16 ) lvar-3+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) jp ( -- ) -> L58 L55: 4 ( -- uint16 ) L58: cast ( uint16 -- uint8 ) lvar+2+10 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+13 "baudrate" ( -- uint8& ) poke ( uint8, uint8& -- ) 0 ( -- uint8 ) lvar+2+10 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L59 lvar+2+10 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L61 15 ( -- uint8 ) lvar-9+12 "csr_mask" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L61 L61: lvar+2+10 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 2 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L59 240 ( -- uint8 ) lvar-9+12 "csr_mask" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L59 L59: 176 ( -- uint8 ) lvar-1+12 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 2 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) lvar-8+10 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) get_hi ( uint16 -- uint8 ) lvar-1+12 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 0 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) lvar-8+10 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) get_lo ( uint16 -- uint8 ) lvar-9+12 "csr_mask" ( -- uint8& ) peek ( uint8& -- uint8 ) | ( uint8, uint8 -- uint8 ) lvar-1+12 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 1 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) drop ( uint8 -- ) drop ( uint16 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) } void set_sw_handshake ( SioData¢ this, bool f ) { var SioData¢ this var bool f lvar+2+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+9 "sw_handshake" ( -- bool& ) peek ( bool& -- bool ) lvar+1+2 "f" ( -- bool& ) peek ( bool& -- bool ) != ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L66 lvar+1+0 "f" ( -- bool& ) peek ( bool& -- bool ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+9 "sw_handshake" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+10 "xoff_received" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L66 L66: drop ( bool -- ) drop ( SioData¢ -- ) } void set_hw_handshake ( SioData¢ this, bool f ) { var SioData¢ this var bool f var uint16 chx8 lvar+2+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+12 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+8 "hw_handshake" ( -- bool& ) peek ( bool& -- bool ) lvar+1+4 "f" ( -- bool& ) peek ( bool& -- bool ) != ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L70 lvar+1+2 "f" ( -- bool& ) peek ( bool& -- bool ) lvar+2+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+8 "hw_handshake" ( -- bool& ) poke ( bool, bool& -- ) 16 ( -- uint8 ) lvar-2+4 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) lvar+1+2 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( uint8 -- uint16 ) 7 ( -- int16 ) << ( uint16, int16 -- uint16 ) 83 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-2+4 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) lvar+1+2 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( uint8 -- uint16 ) 4 ( -- int16 ) << ( uint16, int16 -- uint16 ) 7 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-2+4 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) jp ( -- ) -> L70 L70: drop ( uint16 -- ) drop ( bool -- ) drop ( SioData¢ -- ) } void set_clock_handshake ( SioData¢ this, uint8 flags ) { var SioData¢ this var uint8 flags var uint8 ch var uint8 chx2 lvar+2+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+12 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-1+2 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+2+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+1+6 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) != ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L74 lvar+1+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+2+6 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar+1+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L78 3 ( -- uint16 ) lvar-3+6 "chx2" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) gvar "opcr_value" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L77 L78: 3 ( -- uint16 ) lvar-3+6 "chx2" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) ~ ( uint16 -- uint16 ) cast ( uint16 -- uint8 ) gvar "opcr_value" ( -- uint8& ) &= ( uint8, uint8& -- ) L77: gvar "opcr_value" ( -- uint8& ) peek ( uint8& -- uint8 ) 13 ( -- uint8 ) out ( uint8, uint8 ) 69 ( -- uint16 ) lvar-1+6 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) 14 ( -- uint8 ) out ( uint8, uint8 ) lvar+1+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 4 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L79 65 ( -- uint16 ) lvar-1+6 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) 15 ( -- uint8 ) out ( uint8, uint8 ) jp ( -- ) -> L79 L79: lvar+2+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) lvar+2+6 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+13 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) call set_baudrate ( SioData¢, uint8 ) jp ( -- ) -> L74 L74: drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) } void reset ( SioData¢ this, bool tx, bool rx ) { var SioData¢ this var bool tx var bool rx var uint8 CR lvar+4+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+12 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) 2 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+1+2 "rx" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L83 32 ( -- uint8 ) lvar-1+4 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) 0 ( -- bool ) lvar+4+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+11 "xoff_sent" ( -- bool& ) poke ( bool, bool& -- ) lvar+4+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+4+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L83 L83: lvar+3+2 "tx" ( -- bool& ) peek ( bool& -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L85 48 ( -- uint8 ) lvar-1+4 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) 0 ( -- bool ) lvar+4+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+10 "xoff_received" ( -- bool& ) poke ( bool, bool& -- ) lvar+4+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+4+4 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L85 L85: 64 ( -- uint8 ) lvar-1+4 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) 5 ( -- uint8 ) lvar-1+4 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) out ( uint8, uint8 ) drop ( uint8 -- ) drop ( bool -- ) drop ( bool -- ) drop ( SioData¢ -- ) } void init ( SioData¢ this, uint8 ch ) { var SioData¢ this var uint8 ch var uint8 chx8 lvar+1+0 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+12 "channel" ( -- uint8& ) poke ( uint8, uint8& -- ) 16 ( -- uint16 ) alloc ( uint16 -- uint8[16] ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+0 "ibu" ( -- uint8[]& ) poke ( uint8[], uint8[]& -- ) 16 ( -- uint16 ) alloc ( uint16 -- uint8[16] ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+2 "obu" ( -- uint8[]& ) poke ( uint8[], uint8[]& -- ) lvar+2+0 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) 24 ( -- uint8 ) call set_baudrate ( SioData¢, uint8 ) lvar+1+0 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) 16 ( -- uint8 ) lvar-1+4 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 2 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) 83 ( -- uint8 ) lvar-1+4 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 0 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) 7 ( -- uint8 ) lvar-1+4 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 0 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) out ( uint8, uint8 ) lvar+2+2 "this" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) 1 ( -- bool ) 1 ( -- bool ) call reset ( SioData¢, bool, bool ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) } void irpt () { 5 ( -- uint8 ) in ( uint8 -- uint8 ) 8 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L91 15 ( -- uint8 ) in ( uint8 -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L93 jp ( -- ) -> L93 L93: timer () jp ( -- ) -> L91 L91: gvar "channel_A" ( -- SioData& ) peek ( SioData& -- SioData¢ ) 1 ( -- uint8 ) 3 ( -- uint8 ) 2 ( -- uint8 ) 1 ( -- uint8 ) call irpt ( SioData¢, uint8, uint8, uint8, uint8 ) gvar "channel_B" ( -- SioData& ) peek ( SioData& -- SioData¢ ) 9 ( -- uint8 ) 11 ( -- uint8 ) 32 ( -- uint8 ) 16 ( -- uint8 ) call irpt ( SioData¢, uint8, uint8, uint8, uint8 ) } void setctl ( SioData¢ channel, uint8 fu, uint16 value ) { var SioData¢ channel var uint8 fu var uint16 value di () lvar+3+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) switch ( int16 -- ) { 0:L99, 1:L100, 2:L101, 3:L102, 4:L103, 5:L104, 8:L98, dflt:L97, join:L97 } L98: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint8 ) call set_clock_handshake ( SioData¢, uint8 ) jp ( -- ) -> L97 L99: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) 1 ( -- bool ) 1 ( -- bool ) call reset ( SioData¢, bool, bool ) jp ( -- ) -> L97 L100: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 24 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) call set_baudrate ( SioData¢, uint8 ) jp ( -- ) -> L97 L101: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) call set_hw_handshake ( SioData¢, bool ) jp ( -- ) -> L97 L102: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) call set_sw_handshake ( SioData¢, bool ) jp ( -- ) -> L97 L103: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) 0 ( -- bool ) 1 ( -- bool ) call reset ( SioData¢, bool, bool ) jp ( -- ) -> L97 L104: lvar+4+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) 1 ( -- bool ) 0 ( -- bool ) call reset ( SioData¢, bool, bool ) L97: ei () drop ( uint16 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) } uint16 getctl ( SioData¢ channel, uint8 fu ) { var SioData¢ channel var uint8 fu lvar+1+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) switch ( int16 -- ) { 1:L108, 2:L109, 3:L110, 4:L112, 5:L113, 8:L111, dflt:L114, join:L106 } L108: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+13 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 24 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) jp ( -- ) -> L106 L109: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+8 "hw_handshake" ( -- bool& ) peek ( bool& -- bool ) cast ( uint8 -- uint16 ) jp ( -- ) -> L106 L110: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+9 "sw_handshake" ( -- bool& ) peek ( bool& -- bool ) cast ( uint8 -- uint16 ) jp ( -- ) -> L106 L111: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+14 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) jp ( -- ) -> L106 L112: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_in ( SioData¢ -- uint16 ) jp ( -- ) -> L106 L113: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_out ( SioData¢ -- uint16 ) jp ( -- ) -> L106 L114: 0 ( -- uint16 ) jp ( -- ) -> L106 L106: tor ( uint16 -- ) drop ( uint8 -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } uint16 getc ( SioData¢ channel ) { var SioData¢ channel var uint16 c L117: lvar+0+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_in ( SioData¢ -- uint16 ) !! ( uint16 -- bool ) jp_nz ( bool -- ) -> L118 wait () jp ( -- ) -> L117 L118: lvar+0+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+0 "ibu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+0+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( uint8[]¢, int16 -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar+0+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peekpp ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar+0+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 16 ( -- uint8 ) - ( uint8, uint8 -- uint16 ) == ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L119 call irpt () jp ( -- ) -> L119 L119: lvar-2+2 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) tor ( uint16 -- ) drop ( uint16 -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } void putc ( SioData¢ channel, uint8 c ) { var SioData¢ channel var uint8 c L123: lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_out ( SioData¢ -- uint16 ) !! ( uint16 -- bool ) jp_nz ( bool -- ) -> L124 wait () jp ( -- ) -> L123 L124: lvar+1+0 "c" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+2+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+2 "obu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+2+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( uint8[]¢, int16 -- uint8& ) poke ( uint8, uint8& -- ) lvar+2+0 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peekpp ( uint8& -- uint8 ) lvar+2+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) == ( uint8, uint8 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L122 call irpt () jp ( -- ) -> L122 L122: drop ( uint8 -- ) drop ( SioData¢ -- ) } uint16 gets ( SioData¢ channel, uint8[]¢ bu, uint16 a, uint16 e ) { var SioData¢ channel var uint8[]¢ bu var uint16 a var uint16 e var uint16 n lvar+0+0 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+2 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_in ( SioData¢ -- uint16 ) min ( uint16, uint16 -- uint16 ) lvar+6+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+0 "ibu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+6+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- uint16 ) lvar+4+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) copy ( uint8[]¢, uint16, uint8[]¢, uint16, uint16 ) lvar-2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint8 ) lvar+6+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) += ( uint8, uint8& -- ) lvar+6+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+5 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar-2+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+4 "ibuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 16 ( -- uint8 ) - ( uint8, uint8 -- uint16 ) == ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L129 call irpt () jp ( -- ) -> L129 L129: lvar-2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) tor ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } uint16 puts ( SioData¢ channel, uint8[]¢ bu, uint16 a, uint16 e ) { var SioData¢ channel var uint8[]¢ bu var uint16 a var uint16 e var uint16 n lvar+0+0 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+2 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) call avail_out ( SioData¢ -- uint16 ) min ( uint16, uint16 -- uint16 ) lvar+4+2 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+6+6 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+2 "obu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+6+8 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 15 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- uint16 ) lvar-2+10 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) copy ( uint8[]¢, uint16, uint8[]¢, uint16, uint16 ) lvar-2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint8 ) lvar+6+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) += ( uint8, uint8& -- ) lvar+6+2 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+6 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar-2+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+4 "channel" ( -- SioData¢& ) peek ( SioData¢& -- SioData¢ ) item+7 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) == ( uint16, uint16 -- bool ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L133 call irpt () jp ( -- ) -> L133 L133: lvar-2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) tor ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( SioData¢ -- ) fromr ( -- uint16 ) } uint16 systemtimer ( uint16 value ) { var uint16 value var uint16 foo lvar+0+0 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_lo ( uint16 -- uint8 ) cast ( uint8 -- uint16 ) swap ( uint16 -- uint16 ) 1111 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_hi ( uint16 -- uint8 ) cast ( uint8 -- uint16 ) 472 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) 8 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar+0+2 "value" ( -- uint16& ) poke ( uint16, uint16& -- ) lvar+0+0 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_hi ( uint16 -- uint8 ) 6 ( -- uint8 ) out ( uint8, uint8 ) lvar+0+0 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_lo ( uint16 -- uint8 ) 7 ( -- uint8 ) out ( uint8, uint8 ) 14 ( -- uint8 ) in ( uint8 -- uint8 ) cast ( uint8 -- uint16 ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_lo ( uint16 -- uint8 ) 1111 ( -- uint16 ) get_hi ( uint16 -- uint8 ) * ( uint8, uint8 -- uint16 ) lvar+0+4 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) get_hi ( uint16 -- uint8 ) cast ( uint8 -- uint16 ) 1111 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) + ( uint16, uint16 -- uint16 ) tor ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) fromr ( -- uint16 ) } void init () { {41062, 41096, 41113, 41147, 42035, 41164, 41113, 41113, 40960, 41301, 41318, 41352, 41369, 41403, 42086, 41420} ( -- uint16[16] ) gvar "uart_values_for_baudrate" ( -- uint16[16]& ) poke ( uint16[16], uint16[16]& -- ) 59 ( -- uint8 ) gvar "imr_value" ( -- uint8& ) poke ( uint8, uint8& -- ) 0 ( -- uint8 ) gvar "opcr_value" ( -- uint8& ) poke ( uint8, uint8& -- ) 255 ( -- uint8 ) 14 ( -- uint8 ) out ( uint8, uint8 ) 112 ( -- uint8 ) 4 ( -- uint8 ) out ( uint8, uint8 ) 15 ( -- uint16 ) alloc ( uint16 -- SioData ) gvar "channel_A" ( -- SioData& ) poke ( SioData, SioData& -- ) 15 ( -- uint16 ) alloc ( uint16 -- SioData ) gvar "channel_B" ( -- SioData& ) poke ( SioData, SioData& -- ) gvar "channel_A" ( -- SioData& ) peek ( SioData& -- SioData¢ ) 0 ( -- uint8 ) call init ( SioData¢, uint8 ) gvar "channel_B" ( -- SioData& ) peek ( SioData& -- SioData¢ ) 1 ( -- uint8 ) call init ( SioData¢, uint8 ) 59 ( -- uint8 ) 5 ( -- uint8 ) out ( uint8, uint8 ) } }