[futurebasic] Re: [FB] Capitalization II

Message: < previous - next > : Reply : Subscribe : Cleanse
Home   : November 1998 : Group Archive : Group : All Groups

From: Rick Brown <rbrown@...>
Date: Sun, 22 Nov 1998 10:48:15 -0600
I wrote:
> > LOCAL FN UprString(theStringPtr&, diacSens)
> >   strLen = PEEK(theStringPtr&)
> >   strStart& = theStringPtr& + 1
> >   `     move.l ^strStart&,a0
> >   `     move.w  ^strLen,d0
> >   `     tst.w   ^diacSens
> >   `     beq.s   L1
> >   `     dc.w    $A054
> >   `     bra.s   L2
> >   `L1   dc.w    $A254
> >   `L2   move.l  a0,^strStart&
> >   BLOCKMOVE strStart&, theStringPtr&+1, strLen
> > END FN

Alain replied:
> I suppose that at label L2 it means give to strStart& the address stored in
> A0.  But, in A0 is already stored the address of strStart&. Since nothing has
> changed in A0, what is the use?
> I don't understand the BLOCKMOVE statement either, because I think strStart&
> is equal to theStringPtr&+1

I think you are right that A0 will _probably_ contain the same address
both before and after the call to the trap word occurs.  In fact, in
experiments I did, this seemed to be the case.  However, the description
in "Inside Macintosh" did not seem to guarantee this.  All it said was
that, after the call to the trap word, A0 would contain the address of
the modified string.  To be safe, I made the assumption that this might
be different from the address of the original string, hence the addition
of the last two lines.  The last two lines simply copy the contents of
the modified string from the (possibly changed) address in A0, into the
original string's location.  If the contents of A0 don't actually
change, then those lines are not necessary.

- Rick