So here's a bit more info about my device. The picture attached shows my #2 prototype board, the one I'm currently using on my car.
As can be seen, all components are leaded so it does not require any special tools to build. The LED 7-segment displays are fitted on the rear of the PCB. Essentially all components are modern deriviatives of 1980's era components.
The big black device in the middle is an 8052 microcontroller. This can be programmed through the connector seen on the left side. The lower part of the board contains the analogue circuits resposnible for detecting the signals from ingition and crank sensor. To the right of the microcontroller is a circuit that does some basic filtering of the signals before supplying them to the microcontroller for actual measurements and calculations. There is a voltage regulator on the board responsible for the 5V supply to the system and a separate one supplying the 9V supply which is used to generate a permanent magnetic field in the crank sensor coil. Since the crank sensor is unmagnetic, it needs a constant DC current flow to generate a small amount of magnetic flux. When a notch in the flywheel passes by, the flux is distorted and an additional current is generated, and this additonal current is detected in the analogue circuit. A fuse and protection diodes protect the device from voltage spikes and reverse polarity. The top part of the board (unpopulated) contains an isolated RS232 interface which I'm still working on.
As mentioned, the basic idea is to measure the time between the ignition and the crank sensor triggering, divide that by the time between crank or ignition signals (1/RPM effectively), and multiply by 180 to the the advance in degrees. There's also a factor of 28 degrees to subtract from that number due to the fact that the crank trigger is not at TDC on the flywheel.
There are two triggers per revolution of the flywheel since there are two notches in it. This corresponds to the four trigger points inside the distributor, which runs at cam speed, i.e. half the crank.
I'll give an update later explaining how I am driving the crank sensor and getting useful signals out of it.

