mariusz-buk / effectus

Effectus by Boštjan Gorisek
Other
9 stars 4 forks source link

================== Effectus 0.5.3

This is new version of Effectus, done from scratch. The most important thing to consider was to emulate Action! language as close as possible. The main priority is to handle Action! statements (declarations, commands, assignments...) properly and to support multi-line statements as well.

In new version the source code is generated by using Mad Pascal cross-compiler, which is further compiled to binary code with Mad Assembler (Mads). These amazing tools were created by Tomasz Biela (Tebe).

The steps are as follows:

examples directory includes listing examples to demonstrate available features of Effectus language, which can be basis for your further development and experimentation.

My special thanks and credits go to:


What is supported?

Data types

BYTE, CHAR, INT, CARD

Extended data type

BYTE ARRAY, CARD ARRAY, POINTER SBYTE ARRAY as temporary solution for BYTE ARRAY string definitions

Conditions and branches

Graphics

PROCedures: GRAPHICS, PLOT, DRAWTO, FILL, LOCATE Global variable Color for setting the color to draw on screen

Sound

PROCedures: SOUND, SNDRST

INCLUDE files

Files can be included, starting in the same directory as main compiled listing code. Currently one level of included files is supported. This means only main listing program can read files with INCLUDE directive, but not any other files, even if they have this directive called in.

String manipulation

PROCedures: STRB, STRC, STRI, SCOPY, SCOPYS, SASSIGN, INPUTS, PRINT, PRINTE, PRINTB, PRINTBE, PRINTI, PRINTIE, PRINTC, PRINTCE, PRINTF, PUT, PUTE

FUNCtions: GETD, INPUTB, INPUTC, INPUTI, SCOMPARE, VALB, VALC, VALI

Arithmetic manipulation

Bitwise manipulation

Bitwise/logical operators: AND (&), OR (%), XOR (!), LSH (left shift), RSH (right shift)

Data manipulation

PROCedures: ZERO, SETBLOCK, MOVEBLOCK

DEFINE declaration (constant substitutions for any statement)

Device I/O support

PROCedures: OPEN, CLOSE, PUTD, PUTDE, PRINTD, PRINTDE, XIO, PRINTBD, PRINTBDE, PRINTCD, PRINTCDE, PRINTID, PRINTIDE, INPUTSD, INPUTMD

FUNCtions: INPUTBD, INPUTCD, INPUTID

Inline machine language

You can send parameters to machine language routines. The compiler stores parameters using A, X and Y registers, then zero-page addresses from $A3 to $AF are used.

Address nth byte of parameters


A register 1st X register 2nd Y register 3rd $A3 4th $A4 5th : : : : $AF 16th

System manipulation

PROCedures: POKE, POKEC

PROCedures: PEEK, PEEKC

Extra, non-standard statements

Misc

Effectus directory structure

Command prompt execution

effectus

Available options: -i Information about declared variables, PROCedures, FUNCtions and DEFINE constants -o: Binary file extension -c Clear summarized log file -t Effectus only translate source to Mad Pascal -z Variable zero page address -zb BYTE variable zero page address -zw CARD (word) variable zero page address -zp Pointer (PByte) zero page address

Missing features and bug issues

You can read about missing features and bug issues in additional file dev_log.txt!


Written by Bostjan Gorisek from Slovenia References: https://github.com/mariusz-buk/effectus http://freeweb.siol.net/diomedes/effectus/ https://atariage.com/forums/topic/291426-effectus-action-cross-compiler-using-mad-assembler-mads/ https://atariage.com/forums/topic/306222-effectus-suggestions-and-bug-reports/

Mad Pascal and MAD Assembler (MADS) are products written by Tomasz Biela (Tebe) from Poland References: http://mads.atari8.info/ https://github.com/tebe6502/Mad-Pascal https://github.com/tebe6502/Mad-Assembler