Gury Posted January 6, 2008 Author Share Posted January 6, 2008 Hi twh/f2, Yes, you can simply copy'n'paste resulting Effectus/MADS code to your existing MADS projects, because Effectus uses MADS as assembler/linker, so they are 100% compatible. You can modify and enhance produced ASM code anytime. However, Effectus in its nature tries to simulate Action! and parse its code. There is still so much to do. When you use produced code, be sure not to interfere with your own project, because Effectus uses some internal and global variables at specific locations and stack. Modify them where necessary. Also, some linked libraries are included in the main program, depending on used functionality, with many internal functions which you can remove or enhance as you wish. Indeed, there is command line version of Effectus, called effcon. You can check for brief information at http://gury.atari8.info/effectus/effcon.htm. Currently, there is just Win32 version of the programs (GUI & console). But, Linux / Unix version may appear, but not in near future, because I do not own Linux or Unix based machine yet. However, porting the program should not be such a problem, because it's written in Free Pascal, which can produce code for many platforms and machines. Quote Link to comment Share on other sites More sharing options...
devwebcl Posted April 9, 2009 Share Posted April 9, 2009 Hello, I wonder if there is any news about this great project? Kind Regards, Devwebcl Quote Link to comment Share on other sites More sharing options...
Gury Posted April 10, 2009 Author Share Posted April 10, 2009 Hi Devwebcl, The project is not dead, don't worry. It was stopped for some time now (life and work issues), but it will continue. I plan to make a new version soon, including some necessary and important features from Action! language. Following updates will bring some freedom in programming, bringing syntax structures from languages like C# and Delphi. The main task, compiling original Action! source, will remain the same. When new versions will be published, I will appreciate very much that you folks help me test it and report back every issue you come by. Consequently, Linux version will appear. MADS version, which Effectus needs for proper compiling your programs, will be specifically mentioned. Greetings, Gury Quote Link to comment Share on other sites More sharing options...
Urchlay Posted April 10, 2009 Share Posted April 10, 2009 Consequently, Linux version will appear. If you'd released the source, a Linux version probably would already have appeared Quote Link to comment Share on other sites More sharing options...
Gury Posted April 11, 2009 Author Share Posted April 11, 2009 If you'd released the source, a Linux version probably would already have appeared Yes, probably Eventually source code will be released, but not at this point. It has to be reviewed first and when I will think it is ready for public release, I will do so. Quote Link to comment Share on other sites More sharing options...
Gury Posted June 27, 2009 Author Share Posted June 27, 2009 Hi all, Here is new version of Effectus. Most important additions are improved support for ARRAY and POINTER declaration and manipulation (but not all features are implemented yet) and limited support for arrays of TYPE records (strings not yet supported). You can look at these features in new examples here. There are many things to look at in more detail, such as handling variable expressions, including calculations, etc. Linux version is in the works, which will be very similar to Win32 console version. I have decided to drop GUI version for now. Program installation and usage is covered here. Version of MADS currently used and tested with the program is 1.8.5 and 1.8.6. New on the site will be bug tracking page for reporting errors and other peculiar behaviors of Effectus, when emulating Action! programming language. There will be explanations, what can and cannot be done with current version of the program, with appropriate source code to demonstrate particular behavior. On this page I will also demonstrate other people's findings who will help me with testing Effectus. Greetings, Gury Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted June 27, 2009 Share Posted June 27, 2009 Great! Thanks - downloading now... Quote Link to comment Share on other sites More sharing options...
Gury Posted July 15, 2009 Author Share Posted July 15, 2009 (edited) Hi there, Here is new version of Effectus! Version 0.0.9 - Linux version of the program, but it is not fully stable yet. For more information, read this. Also, I compiled MADS version 1.8.5 for Linux with Free Pascal for using with Linux version of Effectus. It can be downloaded in download section - 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 DO Print("Element ") PrintCE(item(i)) OD FOR i = 0 TO 2 DO data(i) = 1 PrintBE(data(i)) OD FOR i = 0 TO 2 DO j = data(i) PrintCE(j) OD - Arithmetics: - Increment, decrement, multiplication and division expression syntax Some examples: x==+1 x==-2 x==/3 x==*4 - Aritmetics is viable on two operands (numbers or variables, also mixed) Some examples: n1=13+76 n1=100-n2 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 shown in the following example: SCopy(Str1, Str2) - No space dependency on one line for most of the code, for example: n=10 n = 10 n=n+1 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 except if -md: parameter is used like this: effectus examples\poke.eff -md:c:\atari\utils\mads\ If config.ini file does not exist, Effectus runtime library is automatically searched in lib directory on 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:\atari\effectus\lib\ Of course, you can still use config.ini file. In this case, parameter values from that file are used by Effectus. - Revised examples showing new features Gury Edited July 16, 2009 by Gury Quote Link to comment Share on other sites More sharing options...
dwhyte Posted July 16, 2009 Share Posted July 16, 2009 (edited) Very nice! Um... Gury? Just how does one use the ASM command? Edited July 16, 2009 by dwhyte Quote Link to comment Share on other sites More sharing options...
Gury Posted July 16, 2009 Author Share Posted July 16, 2009 Very nice! Um... Gury? Just how does one use the ASM command? Hi dwhyte, The ASM command was meant as substitute for Action! statement as shown if following example: CARD FUNC MultiplyB=*(BYTE a,x) [$85 $E0 $86 $E1 $A9 $00 $85 $A0 $A2 $08 $46 $E0 $90 $03 $18 $65 $E1 $6A $66 $A0 $CA $D0 $F3 $85 $A1 $60] which will also have to be implemented in Effectus, of course. ASM is used like this: PROC WaitForKey() ASM(" mwa #$ff 764") ASM("wait ldy:iny 764") ASM(" beq wait") ASM(" mwa #$ff 764") RETURN Actually, it literary and directly makes assembler code, which is then compiled with other code as usual. I have some thoughts about making extended functionality with additional core procedures and functions, which do not exist in ordinary Action! But that can lead to potential incompatibilities with existing code, so such extensions must be thought out first. If they will exist, it would be good to be able to make a choice, which mode to use when compiling Effectus program. It could be solved with extra parameter on command line, for example. We will see. Quote Link to comment Share on other sites More sharing options...
dwhyte Posted July 16, 2009 Share Posted July 16, 2009 Thanks Gury... I think I'll be spending quite a bit of time with Effectus over the next few weeks now... Quote Link to comment Share on other sites More sharing options...
Gury Posted July 16, 2009 Author Share Posted July 16, 2009 That's great, dwhyte. Reports are welcome for future development, especially things I don't find out about myself. Some major issues, which will have to be resolved very soon, are on desk. Quote Link to comment Share on other sites More sharing options...
ascrnet Posted July 19, 2009 Share Posted July 19, 2009 hi Gury I really liked this version of console effectus, so I can use my favorite text editor. I wrote the following example ; Demo1 Effectus MODULE PROC Main() INT i GRAPHICS(2) POSITION(5,5) PRINTD(6,"hi, atariage") FOR i=0 TO 2 DO PRINTE("hi, AtariAge") OD RETURN and I see that one does not develop the command POSITION and PRINTD. I hope that progress effectus as there are several that are waiting to have something easy to program to the assembler Greetings Quote Link to comment Share on other sites More sharing options...
Gury Posted July 19, 2009 Author Share Posted July 19, 2009 Hi ascrnet, Currently only one statement is allowed on a particular line, for example, correct version in your case: POSITION(5,5) PRINTD(6,"hi, atariage") Of course, this restriction will be eliminated, but in later version. Thank you for testing, I will check PrintD routine for printing to the device. The only blocks of statements in current development of Effectus, which allow multi-line staments, are TYPE, FOR and WHILE. Other missing block will follow. I am in the middle of preparing new version with new features, changes and fixes. One of them will be renaming Effectus variables internally to ones with specific prefix or suffix, because there is an issue when the variable name with the same name as existing one in specific assembly runtime library is used. I will try to make some more time for Effectus, I really want to make it more complete. Quote Link to comment Share on other sites More sharing options...
Gury Posted July 25, 2009 Author Share Posted July 25, 2009 (edited) Hi all, New version of Effectus is here. Hey ascrnet, the example you provided works now. Only take into consideration to split statements in separate lines. You actually found a bug when printing to the device with PrintD and PrintDE procedures. Thank you! Linux version was compiled and tested in Ubuntu 8.10. Linux version of Effectus still has some problems in compiling some of the example programs. I will look at it in more detail. You can find Effectus also on http://www.atari-effectus.com/, http://www.atari-effectus.org/ and http://www.atari-effectus.net/ Use Refresh button to refresh cached pages if it happens the web browser renders old ones. Version release 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==!2 n=n XOR 2 n==!n n=n&40 n==&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 (7) - 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 Greetings to all Atarians Edited July 25, 2009 by Gury Quote Link to comment Share on other sites More sharing options...
ascrnet Posted October 9, 2009 Share Posted October 9, 2009 hi Gury I tested the latest version of effectus and still fails to print in Figure 2 how ; Demo Effectus MODULE PROC Main() INT i GRAPHICS(2) POSITION(5,5) PRINTD(6, "hi, atariage") FOR i=0 TO 2 DO PRINTE("hi, AtariAge........") OD RETURN Errore : _str_buffer_8 .byte '' demo.asm (29) ERROR: String error org $3200 icl 'c:\effectus\lib\equates.asm' icl 'c:\effectus\lib\common.asm' .var i .word ; Demo Effectus MAIN Graphics #2 Position #5, #5 Read #$60, #9, #_str_buffer_8, #1 mwa #0 I for_loop_1 jsr printf dta c'hi, AtariAge........',$9b,0 inw I ldx I cpx #3 jcc for_loop_1 jmp * .link 'c:\effectus\lib\runtime.obx' .link 'c:\effectus\lib\graphics.obx' .link 'c:\effectus\lib\printf.obx' .link 'c:\effectus\lib\io.obx' _str_buffer_8 .byte '' run Main greetings Quote Link to comment Share on other sites More sharing options...
Gury Posted October 9, 2009 Author Share Posted October 9, 2009 Hi ascrnet, I tested your example and obviously comma (",") is not allowed in the string parameter of PrintD command. I will look into the problem and report when it is fixed. Quote Link to comment Share on other sites More sharing options...
ascrnet Posted October 10, 2009 Share Posted October 10, 2009 Hi ascrnet, I tested your example and obviously comma (",") is not allowed in the string parameter of PrintD command. I will look into the problem and report when it is fixed. Thanks Gury, I will keep trying and let you know if I find something strange. greetings Quote Link to comment Share on other sites More sharing options...
ascrnet Posted October 15, 2009 Share Posted October 15, 2009 hi, Gury :!: It does infinite loops with the command DO OD ; Demo Effectus MODULE PROC Main() BYTE i GRAPHICS(2) DO POSITION(7,5) i=RAND(255) PRINTID(6,i) POKE(710,i) OD RETURN greetings Quote Link to comment Share on other sites More sharing options...
Gury Posted October 16, 2009 Author Share Posted October 16, 2009 Thanks, ascrnet. The issues are noted. DO OD works currently only with loop statements and surely it has to be fixed. Quote Link to comment Share on other sites More sharing options...
Gury Posted October 18, 2009 Author Share Posted October 18, 2009 Hi, ascrnet! Here is new version 0.0.13 of Effectus. Please try again to compile your programs above. Loops with directives DO OD should work now. I also implemented EXIT directive for escaping from loop statements, including FOR and WHILE. Check the Examples page for additional examples, where also your examples are included. Also implemented is SCopyS command. Greetings Quote Link to comment Share on other sites More sharing options...
Jim Patchell Posted February 9, 2010 Share Posted February 9, 2010 I was wondering if there has been any Action! on the Effectus compiler lately? -Jim Quote Link to comment Share on other sites More sharing options...
Jim Patchell Posted February 9, 2010 Share Posted February 9, 2010 (edited) Opps... -Jim Edited February 9, 2010 by Jim Patchell Quote Link to comment Share on other sites More sharing options...
Gury Posted February 11, 2010 Author Share Posted February 11, 2010 I was wondering if there has been any Action! on the Effectus compiler lately? -Jim Hi Jim, sorry for my late reply. If I understand your question correctly, you wonder if there is any new development of Effectus? Of course, it will be as soon as I get some more time. January and February were/are terrible, because my occupation didn't permit any time for anything else in my free time. Too tired. I hope everything will return to normal soon. Greetings Quote Link to comment Share on other sites More sharing options...
Jim Patchell Posted February 14, 2010 Share Posted February 14, 2010 Thanks for the reply...you answered my question. I only recently found out about effectus and noticed that the last update was in october. I know from my own expreience with projects that it is easy to get off onto something else and never finish it. I am looking for programming tools (cross compilers, cross assemblers, etc) for using with a planned project which is to re-create the Atari 800 in an FPGA. Action! was always a good fit for the 6502/Atari and was pleased when I found out somebody was working to that end. Good luck with the project. -Jim Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.