[Coco] Coco3 joystick action survey
Robert Gault
robert.gault at worldnet.att.net
Mon Mar 10 23:01:26 EDT 2008
I could use some help with this. I've been acting as a beta tester on a
game for the Coco3. The game has a cursor that is moved around on the
screen to select items. At the moment, there are two other testers and
the cursor action on my system seems to be unique in that the cursor
jitters. That is the pointer at most locations on the screen is never
stationary but always jiggles slightly. The cursor is completely steady
on the other systems.
This has been very frustrating for the programmer because it is unlikely
that my system is unique and it has been impossible (using software) to
remove the jitter. What I would like to find out is how many Coco3s
exhibit jitter in the joystick values vs those that don't. I'm asking
readers to run the short Basic program below and very slowly move
joystick (right, left, or both) around the screen. Try to find a
locations where the value obtained by the JOYSTK(#) command is not
stable. Please report back here what you see.
10 POKE &HFFD9,0 2MHz CPU clock
20 WIDTH80 or you can use 40
30 FOR I=0 TO 1 STEP 0
40 EXEC &HA9DE the ROM joystick routine
50 PRINT PEEK(&H15A),PEEK(&H15B),PEEK(&H15C),PEEK(&H15D)
60 NEXT
The values at $15A and $15B are for the right stick and those at $15C
and $15D the left. On my system, the values are stable at 1MHz
(POKE &HFFD8,0) but unstable at many positions at 2MHz. I've tried this
with two Coco3s serial numbers 1001703 and 1308368. I've used three
joysticks, two deluxe and one regular. There is jitter for all at 2MHz
with the ROM routine and worse jitter in the game under development.
The ROM routine for reading the joystick is slower than that used in the
game which may be why it works at 1MHz. The main questions are whether
this is a quality control issue in the Coco3 design and what if anything
can be done about it.
Both the game routine and the ROM routine are stuck with the resolution
of the internal DAC, 64 steps. A joystick being a continuously variable
resistor can easily be set at values in between those of any two DAC
steps. Depending on the circuit design intermediate values could cause
oscillation between the two adjacent steps. This could be caused by
inadequate ICs or by noise on the power supply. I've put a scope on my
Cocos and they meet or exceed the waveforms in the service manual.
Hopefully there will lots of response to this request for help. I'd like
to solve this problem and the programmer wants to solve this more than I
do. :)
More information about the Coco
mailing list