(1) PSXKEY & (2) SNESKey - Use Playstation Controller (PSX) on Parallel Port (LPT1) in MS-DOS (old Retro PC/laptop)

 

(1) PSXKEY

After spending several hours trying to get my PSX controller to work with sneskey on my IBM Thinkpad 380XD in MS-DOS (unfortunately without success), I wrote my own PSX controller driver program (with ClaudeAI). Instead of using interrupts, it uses polling (just like sneskey /x does). It works perfectly for my!

 

Its like sneskey. You have a PSXKEY.ini file with controller and LPT port config. Simply copy PSXKEY.COM and PSXKEY.INI to your MS-DOS retro machine. Edit the ini for your needs and run PSXKEY. Its a TSR (resident) program, runs silently in background.

 

Download PSXKEY

 

Usage:

  PSXKEY       install (reads PSXKEY.INI)

  PSXKEY /U    unload

  PSXKEY /?    help

 

INI: 'button = key' per line; 'port = 0x3BC' sets LPT. Sections [psx] and // are ignored.

Buttons: up down left right start select cross circle triangle box l1 l2 r1 r2

Keys: letters, digits, space return enter esc tab up down left right, ctrl alt shift.

 

Wiring  LPT DB25 (male)  ->  PSX pad:

  Pin 2  (D0)          -> CMD

  Pin 3  (D1)          -> ATT

  Pin 4  (D2)          -> CLK

  Pin 10               -> DATA

  Pin 7-9 via diodes   -> +V (3.3-5V)

  Pin 18-25            -> GND

 

(2) SNESKey

 

Original circuit/wire diagram is NOT working for me! Fix!

The original circuit was not working on my LPT1 port of my IBM thinkpad 380XD notebook. The test "sneskey.exe /x" doesnt react to any button. So I decided to figure out how this whole things works. First step was to use my 2ch oscilloscope (DS203) and check all signal lines. The problem was the slope of the CLK signal!

 

CMD and CLK Signal of PSX controller connected to PS1 console.

 

Fixed working circuit diagram

Changed the 200K resistor to 20K ! 10K was not working, 100K was not working.

 

BUT stop! After I told Claude AI my problem with sneskey we fixed the problem with the slope CLK. With the patched sneskey version its now working without using a resistor!

Download here (GDrive).

With this version (or with 20K resistor) sneskey /x works! But I can't start any game (or command.com for testing), it freezes. I’ve already spent hours trying to solve the problem, but unfortunately without success. It seems the issue lies with my IBM ThinkPad 380XD laptop. That’s why, together with ClaudeAI, I’ve written my own PSX controller driver program. Instead of using interrupts, it uses polling (just like sneskey /x does). It works perfectly! The program is called PSXKEY.

 

 

 

What happens to Benji York?

I ask this question to ClaudeAI and got this interesting answer:

 

What became of Benji York (creator of SNESKey, 1998)

The Benji York behind the SNESKey page went on to have a long career in software development and is still active today.

The trail connects cleanly. The original site was hosted on a Tennessee Tech University server (csc.tntech.edu), and in a later interview he confirms that the console-controller project dates back to his college years. During that time the emulation scene for NES, SNES, Genesis and similar consoles was taking off, and he had a side project that let people connect console controllers to their PC — that project was SNESKey.

His career afterward, roughly in order:

  • He first worked in the automotive industry, mainly writing supply-chain and manufacturing software.
  • He then spent about six years at Zope Corporation, most of that time as the team lead for their main product (Zope being a well-known Python web framework, so he moved deep into the Python ecosystem).
  • In 2010 he joined Canonical's Launchpad team (the Foundations team), working on the web-service APIs and OpenID integration. At the time he was working from home in Virginia, USA.
  • Today, according to his LinkedIn profile, he works as an engineering leader at Cribl (a data/observability company). On GitHub he goes by benji-york and describes himself as a "disciple, engineering leader, and live production tech," the last part suggesting he is also involved in live production technology.

In short: the hobbyist who in 1998 wanted to get SNES controllers talking to a PC became a long-time Python/open-source developer and engineering lead.

 

Sources: