: cell      8 ;
: cell+     cell + ;
: cells     cell * ;
: char+     1 + ;
: chars     ;

: state     _d 7 cells + ;
: [         0 state ! ; immediate
: ]         -1 state ! ;

: sp        _d ;
: rp        [ _d cell+ ] literal ;
: dp        [ _d 3 cells + ] literal ;

: sp@       sp @ ;
: rp@       rp @ cell+ ;
: ip        [ _d cell+ cell+ ] literal ;
: here      dp @ ;
: unused    [ _d 8 cells + ] literal @ here - ;
: latest    [ _d 4 cells + ] literal @ ;

: dup       sp@ @ ;
: drop      sp@ cell+ sp ! ;
: pick      cells cell+ sp@ + @ ;
: >r        rp@ cell - rp !
            rp@ cell+ @ rp@ !
            rp@ cell+ ! ;
: r>        rp@ @
            rp@ cell+ rp !
            rp@ @ swap rp@ ! ;
: rot       >r swap r> swap ;
: -rot      rot rot ;
: over      1 pick ;

: +!        dup >r swap r> @ + swap ! ;
: allot     dp +! ;
: ,         here ! cell allot ;

: 1+        1 + ;
: 1-        1 - ;