: xoffs (s -- #words ) X 16 - 2/ ; : yoffs (s -- #words ) Y 16 - 2/ ; variable lastx lastx off variable lasty lasty off : xpos lastx @ xoffs + ; : ypos lasty @ yoffs + ; variable new-cell-value variable old-cell-value : Write-value new-cell-value =arg begin-line-io xpos ypos read-point old-cell-value ! new-cell-value @ xpos ypos write-point end-line-io xvds ; press W "write ARG value" : Restore-value begin-line-io old-cell-value @ xpos ypos write-point end-line-io xvds ; press X "restore old cell value" : Up lasty @ 1- dup 0< if 16 + then lasty ! ; press U "move cursor up" : Dn lasty @ 1+ dup 15 > if 16 - then lasty ! ; press D "move cursor down" : Lt lastx @ 1- dup 0< if 16 + then lastx ! ; press L "move cursor left" : Rt lastx @ 1+ dup 15 > if 16 - then lastx ! ; press R "move cursor right" X Y * create-buffer save-pat-buffer : Save-to-buffer step save-pat-buffer cam>buffer ; press S "Save pattern to buffer" : Or-buffer-to-cam cam>pattern X Y * 0 ?do save-pat-buffer buffer i /w* + w@ pattern buffer i /w* + w@ or pattern buffer i /w* + w! loop pattern>cam xvds ; press O "Or saved pattern into cam." ' cboard-smap is smap cboard-flag on