anchor.diff:    $F1 lcd!c
     $DB lcd!c  \ SETVCOMDETECT
     $40 lcd!c
  +  $2E lcd!c  \ STOP SCROLL
  +  $D5 lcd!c  \ SETDISPLAYCLOCKDIV
  +  $80 lcd!c
  +  $8D lcd!c  \ CHARGEPUMP
  +  $14 lcd!c  \ switched capacitor
     $A4 lcd!c  \ DISPLAYALLON_RESUME
     $A6 lcd!c  \ NORMALDISPLAY
     $AF lcd!c  \ DISPLAYON
  
positive.code: : lcd-init ( -- )  \ initialise the oled display
    i2c-init
    $AE lcd!c  \ DISPLAYOFF
    $D5 lcd!c  \ SETDISPLAYCLOCKDIV
    $80 lcd!c
    $A8 lcd!c  \ SETMULTIPLEX
     63 lcd!c
    $D3 lcd!c  \ SETDISPLAYOFFSET
      0 lcd!c
    $40 lcd!c  \ SETSTARTLINE
    $8D lcd!c  \ CHARGEPUMP
    $14 lcd!c  \ switched capacitor
    $20 lcd!c  \ MEMORYMODE
    $00 lcd!c
    $A1 lcd!c  \ SEGREMAP | 0x1
    $C8 lcd!c  \ COMSCANDEC
    $DA lcd!c  \ SETCOMPINS
  
negative.code: 
  [ifndef] OLED.LARGE  1 constant OLED.LARGE  [then]  \ 0 = 128x32, 1 = 128x64
  
  : lcd? ( -- f )  \ probe whether device exists, return true if it does
    $3C i2c-addr 0 i2c-xfer 0= ;
  
  : lcd!c ( v -- )  \ send a command to the lcd
    $3C i2c-addr  $80 >i2c >i2c  0 i2c-xfer drop ;
  
  \ the oled's display memory buffer is set up as 4 or 8 rows of 128 bytes
  \ each byte is 8 pixels down, from b0 at the top to b7 at the bottom
  