

The goal of Effectus project is to make it compatible with Action! programming language as close as possible. Currently only Win32 version of the program is available, whereas Linux version is in the works. examples\ folder includes some demonstration programs to show what Effectus currently is capable to do. The runtime library consists of several supporting libraries. Besides runtime.asm there are several others, implemented in your programs wherever needed. Maintaining the compatibily with Action! will be of HIGH priority, but new core routines and statements will be eventually implemented. The implementation of runtime library routines can be changed, but the number and order of parameters should not be changed. This is one of the rules you must follow to successfully compile any Effectus program. Also, additional requirement for proper working of Effectus is having config.ini configuration file in the same directory as the Effectus executable program.
Effectus compiles and produces MADS assembly language source code and binary file for executing on real 8-bit Atari or appropriate emulator. Version of MADS currently used and tested with the program is 1.8.5 and 1.8.6. Source code can be further manually modified with the use of MADS for additional improvements. The restrictions mentioned above comply just to the stage when Effectus source code is compiling. You can set default values for MADS and Effectus source code folder, program starting address, extensions, etc. in config.ini file.
The name Effectus comes from Latin word for "execution".
I have to thank the author of MADS, Tebe, who helped me with many important suggestions to improve the code. Thanks go also to my friend Sandor, who motivated me further for continuing work on this project, providing me with new domain name for Effectus, http://www.atari-effectus.com/.
You are welcome to check Effectus forum to discuss its functionality or anything else!
Features (in some cases limited functionality)
Supported Action! procedures and functions
Click here for brief list of supported Action! commands!
Supported Action! global system variables
color, device
Add-on Action! procedures
Asm - This procedure allows you to directly write assembly language code as part of the the final MADS assembly language program
PrintG, PrintGE - Temporary available procedures for printing text on screen in graphics modes with text window. These will be probably removed when ordinary Print procedures will be fixed.
Rules (and current restrictions)
- Every command (statement) must be on separate line
- Declared variables must follow these rules:
- Just one type declaration line for each of currently supported types, no space after comma (if more than one variable is declared)
- No spaces allowed between variable and expression
- BYTE ARRAY or CHAR ARRAY must be chosen, not both
- Only literal numbers allowed as PROC (procedure) parameters (with the exception of the first parameter, which represents memory address and can be substituted with the variable)
- IF-ELSE, WHILE and FOR branch rules:
- No logical operators supported yet
- The second operand compared MUST NOT be a variable, just literal numbers are allowed right now (for example: WHILE i>0)
- INCLUDE statement currently only supports user defined libraries on current directory for console version, for GUI version of Effectus only those on directory for Effectus sources set by config.ini are acceptable
- If comments are used, ";" currently takes the whole line as the comments
- Currently you are not recommended to use reserved words in comments and strings
- Arithmetics partially implemented (8-bit addition, substraction, multiplication and division) and incrementing of the variable by 1 (for example: i=i+1 or i==+1)
- When Graphics routines are used, you may not use ordinary text printing functions. Instead, use PrintG or PrintGE.
Found bugs (many of them fixed and removed)
- PrintE procedure behaves strange if positioned anywhere else than the first position in a line, which is recommended
- SndRst sometimes messes other routines near it. Recommended is putting an empty line after this procedure.
- Currently you are not recommended to use reserved words in comments and strings
- FOR branch statement has few issues
Effectus release files and directories
To do
- FUNCs (functions)
- I/O routines
- Local variables
- Variable types (ARRAYs, POINTERs, type structures)
- INCLUDE files- More complete functionality of arrays of TYPE records (string support)
- DEFINE constants (partly implemented, currently only literal numeric values allowed)
- Recursion (non-Action! functionality)
-
Nested procedures and functions (non-Action! functionality)
- Support for player/missiles
- Floating point support
- Syntax checking
- implementing MADS features and compiling options
- remaining set of procedures, functions and other functionality of Action! language
- ...