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

SLEEP

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

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

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

 
  Remarks  
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.
 
Example:
SLOW : T = 5 : SLEEP T
(delay of 5 seconds)

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

READY.
 
 
  Compare With  
 
  Contrast With  
 
  See Also  

© H2Obsession, 2014
Comments