Interesting! I have to delve deeper into the various disassemblies and Minerva/SMSQ source codes, but from the peeks I've done in the past into the various BV.CHxx routines I gathered that A1 has always been preserved (even the SMSQ/E code contains MOVEM.L Ax,-(A7) at the start and MOVEM.L (A7)+,Ax at the end). I couldn't find any instruction that stores A1 somewhere either (remember this call has various entry points for the different S*BASIC areas, which use D2.L as key to the pointer to the area to be moved).pjw wrote: Yet the SMSQ/E Bible says:It may have been early days when Pennell wrote his book - or just a typoCode: Select all
Vector $11A Reserve Room on Arithmetic Stack QA.RESRI Call parameters Return parameters D1.L Number of bytes required D1 ??? D2 D2.L ??? D3 D3.L ??? A0 A0 Preserved A1 Pointer to RI stack (rel. A6) A1 ??? A2 A2 Preserved A3 A3 Preserved Error returns: IMEM out of memory [SMSQ] none [QDOS]
I even remember a comment from Lau that it would be nice if BV.CHRIX would return A1 pointing to BV.RIP(A6) which would save programmers a MOVE instruction afterwards. However, if the original behaviour is to preserve A1, this would be prone to break software which relies on it...
regards, Jan.