Untested, but something like this will probably work. Designed to be called from a timer interrupt.


Code:
Gosub ReadKey

If Key = Pressed THEN
   IF KeyPressedFlag = 0 THEN 
     KeyCounter = KeyCounter + 1
     IF KeyCounter > DebouncePeriod THEN
     KeyCounter = 0
     KeyPressedFlag = 1
     GOSUB Routine_for_KeyPressed
   ENDIF
   KeyDownCounter = KeyDownCounter + 1
   IF KeyDownCounter > ToleranceLimit then 
      HSEROUT ["Dummy, Get off the key!"]
   ENDIF
ELSE
   KeyCounter = 0
   KeyPressedFlag = 0
   KeyDownCounter = 0
   GOSUB Routine_for_KeyReleased
ENDIF