Quick question: Looking ahead to an AROS 68k version of AmosPro, is there a way we can make a switcher table for different versions of switchers? For example, can we leave things open for a future AmosPro to use a CyberGrpahX 3 compatible graphics driver as AROS supports? If so, I'd like to be able to set a switcher for any graphics capability level someday. Having looked at your document, perhaps setting additional data in the switcher's positive offsets will make it plausible.
Yep. You can carry the concept as far as you like because Francois left that
LB_Append longword free in a library's data zone. Plug in a pointer to any switcher structures you'd feel necessary. Plus there's the
LB_Free byte to pop any flags into. I've got a fair idea of what's free in the existing AMOS data structures from having databased the sources and using a powerful multi-document searcher and text editor to chase them up and validate the assumptions.
It can easily be multiple-way switching if you needed it. Just expand each element in the switcher table to include three, four or more options. Each just has to have a
Code Routine and
Instruction Number to handle it, plus the code and
Instruction Number Table in the loader's discarded hunk so you can construct AMOSPro.Lib's switcher table.
That free longword means you can point to any structure you like for more complex structures if you needed them.
When I actually get to the coding phase for a switcher and AGA/ECS (a fair way off yet - my priority with coding is to get bug fixes in and an easy HD install release a.s.a.p.) I'll be leaving linked list pointers free for future expansion. Eg. the LB_Append longword will point to the switcher table which will also include another longword free for any expansion (not shown in the Context Switcher Design PDF doc). I strongly suggest we apply that criterion to any other new structures also (eg. the AGA and ECS screen structures we'll need) and please use linked lists. The code for handling linked lists is already there in AMOS Pro (in +B.s starting line 1187, with Instruction Numbers in +Lequ.s starting line 94 - PDF attached). Or use Exec's linked list handling. But as a personal foible, I kinda like the idea of keeping it 'all AMOS'
.
BUT, for anything you set up using Context Switching, the major work is in integrating the switched instructions back to the AMOS Basic language. The switching structure work required for AGA/ECS functions is minor compared to all those AMOS Basic graphics instructions that would need to be modified to match the capabilities. Not just the obvious AMOS Basic ones. There's AMAL, Menu and Interface subprograms to be modified as well. A lot of work! However, I'm retired now and this will be my pet project for the next few
months years.
One step at a time. First I want to understand the inner (less attractive?
) core first. The way AMOS actually runs a program is fascinating. I'll keep analysing (and publishing) until I have enough to start classifying the AMOS Basic language in terms of requirements for AGA/ECS. There's nothing to stop other graphics modes being done the same way. I assume you mean things like Picasso96 and the CyberGrpahX 3 thingy you mentioned? I don't know anything about them as they came after my 'real' Amiga experiences back in the late 80s and early 90s. Still catching up with what's been going on since then
.