Skip to content

5200 input buttons

Miro Kropáček edited this page Jan 5, 2026 · 1 revision

The 5200 does not have any buttons on the console, only the Power button; instead there are 19 buttons on each of the four CX52 controllers: two bottom fire buttons, two top fire buttons, Start, Reset, Pause, 0-9, * and #. The top and bottom fire buttons are duplicated on each side of the controller, so there are actually 17 distinct buttons on each controller.

The bottom fire buttons are wired to TRIG0-TRIG3 pins of the GTIA, same as joystick triggers on the 400/800. The other buttons are a different kettle of fish, and are connected to POKEY, like keyboard keys on the 400/800.

The GTIA CONSOL register is repurposed on the 5200: bits 0-1 of CONSOL are used as outputs, and they are used to select one of the four controllers of the 5200. It works like this: a program writes 0..3 into CONSOL, to select controller no. 0..3; then the program services POKEY's keyboard IRQ and reads POKEY's KBCODE or SKSTAT registers to read the button pressed on that controller.

The top trigger is wired like to the 400/800's Shift button, so it can be detected via bit 3 of SKSTAT; additionally it is wired to the POKEY's Break interrupt pit, so it's pressing also generates a Break key interrupt.

The Start, Reset, Pause, 0-9, * and # are wired to POKEY's keyboard inputs, so they generate a keyboard IRQ and can be read from KBCODE.

In Atari800, the controller'e keys are mapped as follows:

  • bottom fire -> same button as 400/800 controller's trigeer button
  • top fire -> Shift
  • Start -> same key as the 400/800 Start key
  • Pause -> P
  • Reset -> R
  • 0-9 -> 0-9
  • * -> *
  • # -> both # (ie. Shift+3) and =

Selection of four controller ports via CONSOL is sadly not emulated: a host key is sent to the emulated system, regardless of the current value of CONSOL, as if that button was simultaneously pressed on all four 5200 controllers.

Each controller's Reset button is a software button, that is typically programmed to return a game to the title screen. Pressing F5 emulates a hardware power cycle, so it makes sense that a controller's Reset button is not mapped there.

F2/F3/F6 are not used in 5200 emulation and are free to use.

Clone this wiki locally