ZX80 Joystick Interface

Discussions about Sinclair ZX80 and ZX81 Hardware
albertusj
Posts: 77
Joined: Sat Aug 18, 2012 12:44 am
Location: Somerset-West, South-Africa
Contact:

ZX80 Joystick Interface

Post by albertusj »

Can someone suggest a joystick interface for the zx80 that is Kempston compatible? I have a ZX80 replica I built from a kit and it works great. I made a small game controller with pushbuttons and soldered it to the cursor keys. It worked but wasn't particularly elegant. The wires also picked up RF noise so the machine would freeze or crash sometimes. I removed it and all is stable now.

I have a 16K RAM pack (built from plans by Grant Searle) plugged into the expansion port so whatever I add must co-exist with the RAM somehow. I know there is the ZXpand, but it is kinda expensive and I'd prefer something I can build myself. It's more fun that way. I need technical details on how the Kempston (or any joystick) actually talk to the ZX80.

I also found this design which looks promising:

https://8bit.yarek.pl/upgrade/zx.z80joy/index.html

but will it co-exist with the RAM pack? Also will the following work on a ZX80?

Image

Any suggestions would be welcome. You can check out my little machine here:

http://www.myprius.co.za/ZX80.htm

Thanks
ZX80/ZX81/ZX Spectrum
User avatar
1024MAK
Posts: 5103
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX80 Joystick Interface

Post by 1024MAK »

Search this forum for more information on the Kempston joystick interface.

However, here is a short summary:
  • It was developed by Kempston for use with the Sinclair ZX Spectrum computer (the rubber key model).
  • Minimal address decoding is used.
  • To keep costs low, the first ones used a ZX81 type edge-connector.
  • The type that uses a ZX81 type edge-connector will work with ZX81 computers.
  • Kempston produced many models, and other companies produced ‘compatible’ joystick interfaces.
  • To read the state of the joystick, use the Z80 machine code instruction IN A,(1F) where 1F is the address in hex (31 in decimal).
Here is a more modern circuit, that has improved address decoding and which supports more fire buttons:
Image
Link to image
The address decoding can be changed for the above circuit if required and is simple to do (unlike the designs using individual logic gates).

As Kempston joystick interfaces work on a ZX81, I see no reason why one would not work on a ZX80. The only problem I see, is that nearly all, if not all commercially available Kempston joystick interfaces did not have a through port for the expansion edge-connector... But this is not an issue if you are making your own.

The problems you had when you had a joystick connected up to the keyboard matrix may be solved by buffering the address line signals via transistors.

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
albertusj
Posts: 77
Joined: Sat Aug 18, 2012 12:44 am
Location: Somerset-West, South-Africa
Contact:

Re: ZX80 Joystick Interface

Post by albertusj »

Thank you. I really appreciate the help.
ZX80/ZX81/ZX Spectrum
User avatar
mrtinb
Posts: 1906
Joined: Fri Nov 06, 2015 5:44 pm
Location: Denmark
Contact:

Re: ZX80 Joystick Interface

Post by mrtinb »

But if no software on the ZX80 supports the Kempston interface, it would be better to make an interface that maps to the keyboard keys. Otherwise you have no use for the Kempston interface on a ZX80
Martin
https://zx.rtin.be
ZX81, Lambda 8300, Commodore 64, Mac G4 Cube
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: ZX80 Joystick Interface

Post by XavSnap »

Or without components (Memotech keyboard like):
La manette de jeu branchée sur les lignes d'adresseA8',A9',A11',A12' et A14'.
Les touches du clavier étaient donc directement activées en parallèle.
« 2 » manette vers le Haut. (A11')
« Z » manette vers le Bas.(A8')
« S » manette vers le Gauche.(A9')
« L » manette vers le Droite.(A14')
« 9 » bouton de tir dela manette.(A12')
VTR GAME CARD:
Image
Image
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: ZX80 Joystick Interface

Post by XavSnap »

Carte Manette de jeu programmable VTR :
http://zx81.ordi5.free.fr/vtr/pdf/Manet ... mmable.pdf

From Dim75.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
1024MAK
Posts: 5103
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX80 Joystick Interface

Post by 1024MAK »

mrtinb wrote: Wed Jul 03, 2019 11:51 pm But if no software on the ZX80 supports the Kempston interface, it would be better to make an interface that maps to the keyboard keys. Otherwise you have no use for the Kempston interface on a ZX80
No original software will support a Kempston interface. Some games where Paul Farrow has done some work on them, do now support a Kempston interface, e.g. Kong and Pacman.
Mind, joystick support (of any joystick interface) on any ZX80 or indeed ZX81 original game is rare anyway.

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: ZX80 Joystick Interface

Post by XavSnap »

Hi,

A little question.
On the Wiring diagram, the IRQ $13 is used… But only the address DATA bit #5 (10000) is decoded !
It must be IRQ AND $10 … !
And all address using the #5 bit on : xxx1xxxx.
Not only the $13 value.
:?
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
1024MAK
Posts: 5103
Joined: Mon Sep 26, 2011 10:56 am
Location: Looking forward to summer in Somerset, UK...

Re: ZX80 Joystick Interface

Post by 1024MAK »

For the design where only address line A5 is used, yes, it will respond to any address where A5 is low.
So it will respond to I/O address 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 etc...

The idea behind the ZX computers with regards to the I/O addresses was just to use a single address line to select an I/O device or address, with the I/O device responding when the address line is logic low (logic zero). Normal I/O uses address lines A0 to A7, so that then gives you eight I/O devices. Thus no extra chips are needed for full address decoding, resulting in a cost saving.

If the I/O address is 255 (0xFF) no device should respond. Of course with the ZX80 and ZX81 it is not as simple as this. But this works fine with the ZX Spectrum. And the Kempston joystick interface was designed for this machine.

Now the question is why did they pick 31 (0x1F) instead of 223 (0xDF)? But I suspect the answer to this is lost in time...

However with the Spectrum, very soon all the available I/O addresses had been used, so if you can physically connect many devices/expansions, there will malfunctions due to more than one device responding due to the partial address decoding.

Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp

:!: Standby alert :!:
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb :!:
Looking forward to summer later in the year.
albertusj
Posts: 77
Joined: Sat Aug 18, 2012 12:44 am
Location: Somerset-West, South-Africa
Contact:

Re: ZX80 Joystick Interface

Post by albertusj »

Can someone suggest a program to verify a Kempston Joystick is working? I saw the code somewhere, but now I cannot find it again. It used the assembler commands to check the value of a register as you press buttons.
ZX80/ZX81/ZX Spectrum
Post Reply