Steve, here is my idea... you can use a pic16c84 for this you will need a BCD to sevensegment decoder driver chip for each 7 segment display a 3 to 8 decoder like the 74138 a binary to decimal decoder and a few diodes plus the opto switches now you can set up the optos to conect to the decimal decoder one per line and also take the output via a diode to the PB0 line take thoutput from the decimal decoder to the PB1,2,3 lines. now by setting up the pic so its generates an int when the PB0 line is toggled you can read the output on the decimal decoder to tell which opto caused it. now for the output you can connect the input of the bcd to 7 segment driver/decoders to the PA0,1,2,3 pins and the input of the 3 to 8 decoder to PB4,5,6 the O/P of the 3 to 8 is used to drive the output enable pins of the bcd to 7 seg decoders. now you can multiplex the outputs with the PB4,5,6 pins and the number is a binary on the PA0,1,2,3 pins. the software should be updating the displays in its normal loop from a table updated by the int loop. finaly a Reset could be achived with the PB7 pin scaned in the same loop as the multiplexing. There that aint so bad is it. If you need a hand with the code for the 16C84 give me an Email and i'll try and help as much as I can. Cheers Peter....... -- ================================== = New Ideas come from those who = = didn't know it wasn't possible = ==================================