DE-9 Connector: Difference between revisions
| (17 intermediate revisions by the same user not shown) | |||
| Line 19: | Line 19: | ||
'''Legend:''' | '''Legend:''' | ||
{| class="wikitable" style="margin:0 0 1em 0 | {| class="wikitable" style="margin:0 0 1em 0" | ||
! Colour !! Meaning | ! Colour !! Meaning | ||
|- | |- | ||
| style="background:#cfc | | style="background:#cfc" | Green || Common joystick default across most DE-9 implementations (Up, Down, Left, Right, Button 1, +5 V, GND) | ||
|- | |- | ||
| style="background:#ffc0c0 | | style="background:#ffc0c0" | Red || System-specific, conflicting, or non-standard assignment | ||
|- | |||
| style="background:#e0e0e0" | Grey || Unused / Not connected | |||
|} | |} | ||
| Line 44: | Line 46: | ||
|- | |- | ||
|1 | |1 | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background:#cfc | |style="background:#cfc"|Up | ||
|style="background | |style="background:#ffc0c0"|GND | ||
|style="background | |style="background:#e0e0e0"|Unused | ||
|- | |- | ||
|2 | |2 | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background:#cfc | |style="background:#cfc"|Down | ||
|style="background | |style="background:#ffc0c0"|Down | ||
|style="background | |style="background:#ffc0c0"|GND | ||
|- | |- | ||
|3 | |3 | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background:#cfc | |style="background:#cfc"|Left | ||
|style="background | |style="background:#ffc0c0"|1Y (-, Left) | ||
|style="background | |style="background:#ffc0c0"|Up | ||
|style="background | |style="background:#e0e0e0"|Unused | ||
|- | |- | ||
|4 | |4 | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background:#cfc | |style="background:#cfc"|Right | ||
|style="background | |style="background:#ffc0c0"|2Y (-, Right) | ||
|style="background | |style="background:#ffc0c0"|+5 V | ||
|style="background | |style="background:#ffc0c0"|Button | ||
|- | |- | ||
|5 | |5 | ||
|Button 3 | |Button 3 | ||
|Paddle B | |Paddle B | ||
|style="background | |style="background:#ffc0c0"|Button Right | ||
| | |style="background:#e0e0e0"|Unused | ||
|Button 3 (POTY) | |Button 3 (POTY) | ||
|Button 3 (POTX) | |Button 3 (POTX) | ||
|style="background | |style="background:#ffc0c0"|Shift Load OUT | ||
|Button 3 | |Button 3 | ||
|style="background | |style="background:#ffc0c0"|+5 V | ||
|style="background:# | |style="background:#ffc0c0"|+5 V | ||
|style="background:# | |style="background:#ffc0c0"|+5 V | ||
|style="background | |style="background:#ffc0c0"|Select OUT 1 | ||
|style="background | |style="background:#ffc0c0"|Up | ||
|- | |- | ||
|6 | |6 | ||
|style="background:#cfc | |style="background:#cfc"|Button 1 | ||
|style="background:#cfc | |style="background:#cfc"|Button | ||
|style="background | |style="background:#ffc0c0"|Button common | ||
|style="background:#cfc | |style="background:#cfc"|Button 1 | ||
|style="background:#cfc | |style="background:#cfc"|Button 1 | ||
|style="background:#cfc | |style="background:#cfc"|Button 1 | ||
|style="background | |style="background:#ffc0c0"|Fire, Clock OUT | ||
|Button 2 | |Button 2 | ||
|style="background:#cfc | |style="background:#cfc"|Button 1 | ||
|TL (A) | |TL (A) | ||
|style="background | |style="background:#ffc0c0"|TL (A, B) | ||
|style="background | |style="background:#ffc0c0"|Select OUT 2 | ||
|style="background | |style="background:#ffc0c0"|Right | ||
|- | |- | ||
|7 | |7 | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background:#cfc | |style="background:#cfc"|+5 V | ||
|style="background | |style="background:#ffc0c0"|Button 1 | ||
|style="background | |style="background:#ffc0c0"|Button 2 | ||
|TH ( | |style="background:#e0e0e0"|TH (Unused) | ||
|style="background | |style="background:#ffc0c0"|TH (Select OUT) | ||
|style="background | |style="background:#ffc0c0"|Right | ||
|style="background | |style="background:#ffc0c0"|Left | ||
|- | |- | ||
|8 | |8 | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|GND (Row 9) (*5) | |GND (Row 9) (*5) | ||
|style="background | |style="background:#ffc0c0"|Strobe OUT | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|style="background | |style="background:#ffc0c0"|Left | ||
|style="background:#cfc | |style="background:#cfc"|GND | ||
|- | |- | ||
|9 | |9 | ||
|Button 2 | |Button 2 | ||
|Paddle A | |Paddle A | ||
|style="background | |style="background:#ffc0c0"|Button Left | ||
|Button 2 | |Button 2 | ||
|Button 2 (POTX) | |Button 2 (POTX) | ||
|Button 2 (POTY) | |Button 2 (POTY) | ||
|style="background | |style="background:#ffc0c0"|Serial Data IN | ||
|style="background | |style="background:#ffc0c0"|GND (Row 6) (*5) | ||
|style="background | |style="background:#ffc0c0"|GND | ||
|TR (B) | |TR (B) | ||
|style="background | |style="background:#ffc0c0"|TR (Start, C) | ||
|style="background | |style="background:#ffc0c0"|+5 V | ||
|style="background | |style="background:#ffc0c0"|Down | ||
|} | |} | ||
(*1) The Atari 7800 uses independent button wiring not compatible with the standard Atari joystick pinout. Adapters or rewiring are required for full button functionality. | |||
(*2) On the Atari ST, pin 9 of port 1 (right mouse button) is shared with pin 6 of port 2 (fire). This means only port 1 supports two mouse buttons, and only if port 2 is unused. | |||
The Atari STe and Falcon have DE-15 Extended Joystick Ports, which can accept two DE-9 joysticks with a passive adapter (see [http://info-coach.fr/atari/hardware/interfaces.php info-coach.fr]). | |||
The Atari Jaguar also uses DE-15 connectors, but with a completely different button matrix pinout (see [https://www.gamesx.com/controldata/ejp_faq.htm GameSX]). | |||
(* | (*3) On Commodore machines, the second button (right mouse button) is wired to the POT X line, and the third button (middle mouse button) to POT Y. Unlike the other lines, these must be pulled to +5 V through the button. | ||
( | |||
(* | (*4) The Amiga CD32 supports a “gamepad mode”, activated by pulling pin 5 high. CD32 controllers include active circuitry. Standard Atari-style joysticks work on the CD32, but CD32 pads are not compatible with older machines such as the C64 (see [https://www.mrdictionary.net/PSCD32/diary/2019_08_09.htm?utm_source=chatgpt.com mirror of gerdkautzmann.de] and [https://web.archive.org/web/20250716023820/http://www.hardwarebook.info/Joypad_(Amiga_CD32) HarwareBook.info]). | ||
(*5) On Amstrad systems, GND lines are pulled low to select the respective “row”. A regular joystick uses row 9. | |||
(*6) Sega controllers cannot be converted into Atari controllers simply by rewiring them. Unlike regular Atari sticks, they contain pull-up resistors on each signal line (which may interfere with scanning the keyboard on a C64). Some controllers contain active circuits and will not work without the +5 V supply. The Mega Drive controllers use an active circuit (see [http://gamesx.com/wiki/doku.php?id=controls:megadrive_genesis_controller_3 GameSX] or [http://segaretro.org/Control_Pad_%28Mega_Drive%29 SegaRetro]). The Saturn controllers also contain an active circuit and are wired completely non-standard. Mega Drive controllers can be used as Atari controllers with a simple adapter (see [https://blog.hpz.pw/c64-sega-genesis-joystick-adapter/ blog.hpz.pw]). | |||
Sega’s documentation also refers to certain pins by signal names: '''TL''' (“Trigger Left”) is the main trigger input (commonly Button B), and '''TH''' (“Test Harness”/“Select”) is a console-driven line used to multiplex additional buttons on 3- and 6-button controllers. | |||
(*7) Pinout refers to Interface Two (Sinclair +3 compatible models). | |||
===Other Systems Using DE-9 Connectors=== | |||
The | * The Apple II uses analog joysticks and cannot use the digital DE-9 pinout shown above. | ||
* Like Sega Saturn controllers, the ColecoVision and Intellivision II controllers use completely different wiring (see [http://arcarc.xmission.com/Web%20Archives/Deathskull%20%28May-2006%29/games/tech/cvcont.html DeathSkull Labs] and [http://arcarc.xmission.com/Web%20Archives/Deathskull%20%28May-2006%29/games/tech/intvcont.html DeathSkull Labs]). | |||
* The Sinclair QL originally used non-standard controller ports. Later Samsung-made QLs (US and German models) switched to standard 9-pin joystick/serial ports, allowing Atari-compatible sticks. | |||
* The Commodore C16/C116/Plus/4 have two mini-DIN joystick ports, electrically compatible with DE-9 via a passive adapter. | |||
Latest revision as of 20:56, 31 August 2025

Pinout
Device Configuration
Legend:
| Colour | Meaning |
|---|---|
| Green | Common joystick default across most DE-9 implementations (Up, Down, Left, Right, Button 1, +5 V, GND) |
| Red | System-specific, conflicting, or non-standard assignment |
| Grey | Unused / Not connected |
| Pin | Chameleon | Atari 800 Atari VCS |
Atari 7800 (*1) |
Atari ST (*2) |
VIC-20 C-64 C64GS (*3) |
Amiga | CD32 (*4) |
Amstrad CPC |
MSX X68000 (J-PC) |
Master System (*6) |
Mega Drive (Genesis) (*6) |
Saturn (*6) |
Sinclair (*7) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Up | Up | Up | Up | Up | Up | Up | Up | Up | Up | Up | GND | Unused |
| 2 | Down | Down | Down | Down | Down | Down | Down | Down | Down | Down | Down | Down | GND |
| 3 | Left | Left | Left | Left | Left | Left | Left | Left | Left | Left | 1Y (-, Left) | Up | Unused |
| 4 | Right | Right | Right | Right | Right | Right | Right | Right | Right | Right | 2Y (-, Right) | +5 V | Button |
| 5 | Button 3 | Paddle B | Button Right | Unused | Button 3 (POTY) | Button 3 (POTX) | Shift Load OUT | Button 3 | +5 V | +5 V | +5 V | Select OUT 1 | Up |
| 6 | Button 1 | Button | Button common | Button 1 | Button 1 | Button 1 | Fire, Clock OUT | Button 2 | Button 1 | TL (A) | TL (A, B) | Select OUT 2 | Right |
| 7 | +5 V | +5 V | +5 V | +5 V | +5 V | +5 V | +5 V | Button 1 | Button 2 | TH (Unused) | TH (Select OUT) | Right | Left |
| 8 | GND | GND | GND | GND | GND | GND | GND | GND (Row 9) (*5) | Strobe OUT | GND | GND | Left | GND |
| 9 | Button 2 | Paddle A | Button Left | Button 2 | Button 2 (POTX) | Button 2 (POTY) | Serial Data IN | GND (Row 6) (*5) | GND | TR (B) | TR (Start, C) | +5 V | Down |
(*1) The Atari 7800 uses independent button wiring not compatible with the standard Atari joystick pinout. Adapters or rewiring are required for full button functionality.
(*2) On the Atari ST, pin 9 of port 1 (right mouse button) is shared with pin 6 of port 2 (fire). This means only port 1 supports two mouse buttons, and only if port 2 is unused. The Atari STe and Falcon have DE-15 Extended Joystick Ports, which can accept two DE-9 joysticks with a passive adapter (see info-coach.fr). The Atari Jaguar also uses DE-15 connectors, but with a completely different button matrix pinout (see GameSX).
(*3) On Commodore machines, the second button (right mouse button) is wired to the POT X line, and the third button (middle mouse button) to POT Y. Unlike the other lines, these must be pulled to +5 V through the button.
(*4) The Amiga CD32 supports a “gamepad mode”, activated by pulling pin 5 high. CD32 controllers include active circuitry. Standard Atari-style joysticks work on the CD32, but CD32 pads are not compatible with older machines such as the C64 (see mirror of gerdkautzmann.de and HarwareBook.info).
(*5) On Amstrad systems, GND lines are pulled low to select the respective “row”. A regular joystick uses row 9.
(*6) Sega controllers cannot be converted into Atari controllers simply by rewiring them. Unlike regular Atari sticks, they contain pull-up resistors on each signal line (which may interfere with scanning the keyboard on a C64). Some controllers contain active circuits and will not work without the +5 V supply. The Mega Drive controllers use an active circuit (see GameSX or SegaRetro). The Saturn controllers also contain an active circuit and are wired completely non-standard. Mega Drive controllers can be used as Atari controllers with a simple adapter (see blog.hpz.pw). Sega’s documentation also refers to certain pins by signal names: TL (“Trigger Left”) is the main trigger input (commonly Button B), and TH (“Test Harness”/“Select”) is a console-driven line used to multiplex additional buttons on 3- and 6-button controllers.
(*7) Pinout refers to Interface Two (Sinclair +3 compatible models).
Other Systems Using DE-9 Connectors
- The Apple II uses analog joysticks and cannot use the digital DE-9 pinout shown above.
- Like Sega Saturn controllers, the ColecoVision and Intellivision II controllers use completely different wiring (see DeathSkull Labs and DeathSkull Labs).
- The Sinclair QL originally used non-standard controller ports. Later Samsung-made QLs (US and German models) switched to standard 9-pin joystick/serial ports, allowing Atari-compatible sticks.
- The Commodore C16/C116/Plus/4 have two mini-DIN joystick ports, electrically compatible with DE-9 via a passive adapter.

