Main   News   Runtime library   Procedures and functions   Documentation   Examples   Observation   Forums and links   Download

s1

The goal of Effectus project is to make it compatible with Action! programming language as close as possible. Windows (i386-win32) and Linux version of the program are available. Linux version has some issues which will be fixed in next versions. On Windows platform, a program was compiled with Free Pascal Compiler version 2.2.4 (i386). Linux version was tested on Ubuntu 8.10 system.

examples\ folder includes some demonstration programs to show what Effectus currently is capable to do. The runtime library supports many features. Your programs, besides runtime.asm, include other libraries as needed. Maintaining the compatibily with Action! will be of HIGH priority. Note! 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 with proper settings in the same directory as the Effectus executable program, or alternatively, you can set all parameters from command line.

Effectus compiles and produces MADS assembly language source code and binary files for executing on real 8-bit Atari or software emulator. Version of MADS currently used and tested is 1.9.0. 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 optional values for MADS and Effectus source code and binary code folder, program starting address, extensions, etc. in config.ini file or by using parameters in the console.

I have to thank the author of MADS, Tebe, who helped me with many important suggestions to improve the code. Thanks go also to Cosi, ascrnet, w1k, Kaz, ascrnet, dwhyte, devwebcl, twh/f2, TXG/MNX and others from AtariAge and atarionline.pl forums for the help and to my friend Sandor, who provided me with new domain name for Effectus, atari-effectus.net.

Special thanks go to Cosi, ascrnet and w1k for additional help with testing the program and finding bugs, AtariAge and Kaz's atarionline.pl forum topics discussing the project:
- http://www.atariage.com/forums/topic/112501-effectus-new-atari-cross-compiler-alpha-stage/page__st__25
- (http://atarionline.pl/forum/comments.php?DiscussionID=207&page=1#Item_0)

You are welcome to check Effectus forum to discuss its functionality or anything else!

The name Effectus comes from Latin word for "execution".


Features
(in some cases limited functionality)

  • Procedures (PROC, the last procedure entered is the main procedure in the program like in Action!)

  • Functions (FUNC), RETURN statement resulting value is of .word type

  • Procedure and function parameters (arguments) support, maximum five parameters allowed

  • Declaring machine language code in PROCs and FUNCs with [] block

  • Variables, constants and strings (variables can be pre-declared)

  • Improved support for POINTER declaration and manipulation (not all features implemented yet)

  • Improved support for ARRAY declaration and manipulation (nearly all features implemented)

  • Limited support for arrays of TYPE records

  • TYPE record declaration

  • Action! conditions and branches (IF-ELSE, WHILE and FOR with STEP directive)

  • Loops (using DO OD directives)

  • EXIT directive for unconditional exit from loops

  • IF and WHILE conditional expressions with OR and AND logical operators (Currently one of them can be repeated several times in one statement)

  • Global variables

  • 8-bit math operations (addition, substraction, multiplication, division) - limited to two operands

  • Bitwise operators: LSH, RSH, XOR, !, &

  • BYTE, CHAR, INT and CARD, with INT and CARD both as MADS .word declaration types

  • INCLUDE files (user defined libraries)

  • DEFINE constants (partly supported, currently only literal numeric values in double quotation marks allowed)

  • Comments - ; - currently only the whole line is allowed as the comments

  • Input/Output (I/O)

  • Graphics

  • Game controllers

  • Sound

  • PrintF procedure (currently only %I, %U, %C and %E options supported)

  • Manipulation with strings (SCopy, SCopyS, InputS, InputSD, SAssign currently operates same as SCopyS)

  • MOD (modulus) arithmetics operations

  • Increment, decrement, multiplication and division expression syntax in format

    x==+1
    x==-2
    x==/3
    x==*4

  • No space dependency on one line for most of the code

  • Source code lowercase/uppercase interchange

  • Modification of runtime.asm and other libraries' routine implementations, but great care must be taken not to change the number and order of parameters


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


Rules (and current restrictions)

- Every command (statement) must be on separate line, except TYPE declaration, FOR and WHILE loops
- ARRAY declaration is adviced to be of type INT or CARD, because BYTE values are not handled properly yet
- If comments are used, ";" currently takes the whole line as the comments


Effectus release files and directories

  • Program directory (effectus.exe, effcon.exe, config.ini)
  • lib\ runtime library directory (click here to see runtime libraries)
  • examples\ directory (click here to see some examples)


License

This program is open source with source code available under terms that allow for modification and redistribution without having to pay me for using it. Only restriction is that you are not allowed to sell it to anyone or anywhere. I only ask you if you use the code for your own project, please don't use the name Effectus as the project name. All new findings, improvements and bug fixes are more than appreciated for including in this project. Thank you! The program is freeware.

Free Pascal (aka FPK Pascal)'s packages and runtime library come under a modified Library GNU Public License to allow the use of static libraries when creating applications. The compiler source itself comes under the GNU General Public License. The sources for both the compiler and runtime library are available; the complete compiler is written in Pascal.