Jump to content
IGNORED

Effectus - New Atari cross-compiler (Alpha stage)


Gury

Recommended Posts

Hi,

 

My project is not abandoned, the problem is lack of time. I agree that it is easy to abandon the project, it is even easier to just watch the development. I released the source code, so anybody can continue with the project. I will focus on my version with Action! syntax, no matter how many similar parallel projects will appear.

 

Gury

Link to comment
Share on other sites

  • 3 months later...

Hi Gury,

 

Very nice to hear that the project has not been abandoned ! I've used effectus for few simple task,

however I'm mostly interested of using POKEY with it. There seems to be a problem with the

Sound-command, can't find any reason why it doesn't work as it should be. Anyway, here's an example

code:

 


FOR i = 5 TO 120
DO
PrintBE(i)
Sound(1,i,10,10)
j=0
WHILE j<4000
DO 
j=j+1 
OD
SndRst()
OD

 

About half of the notes works (plays), second half is silent, just two clicks (opening/closing the speaker)

is heard.

 

Sorry if this is wrong place to send error/bug reports, didn't find any other.

 

Good luck for the project, hope you find time as Action!/effectus is an excellent choice for the cross-compiler, there are not too many Atari cross-compilers for Windows/Linux out there !

 

 

-J

 

Hi,

 

My project is not abandoned, the problem is lack of time. I agree that it is easy to abandon the project, it is even easier to just watch the development. I released the source code, so anybody can continue with the project. I will focus on my version with Action! syntax, no matter how many similar parallel projects will appear.

 

Gury

Link to comment
Share on other sites

  • 2 weeks later...

Hi jp48,

 

Of course, the project is alive and I will come to it when I get more free time again. No problem, you can post any bugs, observations or suggestions here. I plan to recode some parts of Effectus and add new features, eventually.

 

Greetings,

Gury

Link to comment
Share on other sites

  • 4 weeks later...

Hello there,

 

New version of Effectus is here (0.0.14). You can check the complete list of new features here. Main features are:

 

- Declaring machine language code in PROCs and FUNCs

 

Example:

PROC PokeTest=*()[$A9 $30 $8D 710 $0 $60]

For this, new configuration parameter was added, called ML_ORG - machine language starting address (-sm switch in program parameter list). If not used, default value of hex $8000 is used. Note that this functionality doesn't work on any place in the code yet, just in PROC and FUNC declaration for now.

 

- New ARRAY functionality:

 

- INT and CARD ARRAY string assignments. Example:

 

CARD ARRAY item(2)

item(0)="String in CARD ARRAY"

item(1)="Additional string"

 

- BYTE and CHAR ARRAY string initialization. Example:

 

BYTE ARRAY str1="Text"

BYTE ARRAY str2(20)="New text"

 

- Proper compilation of lowercase / uppercase code

 

Also check what limitations still remain. Unfortunately, some bugs appeared in new version, which will be checked and fixed in future version. All noted bugs are listed in Observation page at the bottom of the text. This is new page on my site, where you can check details about development of Effectus. This page can change on daily basis, depending on time I have for the development.

 

Linux version of Effectus will be ready soon.

 

Effectus is compiled with Free Pascal 2.2.4 on Windows platform. MADS version used is 1.9.0.

 

Greetings,

Gury

Link to comment
Share on other sites

  • 2 months later...

Hi,

 

My project is not abandoned, the problem is lack of time. I agree that it is easy to abandon the project, it is even easier to just watch the development. I released the source code, so anybody can continue with the project. I will focus on my version with Action! syntax, no matter how many similar parallel projects will appear.

 

Gury

 

Hey Gury, good work. I stopped by your site to download latest version of Effectus for Linux but noticed the link was broken. I left a message on your forum... Thanks for making a cool product.

Link to comment
Share on other sites

Hi rchennau,

 

Sorry for the broken link for Linux version. I will compile program for both platforms in next update. Actually, I added some new features in new version, but didn't have time for releasing it yet. Thank you for posting on the forum.

 

Greetings

Link to comment
Share on other sites

  • 4 months later...

Hello,

 

New version of Effectus is ready, version 0.0.15. You can download Win32 and Linux versions here.

 

You can check and try examples to see what features are available and what is still missing. You are invited to test new version and make new working examples. And please, be gentle, many features are still missing.

 

Gury

Link to comment
Share on other sites

  • 8 months later...
  • 4 months later...

Hello there,

 

New version of Effectus is ready here.

 

Some insights from new version:

  • Declaring machine language code in FUNC statements (currently two byte parameters supported, passed through accumulator and x register)
  • UNTIL loop implemented (currently only byte values supported)
  • Math operators + and - can have multiple operands on the same line (but of same type for now)

Link: http://gury.atari8.i...fectus/news.htm

 

Examples can be found here. Try and experiment with examples, report any bugs and post any new working and interesting examples for everyone to share.

 

Effectus is compiled with 32-bit version of Free Pascal Compiler, version 2.6.0. It was tested with MADS cross-compiler, version 1.9.3. Program was not yet tested on 64-bit Windows platforms. Linux version will be ready in next stable release.

 

Many features are still missing, which will be observed and implemented in the future.

 

Gury

Edited by Gury
Link to comment
Share on other sites

i go testing :)

 

edit.. doesnt work:

 

; butterfly  by michael mitchell
; 01/20/85
PROC DEMO2()
CARD A,B,C,D,X,Y,J,K,COL,I,Q
  Graphics(11)
 Poke(710,0)
 Color=00
 A=1 B=1 C=1 D=1
 X=Rand(70)+1
 Y=Rand(190)+1
 J=Rand(50)+1
 K=Rand(190)+1
 For I=1 TO 9400
 DO
   Plot(X,Y)
   Drawto(J,K)
   Plot(J,Y)
   Drawto(X,K)
   X==+A
   Y==+B
   J==+C
   K==+D
   Q=Rand(50)
   IF Q>40 THEN
  COL==+1
   FI
   IF COL>14 THEN
  COL=1
   FI
   COLOR=COL
   IF X>=79 THEN A=-A X==+A  FI
   IF J>=79 THEN C=-C J==+C FI
   IF J<=0 THEN C=-C J==+C FI
   IF X<=0 THEN A=-A X==+A FI
   IF Y>=191 THEN B=-B Y==+B  FI
   IF K>=191 THEN D=-D K==+D  FI
   IF K<=0 THEN D=-D K==+D  FI
   IF Y<=0 THEN B=-B Y==+B FI
 OD
RETURN

Edited by w1k
Link to comment
Share on other sites

Hello w1k,

 

This example actually works, but with small changes. I have already tested your example on Effectus forum, where you put it. The problem is that Effectus does work on one-line basis, that means expressions have to be on separate lines. There are exceptions where it is allowed to use multi line layout, such as statements and TYPE and ARRAY elements. Of course, I will fix this in one later version, where also major core code changes will take place.

 

I am preparing new version where examples like this:

 

A=-A

 

will be allowed but I have to test some things first.

 

Your modified example follows:

 

; butterfly  by michael mitchell
; 01/20/85
PROC DEMO2()
CARD A,B,C,D,X,Y,J,K,COL,I,Q
  Graphics(11)
 Poke(710,0)
 Color=00
 A=1
 B=1
 C=1
 D=1
 X=Rand(70)+1
 Y=Rand(190)+1
 J=Rand(50)+1
 K=Rand(190)+1
 For I=1 TO 9400
 DO
Plot(X,Y)
Drawto(J,K)
Plot(J,Y)
Drawto(X,K)
X==+A
Y==+B
J==+C
K==+D
Q=Rand(50)
IF Q>40 THEN
  COL==+1
FI
IF COL>14 THEN
  COL=1
FI
COLOR=COL
IF X>=79 THEN
  A=-A
  X==+A
FI
IF J>=79 THEN
  C=-C
  J==+C
FI
IF J<=0 THEN
  C=-C
  J==+C
FI
IF X<=0 THEN
  A=-A
  X==+A
FI
IF Y>=191 THEN
  B=-B
  Y==+B
FI
IF K>=191 THEN
  D=-D
  K==+D
FI
IF K<=0 THEN
  D=-D
  K==+D
FI
IF Y<=0 THEN
  B=-B
  Y==+B
FI
 OD
RETURN

Edited by Gury
Link to comment
Share on other sites

Hmm, I found strange behaviour of random function at location $D20A when using it in Effectus code. It seems to work very randomly (ok) in Atari800Win PLus 4.1 emulator, but not in Altirra. Rand.eff program from Examples repository just keeps giving same results in Altirra. I tried similar example using rnd fuction in MADS, which gave same strange behaviour. Is there any memory conflict I don't see from Effectus code or is there something to be set in Altirra? I also tried same example in Action!, which worked correctly.

Link to comment
Share on other sites

i dont know.. ask author of that emulators..

 

btw, pacman:

MODULE

BYTE LEVEL,CRSINH=752
CARD SCORE

PROC PAUSE(BYTE J)
CARD K
FOR K=0 TO J*J DO OD
RETURN

PROC PLAYFIELD()
BYTE COLPF=710,COLPM=709,I
GRAPHICS(0)
COLPF=192
COLPM=206
CRSINH=1
POSITION(14,2)
PRINT("MINI PACMAN")
POSITION(9,5)
PRINT("[--------------------------------]")
FOR I=6 TO 12
DO
POSITION(9,I)
PRINT("|--------------------------------|")
OD
POSITION(9,13)
PRINT("[--------------------------------]")
POSITION(14,14)
PRINTE("SCORE:")
POSITION(14,4)
PRINT("LEVEL: ")
PRINTBE(LEVEL)
RETURN

BYTE FUNC GETLEVEL()
BYTE I
DO
OPEN(1,"K:"4,0)
I=GETD(1)
CLOSE(1)
UNTIL (I>48 AND I<58)
OD
RETURN(I-48)

PROC SETUP()
GRAPHICS(0)
CRSINH=0
POSITION(5,5)
PRINT("GET GAME LEVEL (1-9)?")
LEVEL=GETLEVEL()
CRSING=1
PUTE()
SCORE=0
RETURN

PROC END(CARD SCORE)
BYTE I
FOR I=0 TO 15
DO
SOUND(1,10*(15-I),2,(15-I))
PAUSE(40-I)
OD
SNDRST()
GRAPHICS(0)
CRSINH=1
POSITION(15,
PRINT("SCORE:")
PRINTCE(SCORE)
PAUSE(200)
CRSINH=0
POSITION(11,14)
PRINT("ANOTHER GAME Y/N?")
OPEN(1,"K:",4,0)
I=GETD(1)
CLOSE(1)
IF I=78 OR I=110 THEN
BREAK()
FI
RETURN

PROC GAME(BYTE LEVEL)
BYTE XP,YP,DX,DY,XM,YM,
   A,B,I,S,C,Q
FOR Q=LEVEL TO 20
DO
PLAYFIELD()
XP=10 YP=6 XM=29 YM=12
I=0
DO
A=LOCATE(XP,YP)
B=LOCATE(XM,YM)
POSITION(XP,YP)
PUT(188)
POSITION(XM,YM)
PUT(162)
PAUSE((20-LEVEL)*5)
S=STICK(0)
IF A=46 THEN
SOUND(0,100,10,10)
A=32
I==+1
SCORE==+1
FI
IF S=8 AND XP<29 THEN DX=2
ELSEIF S=11 AND XP>10 THEN DX=0
ELSE DX=1
FI
IF S=13 AND YP<12 THEN DY=2
ELSEIF S=14 AND YP>6 THEN DY=0
ELSE DY=1
FI
XP==+DX-1
YP==+DY-1
POSITION(22,14)
PRINTC(SCORE)
SNDRST()
POSITION(XP-DX+1,YP-DY+1)
PUT(A)
POSITION(XM,YM)
PUT(B)
C=RAND(10)
IF C<LEVEL THEN
IF XP>XM THEN XM==+1
ELSEIF YP<YM THEN XM==-1
FI
IF YP>YM THEN YM==+1
ELSEIF YP<YM THEN YM==-1
FI
FI
IF XP=XM AND YP=YM THEN RETURN
FI
UNTIL I=140 OD
LEVEL==+I
OD
RETURN

PROC PACMAN()
DO
SETUP()
GAME(LEVEL)
END(SCORE)
OD
RETURN

Edited by w1k
Link to comment
Share on other sites

Thanks for new example w1k. These examples will be put to Examples repository when Effectus gets more features to be able to compile them correctly. Major code revision is planned to make Effectus work with Action! syntax more closely, because current code is not so flexible.

Link to comment
Share on other sites

  • 2 years later...

Hello there,

here is new version of Effectus, version 0.0.18. There are some new features and of course, there will be more when I get more time for developing.

 

Click here for news.

 

If there is someone willing to compile it for Linux or MacOS systems, be my guest (I have no capacity for new platforms right now). It is written in pure Free Pascal, so it can be ported to many platforms and micro-processors.

 

Greetings,

Gury

  • Like 1
Link to comment
Share on other sites

Hi Gury.

 

Thanks for further development of Effectus. I've compiled it on Linux without issues, although I've one strange behaviour. Doesn't matter how I define MADS_DIR in config.ini (either it's a full path, or left empty with . included in $PATH) I get, eg for printf.eff from examples:

 

"

An unhandled exception occurred at $080CD183 :

EProcess : Executable not found: "mads printf.asm -o:printf.xex -x"

$080CD183

$080A3696

$08048FE4

"

 

I guess the problem is in / vs \ path separator, but maybe I'm missing something and it's just a matter of correct escaping of these chars?

Link to comment
Share on other sites

 

Hi.

 

Yes, I've mads inside of ~/Effectus dir and I tried:

 

- full paths (eg /home/greblus/Effectus/)

- short paths (eg ~/Effectus)

- no path at all and . set in $PATH

 

I see the following intriguing output of strace:

 

access("/home/greblus/Effectus/mads printf.asm -o:printf.xex -x", F_OK) = -1 EN

OENT (No such file or directory)

 

and it seems that access is the reason: it is trying to check if a complete command is an existing and accessible file.

 

another try with python and os.access to be sure:

 

>>> os.access('/home/greblus/Effectus/mads', os.F_OK)

True

>>> os.access('/home/greblus/Effectus/mads printf.asm', os.F_OK)

False

Link to comment
Share on other sites

Hmm, tuff one. Maybe it is a problem with created output files or maybe the Effectus code itself for handling external files, in this case, running mads executable program. The problem does not appear in Win32 version. I will check this out.

Link to comment
Share on other sites

MrFish, good one :)

 

Greblus, can you please tell me if you also tried to compile any example from /example directory with mads program directly (from console):

 

/home/greblus/Effectus/mads printf.asm -o:printf.xex -x (not through Effectus program)?

 

If there is a problem only with Effectus, I will check and adapt code for Linux version and distribute the code here for testing. I would test the code myself if I had available Linux environment (I hope to set it up as soon as possible).

Link to comment
Share on other sites

Hi again. Quick test:

 

R1 works

R1a works (well almost, eg for printf.eff the output file is printf.xex -x)

R1b doesn't create xex file

 

One more small notice: the standard output of effectus contains two new lines like that:

 

greblus@localhost:~/Effectus$ ./effectusR1 printf.eff

 

 

greblus@localhost:~/Effectus$

 

It could be a bit more verbose, or display... nothing :)

 

Thanks again Gury! I'll have some more fun with effectus over the week end.

Edited by greblus
Link to comment
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...