When using something like Quill (with which I am not an expert), there is certainly no harm in using the Master's SWR because it both keeps the user's extended adventure features clear of Quill's memory map and relieves some of the pressure on the author's memory constraints.
I have been helping Koen with some of this and I provided the code for a facility which allows 16k of text messages to be stored in one of the Master's SWR banks and then permits a given message to retrieved and displayed using a unique message ident number.
On this subject Koen - It is important to note that the message retrieve & display routine CANNOT be relocated to a second SWR (or Rom) bank. Since this routine has to page in (to &8000-BFFF) the SWR bank in which the messages are stored, if this utility were itself located in SWR (or Rom) then it would effectively page itself out and cause a crash. Thus, this routine, as with any code which pages ROM/SWR, must remain in ram and in this case it is quite safely tucked out of the way at $0380.
With regard to your other list of utilities, and since you are looking to others for help code them, it would possibly be easiest to pre-allocate one or two pages of SWR code space to each routine and give each an absolute start address in the second SWR bank. This would make it much easier for several individuals to help you code each utility in isolation without any one person having to co-ordinate a re-assembly of the combined utilities. Also, if each of the utilities are only to be called separately and do not need to store data between calls then there is also no complication with allocating zero page data memory.
So, for example, let’s assume there are three short(ish) utilities to consider, A, B and C. Locate A at $8000, B at $8200 and C at $8400. You have 16k to play with so over-allocation is not a problem and it also allows for a given routine to grow if necessary without moving all the others.
Then, using two consecutive modifiable memory locations AL, AH you only need to use Quill to set AL and AH to the address of the required utility and then Call a small piece of handling code at say $0Bxx as you suggest. This code would be very similar to the routine I wrote in that it would page out BASIC, page in the second SWR block and then call the routine at AL, AH which would itself end with an RTS. On return, BASIC would be paged back in an Quill resumed. In pseudo terms, it may look something like this :
0B00 JSR
0B01 AL
0B02 AH
0B03 JMP return
0B06 Start of utility call selector…
…
Page BASIC out and page in utility SWR
…
JMP 0B00
…
.return
…
Page utility SWR out and BASIC in
…
RTSNow, to call say utility B from Quill you would set AL=$00, set AH=$82 and call $0B06. Can’t remember the Quill syntax but it does support these actions.
I recognise that this is not the 6502 purists way to handle multiple utility calling but it will allow anyone willing to help Koen to code one or more of his wishlist routines whilst knowing in advance where it is to be located and that it simply ends with an RTS.
Does anyone have any thoughts on this approach and, more importantly, has anybody got some spare capacity to do some of the coding for him? I have been helping but am a bit behind now with some of my harware follies
Martin