Jump to content
IGNORED

Action! Standalone executable


Recommended Posts

HI

 

I've started playing with Action! language and I am impressed so far.

 

One thing that I couldn't find yet is how (or if it is possible) to create standalone programs using Action! or any application made with it cannot be executed without it?

 

I read somewhere that OSS had a runtime library as product, but I am not sure if that is available nowadays.

 

Thanks

 

 

Paulo

Link to comment
Share on other sites

HI

 

I've started playing with Action! language and I am impressed so far.

 

One thing that I couldn't find yet is how (or if it is possible) to create standalone programs using Action! or any application made with it cannot be executed without it?

 

I read somewhere that OSS had a runtime library as product, but I am not sure if that is available nowadays.

 

Thanks

 

 

Paulo

The AtariWiki ACTION! area has a Runtimes section.

Link to comment
Share on other sites

Just a side note, you can make Action! programs that run w/o the run time package just by not using any of the canned code in the cartridge. No POKE() or Graphics() calls. It is hard and pointless to do :) The biggest program I did was a translation of the code PRETTY.ACT to run w/o the cart. You still get some of the advantages of the cart like all the conditional constructs, points, 16 bit math, ...

This is just a little snippet that should compile, be saved, and run w/o the cart inserted.

Proc Main()

CARD MSC=88
Byte Fill=[33],;screen code for 'A
CNT,Key=764
BYTE POINTER Bptr

For BPTR=MSC TO MSC + 500

DO
Bptr^=Fill
OD

While Key=255 DO OD
Key=255
RETURN

Link to comment
Share on other sites

 

No POKE() or Graphics() calls. It is hard and pointless to do :)

 

I would friendly disagree - this is a perfect technique and is used in most large Action! games, e.g. from tdc and jhusak. This is not crazy at all - when writing a large® software you need to have your own display list and stuff like sprites, fast drawing and such, so system routines are basically useless.

For POKE() there is a nice trick of declaring an array for the whole memory - I am no Action! programmer so I do not remember the idiom, but after such a declaration you just write sth like MEMORY($d40f) = $01 and you are good to go!

Also procedures must get at most 3 parameters (AFAIR), if more, it uses the library.

Edited by pirx
  • Like 1
Link to comment
Share on other sites

Yes, but it isn't always the clear winner you would think it would be. For instance, the

 

DO

Bptr^=Fill

OD

 

Is IMHO one of the clearest and universal programming constructs: Everyone who understands pointers which is a huge set of C and its derivatives and most assembly language programmers would recognize it. Constructs for block moves, screen clear, P/M moves, et cetera can all be done with pointers too. The problem comes with speed of the routine is actually much slower then the canned code in the cartridge! OK, so to get the speed up you write your own routines to run as code blocks *BUT* then you are pretty much back with using the run time code which is essentially if not specifically from the cartridge. Understand I love "Stupid Programming Tricks" probably more then most people but I try not to impose my quirks on others! :) If someone wants to do a graphics() call rather then include a byte array with a display list, I am fine with it.

 

Right now I would rather see the effort put into a 65C02 or 65C816 Action library but I can't get off my dead 'rear end' to do it myself.

Link to comment
Share on other sites

  • 3 weeks later...

Don't forget when creating Action! executables to either insert:

 

BYTE rts=[$60]

 

as the first line of code in your program or else use a disk editor (like the ICD one) to change the init address from $02E2-3 to $02E0-1. If you don't bad things can happen under SpartaDos. Or get a patched copy of the cartridge where the run address has been corrected.

Link to comment
Share on other sites

Right now I would rather see the effort put into a 65C02 or 65C816 Action library but I can't get off my dead 'rear end' to do it myself.

 

Why would we need a new library ? The existing ones are pretty comprehensive I think. What functionality do you think we're missing ?

Link to comment
Share on other sites

Performance could be improved. John Harris posted a ML 65C816 code snippet for a memory move that was only ~21 bytes and maybe twice as fast as a standard 6502. It would improve functions like word processing inserts and many games.

 

Been a while since I last looked but the new op codes in the 65C02 would make look up tables, structures, interpreters, anything that uses indexes or look up tables a little tighter and clearer.

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...