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.





Reply via email to