{{htmlmetatags>metatag-robots=() metatag-title=(EVERY...CALL | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Manual page for EVERY...CALL) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(EVERY...CALL | ugBASIC User Manual) metatag-og:description=(Manual page for EVERY...CALL) }} ====== ugBASIC User Manual ====== ===== EVERY...CALL ✓ ===== ===== SYNTAX ===== EVERY value[,timer] TICKS CALL identifier ==== PURPOSE ==== The ''EVERY'' allows to execute a procedure at specified intervals of time. It is especially useful for creating animations, handling real-time events, and simulating dynamic behavior in your programs. You can give the ''value'' as number of ticks to wait for triggering the call, and ''timer'' to select a specific timer (up to 8 timers are present). It allows you to create smooth animations by moving objects on the screen at regular intervals, and it is essential for managing real-time events, such as character movement, object collisions, and keyboard input management. It can be used also to simulate physical or biological phenomena that evolve over time., or to create dynamic visual effects, such as sparks, explosions, or screen transitions. The speed at which ''EVERY'' commands execute depends on the frame rate of your computer, and from the parameter ''value'' given. A higher frame rate means that actions will be executed more frequently, while an higher ''value'' means that actions will be executed less frequently. Note that the procedure execution time should be less than the interval time, or the main program timings will be affected! There are 8 delay timers from 0 to 7 which can be specified with ''timer''. If omitted ''timer'' defaults to 0. In the case of parallel task has 0 the highest and 8 the lowest priority. With ''EVERY OFF'' and ''EVERY ON'' you can disable or enable the timed calls. Procedures run as long as the main loop / program runs, even the main programm is paused. It is important to know or realise that low-priority-procedures which occurs simultanously to higher-priority-procedures are not lost. Their task remains or handled again after finishing the higher-prio interrupt. Important: the meaning of this command is not altered by ''OPTION CALL'' pragma, so this is always a ''GOSUB'' and not a ''GOTO''! ==== EXAMPLE ==== EVERY 50 TICKS CALL changeBorderColor EVERY 50,2 TICKS CALL changeBorderColor See also the following example files: * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/control_periodic_02.bas|control_periodic_02.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/control_periodic_03.bas|control_periodic_03.bas]]'' ==== ABBREVIATION ==== EvCa ==== AVAILABLE ON ==== * Dragon 32 * Commodore 128 (MOS 8502) * SEGA SG-1000 * Commodore 64 * Commodore VIC-20 * Atari (400/800) * * Commodore PLUS/4 * VG-5000 * Olivetti Prodest PC128 * Dragon 64 * Thomson MO5 * SEGA SC-3000 * ColecoVision * TRS-80 Color Computer 3 * MSX * TRS-80 Color Computer ==== SEE ALSO ==== [[AFTER...GOSUB]] [[EVERY ON]] [[EVERY OFF]] ==== ANY PROBLEM? ==== If you have encountered a problem using this command, if you think there is a bug or the explanation is unclear, please [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=ISSUE ON EVERY...CALL|open an issue]] for this keyword on GitHub. Thank you!===== POWERED BY ===== [[:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]