Fully compatible systems The
VIC-20 has one
Control Port, and the
Commodore 64 had two ports, each a complete implementation of the Atari standard. They differed from the Atari systems primarily in the hardware used to decode the inputs. The digital pins on the Commodore 64's control ports were read by a
MOS Technology CIA chip, and the analog paddle inputs in fashion similar to the Atari by the
MOS Technology SID sound chip in conjunction with a timer. There was only one set of two inputs for this purpose in the SID, so another register controlled which of the two ports was connected to the SID at any given instant. Light pens could only be used in Control Port 1 and worked in a similar way to the Atari, but was based on a faster clock so the horizontal axis read from 0 to 511. The accuracy was the same as the Atari however, as the values were rounded off to even values only. The same port pins on the CIA #1 were also used for handling the keyboard and other housekeeping tasks, which led to some problems. For instance, the left direction switch of Control Port 1 was wired to the same input as the key on the keyboard, and when it was used it would cause scrolling in BASIC programs to slow down. Due to the way keyboard scanning was handled, holding down the trigger would cause random characters to be generated. As a result, many C64 games required the joystick to be plugged into Control Port 2. On the
Atari ST, the two ports were normally configured with Port 0 set to mouse mode and Port 1 to joystick. In joystick mode they operated largely identically to the earlier machines, but in mouse mode the system watched the ports for discrete inputs on the various directional pins, or "events". The mouse sensor generated 200 events for every inch of movement, and the system could track these fast enough to handle movements of up to 10 inches per second. Handling the ports, the keyboard and a
real-time clock was a dedicated Intelligent Keyboard (ikbd) controller. The ST implementation of the joystick port lacked analog input, the following STE model introduced an enhanced joystick port which used a 15-pin dsub that had analog support. The Commodore
Amiga had a complete two-port implementation known as
gameports. Unlike earlier systems that had to be interpreted by examining bits in registers, the Amiga's OS had a number of drivers and libraries that made interaction simple. This included handlers for five types of input devices, include mice, joysticks, light pens and "proportional controllers" as a catch-all for analog inputs like paddles and analog joysticks. They also had settings for how and when the OS would report changes. For instance, the programmer could set the drivers to only report when the mouse had moved at least 10 events, thus lowering how often they had to deal with mouse movement.
Semi-compatible systems The
TI-99/4A home computer series used a 9-pin connector that was physically identical to the Atari version, as well as being similar in terms of the devices and the way they worked. However, the port's pins were re-arranged and it used the separate grounds to select which joystick to read, so it was not directly compatible. Converters allowing Atari-standard devices to be plugged in were both simple and very common. The manufacturer and most makers of adapters included diodes on all lines of each joystick except the grounds to prevent false key presses. The
ColecoVision game console extended the 2600 controller with two (or four) triggers and a 12 key pad. The ColecoVision also supported driving controllers and
trackballs. Many ColecoVision games can be played with an Atari-compatible controller, if a Coleco controller is plugged into the second port and used to select the game. The
Atari 7800 game console extended the 2600 controller with a second trigger. 7800 games not requiring two triggers can be played with classic controllers.
MSX home computers used a slightly modified version of the port, replacing one of the analog inputs with a second trigger, and the other with a
strobe pin. Under normal operation, any Atari style joystick could be used, although it would lack the second trigger button. The strobe pin was used to support mouse input. Electrically, a mouse generates what is essentially a random stream of pulses as it moves. On systems like the ST and Amiga, custom hardware was used to carefully track these in order for the motion to be smoothly followed, as the
CPU might become too busy with other tasks to follow the rapid interrupts. Less powerful 8-bit designs did not have the performance to smoothly track a mouse without additional hardware, and the MSX designs, based on off-the-shelf hardware, lacked this ability. Instead, the tracking hardware was moved into the mouse. The mice held two 8-bit values tracking the movement in X and Y since the last time they had been polled. To read the values out, the strobe pin was pulled high four times. With each pulse, a
nibble of the two bytes was output on the four directional pins in serial fashion. The strobe pulse also reset the value to zero, starting the polling process over again. MSX mice were expensive, and this led to adaptors for PS/2 style mice, which operated along similar principles.
Sega Master System and
Genesis game console controllers are backward-compatible and can be used with the Atari 2600. Not all
Magnavox Odyssey 2 systems had removable controllers. For the models that do, a simple adapter to rearrange the pins is all that is required. Some
Amstrad PCs, that were otherwise
IBM PC compatible, had Atari-compatible digital gameports rather than the
PC analog standard. Software such as
Elite and
GEM had support for the Amstrad digital gameport. Otherwise, the joystick directionals were mapped to keys on the keyboard. The
X68000 has two joystick ports, both 9-pin male and supporting Atari standard joysticks.
Systems using adaptors The Apple II also had a joystick port using a 9-pin D-sub, but it was a very different system that connected two analog joysticks to a single port. These were not very suitable for directional games, and adapters for Atari port devices were common, both commercial ones like the
Sirius Joyport, as well as many home-brew systems. Unlike the ports used on the Commodore systems, most of the homebrew systems only adapted the joystick, and generally did not include the other inputs. These adapters did not allow the analog inputs of paddles to be used, in spite of the port already handling these inputs directly meaning all that was needed was a mechanical adapter. The
ZX Spectrum prior to the Spectrum +2 had no built-in controller port, which led to a profusion of different inputs. Atari port adapters were common, and several devices emerged including the
Kempston Interface and
ZX Interface 2 that were incompatible with each other. The Interface 2 turned joystick presses into keyboard presses, and thus could not generate the analog signals of the paddles. The later Amstrad-built Spectrum models - the +2, +2A, and +3 - included two built-in joystick ports, however the pinout of the connectors was non-standard. One-button Atari joysticks can be used with a simple wiring adaptor to convert the ports to the standard pinout. The
BBC Micro had a relatively complex port system which was based on a 15-pin D-connector that supported two analog joysticks like the ones on the Apple II. These ran to dedicated analog-to-digital circuitry, which made them excellent for the sort of interfacing tasks seen in (for instance)
AtariLab. However, the popularity of the Atari port was such that adapters were also available for this system, varying widely in the number and types of control devices they supported.
Chart of compatible systems ==Notes==