{{htmlmetatags>metatag-robots=() metatag-title=(DECLARE PROCEDURE | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Pagina del manuale per DECLARE PROCEDURE) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(DECLARE PROCEDURE | ugBASIC User Manual) metatag-og:description=(Pagina del manuale per DECLARE PROCEDURE) }} ====== ugBASIC Manuale Utente ====== ===== DECLARE PROCEDURE ✓ ===== ===== SINTASSI ===== DECLARE [SYSTEM] PROCEDURE name AT address [ ( par [, par [, ... ] ] ) ] [ ON targets ] par : name AS type ON register par : name AS type ON STACK(width) width: BYTE | WORD | DWORD targets : name of targets, separated by comma (,) ==== SCOPO ==== Il ''DECLARE PROCEDURE'' è un modo per definire e chiamare procedure esterne scritte in linguaggio macchina e per inserire assembly nei sorgenti. Le procedure così definite possono essere richiamate come se fossero parte integrante del linguaggio. Una volta dichiarata la procedura sarà sufficiente invocarla con una delle seguenti sintassi: '''CALL test''' '''PROC test''' '''test[]''' come se fosse una procedura ugBASIC. Se lo si desidera, è possibile aggiungere parametri. Per ognuno è ovviamente necessario indicare come verrà passato il valore alla funzione scritta in linguaggio macchina. Il compilatore ugBASIC consente di dichiarare funzioni e procedure che sono “di sistema”. Vuol dire che il codice macchina risiede in una ROM, precaricata in fase di esecuzione e quindi già resa disponibile a qualsiasi programma che sappia chiamarla. Tuttavia, poiché ugBASIC mette a disposizione tutto lo spazio di memoria consentito dall'hardware, è possibile che le ROM siano state disabilitate o comunque rese irraggiungibili. Indicando che si vuole chiamare una procedura o una funzione di sistema, ugBASIC si occuperà di riabilitare la ROM prima di eseguire la richiesta, disattivandola all'uscita. Per dichiarare una procedura o una funzione come sistema, utilizzare semplicemente la parola chiave ''SYSTEM''. ==== ESEMPIO ==== DECLARE SYSTEM PROCEDURE test ON CPC, ZX Si vedano anche i seguenti file di esempio: * ''[[https://github.com/spotlessmind1975/ugbasic/tree/main/examples/extern_example_11.bas|extern_example_11.bas]]'' ==== ABBREVIAZIONE ==== DecPrcd ==== 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 ==== [[DECLARE FUNCTION]] ==== ALIAS PER ==== [[DECLARE PROC]] ==== 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 DECLARE PROCEDURE|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]