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.
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.
> 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.
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!
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.
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.
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.
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.)
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?
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.
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.
---
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