A very important location (7816H) exists in communications RAM called
the
KDCB - Keyboard Device Control Block. This contains the
location of the matrix scanning routine (by default it is set to 2EF4H) and
is updated when KSCAN is installed. If the programmers had done the right
thing then they would have called 002BH which would lookup the current
keyboard scanning routine and perform the scan (so on a standard VZ it would
eventually get to 2EF4H). With KSCAN installed, the program would have used
the new keyboard driver and its lookup tables.
Finally, the VZ scans the keyboard every interrupt in its default Interrupt
Service Routine. KSCAN bypasses this by installing itsa own Service Routine
which does all the default noe does, plus extras.
Ah Bingo! This all makes sense now - up
till today I never knew about the kdcb. It’s a good way to get a layer of
abstraction above the standard hardware. Will have to read up on all this on
the train tomorrow so I can get my head around it.
Got a new phone yesterday, the htc touch
pro. It runs windows mobile 6, has a 3.2 megapixel camera, 640x480 graphics,
520mhz processor and built in gps. Most importantly it runs pocketvz so I’ve
finally got a VZ200 enabled mobile phone! It has a very nice slide out
keyboard, so another biggie on the to do list is add hardware keyboard support.
Pocketvz also runs like a dog on it so I
need to optimise the screen redraw. Its also a dog on vzem but the fast cpus in
PCs compensates for it.
Basically it is drawing every pixel of
every scanline, whether it needs to or not, 50 times a second.