anchor.diff:  0 VALUE frame-buffer-adr
   0 VALUE screen-height
   0 VALUE screen-width
  +0 VALUE screen-depth
   0 VALUE window-top
   0 VALUE window-left
   
   0 VALUE .sc
  -: screen-#rows .sc IF 18 ELSE true to .sc s" screen-#rows" eval false to .sc THEN ;
  -: screen-#columns .sc IF 50 ELSE true to .sc s" screen-#columns" eval false to .sc THEN ;
  +
  +: screen-#rows  ( -- rows )
  +   .sc IF
  +      screen-height char-height /
  +    ELSE
  +      true to .sc
  +      s" screen-#rows" eval
  +      false to .sc
  +    THEN
  +;
  +
  +: screen-#columns ( -- columns )
  +   .sc IF
  +      screen-width char-width /
  +   ELSE
  +      true to .sc
  +      s" screen-#columns" eval
  +      false to .sc
  +   THEN
  +;
   
   \ \\\\\\\\\\\\\\ Structure/Implementation Dependent Methods
   
  
positive.code: : fb8-toggle-cursor ( -- )
  	line# fb8-line2addr column# fb8-columns2bytes +
  	char-height 0 ?DO
  		char-width 0 ?DO dup dup rb@ -1 xor swap rb! 1+ LOOP
  		screen-width + char-width -
  	LOOP drop
  ;
  
  
negative.code: : fb8-blink-screen ( -- ) fb8-invert-screen fb8-invert-screen ;
  
  : fb8-install ( width height #columns #lines -- )
  	1 to screen-depth
  	2swap  to screen-height  to screen-width
  	screen-#rows min to #lines
  	screen-#columns min to #columns
  	screen-height char-height #lines * - 2/ to window-top
  	screen-width char-width #columns * - 2/ to window-left
  	['] fb8-toggle-cursor to toggle-cursor
  	['] fb8-draw-character to draw-character
  	['] fb8-insert-lines to insert-lines
  