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