Hi Nathan (and others),
Not sure if posting here or email is the best way to ask this... But I posted as maybe there are a few others such as MinionBuilder who may know the answer and/or may be interested in the answer...

As you know I have been playing around with C libraries as well, currently have phoenix (hex code) working on Arc32 with or without SSC-32 (Includes HServo2 type of code). Also have HSERVO(1) type code running on Bap28 and probably Bap40 (have not tested my current version yet). I have a C version of the biped Brat code running using my HSERVO on a Bap28. I am currently trying to get the code working to read the servo offsets from the Bap28's EEPROM. I started off with the code MinionBuilder did for reading EEPROMs which so far worked fine for me on the Arc32, but it appears to now hang on the Bap28. Which I will debug next... But my first look through brought up a couple of questions.
1) On the Bap28 SDA is on P6 (H8->P56) and SCL is on P7(P57). On Bap40 not sure if current one is on H8 P56/P57 or you mentioned in some other thing about ReV D being on P86/P87? So far I am assuming P56/57... Also not doing much with Bap40 so for me this is semi a non-issue.
2) Since P6 and P7 or real IO pins, which can and in my case are used for Servos. How do you handle the dual purpose of these pins? Some of this may be obvious. Things like:
a) ReadDM - When you enter into this command you probably turn on I2C mode(IIC2.ICCR1.BIT.ICE = 1), do your stuff and at the end of the command you probably exit I2C mode (IIC2.ICCR1.BIT.ICE = 0).
b) How do your reads/writes without screwing up HSERVO. That is if you do something like: hservo [p6\0, p7\0]
and then do a readdm...
How to keep the readdm from screwing up the HSERVO pulses?
I may for the fun of it write a program and look at the logic analyzer to see...
Thanks
Kurt