opcodes[]: global scope global { global scope implicit__File { Ranges kill ( Ranges ) { var Ranges ANON dup ( -- Ranges¢ ) forallitems ( Ranges¢ -- Range& ) -> L690 L689: peek ( Range& -- Range¢ ) dispose ( Range -- ) L690: ForAllEnd .. L689 } BlockDevice kill ( BlockDevice ) { var BlockDevice ANON dup ( -- BlockDevice¢ ) item+15 "open_files" ( -- File[]& ) peek ( File[]& -- File[]¢ ) call! kill ( File[] -- File[] ) dispose ( File[] -- ) call kill ( FD -- FD ) } File[] kill ( File[] ) { var File[] ANON dup ( -- File[]¢ ) forallitems ( File[]¢ -- File& ) -> L761 L760: peek ( File& -- File¢ ) call! kill ( File -- File ) dispose ( File -- ) L761: ForAllEnd .. L760 } } type utf8str: type ucs1str: type ucs2str: type FD: type BlockDevice: type Range: uint32 ende ( Range¢ r ) { var Range¢ r lvar+0+0 "r" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "r" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) tor ( uint32 -- ) drop ( Range¢ -- ) fromr ( -- uint32 ) } type File: void kill ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call sync ( File¢ -- bool ) drop ( bool -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) dispose ( uint8[] -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) call! kill ( BlockDevice -- BlockDevice ) dispose ( BlockDevice -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) call! kill ( Ranges -- Ranges ) dispose ( Ranges -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call kill ( FD¢ ) drop ( File¢ -- ) } uint16 getctl ( File¢ fd, uint8 fu ) { var File¢ fd var uint8 fu lvar+0+0 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) switch ( int16 -- ) { 4:L765, 5:L766, dflt:L764, join:L764 } L765: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call avail_in ( File¢ -- uint16 ) jp ( -- ) -> L763 L766: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call avail_out ( File¢ -- uint16 ) jp ( -- ) -> L763 L764: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+0+2 "fu" ( -- uint8& ) peek ( uint8& -- uint8 ) call getctl ( BlockDevice¢, uint8 -- uint16 ) L763: tor ( uint16 -- ) drop ( uint8 -- ) drop ( File¢ -- ) fromr ( -- uint16 ) } void setctl ( File¢ this, uint8 fu, uint16 value ) { var File¢ this var uint8 fu var uint16 value L767: drop ( uint16 -- ) drop ( uint8 -- ) drop ( File¢ -- ) } uint16 bu_free ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+5 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) - ( uint16, uint16 -- uint16 ) tor ( uint16 -- ) drop ( File¢ -- ) fromr ( -- uint16 ) } uint16 bu_avail ( File¢ fd ) { var File¢ fd var uint32 favail lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call getfavail ( File¢ -- uint32 ) lvar-4+4 "favail" ( -- uint32& ) hi ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L770 lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call bu_free ( File¢ -- uint16 ) jp ( -- ) -> L771 L770: lvar-4+4 "favail" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call bu_free ( File¢ -- uint16 ) call min ( uint16, uint16 -- uint16 ) L771: tor ( uint16 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint16 ) } uint32 getfpos ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) tor ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint32 ) } uint32 getfsize ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) tor ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint32 ) } uint32 getfavail ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) - ( uint32, uint32 -- uint32 ) tor ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint32 ) } bool setfpos ( File¢ fd, uint32 newfpos ) { var File¢ fd var uint32 newfpos local scope ANON local scope ANON var uint32 n lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L776 lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L779 lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) 1 ( -- uint32 ) - ( uint32, uint32 -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+9 "log2blocksize" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) >> ( uint32, int16 -- uint32 ) 1 ( -- uint32 ) + ( uint32, uint32 -- uint32 ) L780: lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-4+8 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L781 lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar-4+6 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) peek ( uint32& -- uint32 ) - ( uint32, uint32 -- uint32 ) call append_blocks ( File¢, uint32 -- bool ) jp_z ( bool -- ) -> L780 1 ( -- bool ) tor ( bool -- ) drop ( uint32 -- ) fromr ( -- bool ) jp ( -- ) -> L775 L781: lvar+0+4 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) poke ( uint32, uint32& -- ) drop ( uint32 -- ) jp ( -- ) -> L776 L779: 15 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L775 L776: lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "newfpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) ^ ( uint16, uint16 -- uint16 ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) ^= ( uint16, uint16& -- ) lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) == ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L784 0 ( -- bool ) jp ( -- ) -> L775 L784: lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L786 lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call _rewind ( File¢ ) jp ( -- ) -> L786 L786: lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) - ( uint32, uint32 -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+9 "log2blocksize" ( -- uint8& ) peek ( uint8& -- uint8 ) cast ( uint8 -- int16 ) >> ( uint32, int16 -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) += ( uint32, uint32& -- ) L788: lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) < ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L789 lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+4+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) jp_nz ( bool -- ) -> L789 lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peekpp ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) -= ( uint32, uint32& -- ) jp ( -- ) -> L788 L789: 0 ( -- bool ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) lvar+0+0 "newfpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) poke ( uint32, uint32& -- ) 0 ( -- bool ) L775: tor ( bool -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) local scope ANON { local scope ANON { } } } bool rewind ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) 0 ( -- uint32 ) call setfpos ( File¢, uint32 -- bool ) tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool seek_end ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool skip ( File¢ fd, int32 n ) { var File¢ fd var int32 n lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+6 "n" ( -- int32& ) peek ( int32& -- int32 ) + ( uint32, int32 -- int32 ) call setfpos ( File¢, uint32 -- bool ) tor ( bool -- ) drop ( int32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool truncate ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) jp_z ( bool -- ) -> L794 14 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L793 L794: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) poke ( uint32, uint32& -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L796 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L796 L796: 1 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+30 "file_dirty" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) L793: tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool readbyte ( File¢ fd, uint8& n ) { var File¢ fd var uint8& n lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+2+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L799 15 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L798 L799: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) and0 ( bool -- ) -> L803 lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call read_buffer_from_disk ( File¢ -- bool ) L803: jp_z ( bool -- ) -> L801 1 ( -- bool ) jp ( -- ) -> L798 L801: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+2+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peekpp ( uint32& -- uint32 ) lo ( uint32 -- uint16 ) lvar+2+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) peek ( uint8& -- uint8 ) lvar+0+2 "n" ( -- uint8&& ) peek ( uint8&& -- uint8& ) poke ( uint8, uint8& -- ) lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L804 lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call _increment_ribi_for_fpos ( File¢ ) jp ( -- ) -> L804 L804: 0 ( -- bool ) L798: tor ( bool -- ) drop ( uint8& -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool writebyte ( File¢ fd, uint8 n ) { var File¢ fd var uint8 n lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) jp_z ( bool -- ) -> L807 14 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L806 L807: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) and0 ( bool -- ) -> L811 lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call read_buffer_from_disk ( File¢ -- bool ) L811: jp_z ( bool -- ) -> L809 1 ( -- bool ) jp ( -- ) -> L806 L809: lvar+0+0 "n" ( -- uint8& ) peek ( uint8& -- uint8 ) lvar+2+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+2+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) poke ( uint8, uint8& -- ) 1 ( -- bool ) lvar+2+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) pppeek ( uint32& -- uint32 ) lvar+2+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L812 lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+2+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) poke ( uint32, uint32& -- ) jp ( -- ) -> L812 L812: lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L814 lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call _increment_ribi_for_fpos ( File¢ ) jp ( -- ) -> L814 L814: 0 ( -- bool ) L806: tor ( bool -- ) drop ( uint8 -- ) drop ( File¢ -- ) fromr ( -- bool ) } ucs1char getc ( File¢ fd ) { var File¢ fd ;char c; ; (void) fd.readbyte(c); ;return c; ;p_enter ;dw IVAL0 ;dw OVER ;dw LVAR2 ;dw File.readbyte__4FileC_5uint8P_4bool ;dw DROP ;dw NIP1RETURN ld hl,0 push hl ; stack: c fd p_enter dw LVAR2 ; stack: c fd &c dw File.readbyte__4FileC_5uint8P_4bool dw DROP1RETURN } void putc ( File¢ fd, ucs1char c ) { var File¢ fd var ucs1char c ; (void) fd.writebyte(c); ;p_enter ;dw DUP32 ;dw File.writebyte__4FileC_5uint8_4bool ;dw DROP3RETURN p_enter dw File.writebyte__4FileC_5uint8_4bool dw DROP1RETURN } void puts ( File¢ fd, ucs1str¢ s ) { var File¢ fd var ucs1str¢ s ; (void) fd.write( s ); ;p_enter ;dw DUP32 ;dw CASTbAE2r ;dw File.write__4FileC_5uint8AEC_6uint16_6uint16_4bool ;dw DROP3RETURN p_enter dw CASTbAE2r dw File.write__4FileC_5uint8AEC_6uint16_6uint16_4bool dw DROP1RETURN } void puts ( File¢ fd, ucs1str s ) { var File¢ fd var ucs1str s lvar+2+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+0+2 "s" ( -- ucs1str& ) peek ( ucs1str& -- ucs1str¢ ) cast ( ucs1str¢ -- ucs1char[to] ) call write ( File¢, uint8[to] -- bool ) drop ( bool -- ) dispose ( ucs1str -- ) drop ( File¢ -- ) } bool write ( File¢ fd, uint8[]¢ bu, uint16 a, uint16 e ) { var File¢ fd var uint8[]¢ bu var uint16 a var uint16 e local scope ANON var uint16 m var uint16 n lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) jp_z ( bool -- ) -> L832 14 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L829 L832: lvar+2+0 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) >= ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L834 0 ( -- bool ) jp ( -- ) -> L829 L834: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call bu_free ( File¢ -- uint16 ) lvar+0+2 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-2+4 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call min ( uint16, uint16 -- uint16 ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) and0 ( bool -- ) -> L836 lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call read_buffer_from_disk ( File¢ -- bool ) L836: jp_z ( bool -- ) -> L837 drop ( uint16 -- ) drop ( uint16 -- ) jp ( -- ) -> L833 L837: lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+6+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar+4+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+8 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar-4+8 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call memcpy ( void*, void*, uint16 ) 1 ( -- bool ) lvar+6+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) lvar-4+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) += ( uint16, uint16& -- ) lvar-4+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) += ( uint32, uint32& -- ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+6+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L838 lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call _increment_ribi_for_fpos ( File¢ ) jp ( -- ) -> L838 L838: lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L840 lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) poke ( uint32, uint32& -- ) jp ( -- ) -> L840 L840: drop ( uint16 -- ) drop ( uint16 -- ) jp ( -- ) -> L832 L833: 1 ( -- bool ) L829: tor ( bool -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( File¢ -- ) fromr ( -- bool ) local scope ANON { } } bool read ( File¢ fd, uint8[]¢ bu, uint16 a, uint16 e ) { var File¢ fd var uint8[]¢ bu var uint16 a var uint16 e local scope ANON var uint16 m var uint16 n lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call getfavail ( File¢ -- uint32 ) lvar+0+4 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) cast ( uint16 -- uint32 ) < ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L821 lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+2 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+6+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call getfavail ( File¢ -- uint32 ) + ( uint32, uint32 -- uint32 ) cast ( uint32 -- uint16 ) call read ( File¢, uint8[]¢, uint16, uint16 -- bool ) or1 ( bool -- ) -> L820 15 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) L820: jp ( -- ) -> L817 L821: lvar+2+0 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) >= ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L823 0 ( -- bool ) jp ( -- ) -> L817 L823: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call bu_free ( File¢ -- uint16 ) lvar+0+2 "e" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+4 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-2+4 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) call min ( uint16, uint16 -- uint16 ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) and0 ( bool -- ) -> L825 lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call read_buffer_from_disk ( File¢ -- bool ) L825: jp_z ( bool -- ) -> L826 drop ( uint16 -- ) drop ( uint16 -- ) jp ( -- ) -> L822 L826: lvar+4+4 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+2+6 "a" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar+6+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+6+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) atindex ( uint8[]¢, int16 -- uint8& ) lvar-4+8 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call memcpy ( void*, void*, uint16 ) lvar-4+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+2+6 "a" ( -- uint16& ) += ( uint16, uint16& -- ) lvar-4+4 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) += ( uint32, uint32& -- ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+6+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L827 lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call _increment_ribi_for_fpos ( File¢ ) jp ( -- ) -> L827 L827: drop ( uint16 -- ) drop ( uint16 -- ) jp ( -- ) -> L821 L822: 1 ( -- bool ) L817: tor ( bool -- ) drop ( uint16 -- ) drop ( uint16 -- ) drop ( uint8[]¢ -- ) drop ( File¢ -- ) fromr ( -- bool ) local scope ANON { } } bool write_block ( File¢ fd, uint32 fblk, uint8[]¢ bu ) { var File¢ fd var uint32 fblk var uint8[]¢ bu lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) jp_z ( bool -- ) -> L843 14 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L842 L843: lvar+2+0 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) peek ( uint32& -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L845 15 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L842 L845: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) !! ( uint8[]¢ -- bool ) and0 ( bool -- ) -> L849 lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call purge_buffer ( File¢ -- bool ) L849: jp_z ( bool -- ) -> L847 1 ( -- bool ) jp ( -- ) -> L842 L847: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+6+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+2+4 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) call diskblock_for_fileblock ( File¢, uint32 -- uint32 ) lvar+0+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) item+0 "handlers" ( -- FD_Handlers¢& ) peek ( FD_Handlers¢& -- FD_Handlers¢ ) item+18 "write_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) peek ( bool(FD¢, uint32, uint8[]¢)& -- bool(FD¢, uint32, uint8[]¢) ) call_procptr ( FD¢, uint32, uint8[]¢, bool(FD¢, uint32, uint8[]¢) -- bool ) L842: tor ( bool -- ) drop ( uint8[]¢ -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool read_block ( File¢ fd, uint32 fblk, uint8[]¢ bu ) { var File¢ fd var uint32 fblk var uint8[]¢ bu lvar+2+0 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+6+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) peek ( uint32& -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L851 15 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L850 L851: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) !! ( uint8[]¢ -- bool ) and0 ( bool -- ) -> L855 lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call purge_buffer ( File¢ -- bool ) L855: jp_z ( bool -- ) -> L853 1 ( -- bool ) jp ( -- ) -> L850 L853: lvar+6+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+6+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+2+4 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) call diskblock_for_fileblock ( File¢, uint32 -- uint32 ) lvar+0+6 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) lvar+6+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) item+0 "handlers" ( -- FD_Handlers¢& ) peek ( FD_Handlers¢& -- FD_Handlers¢ ) item+16 "read_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) peek ( bool(FD¢, uint32, uint8[]¢)& -- bool(FD¢, uint32, uint8[]¢) ) call_procptr ( FD¢, uint32, uint8[]¢, bool(FD¢, uint32, uint8[]¢) -- bool ) L850: tor ( bool -- ) drop ( uint8[]¢ -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool copy_block ( File¢ fd, uint32 z, uint32 q, uint32 n ) { var File¢ fd var uint32 z var uint32 q var uint32 n var uint16 blocksize var uint8[] bu local scope ANON var uint16 m local scope ANON var uint16 m lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+29 "writable" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) jp_z ( bool -- ) -> L860 14 ( -- OSErr ) call yes_with_error ( OSErr -- bool ) jp ( -- ) -> L859 L860: lvar+4+0 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+8+4 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) == ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L862 0 ( -- bool ) jp ( -- ) -> L859 L862: lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+5 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-2+2 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) alloc ( uint16 -- uint8[] ) lvar+8+4 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+8 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L865 lvar+0+4 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+8 "q" ( -- uint32& ) += ( uint32, uint32& -- ) lvar+0+4 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+8+8 "z" ( -- uint32& ) += ( uint32, uint32& -- ) lvar+8+4 "z" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L866 lvar+0+6 "n" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar-6+8 "m" ( -- uint16& ) poke ( uint16, uint16& -- ) jp ( -- ) -> L866 L866: lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+4+10 "q" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+8+10 "z" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+8 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+12 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-6+16 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+18 "bu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) call _copy_block ( File¢, uint32, uint32, uint16, uint8[]¢ -- bool ) jp_z ( bool -- ) -> L870 1 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) dispose ( uint8[] -- ) drop ( uint16 -- ) fromr ( -- bool ) jp ( -- ) -> L859 L870: lvar+0+6 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-2+10 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L871 lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+4+10 "q" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+8+10 "z" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+8 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) or1 ( bool -- ) -> L874 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar-4+8 "bu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) cast ( uint8[]¢ -- uint8[to] ) call read ( File¢, uint8[to] -- bool ) L874: or1 ( bool -- ) -> L875 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+8 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) L875: or1 ( bool -- ) -> L876 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call set_buffer_to_fpos ( File¢ -- bool ) L876: jp_z ( bool -- ) -> L872 1 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) dispose ( uint8[] -- ) drop ( uint16 -- ) fromr ( -- bool ) jp ( -- ) -> L859 L872: lvar-4+6 "bu" ( -- uint8[]& ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) swap ( uint8[]&, uint8[]& -- ) 1 ( -- bool ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) 1 ( -- bool ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) jp ( -- ) -> L870 L871: lvar+0+6 "n" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+4+10 "q" ( -- uint32& ) -= ( uint32, uint32& -- ) lvar+0+6 "n" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+8+10 "z" ( -- uint32& ) -= ( uint32, uint32& -- ) drop ( uint16 -- ) jp ( -- ) -> L864 L865: lvar-2+4 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+8+6 "z" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) - ( uint16, uint16 -- uint16 ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) > ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L877 lvar+0+6 "n" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar-6+8 "m" ( -- uint16& ) poke ( uint16, uint16& -- ) jp ( -- ) -> L877 L877: lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+8 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+12 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-6+16 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+18 "bu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) call _copy_block ( File¢, uint32, uint32, uint16, uint8[]¢ -- bool ) jp_z ( bool -- ) -> L879 1 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) dispose ( uint8[] -- ) drop ( uint16 -- ) fromr ( -- bool ) jp ( -- ) -> L859 L879: lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+4+10 "q" ( -- uint32& ) += ( uint32, uint32& -- ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+8+10 "z" ( -- uint32& ) += ( uint32, uint32& -- ) lvar-6+6 "m" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) -= ( uint32, uint32& -- ) L881: lvar+0+6 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-2+10 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L882 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+8 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) or1 ( bool -- ) -> L885 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar-4+8 "bu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) cast ( uint8[]¢ -- uint8[to] ) call read ( File¢, uint8[to] -- bool ) L885: or1 ( bool -- ) -> L886 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+8 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) L886: or1 ( bool -- ) -> L887 lvar+12+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call set_buffer_to_fpos ( File¢ -- bool ) L887: jp_z ( bool -- ) -> L883 1 ( -- bool ) tor ( bool -- ) drop ( uint16 -- ) dispose ( uint8[] -- ) drop ( uint16 -- ) fromr ( -- bool ) jp ( -- ) -> L859 L883: lvar-4+6 "bu" ( -- uint8[]& ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) swap ( uint8[]&, uint8[]& -- ) 1 ( -- bool ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) 1 ( -- bool ) lvar+12+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+4+10 "q" ( -- uint32& ) += ( uint32, uint32& -- ) lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+8+10 "z" ( -- uint32& ) += ( uint32, uint32& -- ) lvar-2+6 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) cast ( uint16 -- uint32 ) lvar+0+10 "n" ( -- uint32& ) -= ( uint32, uint32& -- ) jp ( -- ) -> L881 L882: drop ( uint16 -- ) L864: lvar+12+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+6 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+10 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+14 "n" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar-4+16 "bu" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) call _copy_block ( File¢, uint32, uint32, uint16, uint8[]¢ -- bool ) tor ( bool -- ) dispose ( uint8[] -- ) drop ( uint16 -- ) fromr ( -- bool ) jp ( -- ) -> L859 L859: tor ( bool -- ) drop ( uint32 -- ) drop ( uint32 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) local scope ANON { } local scope ANON { } } bool open_gap ( File¢ fd, uint32 start, uint32 size ) { var File¢ fd var uint32 start var uint32 size lvar+4+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+8+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) <= ( uint32, uint32 -- bool ) call assert1 ( bool ) lvar+8+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+2 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+6 "size" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) lvar+4+6 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+8+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+14 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) - ( uint32, uint32 -- uint32 ) call copy_block ( File¢, uint32, uint32, uint32 -- bool ) tor ( bool -- ) drop ( uint32 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool close_gap ( File¢ fd, uint32 start, uint32 size ) { var File¢ fd var uint32 start var uint32 size lvar+4+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "size" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) lvar+8+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) <= ( uint32, uint32 -- bool ) call assert1 ( bool ) lvar+8+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+2 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+6 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+10 "size" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) lvar+8+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+23 "fsize" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+14 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+18 "size" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) - ( uint32, uint32 -- uint32 ) call copy_block ( File¢, uint32, uint32, uint32 -- bool ) or1 ( bool -- ) -> L858 lvar+8+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call truncate ( File¢ -- bool ) L858: tor ( bool -- ) drop ( uint32 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool purge_buffer ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) peek ( bool& -- bool ) and0 ( bool -- ) -> L757 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call write_buffer_to_disk ( File¢ -- bool ) L757: jp_z ( bool -- ) -> L755 1 ( -- bool ) jp ( -- ) -> L754 L755: 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) NULL ( -- void* ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) swapwithvar ( uint8[], uint8[]& -- uint8[] ) dispose ( uint8[] -- ) 0 ( -- bool ) L754: tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } uint32 block0 ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L698 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) 0 ( -- int16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) jp ( -- ) -> L699 L698: 0 ( -- uint32 ) L699: tor ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint32 ) } void _rewind ( File¢ fd ) { var File¢ fd 0 ( -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) poke ( uint16, uint16& -- ) 0 ( -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) poke ( uint32, uint32& -- ) 0 ( -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) poke ( uint32, uint32& -- ) drop ( File¢ -- ) } void _increment_ribi_for_fpos ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+39 "fpos" ( -- uint32& ) lo ( uint32& -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+7 "blockmask" ( -- uint16& ) peek ( uint16& -- uint16 ) & ( uint16, uint16 -- uint16 ) 0 ( -- uint16 ) == ( uint16, uint16 -- bool ) call assert1 ( bool ) 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) pppeek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) >= ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L701 0 ( -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) poke ( uint32, uint32& -- ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) ++ ( uint16& -- ) jp ( -- ) -> L701 L701: drop ( File¢ -- ) } bool _copy_block ( File¢ fd, uint32 z, uint32 q, uint16 n, uint8[]¢ bu ) { var File¢ fd var uint32 z var uint32 q var uint16 n var uint8[]¢ bu lvar+2+0 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) !! ( uint16 -- bool ) and0 ( bool -- ) -> L710 lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+4+2 "q" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) or1 ( bool -- ) -> L707 lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+0+2 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) 0 ( -- uint16 ) lvar+2+6 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call read ( File¢, uint8[]¢, uint16, uint16 -- bool ) L707: or1 ( bool -- ) -> L708 lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+8+2 "z" ( -- uint32& ) peek ( uint32& -- uint32 ) call setfpos ( File¢, uint32 -- bool ) L708: or1 ( bool -- ) -> L710 lvar+12+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) lvar+0+2 "bu" ( -- uint8[]¢& ) peek ( uint8[]¢& -- uint8[]¢ ) 0 ( -- uint16 ) lvar+2+6 "n" ( -- uint16& ) peek ( uint16& -- uint16 ) call write ( File¢, uint8[]¢, uint16, uint16 -- bool ) L710: tor ( bool -- ) drop ( uint8[]¢ -- ) drop ( uint16 -- ) drop ( uint32 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) } uint32 diskblock_for_fileblock ( File¢ fd, uint32 fblk ) { var File¢ fd var uint32 fblk var uint16 ri local scope ANON var Range¢ range lvar+0+0 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) call assert1 ( bool ) 0 ( -- uint16 ) L713: lvar-2+2 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) < ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar-2+4 "ri" ( -- uint16& ) peekpp ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) lvar+0+4 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-4+8 "range" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L715 lvar-4+4 "range" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+8 "fblk" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) tor ( uint32 -- ) drop ( Range¢ -- ) fromr ( -- uint32 ) jp ( -- ) -> L712 L715: lvar-4+4 "range" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+8 "fblk" ( -- uint32& ) -= ( uint32, uint32& -- ) drop ( Range¢ -- ) jp ( -- ) -> L713 L712: tor ( uint32 -- ) drop ( uint16 -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- uint32 ) local scope ANON { } } bool append_blocks ( File¢ fd, uint32 num ) { var File¢ fd var uint32 num local scope ANON var Range¢ last var uint32 best var Range r local scope ANON var Range r lvar+0+0 "num" ( -- uint32& ) peek ( uint32& -- uint32 ) 1 ( -- uint32 ) >= ( uint32, uint32 -- bool ) call assert1 ( bool ) lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L720 lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+4+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) 1 ( -- uint16 ) - ( uint16, uint16 -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) lvar-2+2 "last" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) call ende ( Range¢ -- uint32 ) lvar+4+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+0+8 "num" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-6+12 "best" ( -- uint32& ) peek ( uint32& -- uint32 ) call allocate_blocks ( BlockDevice¢, uint32, uint32 -- Range ) lvar-8+8 "r" ( -- Range& ) peek ( Range& -- Range¢ ) ! ( Range¢ -- bool ) jp_z ( bool -- ) -> L721 1 ( -- bool ) tor ( bool -- ) dispose ( Range -- ) drop ( uint32 -- ) drop ( Range¢ -- ) fromr ( -- bool ) jp ( -- ) -> L718 L721: lvar-8+8 "r" ( -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+12 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) += ( uint32, uint32& -- ) lvar-8+8 "r" ( -- Range& ) peek ( Range& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-6+12 "best" ( -- uint32& ) peek ( uint32& -- uint32 ) == ( uint32, uint32 -- bool ) jp_z ( bool -- ) -> L724 lvar+4+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+4+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) == ( uint16, uint16 -- bool ) jp_z ( bool -- ) -> L725 lvar+4+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) -- ( uint16& -- ) lvar-2+8 "last" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+12 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) poke ( uint32, uint32& -- ) jp ( -- ) -> L725 L725: lvar-8+8 "r" ( -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-2+12 "last" ( -- Range¢& ) peek ( Range¢& -- Range¢ ) item+4 "count" ( -- uint32& ) += ( uint32, uint32& -- ) jp ( -- ) -> L723 L724: lvar-8+8 "r" ( -- Range& ) peek ( Range& -- Range¢ ) retain ( Range¢ -- Range ) lvar+4+10 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) appenditem ( Range, Ranges& -- ) L723: dispose ( Range -- ) drop ( uint32 -- ) drop ( Range¢ -- ) jp ( -- ) -> L719 L720: lvar+4+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+0+2 "num" ( -- uint32& ) peek ( uint32& -- uint32 ) 0 ( -- uint32 ) call allocate_blocks ( BlockDevice¢, uint32, uint32 -- Range ) lvar-2+2 "r" ( -- Range& ) peek ( Range& -- Range¢ ) ! ( Range¢ -- bool ) jp_z ( bool -- ) -> L727 1 ( -- bool ) tor ( bool -- ) dispose ( Range -- ) fromr ( -- bool ) jp ( -- ) -> L718 L727: lvar-2+2 "r" ( -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+4+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+10 "totalblocks" ( -- uint32& ) += ( uint32, uint32& -- ) 2 ( -- uint16 ) alloc ( uint16 -- Ranges ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) swapwithvar ( Ranges, Ranges& -- Ranges ) call! kill ( Ranges -- Ranges ) dispose ( Ranges -- ) lvar-2+2 "r" ( -- Range& ) peek ( Range& -- Range¢ ) retain ( Range¢ -- Range ) lvar+4+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) 0 ( -- int16 ) atindex ( Ranges¢, int16 -- Range& ) poke ( Range, Range& -- ) dispose ( Range -- ) L719: 0 ( -- bool ) L718: tor ( bool -- ) drop ( uint32 -- ) drop ( File¢ -- ) fromr ( -- bool ) local scope ANON { } local scope ANON { } } bool write_buffer_to_disk ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) peek ( bool& -- bool ) call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) !! ( uint8[]¢ -- bool ) call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+35 "blkno" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+0+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) item+0 "handlers" ( -- FD_Handlers¢& ) peek ( FD_Handlers¢& -- FD_Handlers¢ ) item+18 "write_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) peek ( bool(FD¢, uint32, uint8[]¢)& -- bool(FD¢, uint32, uint8[]¢) ) call_procptr ( FD¢, uint32, uint8[]¢, bool(FD¢, uint32, uint8[]¢) -- bool ) jp_z ( bool -- ) -> L731 1 ( -- bool ) jp ( -- ) -> L730 L731: 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) poke ( bool, bool& -- ) 1 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+30 "file_dirty" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) L730: tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool set_buffer_to_fpos ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) peek ( bool& -- bool ) and0 ( bool -- ) -> L737 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call write_buffer_to_disk ( File¢ -- bool ) L737: jp_z ( bool -- ) -> L735 1 ( -- bool ) jp ( -- ) -> L734 L735: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+31 "buffer_dirty" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) >= ( uint16, uint16 -- bool ) and0 ( bool -- ) -> L740 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) 8 ( -- uint32 ) call append_blocks ( File¢, uint32 -- bool ) L740: jp_z ( bool -- ) -> L738 1 ( -- bool ) jp ( -- ) -> L734 L738: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) < ( uint16, uint16 -- bool ) call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) < ( uint32, uint32 -- bool ) call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+35 "blkno" ( -- uint32& ) poke ( uint32, uint32& -- ) 0 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) L734: tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } bool read_buffer_from_disk ( File¢ fd ) { var File¢ fd lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) or1 ( bool -- ) -> L743 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) ! ( uint8[]¢ -- bool ) L743: call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) or1 ( bool -- ) -> L744 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) >= ( uint16, uint16 -- bool ) L744: call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) ! ( bool -- bool ) or1 ( bool -- ) -> L745 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+35 "blkno" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+27 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+43 "ri" ( -- uint16& ) peek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+45 "bi" ( -- uint32& ) peek ( uint32& -- uint32 ) + ( uint32, uint32 -- uint32 ) != ( uint32, uint32 -- bool ) L745: call assert1 ( bool ) lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) peek ( bool& -- bool ) cast ( bool -- uint8 ) !! ( uint8 -- bool ) jp_z ( bool -- ) -> L746 0 ( -- bool ) jp ( -- ) -> L742 L746: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) call set_buffer_to_fpos ( File¢ -- bool ) jp_z ( bool -- ) -> L748 1 ( -- bool ) jp ( -- ) -> L742 L748: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) ! ( uint8[]¢ -- bool ) jp_z ( bool -- ) -> L750 lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+5 "blocksize" ( -- uint16& ) peek ( uint16& -- uint16 ) alloc ( uint16 -- uint8[] ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) swapwithvar ( uint8[], uint8[]& -- uint8[] ) dispose ( uint8[] -- ) jp ( -- ) -> L750 L750: lvar+0+0 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+35 "blkno" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+6 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+33 "buffer" ( -- uint8[]& ) peek ( uint8[]& -- uint8[]¢ ) lvar+0+8 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+21 "device" ( -- BlockDevice& ) peek ( BlockDevice& -- BlockDevice¢ ) item+0 "handlers" ( -- FD_Handlers¢& ) peek ( FD_Handlers¢& -- FD_Handlers¢ ) item+16 "read_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) peek ( bool(FD¢, uint32, uint8[]¢)& -- bool(FD¢, uint32, uint8[]¢) ) call_procptr ( FD¢, uint32, uint8[]¢, bool(FD¢, uint32, uint8[]¢) -- bool ) jp_z ( bool -- ) -> L752 1 ( -- bool ) jp ( -- ) -> L742 L752: 1 ( -- bool ) lvar+0+2 "fd" ( -- File¢& ) peek ( File¢& -- File¢ ) item+32 "buffer_valid" ( -- bool& ) poke ( bool, bool& -- ) 0 ( -- bool ) L742: tor ( bool -- ) drop ( File¢ -- ) fromr ( -- bool ) } Range new ( uint32 start, uint32 count ) { var uint32 start var uint32 count var Range this 8 ( -- uint16 ) alloc ( uint16 -- Range ) lvar+4+2 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-2+6 "this" ( -- Range& ) peek ( Range& -- Range¢ ) item+0 "start" ( -- uint32& ) poke ( uint32, uint32& -- ) lvar+0+2 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-2+6 "this" ( -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) poke ( uint32, uint32& -- ) lvar-2+2 "this" ( -- Range& ) peek ( Range& -- Range¢ ) retain ( Range¢ -- Range ) tor ( Range -- ) dispose ( Range -- ) drop ( uint32 -- ) drop ( uint32 -- ) fromr ( -- Range ) } type Ranges: uint32 totalblocks ( Ranges¢ ranges ) { var Ranges¢ ranges var uint32 n var uint16 i 0 ( -- uint32 ) lvar+0+4 "ranges" ( -- Ranges¢& ) peek ( Ranges¢& -- Ranges¢ ) count ( Ranges¢ -- uint16 ) L695: lvar-6+6 "i" ( -- uint16& ) peek ( uint16& -- uint16 ) !! ( uint16 -- bool ) jp_z ( bool -- ) -> L696 lvar+0+6 "ranges" ( -- Ranges¢& ) peek ( Ranges¢& -- Ranges¢ ) lvar-6+8 "i" ( -- uint16& ) mmpeek ( uint16& -- uint16 ) atindex ( Ranges¢, int16 -- Range& ) peek ( Range& -- Range¢ ) item+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar-4+10 "n" ( -- uint32& ) += ( uint32, uint32& -- ) jp ( -- ) -> L695 L696: lvar-4+6 "n" ( -- uint32& ) peek ( uint32& -- uint32 ) tor ( uint32 -- ) drop ( uint16 -- ) drop ( uint32 -- ) drop ( Ranges¢ -- ) fromr ( -- uint32 ) } Range pop ( Ranges¢ ranges ) { var Ranges¢ ranges ld a,d or e jr z,1$ ; ranges==null => return null deref_handle_de ; de -> ranges.data ex hl,de ; hl -> ranges.data ld d,(--hl) ld e,(--hl) ; de = ranges.size, hl -> ranges.size ld a,d or e jr z,1$ ; size = count = 0 => return null dec de dec de ; de = ranges.size-2 == (count-1) * 2 ld (hl++),e ld (hl++),d ; ranges.size -=2, hl -> ranges.data add hl,de ; hl -> ranges.last.lo xor a ld e,(hl) ld (hl++),a ld d,(hl) ; de = ranges.last ld (hl),a ; new_next_block.size = 0 1$: jp next } Ranges new ( Range range ) { var Range range var Ranges ranges 2 ( -- uint16 ) alloc ( uint16 -- Ranges ) lvar+0+2 "range" ( -- Range& ) peek ( Range& -- Range¢ ) retain ( Range¢ -- Range ) lvar-2+4 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) 0 ( -- int16 ) atindex ( Ranges¢, int16 -- Range& ) poke ( Range, Range& -- ) lvar-2+2 "ranges" ( -- Ranges& ) peek ( Ranges& -- Ranges¢ ) retain ( Ranges¢ -- Ranges ) tor ( Ranges -- ) call! kill ( Ranges -- Ranges ) dispose ( Ranges -- ) dispose ( Range -- ) fromr ( -- Ranges ) } Ranges new ( uint32 start, uint32 count ) { var uint32 start var uint32 count lvar+4+0 "start" ( -- uint32& ) peek ( uint32& -- uint32 ) lvar+0+4 "count" ( -- uint32& ) peek ( uint32& -- uint32 ) call new ( uint32, uint32 -- Range ) call new ( Range -- Ranges ) tor ( Ranges -- ) drop ( uint32 -- ) drop ( uint32 -- ) fromr ( -- Ranges ) } } 26 ( -- uint16 ) alloc ( uint16 -- FD_Handlers ) tor ( FD_Handlers -- ) push_procptr File.getctl ( -- uint16(File¢, uint8)* ) peekr ( -- FD_Handlers¢ ) item+0 "getctl" ( -- uint16(FD¢, uint8)& ) poke ( uint16(FD¢, uint8), uint16(FD¢, uint8)& -- ) push_procptr File.setctl ( -- void(File¢, uint8, uint16)* ) peekr ( -- FD_Handlers¢ ) item+2 "setctl" ( -- void(FD¢, uint8, uint16)& ) poke ( void(FD¢, uint8, uint16), void(FD¢, uint8, uint16)& -- ) push_procptr File.avail_in ( -- uint16(File¢)* ) peekr ( -- FD_Handlers¢ ) item+4 "avail_in" ( -- uint16(FD¢)& ) poke ( uint16(FD¢), uint16(FD¢)& -- ) push_procptr File.avail_out ( -- uint16(File¢)* ) peekr ( -- FD_Handlers¢ ) item+6 "avail_out" ( -- uint16(FD¢)& ) poke ( uint16(FD¢), uint16(FD¢)& -- ) push_procptr File.getc ( -- ucs1char(File¢)* ) peekr ( -- FD_Handlers¢ ) item+8 "getc" ( -- ucs1char(FD¢)& ) poke ( ucs1char(FD¢), ucs1char(FD¢)& -- ) push_procptr File.putc ( -- void(File¢, ucs1char)* ) peekr ( -- FD_Handlers¢ ) item+10 "putc" ( -- void(FD¢, ucs1char)& ) poke ( void(FD¢, ucs1char), void(FD¢, ucs1char)& -- ) push_procptr File.read ( -- bool(File¢, uint8[to])* ) peekr ( -- FD_Handlers¢ ) item+12 "read" ( -- bool(FD¢, uint8[to])& ) poke ( bool(FD¢, uint8[to]), bool(FD¢, uint8[to])& -- ) push_procptr File.write ( -- bool(File¢, uint8[to])* ) peekr ( -- FD_Handlers¢ ) item+14 "write" ( -- bool(FD¢, uint8[to])& ) poke ( bool(FD¢, uint8[to]), bool(FD¢, uint8[to])& -- ) push_procptr File.getfpos ( -- uint32(File¢)* ) peekr ( -- FD_Handlers¢ ) item+22 "getfpos" ( -- uint32(FD¢)& ) poke ( uint32(FD¢), uint32(FD¢)& -- ) push_procptr File.setfpos ( -- bool(File¢, uint32)* ) peekr ( -- FD_Handlers¢ ) item+24 "setfpos" ( -- bool(FD¢, uint32)& ) poke ( bool(FD¢, uint32), bool(FD¢, uint32)& -- ) push_procptr File.read_block ( -- bool(File¢, uint32, uint8[]¢)* ) peekr ( -- FD_Handlers¢ ) item+16 "read_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) poke ( bool(FD¢, uint32, uint8[]¢), bool(FD¢, uint32, uint8[]¢)& -- ) push_procptr File.write_block ( -- bool(File¢, uint32, uint8[]¢)* ) peekr ( -- FD_Handlers¢ ) item+18 "write_block" ( -- bool(FD¢, uint32, uint8[]¢)& ) poke ( bool(FD¢, uint32, uint8[]¢), bool(FD¢, uint32, uint8[]¢)& -- ) push_procptr File.kill ( -- void(File¢)* ) peekr ( -- FD_Handlers¢ ) item+20 "kill" ( -- void(FD¢)& ) poke ( void(FD¢), void(FD¢)& -- ) fromr ( -- FD_Handlers ) gsinit "file_handlers"