anchor.diff:    ( H5: ) 29 bme-s16 4 arshift
     r@ * - 16384 + 15 arshift
     ( H6: ) 31 bme-u8 24 lshift 24 arshift
  -  r@ * 10 arshift
  +  r@ 10 *>>
     ( H3: ) 27 bme-u8
  -  r> * 11 arshift 32768 + * 10 arshift 2097152 +
  +  r> 11 *>> 32768 + 10 *>> 2097152 +
     ( H2: ) 25 bme-s16
     * 8192 + 14 arshift *
  -  dup 15 arshift dup * 7 arshift
  +  dup 15 arshift 7 ^2>>
     ( H1: ) 24 bme-u8
  -  * 4 arshift -  0 max  419430400 min  12 arshift
  +  4 *>> -  0 max  419430400 min  12 arshift
     100 * 512 + 10 arshift  \ convert 1/1024's to 1/100's, w/ rounding
   ;
   
   : go
  -  init-board  bme-init  bme-calib
  +  bme-init  bme-calib
     params 32 dump
     begin
       bme-data bme-hpt
  
positive.code: : bme-hpt ( -- rawh rawp rawt )
    values 6 + dup c@ 8 lshift swap 1+ c@ or  0 bme-u20be  3 bme-u20be ;
  
  : tcalc ( rawt -- t100 )
    3 rshift dup shr swap
    ( T1: ) 0 bme-u16 shl - ( T2: ) 2 bme-s16 * 11 arshift
    swap ( T1: ) 0 bme-u16 - dup * 12 arshift ( T3: ) 4 bme-s16 * 14 arshift +
    dup tfine !  5 * 128 + 8 arshift ;
  
  : *>> ( n1 n2 u -- n ) >r * r> arshift ;  \ (n1 * n2) >> u
  : ^2>> ( n1 u -- n ) >r dup * r> arshift ;  \ (n1 * n1) >> u
  
  : pcalc ( rawp -- p1 )
    tfine @ 2/ 64000 -                                  ( rawp var1 )
  
negative.code: PB7 constant SDA
  
  include ../flib/i2c-bb.fs
  
  : bme-init ( -- )
    +i2c
  