IBM Game Control Adapter Interface

The IBM Game Control Adapter provides four analog inputs and four digital inputs, supporting one 3-dimensional joystick or two 2-dimensional joysticks. All information is read from address 0x201. The layout of the address follows:

Bit Input type Contents
7 Digital Device B, button 2
6 Digital Device B, button 1
5 Digital Device A, button 2
4 Digital Device A, button 1
3 Resistive Device B, y coordinate
2 Resistive Device B, x coordinate
1 Resistive Device A, y coordinate
0 Resistive Device A, x coordinate

Button states are indicated on bits 7 through 4, which are cleared when the corresponding button is pressed and set when the button is released.

Bits 3 through 0 are used to determine the joystick coordinates. Each joystick coordinate has a potentiometer whose resistance increases the further the joystick is pushed. When the adapter receives an OUT instruction to address 0x201, it sets bits 3 through 0 and starts four one-shot timers, each corresponding to a single coordinate. The duration of each timer is proportional to the resistance of the respective potentiometer. The bits clear at different times, depending on the value for each coordinate; the larger the coordinate value, the longer the timeout period.