Hi, I don't know this extensions but can give some info on the error message:
Error in previous program: Syntax ErrorThis is in two parts:
Error in previous program: means there's an error in a "hidden" program, presumably an accessory.
Syntax Error means that it's the error picked up in the "hidden" program. It can be from a number of causes. (As I bug-fix and rewrite AMOS Pro, it's my intention to make some error messages a bit less obscure!).
- Running out of memory.
- A Token error.
The first is unlikely but always worth checking.
The second is caused by the way AMOS Pro runs its programs.
ALL AMOS programs are saved in tokenised format. When AMOS "tests" a program before running it, it is doing two things:
- Validating the AMOS Tokens. This is essential as it needs to know that a Token from an Extension is available. That is, that the Extension is both loaded and is in the correct slot.
- Any branches within the program have to be resolved into offsets. This is so that the interpreter can jump to the correct place in the program. This applies to all "structural" instructions like If ... End If, Do .. Loop, etc.
The first of these is what usually caused the completely uninformative
Syntax Error message.
The Token for an Extension (that is, all loaded AMOS Libraries) comprises its Extension slot number and the Token for the instruction within that Extension. So, if it's in the wrong slot, you'll get this error. Again, unlikely but always check every possible cause! Far more likely is that the Token itself is no longer valid. This happens if the Extension's Token Table has changed, causing some instructions to no longer reside at the same offset from the start of the Token Table.
A Token is simply the offset from the start of the Token Table to the entry for the instruction involved. If there's any change in size or position for a Token Table entry, any following Tokens will be invalid for any program written and saved using a previous version.
As I mentioned, I don't know anything about this Extension, but a quick scan of the docs refers to "saving programs in ASCII format". When such a program is then merged, it is re-tokenised. So no invalid Tokens are generated. The reason this works is that the tokenisation process searches the Token Table looking for a match to the ASCII representation of the instruction. This is obviously very time consuming, so it's only used when the program is tokenised. When the program is then "run", it expects to be able to use the Token as a simple offset so it knows where to jump to find the code for an instruction. As any invalid Token would produce the wrong offset and could cause a jump into never-never-land, the "test" process is there to check that all Tokens are valid.
Which is a long-winded way of saying you should check:
- You have enough memory.
- All needed Extensions (I notice AMCAF in the distro) are loaded and in the correct slots.
- All Extensions are the correct version as an incorrect one can cause that invalid Token problem. I don't know if AMCAF changed its Token Table over different versions but, if you already had it installed, it may be worth trying the one in the distro just in case.
- Loading each AMOS program in turn and "testing' it should throw up which one has the problem. You'll get a Syntax Error for an incorrect Token and will be able to see where it occurs. That may give a clue to which Extension is a wrong version.
Hope the above helps. I'm always long-winded in describing these things as it's important to understand why they happen. And Token errors are common in Extensions between versions. Always save each program in ASCII. That way you can swap versions without any problems. (Unless the Extension's changes mean an instruction's name has been changed! Extension authors take note.)
Oh, and I almost forgot, "Welcome back"
If you haven't looked around the AMOS forum lately, watch out for AMOS Pro V2.10 which is what I and some others are working on. Find it
here.