Available on: all targets

DECLARE PROCEDURE

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”. What does “system” mean? 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.

SYNTAX

 DECLARE [SYSTEM] PROCEDURE name AT address [ ( par1 [, par2 [, ... ] ] ) ] [ 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 (,)


Legend
  • id : identifier
  • type : datatype
  • v : value
  • "..." : string
  • [...] : optional

EXAMPLE

 DECLARE SYSTEM PROCEDURE test ON CPC, ZX


Used in:

ABBREVIATION: Dec Prcd

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:

  • PUR-120 - A game in 10 lines of max 120 characters (w/abbrev.)
  • EXTREME-256 - A game in 10 lines of max 256 characters (w/abbrev.)
  • SCHAU - Any program in 10 lines of max 256 characters (w/abbrev.)
In order to reduce space you can use this abbreviation for this instruction:

DECLARE PROCEDURE ↔ Dec Prcd

Any problem?

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