SYS address _ [ WITH REG(r1)=v1[, REG(r2)=v2 [, ... ] ] ] _ [ RETURN x1=REG(r1)[, x2=REG(r2)[, ... ] ] ] _ [ ON target1[, target2[, ... ] ] ]
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
.
SYS #49142 SYS indirizzo SYS indirizzo WITH REG(A)=42 RETURN y=REG(B) ON CPUZ80
Si vedano anche i seguenti file di esempio:
Sy
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 aprire una segnalazione per questa parola chiave su GitHub. Grazie!