atarionline.pl Effectus - Action! cross-compiler - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1: CommentAuthorzbyti
    • CommentTime23 Apr 2020 zmieniony
     
    Effectus (0.4 Beta R4) 22.04.2020

    This is new version of Effectus, done from scratch. This is new branch version, currently only for Windows platform. Other platforms will be supported when vital parts of the program will be more stable.

    The most important thing to consider was properly handling of Action! statements (declarations, commands, assignments...) and multi-line support.

    The next most important change is the way code is generated. I took Mad Pascal as the basis for generating source code listings, which are further compiled to binary code with Mad Assembler (Mads). Many thanks to Tomasz Biela (Tebe), author of these great tools. He made this all possible!

    The steps are as follows:
    - Action! code is parsed and appropriate Mad Pascal source code listing is generated
    - Mad Pascal compiles this code to *.a65 file prepared for compilation by Mad Assembler
    - Mad Assembler compiles *.a65 file to final binary code (*.xex)

    examples directory includes test examples, which can be basis for your further development and experimentation.

    You can read about current development here ->link<-

    AtariAge forum ->link<-

    GitHub ->link<-

    Dev-log ->link<-
    • 2: CommentAuthorzbyti
    • CommentTime29 Apr 2020 zmieniony
     
    New version before going from Beta stage is here: 0.4 Beta R5 ->link<-

    - Machine language support in custom PROCedures and FUNCtions
    (currently, function returns a 0 as result - to be fixed)
    - Better support for regular expressions:
    - mixing of operators (f.e. hundreds = ((jifs MOD 60)*100)/60)
    - indication of BYTE ARRAY or CARD array variables (f.e. sum = n + arr(1))
    - InputSD, InputMD procedures support
    - EOF (end of line) variable support in IF, WHILE and UNTIL branch conditions
    - Bug fixes:
    - correct assignment of read value from GetD function to a variable
    - PrintDE, PrintBDE, PrintCDE, PrintIDE: correct handling on new line ($9b) character

    - New examples

    Action!/Effectus source code listing can reside on any path and resulting code is now also generated there.

    Source code will be released with next version!
    • 3:
       
      CommentAuthorshanti77
    • CommentTime29 Apr 2020
     
    To można porównać do tłumaczenia translatorem google z polskiego na rosyjski i później na angielski, efekt może być słaby.
    • 4: CommentAuthorzbyti
    • CommentTime29 Apr 2020
     
    @shanti77 najnowszej gałęzi 0.4 (pisanej od zera) nie testowałem bo jeszcze nie ma kompilacji na linucha, ale 0.3 była lekko szybsza od natywnego Action!
    • 5:
       
      CommentAuthorKaz
    • CommentTime30 Apr 2020
     
    Dzięki Zbyti za info o update-ach!
    • 6: CommentAuthorzbyti
    • CommentTime1 May 2020 zmieniony
     

    Gury:

    New version 0.4

    - Support for TYPE records (example attached)
    - Source code released

    The program resides on the following link.

    Currently, win32 platform is supported. Other platforms will be supported with your help. Actually, Windows 64-bit version can be prepared by me.


    Some info for future development...

    - DEFINE support will be enhanced by using 2-pass parsing method. This should include also INCLUDE statements.

    - Answers bring another 100 questions and problems... I already have ideas to fix current program

    Enjoy!

    ->link<-
    • 7: CommentAuthorzbyti
    • CommentTime1 May 2020 zmieniony
     
    Kompilacja Effectus 0.4 dla używających 64-bit systemu Linux do pobrania (wraz z instrukcją) tutaj: ->link<-
    • 8:
       
      CommentAuthorKaz
    • CommentTime1 May 2020
     
    No proszę, projekt znowu się rozwija, wystarczyło odrobinę zainteresowania, aby się pojawiła motywacja.
    • 9: CommentAuthorzbyti
    • CommentTime1 May 2020 zmieniony
     
    Kompilacja Effectus 0.4 dla 64-bit Linuxa z poprawiony skryptem do budowania i jedną sugestią Gurego.

    Set  EFFECTUS_HOME to your proper location in effectus.sh.

    Add $EFFECTUS_HOME/effectus and $EFFECTUS_HOME/effectus.sh (as effectus-build) to your path:

    ~/bin$ ln -s $EFFECTUS_HOME/effectus.sh effectus-build
    ~/bin$ ln -s $EFFECTUS_HOME/effectus effectus


    Now you can do this:

    ~$ effectus file.eff ---> compile to file.pas
    ~$ effectus-build file.eff --> create output directory with file.xex
    ~$ effectus-build file.eff run --> create output directory with file.xex and run with atari800
    • 10: CommentAuthorzbyti
    • CommentTime1 May 2020
     
    Dla miłośników MacOS Eyvind Bernhardsen przygotował kompilację na ten system ->link<-
    • 11: CommentAuthorGury
    • CommentTime1 May 2020
     
    Hi there!

    Effectus suggestions and bug reports:

    ->link<-

    Best regards,
    Boštjan
    • 12: CommentAuthorzbyti
    • CommentTime1 May 2020
     
    @Gury Great, I'm going to test Effectus until 1.0 version ;)
    • 13: CommentAuthorGury
    • CommentTime1 May 2020
     
    That's the spirit :)
    • 14: CommentAuthorzbyti
    • CommentTime2 May 2020
     
    Nowa kompilacja dla Linuxa ->link<- poprawiłem problem ze ścieżkami.
    • 15:
       
      CommentAuthorKaz
    • CommentTime7 May 2020
     
    Gdy mamy komentarz, dlaczego Effectusa ktoś nie używa, to można spróbować wyeliminować braki, żeby zaczął :)

    ->link<-
    • 16: CommentAuthorzbyti
    • CommentTime9 May 2020 zmieniony
     
    Nowa wersja 0.4.1 poprawiająca najbardziej uciążliwe błędy wydania 0.4 już wydana ->link<-

    Gury:

    Bug fixes:

    removed ASCII character 9 from processed Action! listing, which could break further compilation of the code
    removed duplication code in variable declaration block of Mad Pascal listing
    removed duplicated begin code blocks
    proper handling of machine language following the PROC/FUNC declaration statement
    PROC/FUNC parameters (automatic translation of character to ATASCII value in Mad Pascal listing code, f.e.: SetBlock(flags, 8190, 'T) <==> FillChar(FLAGS, 8190, 84);
    branches:
    proper handling of IF condition with brackets (f.e. IF (X+Y)<=RADIUS THEN BINGO==+1 FI)
    better handling of WHILE and FOR closing OD statements
    proper handling of logical expressions in Action! resulting to TRUE value in Mad Pascal (WHILE I DO <==> while I > 0 do begin)
    proper handling of increments/decrements with BYTE ARRAY variables (f.e. DL(4)==+1)
    PrintD, PrintDE proper comma (,) determination in text

    New features:

    BYTE ARRAY variable declaration with continuous bytes supported (f.e. BYTE ARRAY DL=[$70$70$70$56$C$20$41$1$20])
    added # comparison operator (substitution for <>)

    Misc:

    some Mad Pascal listing code indentation corrections
    added missing line ending character
    added new examples by zbyti (resieve.eff, fillscr.eff)
    removed some unused code
    code optimization
    • 17: CommentAuthorzbyti
    • CommentTime10 May 2020 zmieniony
     
    Jakby ktoś się dziwił dlaczego czekam na Effectusa to wynik szybkości działania osatniej wersji 0.4.1 Vs. Action! 3.7P.

    Test wzięty z czasopisma Analog, kod praktycznie ten sam, dla Effectus zmieniono tylko rozszerzenie pliku i oczekiwanie na klawisz na końcu programu.

    Effectus 2x szybszy od Action!

    Oczywiście taki wynik Effectusa to także duża zasługa kompilatora TeBe-go!
    • 18:
       
      CommentAuthorKaz
    • CommentTime10 May 2020
     
    Nieźle. Faktycznie warto mocno pomagać Guremu, żeby dokończył Effectusa.
    • 19: CommentAuthorzbyti
    • CommentTime10 May 2020 zmieniony
     
    No to jeszcze jeden test "tym drugim" algorytmem na SIEVE ;)

    Znów Effectus daje czadu!

    Chociaż widzę, że jest mały błąd bo wyniki się różnią, zaraz to zgłoszę Guremu. A może błąd jest gdzie indziej? Sprawdzę to.

    EDIT: wrzucam jeszcze wynik Mad Pascala.
    • 20: CommentAuthorGury
    • CommentTime10 May 2020
     
    Thank you for testing!
    • 21: CommentAuthorzbyti
    • CommentTime10 May 2020 zmieniony
     
    Ok to był mój błąd w deklaracji wielkości tablicy w Action!
    • 22: CommentAuthorzbyti
    • CommentTime13 May 2020 zmieniony
     
    Odpowiedź na moje pytanie co działa w wersji 0.4.1 a co nie, tak bym miał jakiś punkt odniesienia.

    Gury:

    Of course, I can do that, but this is not de facto list, because there is so much going on with Action!

    My site providing old version of Effectus has a list of supported and unsupported routines here. Most of it is supported also in new version, except the following:

    - PROCs: XIO, Note, Point
    - Directives and special PROCs: MODULE, INCLUDE, SET, Error

    There are lot of missing features in syntax, but they will be solved step by step. We have to distinguish between already known errors and those not yet discovered. Action! has very interesting syntax and the ways of doing things. It is a derivate between C and Pascal code style with some similarities with Clipper. It is typed language, but with more freedom than C or Pascal. It is nearly like JavaScript vs C# or Java. It allows you more freedom in coding, but more errors can arise.

    It is not definite list of errors yet, but it is a start:

    - TYPE and BYTE/CARD ARRAY structure has some rules to follow to be compiled correctly
    - BYTE/CARD ARRAY declaration with predefined values makes some problems depending on how it is declared
    - FUNCtions with machine language code
    - Declared strings have to be of non-standard type I temporarily called SBYTE ARRAY because of the way Action! handles bytes. Effectus will have to immitate it like Action! does, byte by byte, which are concatenated together to form a string.
    - PROC/FUNC parameter types: BYTE ARRAY, CARD ARRAY, POINTER
    - pointers are not yet fully supported

    That's it for now!
    • 23:
       
      CommentAuthorKaz
    • CommentTime17 May 2020
     
    No to jeszcze sporo zostało.
    • 24: CommentAuthorzbyti
    • CommentTime24 May 2020 zmieniony
     
    New version 0.4.2

    New features


    - 2-pass parsing process (DEFINE constants are parsed in 2nd pass)

    - Command prompt shell (DEFINE constant list if -i option is selected)

    Bug fixes
    - Correct parsing of character "-" in Effectus source code listing files (bug found by zbyti)
    (illegal character removed from program statement in Mad Pascal, f.e. zp-sieve is translated to program zpsievePrg;)

    - Removed unnecessary FOR initial variable assignment before main FOR loop declaration

    - Joystick unit overrided Graph unit, so graphics usage was not detected. The fix enables Graph and Joystick units to be interchangeable and neither unit is removed from unit clause

    - begin word added after declaring BYTE ARRAY variable, which didn't appear in some cases

    -Action! RETURN statement in IF condition allowed, so it is possible to exit routine immediately without branching to ending RETURN statement. It is substituted with Exit statement in Mad Pascal
    Example: IF KBCODE=135 THEN RIGHT RETURN FI

    - Assignment of BYTE ARRAY varible to memory address variable is allowed,
    f.e. Action! SCREEN=SAVMSC is translated to SCREEN := pointer(word(@SAVMSC)); in Mad Pascal

    Misc
    - Compiled 64-bit versions of Mad Assembler and Mad Pascal included in Effectus 64-bit version package

    Code optimization

    ->link<-
    • 25: CommentAuthorzbyti
    • CommentTime24 May 2020
     
    Wersja 0.4.3 już wylądowała na GitHub :D ->link<-