Hacker News new | past | comments | ask | show | jobs | submit login
The Original “Universal” Port by Atari (tedium.co)
51 points by schmudde on Aug 31, 2022 | hide | past | favorite | 29 comments



I thought this was going about the Atari SIO bus[0], which literally was a forerunner to USB. The designer of the SIO bus, Joe Decuir, gave a talk at VCF East 2019[1] in which he spoke about SIO leading up to his work on USB (and, if memory serves, being used to quash a patent troll).

---

As an aside re: the Atari joystick "standard": I have an Atari Flashback 10, which accepts Atari-style joysticks. The sticks that come with the unit are flimsy so I broke out some old Epyx 500XJ controllers from my youth to use. Unfortunately, that meant losing the on-controller buttons for game reset, game select, "rewind", and "menu" (which are implemented as "illegal" controller states-- up and down simultaneously, etc).

On a lark I plugged-in a female to dual-male DE-9 Y adapter I had laying around and discovered that I could just connect both the stock controller with the fancy buttons and my 500JX simultaneously. I suppose it shouldn't have surprised me, given the simplicity of the interface (just normally-open switches). It was a nice hack to get both the on-controller buttons for emulator control and a good joystick.

[0] https://en.wikipedia.org/wiki/Atari_SIO

[1] https://www.youtube.com/watch?v=dlVpu_QSHyw&t=2296


Texas Instruments had a similar standard from around that time called HexBus, but it didn't make it out into the wild after they ended their home computer division.

[0] https://en.wikipedia.org/wiki/Hex-Bus


> I suppose it shouldn't have surprised me, given the simplicity of the interface (just normally-open switches).

Sure. Even normal use allowed multiple switches to be on to get diagonal motion ("up" and "left" simultaneously, say), if I remember right. Using states that can't normally occur (up and down at the same time) to add extra functionality is a pretty clever hack.


Yep, I was of the same mind, fully expecting this to be SIO, not the joystick port. SIO was really ahead of the game for its time.


I miss my Epyx 500XJ - thanks for the memories!

though mine had broken a few times, and was soldered and glued back together various times.


Back in the day, the Atari 1030 modem (1200 baud, I believe) was Hayes compatible but did not have a ring detector. That makes it difficult to use it for a BBS.

So I ended up using a neon lamp across tip and ring to light up when the AC ringing signal hit. I placed it next to a photo resistor and hooked it up to the fire button on one of the joystick ports. The resistance didn’t drop to zero, but it was close enough.

Two components with the bonus of optical isolation from the phone network!


> You probably never noticed this, but physically, an Atari joystick port is just a serial port with a lightly modified design

It's not any kind of serial port, modified or otherwise. What makes a port "serial" or "parallel" is the way the data is transferred, not the shape of the connector.

Each joystick signal (up, down, left, right, trigger, paddle A, paddle B, plus power and ground) has its own pin. That makes it a parallel port.

Now, the Atari SIO port, mentioned by another poster, and used to connnect peripherals (such as disk drives and printers) is a serial bus, but the joystick port is parallel.


I found this out for myself as a kid by taking a 2600 joystick apart to figure out how to wire it to my LEGO Mindstorms kit. By carefully choosing resistor values for the four cardinal directions, I could read 8 unique resistance values out for the cardinal and diagonal directions at a single analog I/O port on the RCX brick for control. It was a huge boon to me that it used simple contact closures and not a digital serial protocol!


More than that, paddles are actually analog signals. So it's neither this, nor that or two in one, the second not being serial ofc.


Regarding the Atari VCS (2600) it should be mentioned that the functionality of these ports is actually defined by the TIA (Television Interface Adaptor) chip. This provides the following capabilities (to be configured by a port register): dumped ports (for 4 paddles on 2 ports), latched ports (what we know as joystick ports), but you may also disable these latches, by which "these ports become two general purpose input ports" (Stella Guide [1]). Moreover, the ports can be configured to read two keyboards of 12 buttons each (4 rows of 3 columns), which was actually used by a few games that came with special controllers. Finally, port A, which handles all these controller inputs, can be configured as an output port using an 8-bit data direction register. (Meaning, you could set this up for full serial communication.)

So the Atari game ports were much more general and versatile in concept than just providing a connection for digital joysticks or paddles.

[1] http://atarihq.com/danb/files/stella.pdf


The most sophisticated demonstration of the bi-directionality of these ports is the RetroVox. Quite a remarkable achievement really.

https://forums.atariage.com/topic/332849-retrovox-wip/


Impressive! (Didn't know this – thanks for the link!)


So D connectors themselves are really good:

Versions are available that are acceptable for military and space use.

The pins are properly wiping: it means that when you insert or remove the plug, the contact area gets wiped (cleaned).

You can get D connectors that use ribbon cables: this is a huge advantage, since they can be assembled quickly without hand-soldering.

The connectors have screws, so they can be held in place.

They are rated to 300V and at least some of them can handle 9A.

Invented by James Cannon:

https://militaryembedded.com/unmanned/connectors/high-perfor...


Beware Mega Drive / Genesis controller has somewhat different wiring in a way that could destroy computers. It e.g. shouldn't ever be connected to a Commodore 64 without an adapter.

An open source design for an adapter exists.


This was always great for having a second controller. You might have had a master system and your friends an Atari or c64 but you could always take your controller to their house and play.

The $20 it cost for a second controller was a lot back then.


The TI-99/4A joystick port fit an actual D-sub connector.

As a child, I made a kind of breakout box for the joystick port, using a standard connector, project box, and screw terminal strips. For very simple interfacing with normally-open switches. (Arduinos and RasPis are much better.) First applications were to build a burglar alarm, and grade school computer voting station.

(This was pre-Internet, and pre-modem, and no docs to speak of. Somehow, I didn't break the family home computer, despite blindly shorting unknown pins, and with no knowledge beyond what I could understand of the Forrest Mims intro electronics book.)


The port is a modified Atari port - they wanted to sell you their own joysticks, and save on a port, so they came wired together into one port. I had a Y-adapter that let you use standard joysticks.


The 99/4 architecture was quite locked down, so I'm surprised that you implemented the burglar/voting applications over/with it.

I think the BBC Micro was the most powerful platform of this class, but the C64 was the most popular in the U.S.

I wish that TI had stayed out of the home computer market. The 9918(a) video chip was really the only real advantage for it. Their mismanagement took other players down with them.


TI BASIC was pretty neat, but you hit brick walls once you did everything you could do with character definition graphics -- unless you could afford the additional cartridges for assembly language or Extended BASIC. And then the seemingly unobtainable expansion hardware if you wanted a modem or floppy drives.

Before family bought anything, I wanted an Apple II-something. We went to the "Apple store" (IIRC, a small utilitarian office/warehouse space for school AV equipment seller, trying to turn into a computer showroom for parents), but when my parents saw the sticker price, IIRC, it was 10x a TI.

In hindsight, a C64 would've been the best choice around the same price point as the TI, but parents couldn't have known that at the time. TI was marketing like crazy, with lots of talk of education software (which we never saw), and the unspeakable celebrity endorsement. There were also a lot of worse choices parents could've made.


I had both 99/4a and later the C64. The C64 was just much more open, a much better computer to learn on.


That port was the reason I learned to solder and how photocells worked. I put two photocells on the paddle pins and wrote programs on my Atari 400 that used the light levels to do things. I think the original project was in Antic Magazine. It was about recreating a sound device used in 50's scifi films. I used it later to detect if the someone was in the hall during a summer program to give us a bit of warning. Fun projects that are pretty damn hard with USB and modern programming.


Commodore missed a huge opportunity by not implementing its own joystick standard with the C64, with more than one fire button. The usefulness of a second button was already known, on consoles with Intellivision and on computers with Apple II and the PC. Had it done so, Commodore would have benefited

* itself, by being able to sell its own joysticks (even against the inevitable third-party competition)

* game developers, by giving them more fire buttons to implement

* game players, by giving them more fire buttons to use

* the industry, as the "Commodore joystick port" would likely have become a widespread standard on its own the way the Atari port was

I suppose that the desire to be backwards-compatible with the VIC-20 (the first time Commodore use the Atari joystick port) was too important. (This desire is partly why the C64 disk drive is normally so slow.) Instead, as the article discusses, Commodore went its own way with the joystick and other ports on the later C16 and Plus/4 machines, exactly the wrong time to do so. (The fact that the Plus/4 joystick still only has one fire button implies that any Commodore-proprietary joystick port for the C64 would have only one button too, the worst of all worlds. But one can always dream.)


The Commodore Games System supported two buttons. https://en.wikipedia.org/wiki/Commodore_64_Games_System

And in fact you can use these on the C64. I have built a two button NES controller for the C64 - the second button is actually using one of the paddle inputs and the button on/off is the extremes of the paddle resistance.

A few games were commercially released and several homebrew games support two buttons like for example the port of Super Mario Bros. to the C64.


>And in fact you can use these on the C64. I have built a two button NES controller for the C64 - the second button is actually using one of the paddle inputs and the button on/off is the extremes of the paddle resistance.

Earlier support than that for two buttons came in the Commodore Mouse. Both the 1350 and 1351 have two buttons. The 1350 is basically a joystick, but the 1351 is a true mouse.

I'd forgotten or not known (not sure) that the C64 console has two-button controllers (of course, far too few by 1988); I wonder if its two-button support is compatible with the 1350/1351's approach?


Not compatible. For the mouse, the Fire Button and the Up are used for the two buttons and the PotX and PotY are used for the mouse X,Y data.

For the two button joystick the up/down/left/right/fire are as usual but the PotX is used for the second button.


That's unfortunate, but not surprising given how obscure the Commodore mice were even in their time.

Had a single gamer (an Intellivision owner, say) at Commodore c. 1982 advocated for even one more fire button on the forthcoming C64, and used the "We'll be able to sell Commodore-branded joysticks" argument, the entire C64 gaming landscape would have immeasurably changed.


The ports were great, they exposed both input/output pins. Back in the 80s, as a kid, on my Atari 800XL I used these ports to interface to electronics and used my computer to control real things! This significantly influenced what I wanted to do and sent me down the path of doing embedded systems / control systems. Even though these days I mainly do backend/web type things, I still do a bit of embedded programming.

The port/s details can be found here https://en.wikipedia.org/wiki/Atari_joystick_port


I put together another article about it on a input device wiki: https://deskthority.net/wiki/Atari_interface

This contains more technical info on the pinouts, the signals and how different devices and systems are incompatible. I had written it in preparation for building an adaptor for myself, and I have identified a few issues to watch out for.


The Vectrex (1982) also used the same port style for their controllers but the actual interface is not compatible.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: