Program and its dependencies are archived in ZIP file. Extract (unzip) the files in directory of your choice, but the structure of the root and subdirectories must remain intact. Executable file is titled effectus.exe for Win32 platform (effectus on Linux platform), which is accompanied with configuration file (config.ini). It is recommended to put config.ini file in the same directory as Effectus binary, but if not, the proper parameter values must be set. To start Effectus just type effectus (./effectus on Linux platform) and the properly qualified pathname of the source file to be compiled in the console.
- win32 platform
effectus filename [parameters]
- Linux platform
./effectus filename [parameters]
-md: MADS cross-assembler directory
-sa: Program starting address
-ms: Output source directory
-mb: Output binary directory
-se: Output source extension
-be: Output binary extension
-rl: Effectus/MADS runtime library directory
-lo: Log pathname (including filename)
-sm: Machine language starting address
-am: Maximum number of ARRAY elements
-i: Effectus variable usage list
-dl: Delete log file before compiling
The options available in configuration file (config.ini) are:
|Starting address of generated program (in hexadecimal notation, preceding with $ sign)|
|MADS cross-compiler directory|
|Output assembly source code extension|
|Output executable code extension|
|Runtime library directory|
|Machine language starting address|
|Log fully qualified pathname (including filename)|
|Array maximum number of elements|
Many of these parameters have their default values which are used by Effectus in case they are not listed in configuration file.
If MADS cross-assembler pathname is included in your system path configuration file (autoexec.bat or registry key), then MADS_DIR option is ignored unless the MADS program is placed in root directory of Effectus executable. If config.ini is not used, MADS cross-compiler will be searched first in the root directory of Effectus executable.
As mentioned in Installation section, config.ini file is not mandatory for proper functioning of the program. In this case, some caution must be taken. By default, all forementioned parameters have default values. Also, the runtime library directory is declared in Effectus root directory (/lib) and log filename is set on root directory as well. Otherwise, if you decide to set your own values, parameters must be set.
To start using Effectus just type effectus (./effectus on Linux platform) and relative or absolute pathname to the source code file to be compiled. Effectus listing is compiled in directory you are currently on, but that can be changed with -ms: and -mb: parameters. The fully qualified pathname with space characters must be put in double quotation marks.
Every parameter must end with colon, for example: -sa:
Effectus development system consists of additional runtime libraries, which are included in compiled programs whenever necessary.
Here is a list:
|runtime.asm||runtime.obx||Core library with common functions and variables|
|printf.asm||printf.obx||Text printing routine with special formatting (decimal, hex, floating point numbers, strings)|
|printfd.asm||printfd.obx||Text printing routine with special formatting (decimal, hex, floating point numbers, strings) on specified device|
|controllers.asm||controllers.obx||Game controller routines|
|equates.asm||Common equates (memory locations, temporary storage locations...)|
; Global BYTE variables
.var b_param1, b_param2, b_param3, b_param4, b_param5 .byte
; Global WORD variables
.var w_param1, w_param2, w_param3, w_param4, w_param5 .word
These variables use stack for their use, so there is no so much memory wasted. These variables are used for temporary storage of values and procedure and function parameter usage.
Array variable for usage with SCopyS command for temporary string storage:
.array strx 255 .byte = $ff
.var array_buffer_strx .word
.var array_index_strx .byte
.link 'd:\atari\my projects\effectus\lib\runtime.obx'
run Main ; a name of last Effectus procedure PROC
- for TYPE declaration:
; Handling TYPE variables
.var struct_ptr_var .word
- for ARRAY declaration:
.var array_buffer_data .word
.var array_index_data .byte