: _cell! ( tilenum pos )
    2 * 0x7800 OR _ctl ( tilenum ) _data 1 _zero ;
: _spc! 0 ( blank ) XYPOS @ _cell! ;
: _lf
    _spc! XYPOS @ [ VDP_COLS LITN ] / 1+ [ VDP_ROWS LITN ] MOD
    [ VDP_COLS LITN ] * XYPOS ! ;
: _bs _spc! XYPOS @ 1-
    [ VDP_COLS VDP_ROWS * LITN ] MOD XYPOS ! ;
: (emit)
    DUP 0x08 = IF DROP _bs EXIT THEN
    DUP 0x0d = IF DROP _lf EXIT THEN
    0x20 - DUP 0< IF DROP EXIT THEN
    0x5e MIN ( tilenum ) XYPOS @ _cell!
    XYPOS @ 1+ DUP [ VDP_COLS VDP_ROWS * LITN ]
    = IF DROP 0 THEN XYPOS ! ;