On 15 February 2018 at 11:45, pjwitte via Ql-Users <ql-users@lists.q-v-d.com > wrote:
> Update: > After sribbling down the example above, I decided to "weaponise" it to > test the following three premises: > 1) Is A1 preserved?: JS, Minerva and SMSQ/E all appear to do so > Correct as far as I can see. > 2) Is D0 set to 0 after BV_CHRIX?: JS: No. Minerva & SMSQ/E: Yes > Correct. I've done a short test on SMSQmulator to see if it does return from an 'out of memory' condition (assumed it has no more than 16 MB available): result dc.l 0 move.l #16*1024*1024,D1 move.w $11a,a2 jsr (a2) lea result(pc),a1 move.l d0,(a1) moveq #0,d0 rts When I LBYTES this followed by CALL A+4, I get 'insufficient memory'. The long word at 'result' was still zero afterwards. So it doesn't return when an error occurs (unlike other claims). > 3) Are items on the stack preserved after BV_CHRIX (as described above)?: > JS, Minerva & SMSQ/E: Yes > Yes, but don't forget to set BV.RIP(A6) to current TOS beforehand. The Minerva doc says that only the active part of any area is moved (unlike JS). So anything below BV.RIP(A6) that is still part of the RI stack area will not be moved (and probably overwritten). Jan. -- *Jan Bredenbeek* | Hilversum, NL | j...@bredenbeek.net _______________________________________________ QL-Users Mailing List