That you both for your responses! The 'unofficial' table method sounds
a lot handier than calling Get for every vector.
FWIW I did my spelunking with a simple monitor I wrote 10 or 12 years
ago for debugging on an Atari ST. I ran it on the emulator. I started
the monitor pretty early in the boot, so it is certainly possible that I
looked at the MemSemaphore... vectors before they are patched up.
I initially expected something with the name Semaphore to eventually get
me to some AMX aj/cj resource semaphore code :>
You are also correct about DmWriteCheck, that was a typo on my part. It
really stands out in the 3.3 roms out because the call to MemRes... and
MemMove are direct (address fetched from table), but the call to
DmWriteCheck is via trap #f.
I suppose this would all be easier if I just signed up for the source,
but that would be cheating! Besides I need something to take my mind
off the Hell of debugging WDM drivers under Windows 2000...
Thanks again,
-jjf
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Thursday, February 03, 2000 9:22 PM
To: Palm Developer Forum
Subject: Re: LineF question, DmWrite (again)
> 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
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palm.com/devzone/mailinglists.html