Look, just to clear things up. I'm NOT INTERESTED IN MAKING ANY PROFIT AT ALL FROM WHAT I'M DOING HERE! I just want to get it up and running for myself, and if I can help anyone else out there then cool. Right, rant over with!
The circuit can be split into 3 parts: power supply, clock generator and level converter.
The power supply is required as the chips on the board run off 5V, so using a 5V regulator (7805) you can stick 12V or so in and get 5V out to power the chips. There are some capacitors around to smooth out ripples on the supply.
The clock generator is required as the ECU doesn't contain it's own baud rate generator. Older designs use a fast clock - 16x typically. So, to communicate at 9.6kbaud, you stick a clock in at 153.6kHz. A word about this - the clock doesn't need to be synchronised to the data, so any propagation delays are totally irrelevant.
Cheapest way of generating an accurate, stable clock is to use a timing crystal. These come in lots of speeds but they're all (generally) >1MHz. The PLMS circuit uses a 4060, which is a ripple counter - you stick a signal of frequency f into the input, and out of a set of outputs comes the signal at 1/2f, 1/4f, 1/8f etc. If you use 4.9152MHz crystal and divide it by 32, you get 153.6kHz which is what you need.
Problem is, the crystal speeds that you need can be a little difficult to get hold of (well, Maplins were out of everything and I even developed some PIC code on a 12F675 to divide by any integer value so I could use other crystals!), so I opted for a EXO-3 chip which has an oscillator and divider. If you get a 19.6688MHz (or something like that), you can get 153.6kHz out. These are a bit more expensive (£4 or so), but what the heck...!
And the level converter is because RS232 is specced as a bipolar signal at some vaguely high voltage (I can never remember) - i.e. the serial port data in the back of a PC expects 0's and 1's to be represented by +10V and -10V (or different voltage - I think +/-6V is the minimum). The MAX232 chip uses charge pumps to generate these.
There's one other thing to do - use a transistor to switch the 12V supply to transmit data to the car. The output of the MAX232 is 0V/5V (the TTL side, i.e. the other side from the PC). But the car needs 12V or so sent into it. So, using a transistor you can switch the 12V from the car back into it's input.
I'll scribble down a circuit and post it somewhere for people here. I ought to mention that I'm a bit busy at the moment so things might take a bit of time...
Oh, and last thing - I got some code working tonight that does a proper initialisation and get's the RPM from the car. I'm just downloading the PocketPC SDK so I can transfer it over to my palmtop.
And finally - doesn't look like you can get the fuel gague level from the ECU in a K11...