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

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

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 Bredenbeek* | Hilversum, NL | j...@bredenbeek.net
QL-Users Mailing List

Reply via email to