The DECLARE PROCEDURE
is a way to define and call external procedures written in machine language
and to insert assembly into the sources. The procedures defined in this way can be called as if they
were an integral part of the language. Once the procedure has been declared, it will be sufficient
to invoke it with one of the following syntaxes:
CALL test
PROC test
test[]
as if it were any ugBASIC procedure. If desired, parameters can be added. For each it is obviously
necessary to indicate how the value will be passed to the function written in machine language.
The ugBASIC compiler allows you to declare functions and procedures that are “system”.
It means that the machine code resides in a ROM, preloaded at run time and therefore
already made available to any program that knows how to call it.
However, since ugBASIC makes available all memory space allowed by the hardware, it is possible that
the ROMs have been disabled or otherwise made unreachable. Indicating that you want to call a procedure
or a system function, ugBASIC will take care of re-enabling the ROM before executing the request,
deactivating it on exit.
To declare a procedure or function to be system, simply use the SYSTEM
keyword.
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 (,)
DECLARE SYSTEM PROCEDURE test ON CPC, ZX
Used in:
Join BASIC 10Liner Contest with ugBASIC!
An interesting competition is held at the beginning of each year: the
BASIC 10Liner Contest.
It is possible to use ugBASIC to participate in the next
"BASIC10Liner" competition, in the following categories:
DECLARE PROCEDURE ↔ DecPrcd
If you have found a problem with this keyword, if you think there is a bug or, more
simply, you would like it to be improved, open an issue for this example on GitHub.
Thank you!
open an issue
BACK TO KEYWORDS