{{htmlmetatags>metatag-robots=() metatag-title=(EVERY...GOSUB | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Manual page for EVERY...GOSUB) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(EVERY...GOSUB | ugBASIC User Manual) metatag-og:description=(Manual page for EVERY...GOSUB) }} ====== ugBASIC User Manual ====== ===== EVERY...GOSUB ✓ ===== ===== SYNTAX ===== EVERY value TICKS GOSUB identifier EVERY value[,timer] TICKS GOSUB label ==== PURPOSE ==== Define the call of a sub-routine at regular intervals, without interfering with the main program. You must specifying the length of time between every call, measured in TICKS. Note that the subroutine execution time should be less than the interval time, or the main program timings will be affected. After a subroutine has been entered, the ''EVERY'' system is automatically disabled. This means that, in order to call this feature continuously, an ''EVERY ON'' command must be inserted into a subroutine before the final RETURN statement. Define the call of a subroutine at regular intervals, without interfering with the main program. You must specifying the length of time between every call, measured in TICKS. The ugBASIC branches to the subroutine EVERY ''value''/''TICKS PER SECONDS'' seconds. Note that the subroutine 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. Subroutines 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-subroutines which occurs simultanously to higher-priority-subroutines are not lost. Their task remains or handled again after finishing the higher-prio interrupt. ==== EXAMPLE ==== EVERY 50 TICKS GOSUB changeBorderColor EVERY 50 TICKS GOSUB 100 EVERY 50,2 TICKS GOSUB label See also the following example files: * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/control_periodic_01.bas|control_periodic_01.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/control_periodic_01.bas|control_periodic_01.bas]]'' * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/control_periodic_03.bas|control_periodic_03.bas]]'' ==== ABBREVIATION ==== Ev...Gs ==== AVAILABLE ON ==== * Dragon 32 * Commodore 128 (MOS 8502) * Commodore 64 * Commodore VIC-20 * Atari (400/800) * * Commodore PLUS/4 * Olivetti Prodest PC128 * Dragon 64 * Thomson MO5 * ColecoVision * TRS-80 Color Computer 3 * TRS-80 Color Computer ==== 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...GOSUB|open an issue]] for this keyword on GitHub. Thank you!===== POWERED BY ===== [[:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]