Effectus 0.0.16 (Version date 8.2.2012)

New features: Misc: Fixes:

Effectus 0.0.15

New features:

Effectus 0.0.14

New features: Fixed issues: Misc:

Effectus 0.0.13

- DO OD loops implemented (issue found by ascrnet). DO OD on single line deprecated (loop directives must be on separate line to work properly)

- EXIT directive implemented (this uncoditional command works in all implemented branch and loop statements: FOR, WHILE and DO OD loops)

- String commands:
  - SCopyS command implemented
  - SCopy implementation optimized (handling characters with x register, additional variable removed)
  - SAssign implemented, but currently with the functionality same as SCopyS

- Fixed issues:
  - Comma sign allowed in PrintD strings (issue found by ascrnet)

Effectus 0.0.12

- Source code released

- Better usage of comments at the end of the statements

- Fixed usage of FOR loop case-sensitiveness (bug found by Cosi)

- equates.asm back in main program (wrong full qualified pathname problem found by Cosi)

- PrintF:
  - Comma (,) allowed in string format parameter
  - C option added as parameter for converting ATASCII to character representation (need additional revision for proper handling of ATASCII characters)
  - Sole parameters without any additional text

- Checking for the non-existing file and putting appropriate message for the user

- Major code revision and optimization

- Graphics example by w1k added to Example section page

Effectus 0.0.11

- STEP directive for FOR command added (bug found by w1k)

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

- IF condition statement:
  - Allowed comments after FI statements
  - Fixed problem with placing FI statement

- Allowed comments after WHILE OD statements

- Eliminated support for only 255 procedures and functions (PROC and FUNC)

- DEFINE declaration statement:
  - Eliminated support for only 255 possible DEFINE declarations
  - The variable's type generated in assembler code depends of the value used in Effectus code (.byte or .word)

- Fixed problem with using of three or more parameters in PROC and FUNC commands. This issue is resolved with placing
new public variables in common.asm library and not relying on runtime.asm variables anymore

- Code revision and optimization

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