anchor.diff:        true \ multi scan code key was pressed... so key is available
         EXIT \ done
      THEN
  -   kbd-scan 0 = IF \ if no kbd-scan code is currently available
  -      int-get-report \ check for one using int-get-report
  +   kbd-scan 0 = IF      \ if no kbd-scan code is currently available
  +      kbd-get-report    \ check for new scan codes
      THEN
  -   kbd-scan 0 <> \ if a kbd-scan is available, report true, else false
  +   kbd-scan 0 <>        \ if a kbd-scan is available, report true, else false
   ;
   
   : usb-kread ( -- char|false )                     \ usb key read for control transfer
  
positive.code: 1 constant NumLk
  2 constant CapsLk
  4 constant ScrLk
  
  00 value kbd-addr
  to kbd-addr                                \ save speed bit
  
negative.code:       \ check for new scan code only, if kbd-scan is not set, e.g.
        \ by a previous call to key-available?
        kbd-scan 0 = IF
           kbd-get-report                           \ read scan-code report
        THEN
        kbd-scan 0 <> if                            \ scan code exist?
           begin kbd-scan ff and dup 00 = while     \ get a last scancode in report buffer
              kbd-scan 8 rshift to kbd-scan         \ This algorithm is wrong --> must be fixed!
              drop                                  \ KBD doesn't set scancode in pressed order!!!
           repeat
           ff and dup to kbd-scan                   \ we can only digest one key at a time
           dup key-old <> if                        \ if the scancode is new
              dup to key-old                        \ save current scan code
              get-ukbd-char                         \ translate scan code --> char
  