| 		    Linux Joystick parport drivers v2.0 | 
 | 	       (c) 1998-2000 Vojtech Pavlik <vojtech@ucw.cz> | 
 | 	       (c) 1998 Andree Borrmann <a.borrmann@tu-bs.de> | 
 | 			     Sponsored by SuSE | 
 | ---------------------------------------------------------------------------- | 
 |  | 
 | 0. Disclaimer | 
 | ~~~~~~~~~~~~~ | 
 |   Any information in this file is provided as-is, without any guarantee that | 
 | it will be true. So, use it at your own risk. The possible damages that can | 
 | happen include burning your parallel port, and/or the sticks and joystick | 
 | and maybe even more. Like when a lightning kills you it is not our problem. | 
 |  | 
 | 1. Intro | 
 | ~~~~~~~~ | 
 |   The joystick parport drivers are used for joysticks and gamepads not | 
 | originally designed for PCs and other computers Linux runs on. Because of | 
 | that, PCs usually lack the right ports to connect these devices to. Parallel | 
 | port, because of its ability to change single bits at will, and providing | 
 | both output and input bits is the most suitable port on the PC for | 
 | connecting such devices. | 
 |  | 
 | 2. Devices supported | 
 | ~~~~~~~~~~~~~~~~~~~~ | 
 |   Many console and 8-bit computer gamepads and joysticks are supported. The | 
 | following subsections discuss usage of each. | 
 |  | 
 | 2.1 NES and SNES | 
 | ~~~~~~~~~~~~~~~~ | 
 |   The Nintendo Entertainment System and Super Nintendo Entertainment System | 
 | gamepads are widely available, and easy to get. Also, they are quite easy to | 
 | connect to a PC, and don't need much processing speed (108 us for NES and | 
 | 165 us for SNES, compared to about 1000 us for PC gamepads) to communicate | 
 | with them. | 
 |  | 
 |   All NES and SNES use the same synchronous serial protocol, clocked from | 
 | the computer's side (and thus timing insensitive). To allow up to 5 NES | 
 | and/or SNES gamepads and/or SNES mice connected to the parallel port at once, | 
 | the output lines of the parallel port are shared, while one of 5 available | 
 | input lines is assigned to each gamepad. | 
 |  | 
 |   This protocol is handled by the gamecon.c driver, so that's the one | 
 | you'll use for NES, SNES gamepads and SNES mice. | 
 |  | 
 |   The main problem with PC parallel ports is that they don't have +5V power | 
 | source on any of their pins. So, if you want a reliable source of power | 
 | for your pads, use either keyboard or joystick port, and make a pass-through | 
 | cable. You can also pull the power directly from the power supply (the red | 
 | wire is +5V). | 
 |  | 
 |   If you want to use the parallel port only, you can take the power is from | 
 | some data pin. For most gamepad and parport implementations only one pin is | 
 | needed, and I'd recommend pin 9 for that, the highest data bit. On the other | 
 | hand, if you are not planning to use anything else than NES / SNES on the | 
 | port, anything between and including pin 4 and pin 9 will work. | 
 |  | 
 | (pin 9) -----> Power | 
 |  | 
 |   Unfortunately, there are pads that need a lot more of power, and parallel | 
 | ports that can't give much current through the data pins. If this is your | 
 | case, you'll need to use diodes (as a prevention of destroying your parallel | 
 | port), and combine the currents of two or more data bits together. | 
 |  | 
 | 	   Diodes | 
 | (pin 9) ----|>|-------+------> Power | 
 | 		      | | 
 | (pin 8) ----|>|-------+ | 
 | 		      | | 
 | (pin 7) ----|>|-------+ | 
 | 		      | | 
 |  <and so on>          : | 
 | 		      | | 
 | (pin 4) ----|>|-------+ | 
 |  | 
 |   Ground is quite easy. On PC's parallel port the ground is on any of the | 
 | pins from pin 18 to pin 25. So use any pin of these you like for the ground. | 
 |  | 
 | (pin 18) -----> Ground | 
 |  | 
 |   NES and SNES pads have two input bits, Clock and Latch, which drive the | 
 | serial transfer. These are connected to pins 2 and 3 of the parallel port, | 
 | respectively. | 
 |  | 
 | (pin 2) -----> Clock | 
 | (pin 3) -----> Latch | 
 |  | 
 |   And the last thing is the NES / SNES data wire. Only that isn't shared and | 
 | each pad needs its own data pin. The parallel port pins are: | 
 |  | 
 | (pin 10) -----> Pad 1 data | 
 | (pin 11) -----> Pad 2 data | 
 | (pin 12) -----> Pad 3 data | 
 | (pin 13) -----> Pad 4 data | 
 | (pin 15) -----> Pad 5 data | 
 |  | 
 |   Note that pin 14 is not used, since it is not an input pin on the parallel | 
 | port. | 
 |  | 
 |   This is everything you need on the PC's side of the connection, now on to | 
 | the gamepads side. The NES and SNES have different connectors. Also, there | 
 | are quite a lot of NES clones, and because Nintendo used proprietary | 
 | connectors for their machines, the cloners couldn't and used standard D-Cannon | 
 | connectors. Anyway, if you've got a gamepad, and it has buttons A, B, Turbo | 
 | A, Turbo B, Select and Start, and is connected through 5 wires, then it is | 
 | either a NES or NES clone and will work with this connection. SNES gamepads | 
 | also use 5 wires, but have more buttons. They will work as well, of course. | 
 |  | 
 | Pinout for NES gamepads                 Pinout for SNES gamepads and mice | 
 |  | 
 | 	   +----> Power                   +-----------------------\ | 
 | 	   |                            7 | o  o  o  o |  x  x  o  | 1 | 
 |  5 +---------+  7                         +-----------------------/ | 
 |    | x  x  o   \                            |  |  |  |          | | 
 |    | o  o  o  o |                           |  |  |  |          +-> Ground | 
 |  4 +------------+ 1                         |  |  |  +------------> Data | 
 |      |  |  |  |                             |  |  +---------------> Latch | 
 |      |  |  |  +-> Ground                    |  +------------------> Clock | 
 |      |  |  +----> Clock                     +---------------------> Power | 
 |      |  +-------> Latch | 
 |      +----------> Data | 
 |  | 
 | Pinout for NES clone (db9) gamepads     Pinout for NES clone (db15) gamepads | 
 |  | 
 | 	+---------> Clock                    +-----------------> Data | 
 | 	| +-------> Latch                    |             +---> Ground | 
 | 	| | +-----> Data                     |             | | 
 | 	| | |                              ___________________ | 
 |     _____________                        8 \ o x x x x x x o / 1 | 
 |   5 \ x o o o x / 1                         \ o x x o x x o / | 
 |      \ x o x o /                          15 `~~~~~~~~~~~~~' 9 | 
 |     9 `~~~~~~~' 6                             |     |     | | 
 | 	 |   |                                |     |     +----> Clock | 
 | 	 |   +----> Power                     |     +----------> Latch | 
 | 	 +--------> Ground                    +----------------> Power | 
 |  | 
 | 2.2 Multisystem joysticks | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   In the era of 8-bit machines, there was something like de-facto standard | 
 | for joystick ports. They were all digital, and all used D-Cannon 9 pin | 
 | connectors (db9). Because of that, a single joystick could be used without | 
 | hassle on Atari (130, 800XE, 800XL, 2600, 7200), Amiga, Commodore C64, | 
 | Amstrad CPC, Sinclair ZX Spectrum and many other machines. That's why these | 
 | joysticks are called "Multisystem". | 
 |  | 
 |   Now their pinout: | 
 |  | 
 |       +---------> Right | 
 |       | +-------> Left | 
 |       | | +-----> Down | 
 |       | | | +---> Up | 
 |       | | | | | 
 |   _____________ | 
 | 5 \ x o o o o / 1 | 
 |    \ x o x o / | 
 |   9 `~~~~~~~' 6 | 
 |        |   | | 
 |        |   +----> Button | 
 |        +--------> Ground | 
 |  | 
 |   However, as time passed, extensions to this standard developed, and these | 
 | were not compatible with each other: | 
 |  | 
 |  | 
 | 	Atari 130, 800/XL/XE		   MSX | 
 |  | 
 | 					 +-----------> Power | 
 |       +---------> Right                  | +---------> Right | 
 |       | +-------> Left                   | | +-------> Left | 
 |       | | +-----> Down                   | | | +-----> Down | 
 |       | | | +---> Up                     | | | | +---> Up | 
 |       | | | |                            | | | | | | 
 |   _____________                        _____________ | 
 | 5 \ x o o o o / 1                    5 \ o o o o o / 1 | 
 |    \ x o o o /                          \ o o o o / | 
 |   9 `~~~~~~~' 6                        9 `~~~~~~~' 6 | 
 |        | | |                              | | | | | 
 |        | | +----> Button                  | | | +----> Button 1 | 
 |        | +------> Power                   | | +------> Button 2 | 
 |        +--------> Ground                  | +--------> Output 3 | 
 | 					  +----------> Ground | 
 |  | 
 | 	Amstrad CPC			   Commodore C64 | 
 |  | 
 | 					 +-----------> Analog Y | 
 |       +---------> Right                  | +---------> Right | 
 |       | +-------> Left                   | | +-------> Left | 
 |       | | +-----> Down                   | | | +-----> Down | 
 |       | | | +---> Up                     | | | | +---> Up | 
 |       | | | |                            | | | | | | 
 |   _____________                        _____________ | 
 | 5 \ x o o o o / 1                    5 \ o o o o o / 1 | 
 |    \ x o o o /                          \ o o o o / | 
 |   9 `~~~~~~~' 6                        9 `~~~~~~~' 6 | 
 |        | | |                              | | | | | 
 |        | | +----> Button 1                | | | +----> Button | 
 |        | +------> Button 2                | | +------> Power | 
 |        +--------> Ground                  | +--------> Ground | 
 | 					  +----------> Analog X | 
 |  | 
 | 	Sinclair Spectrum +2A/+3           Amiga 1200 | 
 |                                       | 
 |     +-----------> Up                     +-----------> Button 3 | 
 |     | +---------> Fire                   | +---------> Right | 
 |     | |                                  | | +-------> Left | 
 |     | |   +-----> Ground                 | | | +-----> Down | 
 |     | |   |                              | | | | +---> Up | 
 |     | |   |                              | | | | | | 
 |   _____________                        _____________ | 
 | 5 \ o o x o x / 1                    5 \ o o o o o / 1 | 
 |    \ o o o o /                          \ o o o o / | 
 |   9 `~~~~~~~' 6                        9 `~~~~~~~' 6 | 
 |      | | | |                              | | | | | 
 |      | | | +----> Right                   | | | +----> Button 1 | 
 |      | | +------> Left                    | | +------> Power | 
 |      | +--------> Ground                  | +--------> Ground | 
 |      +----------> Down                    +----------> Button 2 | 
 |  | 
 |   And there were many others. | 
 |  | 
 | 2.2.1 Multisystem joysticks using db9.c | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   For the Multisystem joysticks, and their derivatives, the db9.c driver | 
 | was written. It allows only one joystick / gamepad per parallel port, but | 
 | the interface is easy to build and works with almost anything. | 
 |  | 
 |   For the basic 1-button Multisystem joystick you connect its wires to the | 
 | parallel port like this: | 
 |  | 
 | (pin  1) -----> Power | 
 | (pin 18) -----> Ground | 
 |  | 
 | (pin  2) -----> Up | 
 | (pin  3) -----> Down | 
 | (pin  4) -----> Left | 
 | (pin  5) -----> Right | 
 | (pin  6) -----> Button 1 | 
 |  | 
 |   However, if the joystick is switch based (eg. clicks when you move it), | 
 | you might or might not, depending on your parallel port, need 10 kOhm pullup | 
 | resistors on each of the direction and button signals, like this: | 
 |  | 
 | (pin 2) ------------+------> Up | 
 | 	  Resistor  | | 
 | (pin 1) --[10kOhm]--+ | 
 |  | 
 |   Try without, and if it doesn't work, add them. For TTL based joysticks / | 
 | gamepads the pullups are not needed. | 
 |  | 
 |   For joysticks with two buttons you connect the second button to pin 7 on | 
 | the parallel port. | 
 |  | 
 | (pin 7) -----> Button 2 | 
 |  | 
 |   And that's it. | 
 |  | 
 |   On a side note, if you have already built a different adapter for use with | 
 | the digital joystick driver 0.8.0.2, this is also supported by the db9.c | 
 | driver, as device type 8. (See section 3.2) | 
 |  | 
 | 2.2.2 Multisystem joysticks using gamecon.c | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   For some people just one joystick per parallel port is not enough, and/or | 
 | want to use them on one parallel port together with NES/SNES/PSX pads. This is | 
 | possible using the gamecon.c. It supports up to 5 devices of the above types, | 
 | including 1 and 2 buttons Multisystem joysticks. | 
 |  | 
 |   However, there is nothing for free. To allow more sticks to be used at | 
 | once, you need the sticks to be purely switch based (that is non-TTL), and | 
 | not to need power. Just a plain simple six switches inside. If your | 
 | joystick can do more (eg. turbofire) you'll need to disable it totally first | 
 | if you want to use gamecon.c. | 
 |  | 
 |   Also, the connection is a bit more complex. You'll need a bunch of diodes, | 
 | and one pullup resistor. First, you connect the Directions and the button | 
 | the same as for db9, however with the diodes inbetween. | 
 |  | 
 | 	    Diodes | 
 | (pin 2) -----|<|----> Up | 
 | (pin 3) -----|<|----> Down | 
 | (pin 4) -----|<|----> Left | 
 | (pin 5) -----|<|----> Right | 
 | (pin 6) -----|<|----> Button 1 | 
 |  | 
 |   For two button sticks you also connect the other button. | 
 |  | 
 | (pin 7) -----|<|----> Button 2 | 
 |  | 
 |   And finally, you connect the Ground wire of the joystick, like done in | 
 | this little schematic to Power and Data on the parallel port, as described | 
 | for the NES / SNES pads in section 2.1 of this file - that is, one data pin | 
 | for each joystick. The power source is shared. | 
 |  | 
 | Data    ------------+-----> Ground | 
 | 	  Resistor  | | 
 | Power   --[10kOhm]--+ | 
 |  | 
 |   And that's all, here we go! | 
 |  | 
 | 2.2.3 Multisystem joysticks using turbografx.c | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   The TurboGraFX interface, designed by | 
 |  | 
 | 	Steffen Schwenke <schwenke@burg-halle.de> | 
 |  | 
 |   allows up to 7 Multisystem joysticks connected to the parallel port. In | 
 | Steffen's version, there is support for up to 5 buttons per joystick.  However, | 
 | since this doesn't work reliably on all parallel ports, the turbografx.c driver | 
 | supports only one button per joystick. For more information on how to build the | 
 | interface, see | 
 |  | 
 | 	http://www2.burg-halle.de/~schwenke/parport.html | 
 |  | 
 | 2.3 Sony Playstation | 
 | ~~~~~~~~~~~~~~~~~~~~ | 
 |  | 
 |   The PSX controller is supported by the gamecon.c. Pinout of the PSX | 
 | controller (compatible with DirectPadPro): | 
 |  | 
 |   +---------+---------+---------+ | 
 | 9 | o  o  o | o  o  o | o  o  o | 1               parallel | 
 |    \________|_________|________/                  port pins | 
 |     |  |      |  |  |   | | 
 |     |  |      |  |  |   +-------->  Clock    ---  (4) | 
 |     |  |      |  |  +------------>  Select   ---  (3) | 
 |     |  |      |  +--------------->  Power    ---  (5-9) | 
 |     |  |      +------------------>  Ground   ---  (18-25) | 
 |     |  +------------------------->  Command  ---  (2) | 
 |     +---------------------------->  Data     ---  (one of 10,11,12,13,15) | 
 |  | 
 |   The driver supports these controllers: | 
 |  | 
 |  * Standard PSX Pad | 
 |  * NegCon PSX Pad | 
 |  * Analog PSX Pad (red mode) | 
 |  * Analog PSX Pad (green mode) | 
 |  * PSX Rumble Pad | 
 |  * PSX DDR Pad | 
 |  | 
 | 2.4 Sega | 
 | ~~~~~~~~ | 
 |   All the Sega controllers are more or less based on the standard 2-button | 
 | Multisystem joystick. However, since they don't use switches and use TTL | 
 | logic, the only driver usable with them is the db9.c driver. | 
 |  | 
 | 2.4.1 Sega Master System | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   The SMS gamepads are almost exactly the same as normal 2-button | 
 | Multisystem joysticks. Set the driver to Multi2 mode, use the corresponding | 
 | parallel port pins, and the following schematic: | 
 |  | 
 |     +-----------> Power | 
 |     | +---------> Right | 
 |     | | +-------> Left | 
 |     | | | +-----> Down | 
 |     | | | | +---> Up | 
 |     | | | | | | 
 |   _____________ | 
 | 5 \ o o o o o / 1 | 
 |    \ o o x o / | 
 |   9 `~~~~~~~' 6 | 
 |      | |   | | 
 |      | |   +----> Button 1 | 
 |      | +--------> Ground | 
 |      +----------> Button 2 | 
 |  | 
 | 2.4.2 Sega Genesis aka MegaDrive | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |   The Sega Genesis (in Europe sold as Sega MegaDrive) pads are an extension | 
 | to the Sega Master System pads. They use more buttons (3+1, 5+1, 6+1).  Use | 
 | the following schematic: | 
 |  | 
 |     +-----------> Power | 
 |     | +---------> Right | 
 |     | | +-------> Left | 
 |     | | | +-----> Down | 
 |     | | | | +---> Up | 
 |     | | | | | | 
 |   _____________ | 
 | 5 \ o o o o o / 1 | 
 |    \ o o o o / | 
 |   9 `~~~~~~~' 6 | 
 |      | | | | | 
 |      | | | +----> Button 1 | 
 |      | | +------> Select | 
 |      | +--------> Ground | 
 |      +----------> Button 2 | 
 |  | 
 |   The Select pin goes to pin 14 on the parallel port. | 
 |  | 
 | (pin 14) -----> Select | 
 |  | 
 |   The rest is the same as for Multi2 joysticks using db9.c | 
 |  | 
 | 2.4.3 Sega Saturn | 
 | ~~~~~~~~~~~~~~~~~ | 
 |   Sega Saturn has eight buttons, and to transfer that, without hacks like | 
 | Genesis 6 pads use, it needs one more select pin. Anyway, it is still | 
 | handled by the db9.c driver. Its pinout is very different from anything | 
 | else.  Use this schematic: | 
 |  | 
 |     +-----------> Select 1 | 
 |     | +---------> Power | 
 |     | | +-------> Up | 
 |     | | | +-----> Down | 
 |     | | | | +---> Ground | 
 |     | | | | | | 
 |   _____________ | 
 | 5 \ o o o o o / 1 | 
 |    \ o o o o / | 
 |   9 `~~~~~~~' 6 | 
 |      | | | | | 
 |      | | | +----> Select 2 | 
 |      | | +------> Right | 
 |      | +--------> Left | 
 |      +----------> Power | 
 |  | 
 |   Select 1 is pin 14 on the parallel port, Select 2 is pin 16 on the | 
 | parallel port. | 
 |  | 
 | (pin 14) -----> Select 1 | 
 | (pin 16) -----> Select 2 | 
 |  | 
 |   The other pins (Up, Down, Right, Left, Power, Ground) are the same as for | 
 | Multi joysticks using db9.c | 
 |  | 
 | 3. The drivers | 
 | ~~~~~~~~~~~~~~ | 
 |   There are three drivers for the parallel port interfaces. Each, as | 
 | described above, allows to connect a different group of joysticks and pads. | 
 | Here are described their command lines: | 
 |  | 
 | 3.1 gamecon.c | 
 | ~~~~~~~~~~~~~ | 
 |   Using gamecon.c you can connect up to five devices to one parallel port. It | 
 | uses the following kernel/module command line: | 
 |  | 
 | 	gamecon.map=port,pad1,pad2,pad3,pad4,pad5 | 
 |  | 
 |   Where 'port' the number of the parport interface (eg. 0 for parport0). | 
 |  | 
 |   And 'pad1' to 'pad5' are pad types connected to different data input pins | 
 | (10,11,12,13,15), as described in section 2.1 of this file. | 
 |  | 
 |   The types are: | 
 |  | 
 | 	Type | Joystick/Pad | 
 | 	-------------------- | 
 | 	  0  | None | 
 | 	  1  | SNES pad | 
 | 	  2  | NES pad | 
 | 	  4  | Multisystem 1-button joystick | 
 | 	  5  | Multisystem 2-button joystick | 
 | 	  6  | N64 pad | 
 | 	  7  | Sony PSX controller | 
 | 	  8  | Sony PSX DDR controller | 
 | 	  9  | SNES mouse | 
 |  | 
 |   The exact type of the PSX controller type is autoprobed when used, so | 
 | hot swapping should work (but is not recommended). | 
 |  | 
 |   Should you want to use more than one of parallel ports at once, you can use | 
 | gamecon.map2 and gamecon.map3 as additional command line parameters for two | 
 | more parallel ports. | 
 |  | 
 |   There are two options specific to PSX driver portion.  gamecon.psx_delay sets | 
 | the command delay when talking to the controllers. The default of 25 should | 
 | work but you can try lowering it for better performance. If your pads don't | 
 | respond try raising it until they work. Setting the type to 8 allows the | 
 | driver to be used with Dance Dance Revolution or similar games. Arrow keys are | 
 | registered as key presses instead of X and Y axes. | 
 |  | 
 | 3.2 db9.c | 
 | ~~~~~~~~~ | 
 |   Apart from making an interface, there is nothing difficult on using the | 
 | db9.c driver. It uses the following kernel/module command line: | 
 |  | 
 | 	db9.dev=port,type | 
 |  | 
 |   Where 'port' is the number of the parport interface (eg. 0 for parport0). | 
 |  | 
 |   Caveat here: This driver only works on bidirectional parallel ports. If | 
 | your parallel port is recent enough, you should have no trouble with this. | 
 | Old parallel ports may not have this feature. | 
 |  | 
 |   'Type' is the type of joystick or pad attached: | 
 |  | 
 | 	Type | Joystick/Pad | 
 | 	-------------------- | 
 | 	  0  | None | 
 | 	  1  | Multisystem 1-button joystick | 
 | 	  2  | Multisystem 2-button joystick | 
 | 	  3  | Genesis pad (3+1 buttons) | 
 | 	  5  | Genesis pad (5+1 buttons) | 
 | 	  6  | Genesis pad (6+2 buttons) | 
 | 	  7  | Saturn pad (8 buttons) | 
 | 	  8  | Multisystem 1-button joystick (v0.8.0.2 pin-out) | 
 | 	  9  | Two Multisystem 1-button joysticks (v0.8.0.2 pin-out)  | 
 | 	 10  | Amiga CD32 pad | 
 |  | 
 |   Should you want to use more than one of these joysticks/pads at once, you | 
 | can use db9.dev2 and db9.dev3 as additional command line parameters for two | 
 | more joysticks/pads. | 
 |  | 
 | 3.3 turbografx.c | 
 | ~~~~~~~~~~~~~~~~ | 
 |   The turbografx.c driver uses a very simple kernel/module command line: | 
 |  | 
 | 	turbografx.map=port,js1,js2,js3,js4,js5,js6,js7 | 
 |  | 
 |   Where 'port' is the number of the parport interface (eg. 0 for parport0). | 
 |  | 
 |   'jsX' is the number of buttons the Multisystem joysticks connected to the | 
 | interface ports 1-7 have. For a standard multisystem joystick, this is 1. | 
 |  | 
 |   Should you want to use more than one of these interfaces at once, you can | 
 | use turbografx.map2 and turbografx.map3 as additional command line parameters | 
 | for two more interfaces. | 
 |  | 
 | 3.4 PC parallel port pinout | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | 		  .----------------------------------------. | 
 |    At the PC:     \ 13 12 11 10  9  8  7  6  5  4  3  2  1 / | 
 |                    \  25 24 23 22 21 20 19 18 17 16 15 14 / | 
 |                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 |  | 
 | 	  Pin | Name    | Description | 
 | 	~~~~~~|~~~~~~~~~|~~~~~~~~~~ | 
 | 	    1 | /STROBE | Strobe | 
 | 	  2-9 | D0-D7   | Data Bit 0-7 | 
 | 	   10 | /ACK    | Acknowledge | 
 | 	   11 | BUSY    | Busy | 
 | 	   12 | PE      | Paper End | 
 | 	   13 | SELIN   | Select In | 
 | 	   14 | /AUTOFD | Autofeed | 
 | 	   15 | /ERROR  | Error | 
 | 	   16 | /INIT   | Initialize | 
 | 	   17 | /SEL    | Select | 
 | 	18-25 | GND     | Signal Ground | 
 |  | 
 | 3.5 End | 
 | ~~~~~~~ | 
 |   That's all, folks! Have fun! |