opcodes[]: global scope global { global scope implicit__test_16 { } type utf8str: type ucs1str: type ucs2str: type FD: type BlockDevice: type IdeBlockDevice: type I2cBlockDevice: type SerialDevice: void test_16 () { push_procptr bit ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr cmp ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr cmps ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr cmpus ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr addsub ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr muldiv ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) push_procptr muldivs ( -- void(uint16, uint16)* ) 16 ( -- uint16 ) call test ( void(uint16,uint16), uint16 ) } uint16 rand ( uint16 bits ) { var uint16 bits var uint16 b call random ( -- uint16 ) 32768 ( -- uint16 ) | ( uint16, uint16 -- uint16 ) lvar-2+2 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) lvar+0+6 "bits" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) >> ( uint16, int16 -- uint16 ) lvar+0+4 "bits" ( -- uint16& ) poke ( uint16, uint16& -- ) drop ( uint16 -- ) } void bit ( uint16 n, uint16 m ) { var uint16 n var uint16 m var uint16 a var uint16 b var uint16 c var uint16 v lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) lvar-6+6 "c" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) & ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) & ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) | ( uint16, uint16 -- uint16 ) lvar-6+8 "c" ( -- uint16& ) poke ( uint16, uint16& -- ) lvar-6+6 "c" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) | ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) | ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) ^ ( uint16, uint16 -- uint16 ) lvar-6+8 "c" ( -- uint16& ) poke ( uint16, uint16& -- ) lvar-6+6 "c" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) hi ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) ^ ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-2+8 "a" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) lvar-4+10 "b" ( -- uint16& ) lo ( uint16& -- uint8& ) peek ( uint8& -- uint8 ) ^ ( uint8, uint8 -- uint8 ) == ( uint8, uint8 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) ~ ( uint16 -- uint16 ) | ( uint16, uint16 -- uint16 ) 65535 ( -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( int16 -- int16 ) + ( uint16, int16 -- int16 ) 0 ( -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) call msbit ( uint16 -- uint8 ) cast ( uint8 -- uint16 ) lvar+2+8 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) |= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+12 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) | ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) poke ( uint16, uint16& -- ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) &= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+12 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) poke ( uint16, uint16& -- ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) ^= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+12 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) ^ ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) } void cmp ( uint16 n, uint16 m ) { var uint16 n var uint16 m var uint16 a var uint16 b lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L703 jp ( -- ) -> L702 L703: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call min ( uint16, uint16 -- uint16 ) call rand ( uint16 -- uint16 ) lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+4 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call max ( uint16, uint16 -- uint16 ) call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) <= ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) < ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) != ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) <= ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) <= ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) >= ( uint16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) > ( uint16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert0 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) != ( uint16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) >= ( uint16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) > ( uint16, uint16 -- bool ) call assert0 ( bool ) drop ( uint16 -- ) drop ( uint16 -- ) L702: drop ( uint16 -- ) drop ( uint16 -- ) } void cmps ( uint16 n, uint16 m ) { var uint16 n var uint16 m var int16 a var int16 b lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L707 jp ( -- ) -> L706 L707: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L711 lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L712 L711: lvar+0+0 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L709 lvar+0+0 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L712 L709: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call min ( uint16, uint16 -- uint16 ) L712: call rand ( uint16 -- uint16 ) lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L715 lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L716 L715: lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L713 lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L716 L713: lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+4 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call max ( uint16, uint16 -- uint16 ) L716: call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) != ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) <= ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) >= ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) < ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) > ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) >= ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) < ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) > ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) != ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) <= ( int16, int16 -- bool ) call assert1 ( bool ) drop ( int16 -- ) drop ( int16 -- ) L706: drop ( uint16 -- ) drop ( uint16 -- ) } void cmpus ( uint16 n, uint16 m ) { var uint16 n var uint16 m var int16 a var uint16 b lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L719 jp ( -- ) -> L718 L719: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) or1 ( bool -- ) -> L721 lvar+0+0 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) L721: jp_z ( bool -- ) -> L722 lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L723 L722: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call min ( uint16, uint16 -- uint16 ) L723: call rand ( uint16 -- uint16 ) lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) or1 ( bool -- ) -> L724 lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) L724: jp_z ( bool -- ) -> L725 lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) jp ( -- ) -> L726 L725: lvar+2+2 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+4 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call max ( uint16, uint16 -- uint16 ) L726: call rand ( uint16 -- uint16 ) lvar+2+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L727 lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) != ( int16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) != ( uint16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( uint16, int16 -- bool ) call assert0 ( bool ) jp ( -- ) -> L727 L727: lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) <= ( uint16, int16 -- bool ) call assert0 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) > ( uint16, int16 -- bool ) call assert1 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) < ( uint16, int16 -- bool ) call assert0 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( uint16, int16 -- bool ) call assert0 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) != ( uint16, int16 -- bool ) call assert1 ( bool ) lvar-4+4 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) >= ( uint16, int16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) >= ( int16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) < ( int16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) > ( int16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( int16, uint16 -- bool ) call assert0 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) != ( int16, uint16 -- bool ) call assert1 ( bool ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) <= ( int16, uint16 -- bool ) call assert1 ( bool ) drop ( uint16 -- ) drop ( int16 -- ) L718: drop ( uint16 -- ) drop ( uint16 -- ) } void muldiv ( uint16 n, uint16 m ) { var uint16 n var uint16 m var uint16 a var uint16 b var uint16 c var uint16 v lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) 16 ( -- uint16 ) >= ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L731 jp ( -- ) -> L730 L731: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) 16 ( -- uint16 ) > ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L733 jp ( -- ) -> L730 L733: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) * ( uint16, uint16 -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+8 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) >> ( uint16, int16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) lvar+0+12 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( uint16, int16 -- uint16 ) / ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+8 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( uint16, int16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) lvar+2+12 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( uint16, int16 -- uint16 ) * ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L735 lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L735 L735: lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) 0 ( -- uint16 ) != ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L737 lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L737 L737: lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) > ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L739 lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L739 L739: lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- uint16 ) > ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L741 lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L741 L741: lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) *= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-6+10 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) /= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) L730: drop ( uint16 -- ) drop ( uint16 -- ) } void muldivssub ( int16 a, int16 b, int16 c ) { var int16 a var int16 b var int16 c var int16 v lvar+4+0 "a" ( -- int16& ) peek ( int16& -- int16 ) 0 ( -- int16 ) != ( int16, int16 -- bool ) jp_z ( bool -- ) -> L745 lvar+0+0 "c" ( -- int16& ) peek ( int16& -- int16 ) lvar+4+2 "a" ( -- int16& ) peek ( int16& -- int16 ) / ( int16, int16 -- int16 ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L745 L745: lvar+2+0 "b" ( -- int16& ) peek ( int16& -- int16 ) 0 ( -- int16 ) != ( int16, int16 -- bool ) jp_z ( bool -- ) -> L747 lvar+0+0 "c" ( -- int16& ) peek ( int16& -- int16 ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) / ( int16, int16 -- int16 ) lvar+4+2 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L747 L747: lvar+4+0 "a" ( -- int16& ) peek ( int16& -- int16 ) call abs ( int16 -- uint16 ) 1 ( -- uint16 ) > ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L749 lvar+0+0 "c" ( -- int16& ) peek ( int16& -- int16 ) lvar+0+2 "c" ( -- int16& ) peek ( int16& -- int16 ) call sign ( int16 -- int16 ) + ( int16, int16 -- int16 ) lvar+4+2 "a" ( -- int16& ) peek ( int16& -- int16 ) / ( int16, int16 -- int16 ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L749 L749: lvar+4+0 "a" ( -- int16& ) peek ( int16& -- int16 ) call abs ( int16 -- uint16 ) 1 ( -- uint16 ) > ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L751 lvar+0+0 "c" ( -- int16& ) peek ( int16& -- int16 ) lvar+0+2 "c" ( -- int16& ) peek ( int16& -- int16 ) call sign ( int16 -- int16 ) lvar+4+4 "a" ( -- int16& ) peek ( int16& -- int16 ) call abs ( int16 -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) * ( int16, uint16 -- int16 ) + ( int16, int16 -- int16 ) lvar+4+2 "a" ( -- int16& ) peek ( int16& -- int16 ) / ( int16, int16 -- int16 ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) jp ( -- ) -> L751 L751: lvar+4+0 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+4 "v" ( -- int16& ) *= ( int16, int16& -- ) lvar-2+2 "v" ( -- int16& ) peek ( int16& -- int16 ) lvar+0+4 "c" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar+2+2 "b" ( -- int16& ) peek ( int16& -- int16 ) lvar-2+4 "v" ( -- int16& ) /= ( int16, int16& -- ) lvar-2+2 "v" ( -- int16& ) peek ( int16& -- int16 ) lvar+4+4 "a" ( -- int16& ) peek ( int16& -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) drop ( int16 -- ) drop ( int16 -- ) drop ( int16 -- ) drop ( int16 -- ) } void muldivs ( uint16 n, uint16 m ) { var uint16 n var uint16 m var int16 a var int16 b var int16 c lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) 16 ( -- uint16 ) >= ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L755 jp ( -- ) -> L754 L755: lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) * ( int16, int16 -- int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar+0+8 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) >> ( int16, int16 -- int16 ) lvar-2+8 "a" ( -- int16& ) peek ( int16& -- int16 ) 1 ( -- int16 ) lvar+0+12 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( int16, int16 -- int16 ) / ( int16, int16 -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-4+6 "b" ( -- int16& ) peek ( int16& -- int16 ) lvar+2+8 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( int16, int16 -- int16 ) lvar-4+8 "b" ( -- int16& ) peek ( int16& -- int16 ) 1 ( -- uint16 ) lvar+2+12 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( uint16, int16 -- uint16 ) * ( int16, uint16 -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar+0+8 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) >> ( int16, int16 -- int16 ) - ( int16 -- int16 ) lvar-2+8 "a" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) 1 ( -- int16 ) lvar+0+12 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) << ( int16, int16 -- int16 ) / ( int16, int16 -- int16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+8 "b" ( -- int16& ) peek ( int16& -- int16 ) lvar-6+10 "c" ( -- int16& ) peek ( int16& -- int16 ) call muldivssub ( int16, int16, int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) lvar-4+8 "b" ( -- int16& ) peek ( int16& -- int16 ) lvar-6+10 "c" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) call muldivssub ( int16, int16, int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) lvar-4+8 "b" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) lvar-6+10 "c" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) call muldivssub ( int16, int16, int16 ) lvar-2+6 "a" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) lvar-4+8 "b" ( -- int16& ) peek ( int16& -- int16 ) - ( int16 -- int16 ) lvar-6+10 "c" ( -- int16& ) peek ( int16& -- int16 ) call muldivssub ( int16, int16, int16 ) drop ( int16 -- ) drop ( int16 -- ) drop ( int16 -- ) L754: drop ( uint16 -- ) drop ( uint16 -- ) } void addsub ( uint16 n, uint16 m ) { var uint16 n var uint16 m var uint16 a var uint16 b var uint16 c var uint16 v lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar+0+2 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call rand ( uint16 -- uint16 ) lvar-2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- int16 ) << ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 4 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- int16 ) << ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 8 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 3 ( -- int16 ) << ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- int16 ) >> ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 4 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- int16 ) >> ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 8 ( -- uint16 ) / ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) 3 ( -- int16 ) >> ( uint16, int16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) ~ ( uint16 -- uint16 ) 65535 ( -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) < ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L759 33 ( -- ucs1char ) call putc ( ucs1char ) jp ( -- ) -> L758 L759: lvar-4+6 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-6+8 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-6+8 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-6+6 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( int16 -- int16 ) + ( uint16, int16 -- int16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( int16, int16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) 1 ( -- int16 ) << ( uint16, int16 -- uint16 ) + ( uint16, uint16 -- uint16 ) lvar-6+8 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) 2 ( -- uint16 ) * ( uint16, uint16 -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) += ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-6+10 "c" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar-4+8 "b" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-8+10 "v" ( -- uint16& ) -= ( uint16, uint16& -- ) lvar-8+8 "v" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+10 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) drop ( uint16 -- ) L758: drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint16 -- ) } void test ( void(uint16, uint16) fu, uint16 maxbits ) { var void(uint16, uint16) fu var uint16 maxbits var uint16 n local scope ANON var uint16 m 1 ( -- uint16 ) L763: 1 ( -- uint16 ) L765: lvar-2+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+8 "fu" ( -- void(uint16, uint16)& ) peek ( void(uint16, uint16)& -- void(uint16, uint16) ) call_procptr ( uint16, uint16, void(uint16, uint16) ) lvar-4+4 "m" ( -- uint16& ) pppeek ( uint16& -- uint16 ) lvar+0+6 "maxbits" ( -- uint16& ) peek ( uint16& -- uint16 ) <= ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L766 jp ( -- ) -> L765 L766: lvar-2+4 "n" ( -- uint16& ) pppeek ( uint16& -- uint16 ) lvar+0+6 "maxbits" ( -- uint16& ) peek ( uint16& -- uint16 ) <= ( uint16, uint16 -- bool ) jp_nz ( bool -- ) -> L767 drop ( uint16 -- ) jp ( -- ) -> L762 L767: drop ( uint16 -- ) jp ( -- ) -> L763 L762: drop ( uint16 -- ) drop ( uint16 -- ) drop ( void(uint16, uint16) -- ) local scope ANON { } } }