Please or Register to create posts and topics.

Hi there

Hi,

My name is Thorsten Otto. I recently registered to this forum, because i've got some questions regarding creation of STOS extensions. But just realized that there is not much activity here 😉

So, before going into too much detail, will this be the right place to ask? Or are other places (like the facebook group) better suited?

 

Hi Thorsten,

Good to have you here. Yeah, it's a little quiet on the forums here, with lots of stuff generally just going on the Facebook page mostly. However, I'll always respond to stuff posted here and hopefully will be able to answer questions you have about creating extensions.

Ask away!

Neil.

Thanks for your quick answer.

So first to clarify: i'm quite experienced in programming on the atari, but i never used STOS "back in the days". It's only in the last few weeks that i took a thorough look at the available sources. I took them and did changes to be able to compile them using PASM (my preferred assembler), and also compared some of them (like the loader) with the binaries that are eg. available on exxos site (basic300.prg) but for which is no updated source available. This revealed a few bugs, and i also got rid of all the TOS version tables, so the result should now be completely independent on TOS version, and works also eg. with EmuTOS. This applies to the interpreter, the run_xxx.bin and also to compiled programs.

Then i went ahead and did similar task also to all the libraries. There were only a few minor bugs i found, but they are all a bit smaller now (mostly because of optimizations of branches, but also a few manual optimizations).

Currently, i'm reconstructing the source code of some extensions i found interesting (i hope this was not wasted time because the source is already available :D, but i did not find them). This mostly includes the falcon extensions done by Anthony Hoskin, but also a few others. Some of them are already finished (i think), the remaining are WIP.

While working on the extensions, a lot of questions popped up. Most of them i could answer myself in the meantime, but some remain:

 

  • is there any documentation about the interface of such extensions? I could deduce a few things from existing sources, but also had to look at the interpreter/compiler sources to check how certain things work. It wasn't obvious for example that instructions that return a value need to use odd opcodes.
  • That applies even more to the compiler version of extensions, which need to define all the parameter, functions etc.
  • and also to some variables/functions that are supplied by the kernel, like a pointer to the error function etc. Seems like some extensions just use some magic values there, but i could not find that documented.
  • There is also the known problem of different extensions using the same letter (ie. Missing link and Ninja Tracker both use 'Q' by default). Is there some general solution for that?

And finally: is there a list somewhere with the last recent version of certain extensions that were available? I found for example, that some of the falcon extensions available on exxos site (in STOS_FALC_0115.zip) are older versions of the ones he posted a few years ago on atari-forum.com. There also seem to be some archives with different versions of the same thing, and not in all cases the most recent version is part of the complete archive.