The logical side, it's fairly easy. There are two output bits on the pad port of the system. One is used to select the upper and lower 4bits of a pad, but one is used as 'reset'. This reset bit (on then off) is uses by the gamepads that have turbo (the original white PCE had controllers without turbo. The turbo pads for the release system were purchased separate, until the Core grafx model came out in '89). So the reset is used to increment a 4bit binary counter in the gamepad device, but the TAP facilitates this for you. The TAP itself is reset by the reset bit. Works like this: write then clear the reset bit, to reset the TAP back to port 1 (of 5). Read lower bits, write the select bit, read the upper bits, clear the select bit. The TAP will auto increment the port, and AFIAK, the TAP should assert the reset pin on then off for the next pad itself. There's a gnd detect pin (the shield part of the connector) that is actually the 9th pin of the controller. When plugged into the TAP, it's connected to GND. I believe the 5 port TAP used this for autodetect and skips ports that have no controllers plugged in (plug in a single controller into any other port than one, and you should be able to play as if it was in port one). It's pretty straight forward. I can't tell you how the 2,3, and 4 port TAPs work as I've never used them. For the software side of things, it gets a little more complicated when you trying to read 6 button pads (and more than one of them).