Jump to content



2

Effectus - New Atari cross-compiler (Alpha stage)


63 replies to this topic

#51 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Sun Feb 14, 2010 11:30 AM

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

#52 jp48 OFFLINE  

jp48

    Space Invader

  • 41 posts
  • Location:Finland

Posted Mon May 24, 2010 1:11 AM

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

View PostGury, on Sun Feb 14, 2010 11:30 AM, said:

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


#53 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Tue Jun 1, 2010 6:11 PM

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

#54 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Sat Jun 26, 2010 1:36 AM

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

#55 rchennau OFFLINE  

rchennau

    Chopper Commander

  • 173 posts
  • Location:California

Posted Sun Sep 12, 2010 9:38 PM

View PostGury, on Sun Feb 14, 2010 11:30 AM, said:

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.

#56 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Mon Sep 13, 2010 12:06 PM

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

#57 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Fri Jan 21, 2011 9:10 PM

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

#58 w1k OFFLINE  

w1k

    Dragonstomper

  • 742 posts
  • Location:martin, slovakia

Posted Mon Oct 3, 2011 8:57 AM

Hello, whats new in develop?

#59 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Wed Feb 8, 2012 7:44 AM

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, Wed Feb 8, 2012 7:50 AM.


#60 w1k OFFLINE  

w1k

    Dragonstomper

  • 742 posts
  • Location:martin, slovakia

Posted Wed Feb 8, 2012 8:06 AM

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, Wed Feb 8, 2012 8:19 AM.


#61 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Wed Feb 8, 2012 8:36 AM

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, Wed Feb 8, 2012 8:51 AM.


#62 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Thu Feb 9, 2012 12:21 PM

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.

#63 w1k OFFLINE  

w1k

    Dragonstomper

  • 742 posts
  • Location:martin, slovakia

Posted Thu Feb 9, 2012 1:36 PM

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,8)
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, Thu Feb 9, 2012 1:37 PM.


#64 Gury OFFLINE  

Gury

    Dragonstomper

  • 779 posts

Posted Fri Feb 10, 2012 1:35 AM

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.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users