https://en.m.wikipedia.org/wiki/Atari_joystick_porthttps://tedium.co/2022/08/24/atari-2600-joystick-port-history/The joystick has a female connector and the computer has a male connector.Sent from my T-Mobile 5G Device -------- Original message --------From: Peter Vollan <[email protected]> Date: 9/26/25 1:34 PM (GMT-05:00) To: [email protected] Subject: Re: [M100] Joystick using the barcode reader input All of my Atari type joysticks have a male plug on the end, and all of the classic systems I have have a female plug to receive it. On Fri, 26 Sept 2025 at 06:52, Brian White <[email protected]> wrote:Atari joystic has a female de9 on the end of it's cable. So the computer side needs a male de9.bkwOn Thu, Sep 25, 2025, 12:52 PM Peter Vollan <[email protected]> wrote:I'm confused.... shouldn't it be a db9 female connector to plug the joystick into?On Thu, 25 Sept 2025 at 09:21, Mike Stein <[email protected]> wrote:How often are you going to need the printer port when you're using the joystick?Here's one approach from way back when: >From Kim Holviala kim at holviala.com Wed Feb 23 2011
Yup, got my side project, the Atari/Commodore joystick interface for M100 working reliably. This is a simple passive interface only requiring two connectors, some cable and five diodes. Total cost is under $10 including a case for the Sub-D9 connector. Schematic: LPT port D9 male 3 PD0 ------|<------- 1 UP 5 PD1 ------|<------- 2 DOWN 7 PD2 ------|<------- 3 LEFT 9 PD3 ------|<------- 4 RIGHT 11 PD4 ------|<------- 6 BUTTON 21 BUSY -------------- 8 GROUND Parts: 1 2x13 pin female flat cable connector (0.1" spacing) 1 D9 male connector (solder type) 1 D9 connector case 6" 26-pin flat cable (or at least 4 inches) 5 1N4148 (or similar) I used 1N4007 for the diodes, but using something physically smaller like 1N4148 is easier if you want to fit everything into the D9 case. Theory of operation: We're doing it all backwards. Instead of feeding ground through joystick port pin 8 and reading the directions from pins 1-4 and 6, we're feeding signals through 1-4 and 6 and reading the result from pin 8 (which is connected to BUSY in LPT port). Using with 100% Basic: This works (even though it shouldn't) but isn't very reliable. We're fighting with the keyboard interrupt, and quite often it hits between our OUT and IN messing up the readings. OUT 185,254:U=INP(187) AND 4 OUT 185,253:D=INP(187) AND 4 OUT 185,251:L=INP(187) AND 4 OUT 185,247:R=INP(187) AND 4 OUT 185,239:B=INP(187) AND 4 Variables U/D/L/R and B now contain 0 if that particular direction is selected and 4 if the direction is not selected. Mostly Basic, but some assembly required: This version seems to be 100% reliable even though it doesn't disable interrupts between the assembler out and in. 10 CLS 20 A$=CHR$(211)+CHR$(185)+CHR$(219)+CHR$(187)+CHR$(119)+CHR$(201) 30 AS=PEEK(VARPTR(A$)+1)+(256*PEEK(VARPTR(A$)+2)) 40 U%=0:D%=0:L%=0:R%=0:B%=0 50 CALL AS,254,VARPTR(U%):U%=U% AND 4 60 CALL AS,253,VARPTR(D%):D%=D% AND 4 70 CALL AS,251,VARPTR(L%):L%=L% AND 4 80 CALL AS,247,VARPTR(R%):R%=R% AND 4 90 CALL AS,239,VARPTR(B%):B%=B% AND 4 100 IF U%=0 THEN PRINT " U" ELSE PRINT " *" 110 IF L%=0 THEN PRINT "L "; ELSE PRINT "* "; 120 IF R%=0 THEN PRINT "R" ELSE PRINT "*" 130 IF D%=0 THEN PRINT " D" ELSE PRINT " *" 140 IF B%=0 THEN PRINT "BTN" ELSE PRINT " * " 150 PRINT CHR$(11); 160 GOTO 50 The assembler code on line 20 is as follows (needs a bitmask in A, outputs joystick info to [HL]): out 185 in 187 mov m,a ret That's about it. Now back to the WiFi adapter... - Kim On Wed, Sep 24, 2025 at 4:57 PM Scott McDonnell <[email protected]> wrote:The BCR port was attractive to me because it is a port I wouldn't be using for anything else. That is really the main reason aside from the interrupts. The idea was to use a microcontroller which would allow me to fit the electronics inside the joystick body. I really only need a start bit to get the CPU attention and then stream my switch states. That was the idea, anyway. That is pretty much how the BCR would work, I would think. Well, originally the thought was to duplicate the BCR and send keycodes which could use the existing driver. But I am not sure if the arrow keys would be included somehow. If so, it could potentially work with any software that uses the arrow keys. I am surprised that I had not thought of scanning the keyboard the opposite way, though. That is a clever idea. I did think about simply wiring into the arrow keys on the keyboard, but I was trying to keep it external for community use. I still think the community should decide on some standard for a mod and make use of the several NC wires in the BCR port. I am aware of the mod to add a serial port there and that seems very useful. Thanks for all of the suggestions.
