The ON TIMER statement sets up a timed event to be repeated at specified intervals.
- In Qbasic the INTEGER seconds parameter can be from 1 to 86400 seconds(one day).
- A TIMER ON statement must be made before an ON TIMER event is enabled in QB or QB64.
- TIMER STOP remembers previous events when enabled by a TIMER ON statement and the ON TIMER statement(s) may be executed immediately if a timer event has occurred.
- TIMER OFF disables timer event trapping. Events will not be remembered in a subsequent ON TIMER statement.
- ON TIMER events will interrupt a SLEEP call and return to normal program procedures.
- Qbasic can only use one TIMER event at a time and code must be in the main code.
- Can use multiple timers and SINGLE floating point second values down to one millisecond(.001).
- If the TIMER number is omitted, the TIMER used is the base timer. That TIMER cannot be freed using TIMER FREE. No number referance is used for that timer and keeps QB64 compatible with Qbasic.
- Direct SUB procedure calls are also allowed without using CALL.
- Use the _FREETIMER function to save free timer numbers to variables for TIMER statements.
- TIMER(n) FREE releases a timer event after being turned off.
- QB64 allows TIMER statements to also be inside of SUB and FUNCTION procedures.
- Does not currently interrupt SLEEP calls.
- $CHECKING:OFF can disable QB64 event checking. It should ONLY be used with errorless code that needs every CPU cycle!
Example: How to update the time while printing at the same time in a program.
TIMER ON ' enable timer event trapping LOCATE 4, 2 ' set the starting PRINT position ON TIMER(10) GOSUB Clock ' set procedure execution repeat time DO WHILE INKEY$ = "": PRINT "A"; : SLEEP 6: LOOP TIMER OFF SYSTEM Clock: row = CSRLIN ' Save current print cursor row. col = POS(0) ' Save current print cursor column. LOCATE 2, 37: PRINT TIME$; ' print current time at top of screen. LOCATE row, col ' return to last print cursor position RETURN
- NOTE: SLEEP will be interrupted in Qbasic.