• Please review our updated Terms and Rules here

Tandy Color Deluxe Joystick Dead Stick

Benson86

Experienced Member
Joined
Jun 1, 2022
Messages
61
Location
Largo, FL
Recently picked up a really nice Deluxe Joystick still in the box, and I cant get the darn thing working. Trying to track down if it's the stick or the computer. When I plug it into my 1000SX the fire buttons work fine but the stick wont respond.
I ended up running the basic program:
Code:
10 PRINT STICK(0), STICK(1)
20 GOTO 10
When I do this it wont read a higher value than 2. Full top left is 2, 2 and bottom right is 0, 0. Its very reliable reading 0-2 but that's all I get. Took it apart and checked the pinout, it's all wired correctly and has the correct pots, I also cleaned them and the port with dioxit, no luck. Could this be an issue with the computer itself? Any way of testing that without getting another joystick?
 

Attachments

  • IMG_3885.jpeg
    IMG_3885.jpeg
    784.3 KB · Views: 1
The 1000 joystick is the same as the TRS80 Color Computer's. Should be able to measure resistance from the wiper to ground and see it going from very low to around 100k ohm (I think), and the same between the wiper and +5v. On the 1000, I'd check and make sure it's putting out 5v on the joystick port. Not sure if the version of basic you're using is compatible with the 1000's joysticks, I think the ports are read somewhat differently than a typical IBM joystick port.


coco_joystick_pinout.gif
 
Not sure if the version of basic you're using is compatible with the 1000's joysticks, I think the ports are read somewhat differently than a typical IBM joystick port.

Tandy 1000 joystick ports are *mostly* software compatible with standard game ports, I don't think any common version of GW-BASIC should have a problem with them... but just in case it definitely wouldn't hurt to verify that you're using the Tandy version that game on the original DOS disks for the machine.

I second the advice above, checking the joystick wipers with a meter to see if you're getting a decent range of resistance out of them. It's theoretically possible, I suppose, that the pots could just be really, really badly oxidized, but I wouldn't expect them to be so "consistent" about it. If the problem is inside the computer you are in luck that the SX's joystick ports are implemented with discrete components instead of an ASIC, so it should be repairable. Starting with a check of whether the 5v feed is there is also a good start.
 
Ok so I did all the tests I could think of. And as far as I can tell, every works but the computer still isn't reading anything. I had it plugged in with the shielding pulled back so I could test right from there, photo attached of where I was testing from. The 5v post was outputting 4.9v no issue. When I tested the x and y posts they would smoothy range from 0v-4.9v just like they are supposed too. The computer just doesn't seem to have any idea this is happening? I originally tested with the basic that came with DOS 5, but this time I tested with GW basic on the Tandy disk, and I wasn't getting anything at all. Consistently stayed at 1, the multi-meter showed the voltage change but the display kept showing 1. I also tested both ports and same on both.
 

Attachments

  • IMG_3972.jpeg
    IMG_3972.jpeg
    833.1 KB · Views: 4
... So, just chucking this out there: by any chance have you upgraded your SX with a V20? To sanity check your BASIC program I tried it on my 1000 EX (which I've installed a V20 in) and I'm likewise getting an unresponsive stick in BASICA, although I know this worked way, way back before I upgraded the CPU. The joystick does work in games just fine. (Tried it with Arcade Volleyball, no problem.)
 
This guy seems to know the 1000 joystick interface inside and out:
https://nerdlypleasures.blogspot.com/2016/08/the-tandy-1000-digital-joystick-adapter.html
Might try the test programs he suggests:

>> In order to test joysticks, I use a pair of calibration programs. The first is my friend Trixter's JOYCALIB :

http://www.oldskool.org/pc/joycalib

This is excellent for calibrating your stick to find a good center reading. However, if your interface is not registering, the program may hang. Another >> program, called JOYREAD, will give you raw timing values whether the interface is working or not. This can help diagnose problems. Press M to change the reading method to a software timing loop, the Tandy 1000s do not support the BIOS interrupt method of reading the joysticks. It is located on this page :

http://www.oldskool.org/guides/tvdog/misc.html
 
Hmmm interesting. Yes I am currently running a V20. Now that I think on it I cant remember if I tried the joystick before I got the V20. I haven't had any luck in games either though. And when I run joycalib it just says the stick hasn't moved and wont calibrate. Ill have to try JOYREAD and see what I get. I can always pop the 8088 back in there too and test.
 
... So, just chucking this out there: by any chance have you upgraded your SX with a V20? To sanity check your BASIC program I tried it on my 1000 EX (which I've installed a V20 in) and I'm likewise getting an unresponsive stick in BASICA, although I know this worked way, way back before I upgraded the CPU. The joystick does work in games just fine. (Tried it with Arcade Volleyball, no problem.)

Okay... so I did a little more poking around.

So FWIW, joycalib works fine for me with the default settings on my V20-upgraded HX. (Not sure how I managed that brain***t when it comes to which one I was poking at.) After checking that I went back and tried BASIC again. Under both MS-DOS 5 QBASIC and Tandy GW-BASIC 3.21 I tried this:

10 print stick(0), stick(1), stick(2),stick(3)
20 goto 10


And it turns out a thing that I guess I'm now vaguely remembering running into before is going on: Tandy BASIC and most DOS programs have a different idea which joystick port is the first one. Under QBASIC this loop produces changing numbers in the first two columns when you move the stick, under Tandy BASICA moving the joystick updates the *second* two columns. And that's apparently why I have my joystick plugged into the "second" joystick port.

(*Interesting quirk, though; you can't just print "stick(2),stick(3)" to read your one joystick if you have it on that second port; you need to call "stick(0)" to update *all* the remaining "stick" values; IE, you'll have to do this if you just want those two columns:

10 x=stick(0) : print stick(2),stick(3)
20 goto 10


)

Maybe this is just an EX/HX oddity, but maybe it'd be worth trying moving the joystick to the other port and running joycalib again.
 
Yes only stick(0) actually polls the joysticks. Otherwise code reading joystick axes would be 2-4 times slower. (PC gameport is such a crappy interface :cautious:) I guess you could call it a quirk but it's documented.
 
I guess you could call it a quirk but it's documented

Yeah, it is in the GW-BASIC manual, but in the version of it at the top of the Google hits it’s in the form of a kind of confusingly formatted run-on sentence in an otherwise sparse explanation so it took an ‘ooooh’ moment to click. ;)
 
Well I feel like ive tried just about everything, no matter what I do it only wants to register a 2 in any direction 🤷‍♂️

I even pulled all the ISA cards just to make sure nothing was conflicting and nope. The strange thing is when I boot Tandy DOS from the floppy and run that version of basic, it doesn't register the stick at all, not even a 2. Here's a video of what I see in JOYREAD in DOS 5.

 
I think the issue is likely in the joystick circuit itself, the schematic for which is on page 72 of the scanned Tandy 1000 SX Technical Reference Manual. The main culprits of failure are U17, the voltage comparator or the components Q1, Q2, CR1 and C118 which do the bulk of comprising the timed voltage reference signal.
 
Back
Top