: pos! ( newpos -- ) EDPOS @ PREVPOS !
    DUP 0< IF DROP 0 THEN 1023 MIN EDPOS ! ;
: setpos ( -- ) EDPOS @ 64 /MOD
    3 + ( header ) SWAP 3 + ( gutter ) SWAP AT-XY ;
: cmv ( n -- , char movement ) acc@ * EDPOS @ + pos! ;
: buftype ( buf ln -- )
    3 OVER AT-XY C< DUP 0xd = IF 2DROP DROP EXIT THEN
    ( buf ln c ) 63 nspcs SWAP 4 SWAP AT-XY ( buf c )
    SWAP DUP _zbuf BEGIN ( c a )
        C!+ C< TUCK 0x0d = UNTIL ( c a ) C! ;