{{htmlmetatags>metatag-robots=()
metatag-title=(EVERY...GOSUB | ugBASIC User Manual)
metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum)
metatag-description=(Pagina del manuale per EVERY...GOSUB)
metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png)
metatag-og:title=(EVERY...GOSUB | ugBASIC User Manual)
metatag-og:description=(Pagina del manuale per EVERY...GOSUB)
}}
====== ugBASIC Manuale Utente ======
===== EVERY...GOSUB ✓ =====
===== SINTASSI =====
EVERY value TICKS GOSUB identifier
EVERY value[,timer] TICKS GOSUB label
==== SCOPO ====
Definisce una chiamata a una sottoprogramma a intervalli regolari, senza
interferire con il programma principale. È necessario specificare il
periodo di tempo tra ogni chiamata, misurata in TICKS.
Si fa notare che la durata dell'esecuzione della subroutine dovrebbe essere
inferiore al tempo dell'intervallo indicato, altrimenti le temporizzazioni
del programma principale ne risentiranno.
Dopo essere entrati nella subroutine, il sistema disabilita la chiamata
periodica. Ciò significa che, per richiamare questa funzione in modo continuo,
è necessario invocare il comando ''EVERY ON'' prima dell'istruzione ''RETURN'' finale.
Introduce la chiamata di una subroutine a intervalli regolari, senza interferire
con il programma principale. È necessario specificare l'intervallo di tempo tra
ogni chiamata, misurato in ''TICKS''. Il compilatore ugBASIC passa alla subroutine
ogni ''value''/''TICKS PER SECOND'' secondi.
Si noti che il tempo di esecuzione della subroutine dovrebbe essere inferiore al
tempo dell'intervallo, altrimenti i tempi del programma principale verranno influenzati.
Vi sono 8 timer di ritardo da 0 a 7 che possono essere specificati con ''timer''.
Se omesso, il valore predefinito ''timer'' è 0. Nel caso di attività parallela,
0 ha la priorità più alta e 8 la priorità più bassa.
Con ''EVERY OFF'' e ''EVERY ON'' è possibile disabilitare o abilitare le chiamate
temporizzate. Le subroutine vengono eseguite finché viene eseguito il
ciclo/programma principale, anche se il programma principale è in pausa.
È importante sapere o realizzare che le subroutine a bassa priorità che si
verificano contemporaneamente alle subroutine a priorità più alta non vanno perse.
Il loro compito rimane o viene gestito nuovamente dopo aver terminato
l'interruzione con priorità più alta.
==== ESEMPIO ====
EVERY 50 TICKS GOSUB changeBorderColor
EVERY 50 TICKS GOSUB 100
EVERY 50,2 TICKS GOSUB label
Si vedano anche i seguenti file di esempio:
* ''[[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]]''
==== ABBREVIAZIONE ====
Ev...Gs
==== DISPONIBILE SU ====
* 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
==== PROBLEMI? ====
Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=SEGNALAZIONE SU EVERY...GOSUB|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY =====
[[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]