> I've noticed that the 3.3 roms use a lot of hard-coded "movea.l $122,
> a1" calls and then grab the fuction address directly from the table.
> Presumably this was done to improve speed at a slight cost in code size.
Yes, your assessment is correct.
> I looked at 2.0 and 3.3 roms. In both, DmWrite is basically:
>
> MemSemaphoreReserve(1);
> MemMove(...);
> MemSemaphoreRelease(1);
I'm not sure what you're looking at. DmWrite has always also called
DmWriteCheck in order to make sure that the call to MemMove is safe.
Downloading the Palm OS 3.0 source code and examining it should bear that out.
> In both Roms, MemSemaphorexxx() is a bust. Basically:
>
> return 0;
Like Jim said, those two functions are significantly more substantial. I don't
know how you're getting the pointer to the function, but there are two in the
ROM. One of them does just a return 0. The other one is more substantial. The
first one gets installed first, but is later replaced by the "real" one. If
you're looking in the trap table at the wrong time, then you could be looking at
the temporary one.
-- Keith
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palm.com/devzone/mailinglists.html