Effectus 0.3.1 (Version date 2.11.2019)

New features Bug fixes

Effectus 0.3 (Version date 21.5.2019)

New features

Effectus 0.2.3 (Version date 23.2.2016)

New features and fixes

Effectus 0.2.2 (Version date 24.1.2016)

New features and updates Fixes

Effectus 0.2.1 (Version date 12.10.2015)

New features and updates

Effectus 0.2 (Version date 23.8.2015)

New features and updates Bug fixes

Effectus 0.1.8 (Version date 10.8.2015)

New features and updates Site update

Effectus 0.1.7 (Version date 27.7.2014)

New features and updates Bug fixes

Effectus 0.1.6 (Version date 18.7.2014)

New features and updates Bug fixes

Effectus 0.1.5 (Version date 13.7.2014)

New features and updates Bug fixes

Effectus 0.1.4 (Version date 4.7.2014)

New features and updates Bug fixes

Effectus 0.1.3 (Version date 27.6.2014)

New features and updates Examples updates:

Effectus 0.1.2 (Version date 23.6.2014)

New features and updates Bug fixes

Effectus 0.1.1 (Version date 18.6.2014)

New features and updates: Bug fixes

Effectus 0.1 (Version date 12.6.2014)

New features and updates: Bug fixes

Effectus 0.0.18 (Version date 31.5.2014)

New features:

Effectus 0.0.17 (Version date 27.2.2014)

New features: Bug fixes

Effectus 0.0.16 (Version date 8.2.2012)

New features: Misc: Fixes:

Effectus 0.0.15

New features: Misc:

Effectus 0.0.14

New features: Fixed issues: Misc:

Effectus 0.0.13

New features: Fixed issues:

Effectus 0.0.12

Effectus 0.0.11

Effectus 0.0.10

- PrintF procedure support (currently only %I, %U and %E options supported)! Some examples:

  PrintF("The integer number is %I.%E%E", n)
  PrintF("The n=%I and i=%U.%E", n, i)

- Bitwise operators LSH, RSH, XOR, !, & supported. Some examples:

  n=n XOR 2
  b=a LSH 1
  b=a RSH 1

- MOD (modulus) arithmetics operation support. Example:

  n = 10 MOD 4

- Fixed usage of PrintE(""), which works properly as empty string with new line (carriage return) character at the end of string. Print("") assembles and compiles to nothing.

- Additional ARRAY declaration syntax support (experimental for now) for predeclared variables. Example:

  BYTE ARRAY values=[1 2 3 4 5 6 7]

Currently only one line declaration apply as correct syntax

- Fixed printing to the screen with PrintD and PrintDE procedure. It happened that comma character "," was not handled properly in string and resulted in
splited string, which showed only characters before "," character - Bug found by ascrnet, a member of AtariAge portal. Thank you!

- Fixed usage of INCLUDE statement. Main program and the included source file will be assembled in the directory where Effectus is run. The resulting assembled main code will not contain absolute path of the included file, because both files are generated in the same directory.

Some examples:

INCLUDE "lib_test1.eff"
INCLUDE "c:\projects\lib_test2.eff"

- Additional freedom in typing commands. Some example:

  PrintE ("")
  Position  ( 1, 3 )
  Graphics  (8)

- Printfg runtime library procedure usage removed from assembling and compiling, because Printf procedure should have all of the needed functionality for printing to the screen, including text windows in graphics modes.

- Removal of unnecessary assembler code for TYPE declaration, if it is not used

; Handling TYPE variables
 .var struct_ptr_var .word

- readme.txt documentation file updated

- Added examples showing new features

Effectus 0.0.9

- Linux version of the program (compiled on Ubuntu Linux platform - i386)

- TYPE declaration is one of the Effectus statements, which allow code to be freely placed on multiple lines. The only restriction is having only one variable type on single line. Some examples:

    TYPE rec=[INT a, b
              CARD calc1, calc2
              INT c]
    TYPE rec2 = [INT a,b
                 BYTE c
    TYPE rec3=[
               BYTE a, b
               CARD c
               INT k, m, p
               BYTE value

- Improved support for ARRAY variables used in FOR loops. Some examples:

    FOR i=0 TO 2
      Print("Element ")
    FOR i = 0 TO 2
      data(i) = 1
    FOR i = 0 TO 2
      j = data(i)
- Arithmetics:

- Increment, decrement, multiplication and division expression syntax
Some examples:

- Aritmetics is viable on two operands (numbers or variables, also mixed)
Some examples:
    m = n * t
    u = v / 10
- Pre-declared variables allowed, for example:

  BYTE i=[3]

- Improved ARRAY declaration and manipulation

- Fixed procedures SCopy and InputS. Strings are handled using the actual ARRAY variables.
SCopy also allows copying one Array variable parameter to another, as in the following example:

  SCopy(Str1, Str2)

- No space dependency on one line for most of the code, for example:

    n = 10
    n = n + 1

- Fixed issue in FOR loop syntax (if last argument was variable, the loop ended with iteration minus one)

- New core routines implemented for more robust, optimized and organized code, which will help in
faster development of new features of Action! programming language

- Configuration file Config.ini is not needed anymore. Program can work without it, but with care taken.
In this case default values are set. That is, MADS cross-assembler is searched from system path configuration.
If it isn't there, an error is raised. The best way is setting its path with -md: parameter, like this:

effectus examples\poke.eff -md:c:\atari\utils\mads\

Effectus runtime library is automatically searched in lib directory in the root directory where Effectus is run.
If you want to read runtime library from another location, set it with -rl parameter, like this:

effectus examples\poke.eff -md:c:\atari\utils\mads\ -rl:c:\projects\effectus\lib\

Of course, you can still use config.ini file. If so, parameter values from that file are used by Effectus.

- Colored presentation of console program, with some description changes

- Revised examples showing new features

Effectus 0.0.8

- Improved support for ARRAY, POINTER declaration and manipulation (not all features implemented yet)

- Support for arrays of TYPE records (not all features implemented yet)

- TYPE declaration and manipulation

- Some code optimization and reorganization

Effectus 0.0.7

- 8-bit multiplication and division (allowed math on two numbers, same applies to addition and subtraction)
- ValB, ValI and ValC Action! functions implemented (current restriction is that you cannot pass variable strings as parameter, just literal numbers in double quotation marks are allowed)
- Fixed printing of text in graphic mode text window (No more need for extra routines PrintG and PrintGE, which are deprecated. For now, for empty lines, use PrintE(" "). For this, modified PrintF library was added, called PrintFG
- Most routines commented (description, parameters, results) in all runtime libraries
- INCLUDE statement bug fixes:
  - Comments allowed with this directive
  - No more searching for non-existing INCLUDE directive file in root directory. Instead, by referencing the filename without a pathname, program automatically searches for current location set in configuration file, pointed to Effectus source code directory. You can also state the folder of that directory inside brackets
- Correctly parsed blank lines in assembly code (to match Effectus source code layout)
- device ( Effectus global variable) correctly treated and referenced as device.devscr in MADS code to allow its proper internal handling
- Up to five parameters are allowed to be passed to procedures and functions
- InputS and InputSD allowed maximum string size is 120 bytes
- Rand routine optimized
- Fixed Locate routine (a problem which remains is extra keypress of return key - yet to be fixed (any advice?))
- IF condition and WHILE branch variable type checking (if any of the numbers is of type .word, the resulting code is also of type .word)
- Game controllers library added
- Default device applied to routines GetLine, Put, PutE
- CHAR ARRAY handled as BYTE ARRAY (check scopy.eff example)
- Eliminated variable expression duplication (IF, FOR, WHILE statement conditions/expressions are threated differently)
- New generated program layout:
  - common.asm (macro routines Poke, Peek, PokeC, PeekC, XIO, MoveBlock)
  - runtime.asm library as object code library
- All runtime libaries optimised and revised
- MADS conditions and branches #if, #else, #while and #end (with MADS 1.8.0 and higher)
- I/O error checking (program automatically closes a device and program execution)
- Syntax typing freedom (variable declarations and expressions, routine parameters... Some examples: n =    1, k  =Sum(n1, n2), BYTE jx,   jn,jy...)
- PutD and PutDE routines modified and moved from runtime.asm to io.asm, obsolete ReadByte removed
- I/O checking code segment tya jmi stop changed to jmi stop
- Any appearance of hexadecimal number for new line ($9B) changed to lowercase letter ($9b)
- Effectus code revision and optimization

Effectus 0.0.6

- Console version of the program
- Functions
- Procedure and function parameter handling
- Many new Action! routines included
- I/O support
- 8-bit math support (addition - sum up to 500, substraction - from 0 to 255)
- Common equates included in one file
- Declaration of any variable type can be repeated throughout the program
- Three new libraries added: math.asm, io.asm and printfd.asm
- New examples

- Program code optimised and factorized for usage with GUI and console version of the Effectus