rendered paste bodyvariable fid
: open ( c-addr u -- ) r/o open-file throw fid ! ;
: close ( -- ) fid @ close-file throw ;
: read-chars ( c-addr u1 -- u2 ) fid @ read-file throw ;
: size ( -- u ) fid @ file-size throw drop ;
create c 1 chars allot
: read-char ( -- u ) c 1 read-chars ;
: display-char ( -- ) c c@ emit ;
: go ( c-addr u -- ) open begin read-char while display-char repeat close ;
: new-buffer ( u -- c-addr ) allocate throw ;
: inhale ( -- c-addr u ) size dup new-buffer tuck swap read-chars ;
: discard ( c-addr u -- ) drop free throw ;
: go1 ( c-addr u -- ) open inhale 2dup type discard close ;