{{htmlmetatags>metatag-robots=()
metatag-title=(EXEC | ugBASIC User Manual)
metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum)
metatag-description=(Pagina del manuale per EXEC)
metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png)
metatag-og:title=(EXEC | ugBASIC User Manual)
metatag-og:description=(Pagina del manuale per EXEC)
}}
====== ugBASIC Manuale Utente ======
===== EXEC ✓ =====
===== SINTASSI =====
EXEC address _
[ WITH REG(r1)=v1[, REG(r2)=v2 [, ... ] ] ] _
[ RETURN x1=REG(r1)[, x2=REG(r2)[, ... ] ] ] _
[ ON target1[, target2[, ... ] ] ]
==== SCOPO ====
Questo comando permette di iniziare l'esecuzione di una subroutine, scritta
direttamente in linguaggio macchina, a partire dall'indirizzo indicato. Bisogna
fare attenzione che tale salto si intende con ritorno: una eventuale istruzione
assembly che fa ritornare dall'esecuzione farà continuare l'esecuzione del
programma dalla riga ugBASIC successiva.
Inoltre è possibile comunicare con il codice macchina. Ciò è reso possibile
indicando, contestualmente alla chiamata, il popolamento di specifici registri
di ingresso ed il recupero dei valori da specifici registri di uscita.
La sintassi estesa permette di specificare ''r1'', ''r2'', .. come i vari
registri del processore, ''v1'', ''v2'', .. sono i valori passati nei vari
registri e ''x1'', ''x2'', .. sono le variabili che riceveranno l'esito
dell'esecuzione dai vari registri. Poiché i registri sono diversi da CPU a CPU,
può essere utile aggiungere la specifica del target ''ON''.
==== ESEMPIO ====
EXEC #49142
EXEC indirizzo
EXEC indirizzo WITH REG(A)=42 RETURN y=REG(B) ON CPUZ80
Si vedano anche i seguenti file di esempio:
* ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/extern_example_01.bas|extern_example_01.bas]]''
==== ABBREVIAZIONE ====
E#
==== DISPONIBILE SU ====
*
* Atari (400/800)
* Atari XL/XE
* Commodore 128 (MOS 8502)
* Commodore 128 (Zilog Z80)
* Commodore 64
* Commodore 64+REU
* TRS-80 Color Computer
* TRS-80 Color Computer 3
* ColecoVision
* Amstrad CPC 664
* Dragon 32
* Dragon 64
* Thomson MO5
* Thomson MO5
* Olivetti Prodest PC128
* Commodore PLUS/4
* SEGA SC-3000
* SEGA SG-1000
*
* VG-5000
* Commodore VIC-20
* ZX Spectrum 48
==== VEDI ANCHE ====
[[SYS]]
==== 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 EXEC|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY =====
[[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]