Difference between revisions of "Atari interface"

From Deskthority wiki
Jump to navigation Jump to search
(Power Pad confusion ...)
(Added MultiJoy. Some edits)
Line 439: Line 439:
 
Each common line on the connector strobes each joystick in turn.
 
Each common line on the connector strobes each joystick in turn.
 
An adaptor would need diodes to avoid joysticks from clashing. Because the hardware is "temperamental", it is recommended to use germanium diodes with a low voltage drop, or to use a tristate buffer for each joystick. <ref name="worldofsam">WorldOfSam.org—[https://www.worldofsam.org/products/keyboard-and-joystick-port Keyboard and Joystick port]. Dated 2018-05-16. Retrieved 2019-10-05</ref>.
 
An adaptor would need diodes to avoid joysticks from clashing. Because the hardware is "temperamental", it is recommended to use germanium diodes with a low voltage drop, or to use a tristate buffer for each joystick. <ref name="worldofsam">WorldOfSam.org—[https://www.worldofsam.org/products/keyboard-and-joystick-port Keyboard and Joystick port]. Dated 2018-05-16. Retrieved 2019-10-05</ref>.
 +
 +
===Multi-port adaptors===
 +
Numerous adaptors have been made from digital joysticks and gamepads to [[Parallel port|DB-25 parallel ports]].
 +
A typical adaptor or ''Multi Joystick Extender'' connects two (additional) joysticks.
 +
This did require specific software support in multiplayer games for the Amiga and Atari ST.<ref name="amigamje">[http://old.pinouts.ru/InputCables/Amiga4Joysticks_pinout.shtml Amiga 4 joysticks adapter pinout]. Retrieved 2014-10-04</ref>
 +
 +
A ''MultiJoy'' adaptor for the Atari 8-bit computers can connect up to 16 (or more often 8) joysticks on the original joystick ports. Older games that supported three or four players only on the first generation of Atari 8-bit machines have been modified to work with these.
 +
A demultiplexer chip is used to select which joystick's ground line to strobe. The joystick number is output on port 2's direction lines and the selected joystick is read on port 1.
 +
<ref name="multijoy8">Atari 8bit.net—[https://atari8bit.net/multijoy8/ Multijoy8]. Retrieved 2020-04-23</ref>
  
 
==Paddles==
 
==Paddles==
A paddle is a controller with a turnable knob. The name comes from what they were initially ''used'' for: for moving a paddle on the screen back and forth in the game ''Pong'' which simulated table tennis.
+
A paddle is a controller with a turnable knob that has stops.
Paddle controllers were typically two on a Y-cable to the same port.
+
The name comes from what they were initially ''used'' for: for moving a table tennis paddle on the screen in the game ''Pong''.
 +
There were usually two Paddle controllers on a Y-cable to the same port.
  
Each paddle's knob is on a rotary potentiometer, connected to +5V in one end and with the wiper connected to the pot line and only a capacitor against ground for smoothing the signal.
+
Each paddle's knob is on a rotary potentiometer, connected to +5V at the right end and with the wiper connected to the pot line. Turning the knob right decreases the ''resistance''.
Turning the knob right decreases the ''resistance''. Note that ground is not connected: The potentiometer does not alter the voltage but the ''current'' on the pin. Paddles are read relatively slowly by charging a capacitor and measuring the discharge time. Analog-to-digital converters don't work.
+
Note that ground is not connected: there is only a capacitor against ground for smoothing the signal.
 +
The potentiometer does not alter the voltage but the ''current'' on the pin.
 +
On original hardware, paddles were read relatively slowly by first letting the paddle charge a capacitor and then measuring the discharge time.
 +
Modern adaptors that use an analog-to-digital converter connect the paddle as part of a voltage divider.
  
 
Paddles for the Commodore machines have the Atari pinout but the potentiometers are 470 kohm instead of 1 Mohm. This means that Atari paddles are usable on Commodore machines (only with less range) but not the other way around.<ref name="derogeepaddles">Projects of Jan Derogee — [https://home.kpn.nl/bderogee1980/projects/paddle/paddle.html C64 Paddles]. Retrieved 2018-05-23</ref>
 
Paddles for the Commodore machines have the Atari pinout but the potentiometers are 470 kohm instead of 1 Mohm. This means that Atari paddles are usable on Commodore machines (only with less range) but not the other way around.<ref name="derogeepaddles">Projects of Jan Derogee — [https://home.kpn.nl/bderogee1980/projects/paddle/paddle.html C64 Paddles]. Retrieved 2018-05-23</ref>
The paddle interface was used also for mice for the Commodore 64 and for analogue joysticks for the Commodore 64 and the Amiga.<ref name="elowaradcd">AmigaOS 3.5 Developer Docs — Amiga Hardware Reference Manual: Interface hardware:  
+
The paddle interface was used also for pointing devices for the Commodore 64 and for analogue joysticks for the Commodore 64 and the Amiga.<ref name="elowaradcd">AmigaOS 3.5 Developer Docs — Amiga Hardware Reference Manual: Interface hardware:  
 
[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node017D.html Controller Port Interface]. Retrieved 2018-04-18.</ref>
 
[http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_guide/node017D.html Controller Port Interface]. Retrieved 2018-04-18.</ref>
  
Line 632: Line 645:
 
==Related==
 
==Related==
 
Other ports than DE-9 with compatible signals:
 
Other ports than DE-9 with compatible signals:
 
===Parallel port===
 
Numerous adaptors have been made from digital joysticks and gamepads to [[Parallel port|DB-25 parallel ports]].
 
A typical adaptor or ''Multi Joystick Extender'' connects two (additional) joysticks.
 
This did require specific software support and it was supported mostly by multiplayer games for the Amiga and Atari ST.<ref name="amigamje">[http://old.pinouts.ru/InputCables/Amiga4Joysticks_pinout.shtml Amiga 4 joysticks adapter pinout]. Retrieved 2014-10-04</ref>
 
  
 
=== Commodore 116 joystick ===
 
=== Commodore 116 joystick ===

Revision as of 19:05, 23 April 2020

Template icon--Illustration.png This article requires additional photographic illustration

Atari's video game console Atari 2600, released in 1977, introduced a input-device peripheral port that became the de-facto standard on 8-bit and later 16-bit home-computer as well as on some game-consoles up until the mid-1990s.

The port interface has been used primarily for digital joysticks/game controllers but also with different signalling for numeric keypads, trackballs and mice, paddles, analogue joysticks, light pens and various other types of controllers as well as non-input devices. Some alphanumeric keyboards were made but are very rare.

Connector

The connector is a 9-pin D-subminiature (DE-9[footnote 1]), male socket on the host and female plug on the device's cord.

Many hosts have the ports flush with the panel and quite close together, without any threaded nuts. Most device plugs are therefore narrower than standard DE-9 to be able to fit them. Many hosts ports have the "shield" made of non-conductive plastic.

Beware that not all input devices with a DE-9 connector actually use Atari-compatible pinout and/or signals. See Partially compatible and Incompatible below.

Pin-out

Pin 1 Pin 2 Pin 3 Pin 4 Pin 5 Pin 6 Pin 7 Pin 8 Pin 9
Digital joysticks and gamepads
Atari 2600 Up Down Left Right Button (+5V) Ground
Booster grip Trigger +5V Thumb
Atari 7800 Up Down Left Right /Right button 2600 button/Common (+5V) Ground /Left button
C64GS Up Down Left Right Button +5V Ground Button 2
Kempston Interface Up Down Left Right (Button 3) Button (+5V) Ground (Button 2)
Amiga Up Down Left Right (Button 3) Button (+5V) Ground (Button 2)
Amiga CD32 Up Down Left Right Select Red(Button)/Clock +5V Ground Blue/Serial
SAM Coupé Up Down Left Right 0v Button +5V Common Com 2
Analogue controller
Atari paddles Left Button Right Button Right Pot +5V Ground Left Pot
Commodore paddle Left button Right Button Pot Y +5V Ground Pot X
Amiga analogue joystick (Button 3) Button 1 Button 2 Pot X +5V Ground Pot Y
Mice and trackballs
Atari Trak-Ball X direction / Up X motion / Down Y direction / Left Y motion / Right Button +5V Ground
Atari ST mouse X1 X0 Y0 Y1 (Middle button) Left button +5V Ground Right button
Amiga mouse Y0 X0 Y1 X1 (Middle button) or (Wheel/Middle button) Left button +5V Ground Right button
Amstrad/Sinclair PC mouse X0 X1 Y0 Y1 (Spare) Left button +5V Ground Right button
Light pens and light guns
Atari Pressure/Trigger Light sensor +5V Ground
Magnum lightphaser Trigger Light sensor +5V Ground
Stack light rifle Trigger Light sensor +5V Ground
Gun stick Hit Trigger +5V Ground
Amiga Pressure/Trigger Light sensor +5V Ground
Keypads
Atari Keyboard Controller, CX21 Row 1 Row 2 Row 3 Row 4 Column 1 Column 3 (+5V) Column 2
Atari CX85 Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Press +5V Ground
Cardco, Rushware, Coplin Bit 0 Bit 1 Bit 2 Bit 3 Press +5V Ground
ColecoVision Up/Bit 0 Down/Bit 2 Left/Bit 3 Right/Bit 1 Keypad strobe Left/Right button (Spinner 1) Joystick strobe (Spinner 2)
Partially compatible
Amstrad CPC Up Down Left Right (Spare) Button 2 Button 1 Common (row 9) Com 2 (row 6)
J-PC Up Down Left Right (+5V) A B Out Ground
Sega 8-bit Up Down Left Right (+5V) Button 1 (Light sensor) Ground Button 2
Sega 16-bit Up Down GND/Left GND/Right +5V A/B Select Ground Start/C

Most lines are active when shorted to a ground line (or strobe). Atari-compatible hosts should have a pull-up resistor on each such line. Input lines that can be active high are marked in bold. Outputs are marked in italics. Entries within parenthesis above are optional but supported by host hardware.

The state of the device's switches is often read directly over the wire. Video games were often running main loops synchronised to the video beam, so switches were polled at most 60 times per second — 16.7 ms interval, which is longer than what most switches are rated for contact bounce.

Hosts could not sense which type of device was connected to a port and software was most often hard-coded for a specific class of devices. In the cases where software could support different classes of devices, the user had to tell the software manually.

Digital joysticks and gamepads

The Suncom TAC-2 (Totally Accurate Controller mk 2) is still popular with retro gamers

Different systems have implemented the standard, sometimes with different extensions for more buttons or other capabilities.

The joysticks have eight directions and one button, often named "Fire" or "Trigger". The directions up, down, left and right have individual pins, with diagonals as combinations of up+left, up+right, down+left and down+right respectively.

Atari joysticks

Atari's joystick standard was introduced with the Atari VCS (Atari 2600 after 1982) and was then used on Atari 8-bit computers (400, 800, 1200, XL, XE) and the Atari ST line (including TT and Falcon). Most games consoles and home computers had two ports but the Atari 400 and 800 had four.

Many third-party joysticks for this pinout do have more than one button, but only for convenience — they are all wired to the same line. Joysticks with repeat-fire were supposed to use the +5V line for power but some are instead powered by the host's pull-up current on the button's pin.[1]

Atari released a Booster grip accessory for the 2600 with a passthrough for the joystick. It added a thumb button and a trigger; each on a POT line, shorting it to +5V when pressed and thus read as a paddle.

The Atari 7800 console has joysticks with two trigger buttons but the console is backwards-compatible, containing also Atari 2600 hardware. Each new trigger button is wired between the 2600's trigger pin and a POT line with pull-down resistors to ground. This setup means that the buttons are two different buttons in 7800 mode but have the same function in Atari 2600 mode. [2]

Commodore joysticks

The Commodore VIC-20 has one "Control port". The Commodore 64 and 128 have two. All support Atari-standard joysticks and could technically also support the additional buttons on the "Booster Grip".

The Commodore 64/128 use the same I/O ports for joysticks as for the keyboard matrix, but not having them part of it. Therefore, most single-player games support a joystick only in port 2, so that joystick and keyboard would not interfere with one-another. Many games use the Space bar for additional input and strobing only for that key. Port 1's button is wired to the Space bar's column which means that pressing the button on a joystick in that port does in these games effectively press Space. Many two-button joystick mods for the C64 have taken advantage of this.

Power Pad

The rare Commodore 64 Power Play Edition, sold only in Germany in 1990 came with a Power Pad[3] — a clone of a NES gamepad with two buttons. It is unknown how the buttons worked.

A version of the gamepad has also been spotted with two additional buttons. On that, one of the Fire buttons was Fire, and the other Up. (Up was often used for Jump in games for Atari joysticks)

C64GS joystick

The doomed Commodore 64 Games System was essentially a Commodore 64C without a keyboard. To compensate for the loss of keys, the joystick got a secondary fire function which shorted +5V to pin 9 (POTX), like the Thumb button on Atari's Booster Grip. (Note that on the Commodore Amiga, the same pin was read as secondary fire but low instead of high.)

The bundled Cheetah Annihilator joystick had a secondary fire button but unfortunately it broke easily and a replacement that supported secondary fire was practically nonexistent.

Amiga

Every Amiga computer has two "Controller ports" which are usually labelled "Mouse" and "Joystick" respectively. The fire button and the mouse's left button use the same input, allowing either to work as the other when only button press is required.[4]

Some Amiga-specific joysticks have a secondary Fire button, which worked like the right mouse buttons. These came about because of the popularity of using Sega gamepads on the Amiga, where a button triggers that pin.

Amiga CD32 gamepad

The Amiga CD32 games console is based on regular Amiga hardware with two controller ports. The gamepad has a D-pad and seven buttons: Blue, Red, Yellow, Green, Right Front, Left Front and Pause. It would of course work in other Amigas given software support.

Games not specifically made for the CD32 game-pad (such as ports) would leave pin 5 high which makes Red work as Fire, and Blue as the second button. When pin 5 is low, the button state could be read serially on pin 9 from a 74LS165N shift register using pin 6 as a clock. The register is reset by setting pin 5 high again. [5]

ZX Spectrum

The original Sinclair ZX Spectrum did not originally come with a joystick port so most games used the keyboard. The standard was to use 5-8 on the numeric row as cursor keys.

A two-port expansion card called ZX Interface 2 was released by Sinclair but not before the single-port Kempston Joystick Interface expansion card from Kempston Micro Electronics had established itself on the market. The ZX Interface 2 mapped joysticks to keyboard keys on the numeric row — but to different keys than the cursor standard. Other cards exist that map to either, to both or to both and the older keyboard standard.

The ZX Interface 2 does not connect the +5V line, so joysticks with turbo/auto-fire do not work. [6] The Kempston does not only connect the +5V line, it also allows lines 9 and 5 to be read as buttons.[7]

The Spectrum +2 and later (the Amstrad era) did come with 2 DE-9 joystick ports that were used like the ZX Interface 2's ports by programs — but the pinout is different from the Atari standard.

SAM Coupé

The SAM Coupé 8-bit computer has a single joystick port that connects one Atari-compatible joystick, or two with an adaptor.

Both inputs and the strobe lines are shared with the keyboard matrix, with each joystick's inputs producing keycodes that already exist on the keyboard. Each common line on the connector strobes each joystick in turn. An adaptor would need diodes to avoid joysticks from clashing. Because the hardware is "temperamental", it is recommended to use germanium diodes with a low voltage drop, or to use a tristate buffer for each joystick. [8].

Multi-port adaptors

Numerous adaptors have been made from digital joysticks and gamepads to DB-25 parallel ports. A typical adaptor or Multi Joystick Extender connects two (additional) joysticks. This did require specific software support in multiplayer games for the Amiga and Atari ST.[9]

A MultiJoy adaptor for the Atari 8-bit computers can connect up to 16 (or more often 8) joysticks on the original joystick ports. Older games that supported three or four players only on the first generation of Atari 8-bit machines have been modified to work with these. A demultiplexer chip is used to select which joystick's ground line to strobe. The joystick number is output on port 2's direction lines and the selected joystick is read on port 1. [10]

Paddles

A paddle is a controller with a turnable knob that has stops. The name comes from what they were initially used for: for moving a table tennis paddle on the screen in the game Pong. There were usually two Paddle controllers on a Y-cable to the same port.

Each paddle's knob is on a rotary potentiometer, connected to +5V at the right end and with the wiper connected to the pot line. Turning the knob right decreases the resistance. Note that ground is not connected: there is only a capacitor against ground for smoothing the signal. The potentiometer does not alter the voltage but the current on the pin. On original hardware, paddles were read relatively slowly by first letting the paddle charge a capacitor and then measuring the discharge time. Modern adaptors that use an analog-to-digital converter connect the paddle as part of a voltage divider.

Paddles for the Commodore machines have the Atari pinout but the potentiometers are 470 kohm instead of 1 Mohm. This means that Atari paddles are usable on Commodore machines (only with less range) but not the other way around.[11] The paddle interface was used also for pointing devices for the Commodore 64 and for analogue joysticks for the Commodore 64 and the Amiga.[4]

Keyboards

Atari 7800 keyboard

A QWERTY keyboard had been announced for the Atari 7800 video games console when it was launched in 1984 but the keyboard was never released. The keyboard was the same as in the 600/800XL but with a special controller, and connected via port 2.[12].

Keypads

Atari 2600 Keyboard Controller

Several pins on the Atari 2600 and 8-bit computers were bidirectional and could be put to other use. The Keyboard Controller has a telephone-style numeric layout with # and * buttons, exposed as a 4×3 matrix using the direction, Trigger and Pot lines.[13] It was often used with Atari 8-bit computers as a numeric keypad.

Atari CX85 Numerical Keypad

The Atari CX85 Numerical Keypad had 17 keys and a different protocol from the previous keyboard controller. Instead of exposing a matrix, it produces a scancode on the direction and pot lines. [14]

Cardco Cardkey

The Cardkey is a 16-key keyboard that produces a scancode + "button" press. The C64 driver also supports the CX85. The scancodes for the numeric keys are the values printed on those keys. Each key is set up only with diodes to the input lines which means that there is only 1-key rollover and two keys at once would produce the wrong scancode.[15]

Rushware keypad

Produces the same scancodes as Cardco Cardkey but activates differently.[16]

Coplin keypad

Nicholas Coplin has designed and published free schematics for a numeric keypad as well as a driver for the Commodore 64. Keys produce the same codes as corresponding joystick directions, allowing the keypad to be used as cursor keys in programs that were made for joysticks. This includes also diagonals, so e.g. key 8 + key 4 = key 7. Keys 0 and 5 produce opposing directions at once and Enter is wired to Fire. [17]

ColecoVision controllers

The ColecoVision games console and Coleco Adam computer supported Atari joysticks (without autofire) but came with extended controllers that had not only a joystick but two buttons and a 3×4 numeric keypad all in one. Instead of one ground line they had two strobe lines: the pin 8 for the Joystick in Atari-compatible fashion, and pin 5 activating the second button and keypad providing a scancode instead of a direction.

The Super Action Controller has also two additional buttons wired as part of the keypad and a horizontal spinner producing a quadrature code.[18]

Mice and trackballs

Typical ball-mice and trackballs have opto-mechanical sensors for the X and Y axes, each producing two pulse trains that are 90 degrees out of phase with one-another. (The same as a 2-bit Gray code, also called "quadrature encoding")

8-bit machines

It was problematic for an 8-bit machine with no dedicated hardware to read quadrature code fast enough and still have time for other processing.

Atari's Trak-Ball controllers for the Atari 2600 converted the quadrature code into either joystick input or into direction and motion pulses.[19] The latter signalling meant that a missed reading would only cause failing to move one (or more) steps instead of moving in the wrong direction. Mice and trackballs for Atari's 8-bit home computers used the same type of signalling.

File:Amiga Mouse.jpg
First iteration of Commodore Amiga mouse, styled the same as the mice for the Commodore 64

Commodore's own mice either emulated a joystick or used potentiometers (like paddles) that wrapped around.

Mice for J-PC machines have instead internal logic for reading the encoders, with the obvious drawback that they were more expensive. The mouse presents X and Y byte-counters as nybbles on pins 1-4 in alternating order, but the other pins follow the J-PC pinout which does not work with the Atari-standard without an adaptor. The NEOS Mouse for the Commodore 64 was in essence a J-PC mouse, with the pinout changed to work with the Commodore 64. [20]


Atari ST and Amiga

Mice for both the Amiga and Atari ST are Bus mice which produce quadrature signals and buttons to different pins. Some third-party mice have support for both systems, selected via a switch that only changes which pins the quadrature signals go to. The left mouse button is wired the same as a joystick's Fire button and the other button(s)s also short to ground.

On the Amiga, signals are interpreted by circuitry in its custom chipset and there is hardware support for a mouse in each port. A second Amiga mouse can be used only in some two-player games, however. On the Atari, one mouse can be plugged into a dedicated mouse/joystick port on the keyboard, which is interpreted by the keyboard's microcontroller. A curious detail is that the Atari ST's right mouse-button is wired to and read as the other port's Fire button.

Amigas typically have two-button mice. Commodore made a three-button mouse only for the Amiga 3000UX that ran Amiga UNIX but many third-party Amiga mice also came with middle-button. In the late 1990s, there appeared third-party Amiga mice with scroll wheels, using varying current on the POTX line (pin 5) for input which required a special driver. The third button is represented in a new way.[21]

The Amiga's operating system provides (when booted into Workbench) also mouse keys as combinations together with the Amiga keys.

PC bus mouse

When Atari and Commodore started offering IBM-compatible PCs with built-in mouse support, they reused their mice and ports from the Atari ST and Amiga respectively as bus mice. Atari's "STM1" mouse got relabelled as "PCM1" for use with Atari PCs.[22]. The Atari PC's mouse ports support a third (middle) mouse button [23], whereas the Atari ST does not. Amiga-compatible mouse ports were standard (on the motherboard) on the Commodore PC10-III and PC20-III.[24]

Amstrad PC-1512[25], PC-1640[26] and Sinclair PC-200[27] (made by Amstrad) got a dedicated 9-pin port for a bus mouse. They use almost the Atari ST pinout except that the horizontal axis is flipped. A curious detail is that the two mouse buttons' lines were fed to the keyboard and reported by it as key codes.


Steering wheels

The Driving Controller accessory for the Atari 2600 looks similar to Atari paddles but the knob can be turned around without any stops. It uses a 16-stop rotary encoder but produces pulse trains on pins 1 and 2. [28]

Steering wheel controllers for the Amiga were supposed to also use the same pulse-train signalling as mice.

Light pens and light guns

Atari 2600, 7800 and 8-bit computers and Commodore's C64 and Amiga support light pens and light guns through a line in one port connected to the video chip.

A light pen has a pressure-switch at the tip to tell the host when to read the screen position where as a light gun used a finger-operated trigger for the same purpose. The light sensor shared the same pin as a joystick's button, so the pressure had to use a different pin and that differed a bit between devices.

Light pens and light guns for the Atari 8-bit computers grounded pin 1 (up) [29] For the Commodore 64, most light pens also used pin 1 [30] but the most popular light guns shorted pin 5 (POTY) to +5V.[31] Stack's light rifle grounded pin 3 (left)[32]. Devices for the Amiga were supposed to use pin 5[4].


Sega lightphasers had a different pinout but could be used with an adaptor or mod.[33]

The Gun stick light gun for the C64 instead worked like the light gun on the Nintendo Entertainment System: when the trigger was pressed, the screen would turn black except for a white field for one valid target at a time.[34]

Partially compatible

Input devices with DE-9 plugs that may work with some Atari-compliant hosts but are unsafe to use with others, or vice versa.

Amstrad

The Amstrad CPC computers has one or two "User ports" for two-button Amstrad joysticks. Amstrad PC-1512[25] and PC-1640[26] had a single Amstrad "Joystick" port on the keyboard. The joystick port/s are actually part of the computer's keyboard matrix and are strobed by the keyboard controller.

Many games used Button 2 as primary fire, so they supported Atari-standard one-button joysticks. If Button 1 was needed, its function was often also on a keyboard key. The opposite however: using an Amstrad joystick in a Atari-compliant port (such as the Amstrad/Sinclair PC mouse port) could damage the system because pressing Button 1 would short the +5V line to Ground.

The CPC supported up to two joysticks on the same port, using pass-through or an adaptor using diodes to avoid ghosting. The first joystick had its ground line strobed on pin 8, and the second on pin 9 — each being a separate column in the keyboard matrix.

CPC+/GX4000 had two ports through wiring almost like such an adaptor except that diodes were missing for the fire buttons, thus introducing conflicts between joysticks. The two-port machines also lacked the "spare" line and were incompatible with some older peripherals, especially those that had been using pins as outputs. [35]

Amstrad PC's did not support a second joystick, and Sinclair PC-200 had an IBM-compatible Game port instead[27].

J-PC

The J-PC standard was used by primarily Japanese systems such as MSX (multiple manufacturers), FM Towns and the Sharp X68000 and on expansion cards for Japanese PC systems.

The "Out" strobe on pin 8 is used by the host to access special features on certain controllers, such as MSX-compatible mice. Most games will keep pin 8 grounded, which will allow Atari-compatible joysticks to be used.

The gamepad for the FM Towns Marty had also Run and Select buttons, implemented as Left and Right, and Up and Down respectively.[36]

Mice and trackballs for J-PC machines had logic in them instead of requiring logic in the host, and therefore a different interface. An Amiga or Atari-compatible mouse must never be connected to a J-PC system, as pressing the right mouse button would short +5V to Ground.

See also:

Sega

Sega 8-bit

Sega's various 8-bit consoles have mostly the same hardware, albeit upgraded in later models and with small differences between models for Japan and for other markets. The first SG-1000 came with two joysticks. The SG-1000 Mark-II and SG-1000 Mark-III had gamepads, each with a detachable joystick nub on the d-pad. The Sega Master System came with gamepads without joystick nubs.

The standard controllers are passive devices containing switches and no electronics, so they should be safe to use with Atari-compliant host sockets.[Citation needed] The second button are supported by many Amiga games, and by the Kempston interface for the ZX Spectrum but not by Atari systems.

Active controllers draw power from pin 5 instead of pin 7. Pin 7 was used by light-guns. Paddles for the SG-1000 Mark III/Master System contain an A/D converter and presents the reading in 8 bits divided into nybbles on lines 1-4, with pin 9 to indicate high/low nybble. On the Master System outside Japan, the pinout was slightly different so the host first selected high/low nybble on pin 7.[37]

Sega 16-bit

The Sega 16-bit Sega Mega Drive/Genesis is mostly backwards-compatible with the 8-bit machines, and its controller port is the same, except that the controllers use special protocols over existing pins for more buttons. Sega 16-bit gamepads draw power on pin 5, using pin 7 instead to select between groups of inputs on the other pins.[38] This works with many Atari-compatible hosts that keep pin 5 high at all times, using it as input for paddles or as a button input with a pull-up resistor.

However, unlike the Atari standard which has pull-up resistors on each input line on the host side, Sega 16-bit systems have them in the controller. This means that lines are high when not active, and this could damage some hardware. For instance, the Commodore 64 and 128 computers reuse the same physical lines for ports and the keyboard matrix, which could lead to excess current into the I/O chip (CIA #1) if a key is pressed while a Sega gamepad is plugged in. The host could however be protected with a simple adaptor with diodes on the input pins. [39]

Sega 16-bit gamepads should be safe for use on most Amiga computers, where buttons B and C work as Fire/Left mouse and Secondary fire/Right mouse. However, if a game tries to talk to a Sega 16-bit gamepad as a Amiga CD32 gamepad, power would be intermittent and in this case, an adaptor would be needed. A small number of Amiga games (Hired Guns, Flashback, ADoom...) are able to talk Sega's 3-button or even 6-button protocol but those require a modified gamepad or special adaptor that crosses pins 5 and 7. Some guides recommend also using diodes and putting a 470ohm resistor in-between pins 5 and 7 for extra protection.[Citation needed]

The three-button controller for the Sega Mega Drive/Genesis uses a 74157 selector to change between two sets of inputs. Setting the "Select" pin high selects Left/Right/B/C, while setting it low selects GND/GND/A/Start. Because Left and Right are opposing directions and should not be active at once, the host should be able to detect the controller as having three buttons.[footnote 2] The normal state for a Sega host is to have the select pin high, and to pulse it low for a short time during each video frame period when it polls the inputs. [40]

Sega's six-button controller for the Mega Drive/Genesis has a microcontroller instead of a selector chip. A game supporting a six-button controller pulses the Select line low at least four times per video frame in quick intervals. During the third pulse, lines 1 through 4 all read low and during the fourth pulse, lines 1 through 4 all read high, but in-between those two pulses they read the values of Z, Y, X and the mode switch respectively. Within that special period, pins 6 and 9 always read high. For six-button reporting to kick in, the pulses must be short enough with a long enough interval until the next time. There is also a mode-switch for disabling six-button behaviour in the controller for older games that use different timing for the select-line. [41] [40]

Other Sega 16-bit peripherals that used the DE-9 ports included a keyboard, keypad, mice, light guns and multiplayer adaptors. A keyboard was made to be used with Internet multiplayer services from XBAND (US) and Teclado Mega Net (Brazil). It was connected to port #2.[42]. The ports did not have any serial hardware, so the protocol was probably "bit-banged" by the CPU.

Related

Other ports than DE-9 with compatible signals:

Commodore 116 joystick

The unusual Commodore 116 line, including the Plus 4 and Commodore 16 had two mini-DIN ports instead of the standard DE-9 ports. Those were electrically compatible to the Atari standard and joysticks could be used with a simple adaptor. It has though been reported that the interface chip inside those computers could be damaged by joysticks with auto-fire capability. [43]

Atari Extended Joystick Ports

Atari ste-extended joystick ports.jpg

The Atari STe and Falcon computers have also two DE-15 Extended Joystick Ports. Each of these ports could with a Y-cable connect two DE-9 joysticks.[44]

Atari Jaguar

The Atari Jaguar's game controllers also have DE-15 connectors but with its own pin-out exposing a button matrix. These could be used with 15-pin ports on the STe and Falcon albeit with a different pinout than intended for these ports. The Jaguar controller's directions and one button are on the same matrix column which allows adaptors to DE-9 ports to be constructed with simple wiring. [45]

Incompatible

Different pinout

DE-9 connectors with different pinout, but are signal-compatible with a passive adaptor (may or may not require diodes).

Spectrum +2

Sinclair Spectrum +2 and later (Amstrad era) have two joystick ports. They are accessed by programs in the same manner as the ZX Interface 2 but the pinout is no longer Atari-compatible but specific to this line of computers.

TI-99

The Texas Instruments TI-99/4A has a different pinout on its DE-9 port. It supports supports two digital joysticks by strobing different ground lines (like Amstrad CPC). An adaptor should have diodes to avoid interference.[46]

Vectrex

A Vectrex controller has an analogue joystick and four buttons. Each of the analogue stick's potentiometers have its ends connected to -5V and +5V and uses different resistor values than Atari, plus a slightly different pinout. [47] Nonetheless, adaptors both to the Atari standard[48] and from digital Atari and Sega controllers have been made.

Different signalling

Incompatible, that would require an active converter to connect:

  • Serial mice for the IBM PC, with RS-232 signalling.
  • Some Intellivision consoles have a DE-9 plugs for each of its controllers. The joystick has 16 directions, there are three buttons and a keypad — each producing a scancode shorted to ground (pin 5). Buttons and directions don't interfere though. An adaptor from an Atari joystick would require some logic and perhaps external power.[49]. The Intellivision Flashback console also has DE-9 connectors but the pinout is different.[Citation needed]
  • Gamepads for the 3DO console. They used serial communication for up to eight controllers daisy-chained from the same host port. Each also had a headphone jack with stereo sound.[50][51]
  • Several clones of the Nintendo Famicom — "Famiclones" used DE-9 ports with Nintendo's serial protocol.

Different gender

Other uses of 9-pin d-subminiature but different signals and different gender from the Atari standard:

  • Analogue joysticks and paddles for the Apple IIGS.
  • SGI mouse 021-0004-002 used a serial protocol.[52][53]

Adaptors to USB

Active adaptors (protocol converters) have also been part of keyboard-adaptors for e.g. the Commodore Amiga and Commodore 64.

For mices adaptor to/from Commodore Amiga, Atari ST and PCs, see also [Mouse].

Open source/hardware

  • Stelladaptor. Designed especially for the Atari 2600 emulator Stella. Once manufactured by AtariAge, then discontinued and opened up. Handles joystick as analogue USB joystick. Input from paddles and driving controller are in a special format that Stella treats differently if from a "Stelladaptor". Based on the PIC16C745.
  • Simon Inns' Atari joystick USB adapter. Schematics and source code for two-port joystick-only adaptor. PIC18F2550 µcontroller available under the Creative Commons license.
  • Kair.us Jakadapter. Supports two joysticks, paddles and Sega gamepads. Based on the PIC18F24K50.

For sale and Open Source

Commercial

  • 2600-daptor. Four generations with different capabilities. Latest supports a large number of devices, with DIP switches or auto-detect if holding down first button when connecting.
  • Retro-Bit Atari 2600 to USB adapter. Connects two joysticks.

Footnotes

  1. The DE-9 is very often incorrectly labelled as DB-9 or DB9, even within the electronics industry. The letter after 'D' actually signifies the size of the connector. An actual DB-9 port would be as wide as a DB-25 serial port but have only nine pins. The DE-9 shares size with DE-15 (known for VGA)
  2. There are third-party Sega controller where the D-pad lacks a central pivot, thus allowing opposite directional inputs to be active at once...

External links

References

  1. Jakadapter. Section "Hardware", third paragraph. Dated 2018-10-20. Retrieved 2018-12-02
  2. AtariAge 7800 FAQ. Retrieved 2017-03-30.
  3. Retroport.de—Commodore C64C Power Play Edition (1990). Retrieved 2018-06-07
  4. 4.0 4.1 4.2 AmigaOS 3.5 Developer Docs — Amiga Hardware Reference Manual: Interface hardware: Controller Port Interface. Retrieved 2018-04-18.
  5. CD32 Gamepad A100 re-engineered documentation. Retrieved 2015-08-16.
  6. Sinclair ZX Resource Centre — ZX Interface 2. Retrieved 2018-05-24
  7. 8bit Projects for Everyone—Kempston Joystick. Dated 2002-10-12. Retrieved 2018-05-24
  8. WorldOfSam.org—Keyboard and Joystick port. Dated 2018-05-16. Retrieved 2019-10-05
  9. Amiga 4 joysticks adapter pinout. Retrieved 2014-10-04
  10. Atari 8bit.net—Multijoy8. Retrieved 2020-04-23
  11. Projects of Jan Derogee — C64 Paddles. Retrieved 2018-05-23
  12. Atari Museum—The Atari 7800 PRO System Computer Keyboard. Retrieved 2018-11-16
  13. Atari 400/800 Hardware Manual, Dated 1982. Retrieved from [www.atarimania.com AtariMania] on 2018-04-24
  14. Atari CX85 Numerical Keypad Technical References Notes. Retrieved from [www.atarimania.com AtariMania]
  15. Post by buzbard in the lemon64.com forum—Numerical keypad from Commmodore calculator? on 2012-09-12. Retrived 2018-06-11
  16. C64 Wiki—Rushware keypad. Last edited 2016-12-05. Retrieved 2018-06-12
  17. 64HDD—Numeric Keypad by Nicholas Coplin.
  18. Programming Ponderings—Ultimate Classic Game Console Joystick to USB Adapter. Dated 2015-12-28. Retrieved 2018-04-24
  19. AtariMania — Atari CX22 Trakball Field Service Manual. Rev 01. Nov 1983. Retrieved 2018-06-05.
  20. C64 Wiki—NEOS Mouse. Dated 2017-05-09. Retrieved 2018-06-07
  21. Micromys.de—Micromys support page - Amiga mouse mode with wheel support. Dated 2000. Retrieved 2019-03-24
  22. AtariPC.net—PC3 8088. Retrieved 2019-03-24
  23. Atari PC Owner's manual Scan on ataripc.net. Page 65. Dated 1987. Retrieved 2019-03-24
  24. Ancient Electronics blog—[https://ancientelectronics.wordpress.com/2015/06/17/commodore-colt-commodore-pc10-iii-pc20-iii/ Commodore Colt (Commodore PC10-III, PC20-III)
  25. 25.0 25.1 Amstrad PC1512 Technical Reference Manual. Copy on John Elliott's homepage, retrieved 2019-03-29
  26. 26.0 26.1 AMSTRAD PC1640 TECHNICAL MANUAL. Copy on John Elliott's homepage, retrieved 2019-03-29
  27. 27.0 27.1 The Vintage Computer Club Malta—SINCLAIR PC 200. Retrieved 2019-03-26
  28. Atari7800.org: Scanned manual page Driving Controller Check. Retrieved 2018-06-05
  29. Atari HQ: ATARI XEGS INFORMATION.
  30. C64 Wiki — Light pen. Dated 2017-05-26. Retrieved 2018-05-24
  31. Projects of Jan Derogee—C64 Lightguns/Magnum light phaser ( and compatible models ). Retrieved 2018-06-11
  32. Projects of Jan Derogee—C64 Lightguns/Stack light rifle. Retrieved 2018-06-11
  33. 64HDD—Commodore™ C64 Hardware Projects: Light gun. Nicholas Coplin.
  34. Projects of Jan Derogee—C64 Lightguns/Gun stick. Retrived 2018-06-11
  35. CPCWiki — Connector:Digital joystick. Dated 2013-02-08. Retrieved 2018-05-24
  36. GameSX—[https://gamesx.com/controldata/fmtownsjoy.htm FM Towns/Marty joystick pinout. Retrieved 2018-06-14
  37. Raphaël Assénat—DIY SMS/MarkIII paddle controller. Dated 2016-10-15. Retrieved 2018-06-11
  38. Pinouts.ru—Sega Genesis Joystick controller pinout. Retrieved 2014-10-04
  39. Doug Cotton, Mark Fellows: Hard Tips, Building a Sega 'Game Pad' Adapter. Commodore World, Volume 1, Issue 05 (at Scribd). Retrieved 2018-05-24.
  40. 40.0 40.1 Charlie Rosenberg's home page— Sega Six Button Controller Hardware Info. Dated 1996-09-09. Retrieved 2017-11-17
  41. Ein Terakawa. Interface Protocol of SEGA MegaDrive's 6-Button-Controller. Retrieved 2017-11-17.
  42. Sega Retro—XB∀ND Keyboard. Version from 2017-07-22 04:32. Retrieved 2018-11-16
  43. Youtube: Dan Wood - kookytech.net Commodore 16 and Games Review. Watched 2016-08-07
  44. Atari ST Interfaces and Connectors
  45. gamesx.com: The Atari Enhanced Joystick Ports FAQ. Version 0.90, 1996-09-24. Retrieved 2016-05-07
  46. Compute! Issue 39 - August 1983. Gary Cook: How To Build Your Own TI-99/4A Joystick Adapter. Retrieved from www.AtariMagazines.com on 2018-04-24
  47. Computer Nerd Kev—Vectrex Service Manual (archived). Retrieved 2018-06-12
  48. Computer Nerd Kev— Vectrex Controller to Atari 2600 Adapter. Kevin Koster 2015. Retrieved 2018-06-12
  49. Jay's Video Game Page (ARCade ARChive)—Intellivision Controller Pinouts. Dated 1998-06-28. Retrieved 2018-06-11
  50. Archive.org—3DO Transmitter for SST2X Circuit schema by H.Kashima. Snapshot from 2003-12-10.
  51. Youtube—Classic Game Room - PANASONIC 3DO Controller Review. Published 2011-06-27. Watched 2018-06-07
  52. Image in ad on sekeimon.com—021-0004-002 - SGI MOUSE 9-PIN D-SUB. Retrieved 2018-06-12
  53. Hardware Book—SGI Mouse (Model 021-0004-002) Connector