Surely by now someone has done a simple "port expander" software to be programmed into another PIC? Something with two-wire (clock from master plus bi-directional data) SW addressable units, so you can string a bunch of them on each pin? Let's see, a low-model PIC had 12 IOs, which would be two for the "net", two for "address" (should be able to get 6 addresses out of that using 3-state connections), and 8 for actual IO. Send two-byte commands: Startbit:UNIT:CMD:data CMD :== Set direction | Read | write ... Get two-byte repsonses: Startbit:UNIT:STAT:data If you only need one direction, it's much easier, of course... (there are commercial chips (programmed PICS) that do not-too-much-more than this, but I would think slightly more primitive versions would have shown up as freeware...) BillW