d844f9fff0 2011-05-31 charlesch: ( Support functions: basic input, output, and data pointer support ) d844f9fff0 2011-05-31 charlesch: :wait d844f9fff0 2011-05-31 charlesch: #0 #0 out, d844f9fff0 2011-05-31 charlesch: wait, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bye d844f9fff0 2011-05-31 charlesch: #-9 #5 out, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :dp 32768 m, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_> d844f9fff0 2011-05-31 charlesch: dp # @, d844f9fff0 2011-05-31 charlesch: 1+, d844f9fff0 2011-05-31 charlesch: dp # !, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_< d844f9fff0 2011-05-31 charlesch: dp # @, d844f9fff0 2011-05-31 charlesch: 1-, d844f9fff0 2011-05-31 charlesch: dp # !, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_+ d844f9fff0 2011-05-31 charlesch: dp # @, @, d844f9fff0 2011-05-31 charlesch: 1+, d844f9fff0 2011-05-31 charlesch: dp # @, !, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_- d844f9fff0 2011-05-31 charlesch: dp # @, @, d844f9fff0 2011-05-31 charlesch: 1-, d844f9fff0 2011-05-31 charlesch: dp # @, !, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_. d844f9fff0 2011-05-31 charlesch: dp # @, @, d844f9fff0 2011-05-31 charlesch: #1 #2 out, d844f9fff0 2011-05-31 charlesch: call wait d844f9fff0 2011-05-31 charlesch: #0 #3 out, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: :bf_, d844f9fff0 2011-05-31 charlesch: #1 #1 out, d844f9fff0 2011-05-31 charlesch: call wait d844f9fff0 2011-05-31 charlesch: #1 in, d844f9fff0 2011-05-31 charlesch: ret, d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: ( Actual BrainF*** compiler ) d844f9fff0 2011-05-31 charlesch: variable ip d844f9fff0 2011-05-31 charlesch: variable lp d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: : getLabel d844f9fff0 2011-05-31 charlesch: @lp toString "L" ^strings'prepend ; d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: : run d844f9fff0 2011-05-31 charlesch: t-here putn space @ip @ putc cr d844f9fff0 2011-05-31 charlesch: @ip @ ip ++ d844f9fff0 2011-05-31 charlesch: [ '> = ] [ drop bf_> m, ] when d844f9fff0 2011-05-31 charlesch: [ '< = ] [ drop bf_< m, ] when d844f9fff0 2011-05-31 charlesch: [ '+ = ] [ drop bf_+ m, ] when d844f9fff0 2011-05-31 charlesch: [ '- = ] [ drop bf_- m, ] when d844f9fff0 2011-05-31 charlesch: [ '. = ] [ drop bf_. m, ] when d844f9fff0 2011-05-31 charlesch: [ ', = ] [ drop bf_, m, ] when d844f9fff0 2011-05-31 charlesch: [ '[ = ] [ drop getLabel header t-here @last !d->xt lp ++ ] when d844f9fff0 2011-05-31 charlesch: [ '] = ] [ drop dp # @, @, lit, 0 m, !jump, lp -- getLabel find drop @d->xt m, ] when d844f9fff0 2011-05-31 charlesch: drop ; d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: : do d844f9fff0 2011-05-31 charlesch: [ run @ip @ ] while ; d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: : bf: ( "- ) d844f9fff0 2011-05-31 charlesch: '~ accept tib keepString !ip do ; d844f9fff0 2011-05-31 charlesch: d844f9fff0 2011-05-31 charlesch: ( Start Compilation of BrainF*** code after this ) d844f9fff0 2011-05-31 charlesch: :main