pedgarcia Posted June 19, 2016 Share Posted June 19, 2016 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 Quote Link to comment Share on other sites More sharing options...
joyfulcoder Posted June 19, 2016 Share Posted June 19, 2016 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. Quote Link to comment Share on other sites More sharing options...
JoSch Posted June 19, 2016 Share Posted June 19, 2016 Also, in this forum is a thread about the Action sources. Somewhere in it are new compiled action executables including runtime sources , you can include in your program. Quote Link to comment Share on other sites More sharing options...
pedgarcia Posted June 19, 2016 Author Share Posted June 19, 2016 Thanks guys. I looked all over the place! I can't believe I didn't see that. THanks a lot! Paulo Quote Link to comment Share on other sites More sharing options...
ricortes Posted June 21, 2016 Share Posted June 21, 2016 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 Quote Link to comment Share on other sites More sharing options...
pirx Posted June 22, 2016 Share Posted June 22, 2016 (edited) 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 June 22, 2016 by pirx 1 Quote Link to comment Share on other sites More sharing options...
ricortes Posted June 22, 2016 Share Posted June 22, 2016 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. Quote Link to comment Share on other sites More sharing options...
Alfred Posted July 12, 2016 Share Posted July 12, 2016 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. Quote Link to comment Share on other sites More sharing options...
Alfred Posted July 12, 2016 Share Posted July 12, 2016 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 ? Quote Link to comment Share on other sites More sharing options...
ricortes Posted July 12, 2016 Share Posted July 12, 2016 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. 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.