Home > CBM > BASIC > Keywords > Sleep
180 Subpages: (divide), (equal), (less), (minus), (more), (multiply), (plus), (power), Abs, And, Append, Asc, Atn, Auto, Backup, Bank, Begin, Bend, Bload, Boot, Box, Bsave, Bump, Catalog, Char, Chr, Circle, Close, Clr, Cmd, Collect, Collision, Color, Concat, Cont, Copy, Cos, Data, Dclear, Dclose, Dec, Def, Delete, Dim, Directory, Dispose, Dload, Do, Dopen, Draw, Ds, Ds string, Dsave, Dverify, El, Else, End, Envelope, Er, Err, Exit, Exp, Fast, Fetch, Filter, Fn, For, Fre, Get, Get num, Getkey, Go, Gosub, Goto, Graphic, Gshape, Header, Help, Hex, If, Input, Input num, Instr, Int, Joy, Key, Left, Len, Let, List, Load, Locate, Log, Loop, Mid, Monitor, Movspr, New, Next, Not, Off, On, Open, Or, Paint, Peek, Pen, Pi, Play, Pointer, Poke, Pos, Pot, Print, Print num, Pudef, Quit, Rclr, Rdot, Read, Record, Rem, Rename, Renumber, Restore, Resume, Return, Rgr, Right, Rlum, Rnd, Rreg, Rspcolor, Rsppos, Rsprite, Run, Rwindow, Save, Scale, Scnclr, Scratch, Sgn, Sin, Slow, Sound, Spc, Sprcolor, Sprdef, Sprite, Sprsav, Sqr, Sshape, St, Stash, Step, Stop, Str, Swap, Sys, Tab, Tan, Tempo, Then, Ti, Ti string, To, Trap, Troff, Tron, Until, Using, Usr, Val, Verify, Vol, Wait, While, Width, Window, Xor

KeywordAbbreviationToken (hex)Version(s)Classification
SLEEPS{Shift+L}FE 0B7.0Command and Statement

 Syntax 
SLEEP seconds
 
ParametersTypeLegal Value(s)Default ValueNote(s)
secondsUnsigned 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