• Please review our updated Terms and Rules here

TRS-80 Model I, III and IV schematics for joystick interface - Like the Alpha

John(Wales-UK)

Experienced Member
Joined
Oct 31, 2015
Messages
102
Hi

I'm trying to get some schematics together for the Model I / III / IV joystick interfaces. Alpha did one which allowed for 4/5 bit selection. Any technical information relating to any of the TRS-80 joysticks for the models I to IV would be much appreciated. I have a particular interest in the Model III at the moment but any information is welcomed.

I should add at this point that the joystick I hope to use with the model III is an Atari 2600 type.

I think the target pins are as follows:

Model I / Model III / Signal Name
18 / 09 / D4
22 / 03 / D1
26 / 07 / D3
30 / 01 / D0
32 / 05 / D2
19 / 33 / IN

The only information I have at the moment is for the Alpha One from http://www.classiccmp.org/cpmarchives/trs80/Library/Manuals/Hardware/

Many thanks

John
 
I tried building the circuit that was archived, however it did not seem to work on my Model 4.
For now I've given up and wired a DB-9 directly to the keyboard connector on the motherboard to parallel the arrows and spacebar.
This would be a nice project to retro-engineer - my only concern would be if it would co-exist with other devices plugged into the expansion port , such as a FreHD or lo-tech IDE.
 
my only concern would be if it would co-exist with other devices plugged into the expansion port , such as a FreHD or lo-tech IDE.

I had a look at the schematic in http://www.classiccmp.org/cpmarchives/trs80/Library/Manuals/Hardware/Alpha%20Products%20Joystick%20(19xx)(Alpha%20Products).pdf.7z

The schematic is drawn for the Model III and 4 expansion connector. The Alpha documentation (the other zip file at http://www.classiccmp.org/cpmarchives/trs80/Library/Manuals/Hardware/Alpha%20Joystick%20(19xx)(Alpha%20Products).pdf.7z) shows example code accessing the joystick on IO port 0 but the design is a bit less selective checking only A7 so will return a value for any IO Port read where A7 is clear (so ports < 128 ).

This will not clash with any of the on board IO Port assignments or the FreHD. If the lo-tech IDE is using standard TRS-80 hard disk IO ports then it should be fine. It is is using ports in the 0x4? block like my original design http://www.qsl.net/zl1wjq/trside1.htm then there is a conflict.

Where there may be a problem with the FreHD, lo-tech and the joystick design is that all try to drive the /EXTIOSEL line (pin 43) rather than just pulling it to low when they have data available. That approach works if you are the only device on the bus but causes problems with multiple devices.

The first thing to try would be to rework the joystick design so the address decode pulls /EXTIOSEL (pin 43) via an open collector or open drain output.

Also to add a bus transceiver like a 74LS245 that ensures the joystick adapter only puts things on the data bus when it is accessed. The current approach where the data lines are pulled to +5v will impact anything else on the same bus (FreHD, lo-tech, etc).

Back to the schematic.... Interesting that they use the /WAIT line on the Bus to provide the power for the 7400.

When you built your version did you connect the resistors to pin 39 (/IOBUSINT) as hinted by the schematic? They need to be pulled up to 5v so if the schematic is to be believed they are using /IOBUSINT to provide this.

To know it "didn't work" did you write a small test program in basic similar to this to see if the joystick actions where decoded?

10 OUT 236,16
20 X = INP(0)
30 IF X <> 255 THEN PRINT X
40 GOTO 20

This will sit in a loop reading IO Port 0 and if the joystick pulls down one of the data lines this will be printed. The first line is required to enable IO to/from the expansion connector.
 
Last edited:
Sorry for the delay - yes, the resistors are being pulled up to +5v via the IOBUSINT line.
However, I don't remember doing the OUT 236,16 first. My 4P is apart as I play with replacing the drives with one 3.5".
It's in my notes, but until I power up I can't check the test program.
 
Sorry for the delay - yes, the resistors are being pulled up to +5v via the IOBUSINT line.
However, I don't remember doing the OUT 236,16 first..

If you were running Disk Basic you could have omitted the OUT 236,16 and the littel test program would have worked. This is required if you run ROM Basic to enable IO through the expansion port by setting the ENEXTIO bit.
 
Just got my 4P back together again. Unfortunately, my interface doesn't appear to work.
Back to square one.
 
Back
Top