'0' str "K1D1jg75" '1' int8[] 0b00010111 0b00000100 0b00000000 0b01000000 0b00000110 0b00000010 '2' str "sio" '3' str "DualSio" '4' str "0.4" '5' str "(c) kio@little-bat.de 2012-2013" 'A' TYPEDEFS: SioData: 7 = { 4 4 1 1 1 1 1 1 1 1 1 1 1 } 'B' GLOBALS: 7 7 1 1 5 'C' PROCDEF 32: SioData.avail_in ( 7 -- 2 ) lvars: lget.p 0 iget.b 7.2 lget.p 0 iget.b 7.3 sub ret 'C' PROCDEF 33: SioData.avail_out ( 7 -- 2 ) lvars: ival.b 16 lget.p 0 iget.b 7.4 lget.p 0 iget.b 7.5 sub sub ret 'C' PROCDEF 34: SioData.irpt ( 7 1 1 1 1 -- ) lvars: 1 ival.b 0 label 0: lget.b 1 in.b ival.b 1 and and0 1: lget.p 0 iget.b 7.2 lget.p 0 iget.b 7.3 sub ival.b 16 lt label 1: jp0 2: lget.b 2 in.b lset.b 5 lget.p 0 iget.b 7.7 and0 3: lget.b 5 ival.b 17 eq or1 3: lget.b 5 ival.b 19 eq label 3: jp0 5: lget.b 5 ival.b 19 eq lget.p 0 iset.b 7.8 jp 0: label 5: lget.b 5 lget.p 0 iget.p 7.0 lget.p 0 ivar 7.2 peekpp.b ival.b 15 and atiset.b jp 0: label 2: lget.p 0 iget.b 7.7 and0 6: lget.b 1 in.b ival.b 4 and label 6: jp0 7: lget.p 0 iget.b 7.2 lget.p 0 iget.b 7.3 sub ival.b 16 eq jp0 8: lget.p 0 iget.b 7.9 jp1 7: ival.b 19 lget.b 2 out.b ival.b 1 lget.p 0 iset.b 7.9 jp 7: label 8: lget.p 0 iget.b 7.9 jp0 7: ival.b 17 lget.b 2 out.b ival.b 0 lget.p 0 iset.b 7.9 label 7: lget.b 1 in.b ival.b 4 and and0 9: lget.p 0 iget.b 7.4 lget.p 0 iget.b 7.5 ne label 9: and0 10: lget.p 0 iget.b 7.8 not label 10: jp0 11: lget.p 0 iget.p 7.1 lget.p 0 ivar 7.5 peekpp.b ival.b 15 and atiget.b lget.b 2 out.b jp 7: label 11: lget.p 0 iget.b 7.2 lget.p 0 iget.b 7.3 sub ival.b 16 eq jp0 12: lget.b 3 cpl gvar 2 andgl.b jp 13: label 12: lget.b 3 gvar 2 orgl.b label 13: lget.p 0 iget.b 7.4 lget.p 0 iget.b 7.5 eq or1 14: lget.p 0 iget.b 7.8 label 14: jp0 15: lget.b 4 cpl gvar 2 andgl.b jp 16: label 15: lget.b 4 gvar 2 orgl.b label 16: gget.b 2 ival.b 5 out.b ret 'C' PROCDEF 35: SioData.set_baudrate ( 7 1 -- ) lvars: 1 1 1 2 1 lget.p 0 iget.b 7.10 ival.b 3 sl get_lo lget.b 1 msbit lget.b 3 and0 0: lget.b 1 lget.b 3 ival.b 1 sub sr ival.b 1 and label 0: gget.p 4 lget.b 4 ival.b 3 sl lget.b 3 add atiget.w lget.b 4 jp0 1: ival.b 3 lget.b 3 ival.b 1 sub sl jp 2: label 1: lget.b 3 ival.b 6 lt jp0 3: ival.b 1 lget.b 3 sl jp 2: label 3: ival.b 4 label 2: get_lo lget.p 0 iset.b 7.11 ival.b 0 lget.p 0 iget.b 7.12 jp0 4: lget.p 0 iget.b 7.12 ival.b 1 and jp0 5: ival.b 15 lvar 6 orgl.b label 5: lget.p 0 iget.b 7.12 ival.b 2 and jp0 4: ival.b 240 lvar 6 orgl.b label 4: ival.b 176 lget.b 2 ival.b 2 add get_lo out.b lget.w 5 get_hi lget.b 2 ival.b 0 add get_lo out.b lget.w 5 get_lo lget.b 6 or lget.b 2 ival.b 1 add get_lo out.b ret 'C' PROCDEF 36: SioData.set_sw_handshake ( 7 1 -- ) lvars: lget.p 0 iget.b 7.7 lget.b 1 ne jp0 0: lget.b 1 lget.p 0 iset.b 7.7 ival.b 0 lget.p 0 iset.b 7.8 ival.b 0 lget.p 0 iset.b 7.9 label 0: ret 'C' PROCDEF 37: SioData.set_hw_handshake ( 7 1 -- ) lvars: 2 lget.p 0 iget.b 7.10 ival.b 3 sl lget.p 0 iget.b 7.6 lget.b 1 ne jp0 0: lget.b 1 lget.p 0 iset.b 7.6 ival.b 16 lget.w 2 ival.b 2 add get_lo out.b lget.b 1 ival.b 7 sl ival.b 83 add get_lo lget.w 2 ival.b 0 add get_lo out.b lget.b 1 ival.b 4 sl ival.b 7 add get_lo lget.w 2 ival.b 0 add get_lo out.b label 0: ret 'C' PROCDEF 38: SioData.set_clock_handshake ( 7 1 -- ) lvars: 1 1 lget.p 0 iget.b 7.10 lget.b 2 ival.b 1 sl get_lo lget.p 0 iget.b 7.12 lget.b 1 ne jp0 0: lget.b 1 lget.p 0 iset.b 7.12 lget.b 1 ival.b 3 and jp0 1: ival.b 3 lget.b 3 sl get_lo gvar 3 orgl.b jp 2: label 1: ival.b 3 lget.b 3 sl cpl get_lo gvar 3 andgl.b label 2: gget.b 3 ival.b 13 out.b ival.b 69 lget.b 2 sl get_lo ival.b 14 out.b lget.b 1 ival.b 4 and jp0 3: ival.b 65 lget.b 2 sl get_lo ival.b 15 out.b label 3: lget.p 0 lget.p 0 iget.b 7.11 call 35 label 0: ret 'C' PROCDEF 39: SioData.reset ( 7 1 1 -- ) lvars: 1 lget.p 0 iget.b 7.10 ival.b 3 sl ival.b 2 add get_lo lget.b 2 jp0 0: ival.b 32 lget.b 3 out.b ival.b 0 lget.p 0 iset.b 7.9 lget.p 0 iget.b 7.3 lget.p 0 iset.b 7.2 label 0: lget.b 1 jp0 1: ival.b 48 lget.b 3 out.b ival.b 0 lget.p 0 iset.b 7.8 lget.p 0 iget.b 7.4 lget.p 0 iset.b 7.5 label 1: ival.b 64 lget.b 3 out.b ival.b 5 lget.b 3 out.b ret 'C' PROCDEF 8: irpt ( -- ) lvars: ival.b 5 in.b ival.b 8 and jp0 0: ival.b 15 in.b jp0 1: label 1: timer label 0: gget.p 0 ival.b 1 ival.b 3 ival.b 2 ival.b 1 call 34 gget.p 1 ival.b 9 ival.b 11 ival.b 32 ival.b 16 call 34 ret 'C' PROCDEF 9: setctl ( 7 1 2 -- ) lvars: di lget.b 1 ival.b 0 sub switch { 0 1 2 3 4 5 6 6 7 } jp 6: label 7: lget.p 0 lget.w 2 get_lo call 38 jp 6: label 0: lget.p 0 ival.b 1 ival.b 1 call 39 jp 6: label 1: lget.p 0 lget.w 2 ival.b 24 div get_lo call 35 jp 6: label 2: lget.p 0 lget.w 2 ival.b 0 ne call 37 jp 6: label 3: lget.p 0 lget.w 2 ival.b 0 ne call 36 jp 6: label 4: lget.p 0 ival.b 0 ival.b 1 call 39 jp 6: label 5: lget.p 0 ival.b 1 ival.b 0 call 39 label 6: ei ret 'C' PROCDEF 10: getctl ( 7 1 -- 2 ) lvars: lget.b 1 ival.b 1 sub switch { 0 1 2 3 4 5 5 6 } jp 5: label 0: lget.p 0 iget.b 7.11 ival.b 24 mul jp 7: label 1: lget.p 0 iget.b 7.6 jp 7: label 2: lget.p 0 iget.b 7.7 jp 7: label 6: lget.p 0 iget.b 7.12 jp 7: label 3: lget.p 0 call 32 jp 7: label 4: lget.p 0 call 33 jp 7: label 5: ival.b 0 label 7: ret 'C' PROCDEF 11: getc ( 7 -- 2 ) lvars: 2 label 0: lget.p 0 call 32 jp1 1: wait jp 0: label 1: lget.p 0 iget.p 7.0 lget.p 0 iget.b 7.3 ival.b 15 and atiget.b lget.p 0 ivar 7.3 peekpp.b lget.p 0 iget.b 7.2 ival.b 16 sub eq jp0 2: call 8 label 2: lget.w 1 ret 'C' PROCDEF 13: putc ( 7 1 -- ) lvars: label 0: lget.p 0 call 33 jp1 1: wait jp 0: label 1: lget.b 1 lget.p 0 iget.p 7.1 lget.p 0 iget.b 7.4 ival.b 15 and atiset.b lget.p 0 ivar 7.4 peekpp.b lget.p 0 iget.b 7.5 eq jp0 2: call 8 label 2: ret 'C' PROCDEF 12: gets ( 7 4 2 2 -- 2 ) lvars: 2 lget.w 3 lget.w 2 sub lget.p 0 call 32 min lget.p 0 iget.p 7.0 lget.p 0 iget.b 7.3 ival.b 15 and lget.p 1 lget.w 2 lget.w 4 copy.b lget.w 4 get_lo lget.p 0 ivar 7.3 addgl.b lget.p 0 iget.b 7.3 lget.w 4 sub lget.p 0 iget.b 7.2 ival.b 16 sub eq jp0 0: call 8 label 0: lget.w 4 ret 'C' PROCDEF 14: puts ( 7 4 2 2 -- 2 ) lvars: 2 lget.w 3 lget.w 2 sub lget.p 0 call 33 min lget.p 1 lget.w 2 lget.p 0 iget.p 7.1 lget.p 0 iget.b 7.4 ival.b 15 and lget.w 4 copy.b lget.w 4 get_lo lget.p 0 ivar 7.4 addgl.b lget.p 0 iget.b 7.4 lget.w 4 sub lget.p 0 iget.b 7.5 eq jp0 0: call 8 label 0: lget.w 4 ret 'C' PROCDEF 40: SioData.init ( 7 1 -- ) disposable lvars: 1 lget.b 1 lget.p 0 iset.b 7.10 ival.b 16 alloc.b lget.p 0 ivar 7.0 set.p ival.b 16 alloc.b lget.p 0 ivar 7.1 set.p lget.p 0 ival.b 24 call 35 lget.b 1 ival.b 3 sl get_lo ival.b 16 lget.b 2 ival.b 2 add get_lo out.b ival.b 83 lget.b 2 ival.b 0 add get_lo out.b ival.b 7 lget.b 2 ival.b 0 add get_lo out.b lget.p 0 ival.b 1 ival.b 1 call 39 ret 'C' PROCDEF 1: systemtimer ( 2 -- 2 ) disposable lvars: 2 lget.w 0 get_lo swap ival.w 1111 div lget.w 0 get_hi ival.w 472 mul ival.b 8 div add lset.w 0 lget.w 0 get_hi ival.b 6 out.b lget.w 0 get_lo ival.b 7 out.b ival.b 14 in.b lget.w 0 get_lo ival.w 1111 get_hi mul lget.w 0 get_hi ival.w 1111 mul add ret 'C' PROCDEF 0: init ( -- ) disposable lvars: ival.w[] { 41062 41096 41113 41147 42035 41164 41113 41113 40960 41301 41318 41352 41369 41403 42086 41420 } gvar 4 set.p ival.b 59 gset.b 2 ival.b 0 gset.b 3 ival.b 255 ival.b 14 out.b ival.b 112 ival.b 4 out.b alloc.S 7 gvar 0 set.p alloc.S 7 gvar 1 set.p gget.p 0 ival.b 0 call 40 gget.p 1 ival.b 1 call 40 ival.b 59 ival.b 5 out.b ret 'D' End of Data <32><1> lget <2> iget <2> lget <3> iget <3> sub <2> ret <33><1> ival.b <2> lget <3> iget <3> lget <4> iget <4> sub <3> sub <2> ret <34><5> ival.b <6> label <6> lget <7> in <7> ival.b and <7> and0 <6> lget <7> iget <7> lget <8> iget <8> sub <7> ival.b lt <7> label <7> jp0 <6> lget <7> in <7> lset <6> lget <7> iget <7> and0 <6> lget <7> ival.b eq <7> or1 <6> lget <7> ival.b eq <7> label <7> jp0 <6> lget <7> ival.b eq <7> lget <8> iset <6> jp <6> label <6> lget <7> lget <8> iget <8> lget <9> ivar <9> peekpp <9> ival.b and <9> atiset <6> jp <6> label <6> lget <7> iget <7> and0 <6> lget <7> in <7> ival.b and <7> label <7> jp0 <6> lget <7> iget <7> lget <8> iget <8> sub <7> ival.b eq <7> jp0 <6> lget <7> iget <7> jp1 <6> ival.b <7> lget <8> out <6> ival.b <7> lget <8> iset <6> jp <6> label <6> lget <7> iget <7> jp0 <6> ival.b <7> lget <8> o ut <6> ival.b <7> lget <8> iset <6> label <6> lget <7> in <7> ival.b and <7> and0 <6> lget <7> iget <7> lget <8> iget <8> ne <7> label <7> and0 <6> lget <7> iget <7> not <7> label <7> jp0 <6> lget <7> iget <7> lget <8> ivar <8> peekpp <8> ival.b and <8> atiget <7> lget <8> out <6> jp <6> label <6> lget <7> iget <7> lget <8> iget <8> sub <7> ival.b eq <7> jp0 <6> lget <7> cpl <7> gvar <8> andgl <6> jp <6> label <6> lget <7> gvar <8> orgl <6> label <6> lget <7> iget <7> lget <8> iget <8> eq <7> or1 <6> lget <7> iget <7> label <7> jp0 <6> lget <7> cpl <7> gvar <8> andgl <6> jp <6> label <6> lget <7> gvar <8> orgl <6> label <6> gget <7> ival.b out <6> ret <35><2> lget <3> iget <3> ival.b sl <3> get_lo <3> lget <4> msbit <4> lget <5> and0 <4> lget <5> lget <6> ival.b sub <6> sr <5> ival.b and <5> label <5> gget <6> lget <7> ival.b sl <7> lget <8> add <7> atiget <6> lget <7> jp0 <6> ival.b <7> lget <8> ival.b sub <8> sl <7> jp <6> label <6> lget <7> ival.b lt <7> jp0 <6> ival.b <7> lget <8> sl <7> jp <6> label <6> ival.b <7> label <7> get_lo <7> lget <8> iset <6> ival.b <7> lget <8> iget <8> jp0 <7> lget <8> iget <8> ival.b and <8> jp0 <7> ival.b <8> lvar <9> orgl <7> label <7> lget <8> iget <8> ival.b and <8> jp0 <7> ival.b <8> lvar <9> orgl <7> label <7> ival.b <8> lget <9> ival.b add <9> get_lo <9> out <7> lget <8> get_hi <8> lget <9> ival.b add <9> get_lo <9> out <7> lget <8> get_lo <8> lget <9> or <8> lget <9> ival.b add <9> get_lo <9> out <7> ret <36><2> lget <3> iget <3> lget <4> ne <3> jp0 <2> lget <3> lget <4> iset <2> ival.b <3> lget <4> iset <2> ival.b <3> lget <4> iset <2> label <2> ret <37> <2> lget <3> iget <3> ival.b sl <3> lget <4> iget <4> lget <5> ne <4> jp0 <3> lget <4> lget <5> iset <3> ival.b <4> lget <5> ival.b add <5> get_lo <5> out <3> lget <4> ival.b sl <4> ival.b add <4> get_lo <4> lget <5> ival.b add <5> get_lo <5> out <3> lget <4> ival.b sl <4> ival.b add <4> get_lo <4> lget <5> ival.b add <5> get_lo <5> out <3> label <3> ret <38><2> lget <3> iget <3> lget <4> ival.b sl <4> get_lo <4> lget <5> iget <5> lget <6> ne <5> jp0 <4> lget <5> lget <6> iset <4> lget <5> ival.b and <5> jp0 <4> ival.b <5> lget <6> sl <5> get_lo <5> gvar <6> orgl <4> jp <4> label <4> ival.b <5> lget <6> sl <5> cpl <5> get_lo <5> gvar <6> andgl <4> label <4> gget <5> ival.b out <4> ival.b <5> lget <6> sl <5> get_lo <5> ival.b out <4> lget <5> ival.b and <5> jp0 <4> ival.b <5> lget <6> sl <5> get_lo <5> ival.b out <4> label <4> lget <5> lget <6> iget <6> call <4> label <4> ret <39><3> lget <4> iget <4> ival.b sl <4> ival.b add <4> get_lo <4> lget <5> jp0 <4> ival.b <5> lget <6> out <4> ival.b <5> lget <6> iset <4> lget <5> iget <5> lget <6> iset <4> label <4> lget <5> jp0 <4> ival.b <5> lget <6> out <4> ival.b <5> lget <6> iset <4> lget <5> iget <5> lget <6 > iset <4> label <4> ival.b <5> lget <6> out <4> ival.b <5> lget <6> out <4> ret <8><0> ival.b in <1> ival.b and <1> jp0 <0> ival.b in <1> jp0 <0> label <0> timer <0> label <0> gget <1> ival.b <2> ival.b <3> ival.b <4> ival.b <5> call <0> gget <1> ival.b <2> ival.b <3> ival.b <4> ival.b <5> call <0> ret <9><3> di <3> lget <4> ival.b sub <4> switch <3> jp <3> label <3> lget <4> lget <5> get_lo <5> call <3> jp <3> label <3> lget <4> ival.b <5> ival.b <6> call <3> jp <3> label <3> lget <4> lget <5> ival.b div <5> get_lo <5> call <3> jp <3> label <3> lget <4> lget <5> ival.b ne <5> call <3> jp <3> label <3> lget <4> lget <5> ival.b ne <5> call <3> jp <3> label <3> lget <4> ival.b <5> ival.b <6> call <3> jp <3> label <3> lget <4> ival.b <5> ival. b <6> call <3> label <3> ei <3> ret <10> <2> lget <3> ival.b sub <3> switch <2> jp <2> label <2> lge t <3> iget <3> ival.b mul <3> jp <2> label <2> lget <3> iget <3> jp <2> label <2> lget <3> iget <3> jp <2> label <2> lget <3> iget <3> jp <2> label <2> lge t <3> call <3> jp <2> label <2> lget <3> call <3> jp <2> label <2> ival.b <3> label <3> ret <11><1> label <1> lget <2> call <2> jp1 <1> wait <1> jp <1> label <1> lget <2> iget <2> lget <3> iget <3> ival.b and <3> atiget <2> lget <3> ivar <3> peekpp <3> lget <4> iget <4> ival.b sub <4> eq <3> jp0 <2> call <2> label <2> lget <3> ret <13><2> label <2> lget <3> call <3> jp1 <2> wait <2> jp <2> label <2> lget <3> lget <4> iget <4> lget <5> iget <5> ival.b and <5> atiset <2> lget <3> ivar <3> peekpp <3> lget <4> iget <4> eq <3> jp0 <2> call <2> label <2> ret <12><4> lget <5> lget <6> sub <5> lget <6> call <6> min <5> lget <6> iget <6> lget <7> iget <7> ival.b and <7> lget <8> lget <9> lget <10> copyAiAin <5> lget <6> get_lo <6> lget <7> ivar <7> addgl <5> lget <6> iget <6> lget <7> sub <6> lget <7> iget <7> ival.b sub <7> eq <6> jp0 <5> call <5> label <5> lget <6> ret <14><4> lget <5> lget <6> sub <5> lget <6> call <6> min <5> lget <6> lget <7> lget <8> iget <8> lget <9> iget <9> ival.b and <9> lget <10> copyAiAin <5> lget <6> get_lo <6> lget <7> ivar <7> addgl <5> lget <6> iget <6> lget <7> sub <6> lget <7> iget <7> eq <6> jp0 <5> call <5> label <5> lget <6> ret <40><2> lget <3> lget <4> iset <2> ival.b <3> alloc <3> lget <4> ivar <4> set <2> ival.b <3> alloc <3> lget <4> ivar <4> set <2> lget <3> ival.b <4> call <2> lget <3> ival.b sl <3> get_lo <3> ival.b <4> lget <5> ival.b add <5> get_lo <5> out <3> ival.b <4> lget <5> ival.b add <5> get_lo <5> out <3> ival.b <4> lget <5> ival.b add <5> get_lo <5> out <3> lget <4> ival.b <5> ival.b <6> call <3> ret <1><1> lget <2> get_lo <2> swap <2> ival div <2> lget <3> get_hi <3> ival mul <3> ival.b div <3> add <2> lset <1> lget <2> get_hi <2> ival.b out <1> lget <2> get_lo <2> ival.b out <1> ival.b in <2> lget <3> get_lo <3> ival <4> get_hi <4> mul <3> lget <4> get_hi <4> ival mul <4> add <3> ret <0>{(null)}<0> ival.w[] <1> gvar <2> set <0> ival.b <1> gset <0> ival.b <1> gset <0> ival.b <1> ival.b out <0> ival.b <1> ival.b out <0> alloc.S <1> gvar <2> set <0> alloc.S <1> gvar <2> set <0> gget <1> ival.b <2> call <0> gget <1> ival.b <2> call <0> ival.b <1> ival.b out <0> ret [init_float][init_devices][init_device:2] sio: DualSio 0.4 [speed:3]