Commodore‎ > ‎BASIC‎ > ‎Keywords‎ > ‎


Keyword Abbreviation Token (hex) Version(s) Classification
SLEEP S{Shift+L} FE 0B 7.0 Command and Statement

SLEEP seconds
Parameters Type Legal Value(s) Default Value Note(s)
seconds Unsigned Integer    0 ~ 65535  

Program flow control.  Suspend execution for a specified period of time.

SLEEP provides a more reliable delay mechanism than the often used "empty FOR/NEXT".  It works correctly regardless of NTSC/PAL differences or CPU speed.  Technically it uses the KERNAL's Jiffy timer, so as long as the KERNAL interrupt hasn't been disabled or redirected this works fine.
While the program waits, it checks the STOP key and normal system IRQ routines continue to execute (such as checking the keyboard, moving sprites, and generating sound).  However a COLLISION will not execute while BASIC SLEEPs.  Any COLLISION will be detected, but not acted upon until SLEEP finishes waiting.  In this regard, the classic FOR/NEXT delay may be preferred.
The only real problem is the parameter is converted to an (unsigned) integer (see INT) so that fractional seconds of delay are not possible.  If seconds is numeric, but not legal (see above) then ILLEGAL QUANTITY ERROR occurs.  If seconds is a string, TYPE MISMATCH ERROR occurs.  If seconds is omitted, SYNTAX ERROR is generated.
SLOW : T = 5 : SLEEP T
(delay of 5 seconds)

FAST : T = 5 : SLEEP T
(delay of 5 seconds)

  Compare With  
  Contrast With  
  See Also  

© H2Obsession, 2014