opcodes[]: global scope global { global scope implicit__sio { } type utf8str: type ucs1str: type ucs2str: type FD: type SerialDevice: void reset ( SerialDevice¢ this, bool tx, bool rx ) { var SerialDevice¢ this var bool tx var bool rx var uint8 CR lvar+4+0 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+9 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) 2 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+2 "rx" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L688 lvar-2+2 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) 32 ( -- uint8 ) call out ( uint8, uint8 ) 251 ( -- uint8 ) lvar+4+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+6 "sw_handshake" ( -- uint8& ) &= ( uint8, uint8& -- ) lvar+4+2 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+15 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+4+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+14 "ibuwi" ( -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L688 L688: lvar+2+2 "tx" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L690 lvar-2+2 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) 48 ( -- uint8 ) call out ( uint8, uint8 ) 253 ( -- uint8 ) lvar+4+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+6 "sw_handshake" ( -- uint8& ) &= ( uint8, uint8& -- ) lvar+4+2 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+4+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+17 "oburi" ( -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L690 L690: lvar-2+2 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) 64 ( -- uint8 ) call out ( uint8, uint8 ) lvar-2+2 "CR" ( -- uint8& ) peek ( uint8& -- uint8 ) 5 ( -- uint8 ) call out ( uint8, uint8 ) drop ( uint8 -- ) drop ( bool -- ) drop ( bool -- ) drop ( SerialDevice¢ -- ) } void set_baudrate ( SerialDevice¢ this, uint8 baudrate ) { var SerialDevice¢ this var uint8 baudrate var uint8 chx8 var uint8 i var bool t var uint16 v var uint8 csr_mask lvar+2+0 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+9 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+2 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) call msbit ( uint16 -- uint8 ) lvar-4+4 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) !! ( uint8 -- bool ) and0 ( bool -- ) -> L663 lvar+0+4 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar-4+6 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) >> ( uint16, int16 -- uint16 ) 1 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) L663: gvar-2 "uart_values_for_baudrate" ( -- uint16[16]& ) peek ( uint16[16]& -- uint16[16]¢ ) lvar-6+8 "t" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) lvar-4+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) atindex ( uint16[16]¢, int16 -- uint16& ) peek ( uint16& -- uint16 ) lvar-6+8 "t" ( -- bool& ) peek ( bool& -- bool ) jp_z ( bool -- ) -> L666 3 ( -- uint16 ) lvar-4+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) << ( uint16, int16 -- uint16 ) jp ( -- ) -> L667 L666: lvar-4+8 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) 6 ( -- uint8 ) < ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L664 1 ( -- uint16 ) lvar-4+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) jp ( -- ) -> L667 L664: 4 ( -- uint16 ) L667: cast ( uint16 -- uint8 ) lvar+2+10 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+10 "baudrate" ( -- uint8& ) poke ( uint8, uint8& -- ) 0 ( -- uint8 ) lvar+2+10 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L668 lvar+2+10 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L670 15 ( -- uint8 ) lvar-10+12 "csr_mask" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L670 L670: lvar+2+10 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 2 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L668 240 ( -- uint8 ) lvar-10+12 "csr_mask" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L668 L668: lvar-2+10 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 2 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) 176 ( -- uint8 ) call out ( uint8, uint8 ) lvar-2+10 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 0 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) lvar-8+12 "v" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) call out ( uint8, uint8 ) lvar-2+10 "chx8" ( -- uint8& ) peek ( uint8& -- uint8 ) 1 ( -- uint8 ) + ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) lvar-8+12 "v" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-10+14 "csr_mask" ( -- uint8& ) peek ( uint8& -- uint8 ) | ( uint8, uint8 -- uint8 ) call out ( uint8, uint8 ) drop ( uint8 -- ) drop ( uint16 -- ) drop ( bool -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SerialDevice¢ -- ) } void set_sw_handshake ( SerialDevice¢ this, bool f ) { var SerialDevice¢ this var bool f lvar+2+0 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+6 "sw_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) lvar+0+2 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) cast ( uint8 -- uint16 ) != ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L674 lvar+0+0 "f" ( -- bool& ) peek ( bool& -- bool ) lvar+2+2 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+6 "sw_handshake" ( -- uint8& ) poke ( uint8, uint8& -- ) jp ( -- ) -> L674 L674: drop ( bool -- ) drop ( SerialDevice¢ -- ) } void set_hw_handshake ( SerialDevice¢ this, bool f ) { var SerialDevice¢ this var bool f var uint16 chx8 lvar+2+0 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+9 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) lvar+2+2 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+5 "hw_handshake" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) lvar+0+4 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) != ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L677 lvar+0+2 "f" ( -- bool& ) peek ( bool& -- bool ) lvar+2+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+5 "hw_handshake" ( -- bool& ) poke ( bool, bool& -- ) lvar-2+2 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) 16 ( -- uint8 ) call out ( uint8, uint8 ) lvar-2+2 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+4 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) cast ( uint8 -- uint16 ) 7 ( -- int16 ) << ( uint16, int16 -- uint16 ) 83 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) call out ( uint8, uint8 ) lvar-2+2 "chx8" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+4 "f" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) cast ( uint8 -- uint16 ) 4 ( -- int16 ) << ( uint16, int16 -- uint16 ) 7 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) call out ( uint8, uint8 ) jp ( -- ) -> L677 L677: drop ( uint16 -- ) drop ( bool -- ) drop ( SerialDevice¢ -- ) } void set_clock_handshake ( SerialDevice¢ this, uint8 flags ) { var SerialDevice¢ this var uint8 flags var uint8 ch var uint8 chx2 lvar+2+0 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+9 "channel" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+2 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 1 ( -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) lvar+2+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+0+6 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) != ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L680 lvar+0+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+2+6 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar+0+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L684 3 ( -- uint16 ) lvar-4+6 "chx2" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) gvar-6 "opcr_value" ( -- uint8& ) |= ( uint8, uint8& -- ) jp ( -- ) -> L683 L684: 3 ( -- uint16 ) lvar-4+6 "chx2" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) ~ ( uint16 -- uint16 ) cast ( uint16 -- uint8 ) gvar-6 "opcr_value" ( -- uint8& ) &= ( uint8, uint8& -- ) L683: 13 ( -- uint8 ) gvar-6 "opcr_value" ( -- uint8& ) peek ( uint8& -- uint8 ) call out ( uint8, uint8 ) 14 ( -- uint8 ) 69 ( -- uint16 ) lvar-2+8 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) call out ( uint8, uint8 ) lvar+0+4 "flags" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 4 ( -- uint16 ) & ( uint16, uint16 -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L685 15 ( -- uint8 ) 65 ( -- uint16 ) lvar-2+8 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) << ( uint16, int16 -- uint16 ) cast ( uint16 -- uint8 ) call out ( uint8, uint8 ) jp ( -- ) -> L685 L685: lvar+2+4 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+2+6 "this" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+10 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) call set_baudrate ( SerialDevice¢, uint8 ) jp ( -- ) -> L680 L680: drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) drop ( SerialDevice¢ -- ) } void setctl ( SerialDevice¢ channel, uint8 fu, uint16 value ) { var SerialDevice¢ channel var uint8 fu var uint16 value local scope ANON var uint8 n lvar+2+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) 5 ( -- uint8 ) == ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L693 50 ( -- uint8 ) L695: lvar+4+2 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+17 "oburi" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+4+4 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) != ( uint8, uint8 -- bool ) and0 ( bool -- ) -> L697 lvar-2+2 "n" ( -- uint8& ) peekmm ( uint8& -- uint8 ) !! ( uint8 -- bool ) L697: jp_z ( bool -- ) -> L696 call wait () jp ( -- ) -> L695 L696: drop ( uint8 -- ) jp ( -- ) -> L693 L693: extern const uint8 mSIO_SELECT call select ( uint8 ) lvar+2+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) switch ( int16 -- ) { 0:L700, 1:L701, 2:L702, 3:L703, 4:L704, 5:L705, 6:L699, dflt:L698, join:L698 } L699: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint8 ) call set_clock_handshake ( SerialDevice¢, uint8 ) jp ( -- ) -> L698 L700: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) 1 ( -- bool ) 1 ( -- bool ) call reset ( SerialDevice¢, bool, bool ) jp ( -- ) -> L698 L701: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 24 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) call set_baudrate ( SerialDevice¢, uint8 ) jp ( -- ) -> L698 L702: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) call set_hw_handshake ( SerialDevice¢, bool ) jp ( -- ) -> L698 L703: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "value" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) call set_sw_handshake ( SerialDevice¢, bool ) jp ( -- ) -> L698 L704: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) 0 ( -- bool ) 1 ( -- bool ) call reset ( SerialDevice¢, bool, bool ) jp ( -- ) -> L698 L705: lvar+4+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) 1 ( -- bool ) 0 ( -- bool ) call reset ( SerialDevice¢, bool, bool ) L698: call ei () drop ( uint16 -- ) drop ( uint8 -- ) drop ( SerialDevice¢ -- ) local scope ANON { } } uint16 getctl ( SerialDevice¢ channel, uint8 fu ) { var SerialDevice¢ channel var uint8 fu lvar+0+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) switch ( int16 -- ) { 1:L708, 2:L709, 3:L710, 4:L712, 5:L713, 6:L711, dflt:L714, join:L706 } L708: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+10 "baudrate" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 24 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) jp ( -- ) -> L706 L709: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+5 "hw_handshake" ( -- bool& ) peek ( bool& -- bool ) cast ( uint8 -- uint16 ) jp ( -- ) -> L706 L710: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+6 "sw_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) jp ( -- ) -> L706 L711: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+7 "clk_handshake" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) jp ( -- ) -> L706 L712: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_in ( SerialDevice¢ -- uint16 ) jp ( -- ) -> L706 L713: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_out ( SerialDevice¢ -- uint16 ) jp ( -- ) -> L706 L714: 0 ( -- uint16 ) jp ( -- ) -> L706 L706: tor ( uint16 -- ) drop ( uint8 -- ) drop ( SerialDevice¢ -- ) fromr ( -- uint16 ) } uint16 avail_in ( SerialDevice¢ channel ) { var SerialDevice¢ channel #assert SerialDevice.iburi == SerialDevice.ibuwi+1 #assert SerialDevice.oburi == SerialDevice.obuwi+1 deref_handle_de ; de -> channel data ld hl,SerialDevice.ibuwi add hl,de ; hl -> ibuwi ld a,(hl) ; a = ibuwi inc hl ; hl -> iburi sub a,(hl) ; a = ibuwi-iburi jp ld_de_a_next } uint16 avail_out ( SerialDevice¢ channel ) { var SerialDevice¢ channel deref_handle_de ; de -> channel data ld a,SerialDevice.obusz ; a = const obusz ld hl,SerialDevice.obuwi add hl,de ; hl -> obuwi sub a,(hl) ; a = obusz-obuwi inc hl ; hl -> oburi add a,(hl) ; a = obusz-obuwi+iburi = obusz - (obuwi-oburi) jp ld_de_a_next } ucs1char getc ( SerialDevice¢ channel ) { var SerialDevice¢ channel var ucs1char c L716: lvar+0+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_in ( SerialDevice¢ -- uint16 ) !! ( uint16 -- bool ) jp_nz ( bool -- ) -> L717 call wait () jp ( -- ) -> L716 L717: lvar+0+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+18 "ibu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar+0+2 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+15 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) 63 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) peek ( ucs1char& -- ucs1char ) lvar+0+2 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+15 "iburi" ( -- uint8& ) ++ ( uint8& -- ) lvar-2+2 "c" ( -- ucs1char& ) peek ( ucs1char& -- ucs1char ) tor ( ucs1char -- ) drop ( ucs1char -- ) drop ( SerialDevice¢ -- ) fromr ( -- ucs1char ) } void putc ( SerialDevice¢ channel, ucs1char c ) { var SerialDevice¢ channel var ucs1char c L719: lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_out ( SerialDevice¢ -- uint16 ) !! ( uint16 -- bool ) jp_nz ( bool -- ) -> L720 call wait () jp ( -- ) -> L719 L720: lvar+0+0 "c" ( -- ucs1char& ) peek ( ucs1char& -- ucs1char ) lvar+2+2 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+20 "obu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar+2+4 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 63 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) poke ( ucs1char, ucs1char& -- ) lvar+2+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) ++ ( uint8& -- ) drop ( ucs1char -- ) drop ( SerialDevice¢ -- ) } void puts ( SerialDevice¢ fd, ucs1str¢ s ) { var SerialDevice¢ fd var ucs1str¢ s lvar+2+0 "fd" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "s" ( -- ucs1str¢& ) peek ( ucs1str¢& -- ucs1str¢ ) cast ( ucs1str¢ -- ucs1char[to] ) call write ( SerialDevice¢, uint8[to] -- bool ) drop ( bool -- ) drop ( ucs1str¢ -- ) drop ( SerialDevice¢ -- ) } void puts ( SerialDevice¢ fd, ucs1str s ) { var SerialDevice¢ fd var ucs1str s lvar+2+0 "fd" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) lvar+0+2 "s" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) cast ( ucs1str¢ -- ucs1char[to] ) call write ( SerialDevice¢, uint8[to] -- bool ) drop ( bool -- ) dispose ( ucs1str -- ) drop ( SerialDevice¢ -- ) } bool read ( SerialDevice¢ channel, uint8[]¢ bu, uint16 a, uint16 e ) { var SerialDevice¢ channel var uint8[]¢ bu var uint16 a var uint16 e local scope ANON var uint8 i var uint8 m var uint8 n L724: lvar+6+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+15 "iburi" ( -- uint8& ) peek ( uint8& -- uint8 ) 63 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) 64 ( -- uint8 ) lvar-2+4 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+4 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+6 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_in ( SerialDevice¢ -- uint16 ) call min ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-4+6 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-6+8 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) < ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L727 lvar+4+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar+6+8 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+18 "ibu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar-2+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar-4+10 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) lvar+4+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+10 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar+6+8 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+18 "ibu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) 0 ( -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar-6+10 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+12 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) jp ( -- ) -> L726 L727: lvar+4+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar+6+8 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+18 "ibu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar-2+10 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar-6+10 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) L726: lvar-6+6 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+6+8 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+15 "iburi" ( -- uint8& ) += ( uint8, uint8& -- ) lvar-6+6 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar+2+8 "a" ( -- uint16& ) += ( uint16, uint16& -- ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+8 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) < ( uint16, uint16 -- bool ) jp_nz ( bool -- ) -> L728 drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) jp ( -- ) -> L725 L728: call wait () drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) jp ( -- ) -> L724 L725: 0 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( SerialDevice¢ -- ) fromr ( -- bool ) local scope ANON { } } bool write ( SerialDevice¢ channel, uint8[]¢ bu, uint16 a, uint16 e ) { var SerialDevice¢ channel var uint8[]¢ bu var uint16 a var uint16 e local scope ANON var uint8 i var uint8 m var uint8 n L730: lvar+6+0 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) peek ( uint8& -- uint8 ) 63 ( -- uint8 ) & ( uint8, uint8 -- uint8 ) 64 ( -- uint8 ) lvar-2+4 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) cast ( uint16 -- uint8 ) lvar+0+4 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar+6+6 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) call avail_out ( SerialDevice¢ -- uint16 ) call min ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-4+6 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-6+8 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) < ( uint8, uint8 -- bool ) jp_z ( bool -- ) -> L733 lvar+6+6 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+20 "obu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar-2+8 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar+4+8 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar-4+10 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) lvar+6+6 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+20 "obu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) 0 ( -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar+4+8 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+12 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar-6+10 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+12 "m" ( -- uint8& ) peek ( uint8& -- uint8 ) - ( uint8, uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) jp ( -- ) -> L732 L733: lvar+6+6 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+20 "obu" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) lvar-2+8 "i" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) atindex ( ucs1str¢, int16 -- ucs1char& ) lvar+4+8 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar-6+10 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) call memcpy ( void*, void*, uint16 ) L732: lvar-6+6 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+6+8 "channel" ( -- SerialDevice¢& ) peek ( SerialDevice¢& -- SerialDevice¢ ) item+16 "obuwi" ( -- uint8& ) += ( uint8, uint8& -- ) lvar-6+6 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) lvar+2+8 "a" ( -- uint16& ) += ( uint16, uint16& -- ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+8 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) < ( uint16, uint16 -- bool ) jp_nz ( bool -- ) -> L734 drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) jp ( -- ) -> L731 L734: call wait () drop ( uint8 -- ) drop ( uint8 -- ) drop ( uint8 -- ) jp ( -- ) -> L730 L731: 0 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( SerialDevice¢ -- ) fromr ( -- bool ) local scope ANON { } } SerialDevice new ( uint8 ch, ucs1str¢ name ) { var uint8 ch var ucs1str¢ name var SerialDevice this var uint16 ch3 22 ( -- uint16 ) alloc ( uint16 -- SerialDevice ) lvar-2+2 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) 3 ( -- NodeType ) lvar+0+6 "name" ( -- ucs1str¢& ) peek ( ucs1str¢& -- ucs1str¢ ) gvar-8 "sio_handlers" ( -- FD_Handlers& ) peek ( FD_Handlers& -- FD_Handlers¢ ) call init ( FD¢, NodeType, ucs1str¢, FD_Handlers¢ ) extern const uint8 mSIO_SELECT lvar-2+4 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+8 "device" ( -- uint8& ) poke ( uint8, uint8& -- ) 4 ( -- uint8 ) lvar-2+4 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+10 "baudrate" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar+2+2 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+4 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+9 "channel" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar+2+2 "ch" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) lvar-4+4 "ch3" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) extern const uint8 k1_rd_data cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-2+6 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+11 "sreg" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar-4+4 "ch3" ( -- uint16& ) peek ( uint16& -- uint16 ) 3 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) extern const uint8 k1_rd_data cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-2+6 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+12 "rxreg" ( -- uint8& ) poke ( uint8, uint8& -- ) lvar-4+4 "ch3" ( -- uint16& ) peek ( uint16& -- uint16 ) 3 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) extern const uint8 k1_wr_data cast ( uint8 -- uint16 ) + ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint8 ) lvar-2+6 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+13 "txreg" ( -- uint8& ) poke ( uint8, uint8& -- ) 64 ( -- uint16 ) alloc ( uint16 -- ucs1char[64] ) lvar-2+6 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+18 "ibu" ( -- ucs1str& ) swapwithvar ( ucs1str, ucs1str& -- ucs1str ) dispose ( ucs1str -- ) 64 ( -- uint16 ) alloc ( uint16 -- ucs1char[64] ) lvar-2+6 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) item+20 "obu" ( -- ucs1str& ) swapwithvar ( ucs1str, ucs1str& -- ucs1str ) dispose ( ucs1str -- ) lvar-2+4 "this" ( -- SerialDevice& ) peek ( SerialDevice& -- SerialDevice¢ ) retain ( SerialDevice¢ -- SerialDevice ) tor ( SerialDevice -- ) drop ( uint16 -- ) call! kill ( SerialDevice -- SerialDevice ) dispose ( SerialDevice -- ) drop ( ucs1str¢ -- ) drop ( uint8 -- ) fromr ( -- SerialDevice ) } FD_Handlers new_sio_handlers () { #assert FD_Handlers.getctl == 0 #assert FD_Handlers.setctl == 2 #assert FD_Handlers.avail_in == 4 #assert FD_Handlers.avail_out == 6 #assert FD_Handlers.getc == 8 #assert FD_Handlers.putc == 10 #assert FD_Handlers.read == 12 #assert FD_Handlers.write == 14 #assert FD_Handlers.read_block == 16 #assert FD_Handlers.write_block == 18 #assert FD_Handlers.kill == 20 #assert FD_Handlers.getfpos == 22 #assert FD_Handlers.setfpos == 24 p_enter dw ISTR dw 26 dw SerialDevice.getctl__12SerialDeviceC_5uint8_6uint16 dw SerialDevice.setctl__12SerialDeviceC_5uint8_6uint16_ dw SerialDevice.avail_in__12SerialDeviceC_6uint16 dw SerialDevice.avail_out__12SerialDeviceC_6uint16 dw SerialDevice.getc__12SerialDeviceC_8ucs1char dw SerialDevice.putc__12SerialDeviceC_8ucs1char_ dw SerialDevice.read__12SerialDeviceC_5uint8AEC_6uint16_6uint16_4bool dw SerialDevice.write__12SerialDeviceC_5uint8AEC_6uint16_6uint16_4bool dw no_read_block__2FDC_6uint32_5uint8AEC_4bool dw no_read_block__2FDC_6uint32_5uint8AEC_4bool ; write_block dw FD.kill__2FDC_ dw no_getfpos__2FDC_6uint32 dw no_setfpos__2FDC_6uint32_4bool dw RETURN } } {41062, 41096, 41113, 41147, 42035, 41164, 41113, 41113, 40960, 41301, 41318, 41352, 41369, 41403, 42086, 41420} ( -- uint16[16] ) gsinit "uart_values_for_baudrate" 8 ( -- uint8 ) gsinit "imr_value" 0 ( -- uint8 ) gsinit "opcr_value" call new_sio_handlers ( -- FD_Handlers ) gsinit "sio_handlers"