pjw wrote:Yet the SMSQ/E Bible says:
Code: 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
IMEM out of memory [SMSQ]
It may have been early days when Pennell wrote his book - or just a typo
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).
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...