AMOS WILL ALWAYS USE CHIP RAM FIRST UNLESS TOLD OTHERWISE.
Where on earth did you get that idea?
AMOS Pro allocates RAM according to requirements. So, for Memory Banks, it will allocate according to what you specify. The ONLY exception is if it runs out of available fast RAM. Then it will still allocate the required memory but has no choice other than to use chip RAM:
Reserve as Work BankNumber,LengthInBytesAllocates a temporary bank in fast RAM. The bank will no longer be available when AMOS closes and its memory will be freed.
Reserve as Chip Work BankNumber,LengthInBytesAllocates a temporary bank in chip RAM. The bank will no longer be available when AMOS closes and its memory will be freed.
Reserve as Data BankNumber,LengthInBytesAllocates a permanent bank in fast RAM. The bank will be integrated into the currently loaded program. It will load and save with the program.
Reserve as Chip Data BankNumber,LengthInBytesAllocates a permanent bank in chip RAM. The bank will be integrated into the currently loaded program. It will load and save with the program.
In all the above cases, chip RAM will be used if no fast RAM is available.
For permanent banks, they retain their characteristics when integrated into a program and loaded with it.
AMOS Pro takes care of all memory allocation and clean up. So no action is required from the user. If you crash AMOS however, be aware that you may have allocated memory (i.e. "known" to AmigaOS) that hasn't been de-allocated.
There is no way that data is stored in fast ram since there is no other line telling it that the print command uses fast ram. It should technically always say "Sorry, there is only CHIP Ram available" because that print command is used in Chip RAM. Otherwise with that logic, all I had to do is say:
reverse as work 10,1000 and followed by
LEVELOBJECTS(361)
So technically these two lines there will make the program use Fast RAM instead of Chip RAM. If that's all it takes I can do it in less than 1 second command line. However, I was informed that is not enough and that there is a lot more complex code need to be done to force AMOS to put things in Fast RAM.
Get a grip! AMOS Pro allocates all variables, strings and arrays in fast RAM, if it's available. The only chip RAM it uses is for whatever samples, sprites, bobs, screens and windows are used in a program.
Do not confuse allocating an array with allocating a bank:
- An array is a component of AMOS Pro Basic. It is something that AMOS controls. You can just use it without worrying about the details. Incidentally, if you're using arrays of strings, or a lot of string manipulation, AMOS Pro will switch in its garbage collection every now and again. This may come at an unexpected and inconvenient time in your program. You can dictate when this happens by simply adding a line X=Free to force string garbage cleanup when you want it to happen.
- A Memory Bank is a chunk of memory that you've requested. Apart from knowing where it is, what length it is and putting it into its allocated memory list, AMOS knows nothing about what you want to do with it. If it's a Work bank, AMOS will clean up your mess when you quit. If it's a Data bank, it will be saved with your program. And AMOS will still clean up your mess when you quit.