Re: Commodore joystick ports

From: Jim Brain (brain_at_jbrain.com)
Date: 2004-11-01 05:04:24

Hársfalvi Levente wrote:

> A pretty late reply...

No worries.

>> I noticed that you can adjust the reading by either the timing OR the
>> resistance, so they probably set the 256+X*2 in the ASIC, and then 
>> fiddled
>> with the resistor to get the start and end they wanted.  The resistance
>> changes would cancel out the accumulating effect of the mismatch, by
>> sliding the effective numbers up or down accordingly.
>
>
> Hmmm... I've played with this one, and in fact, they did not. The asic 
> waits 384 + x*2 ( 0 <= x <= 63) cycles. Although I had (and I have) no 
> 1351, Frank Kontros was kind to make measurements on a partially 
> working 1351 he owned. The values that you can read from the POT 
> registers are between ~64 and ~192 (approximately) on a PAL machine. 
> You're right, the delay caused by the series resistor, and the gain 
> caused by the clock difference approximately cancel each other. ...On 
> the other hand, this isn't true for NTSC machines. These machines 
> count faster than the 1351, thus the errors will be of the same sign, 
> thus they add together.

What I meant is that If I keep the timing constant and adjust the 
resistor, I can move the reading up or down as I see fit.  FOr instance, 
in one of my tests, I hardcoded the MCU to generate a 127 reading (256 
cycles low, 127 low, 128 high, repeat).  I then start adjusting the 
resistors while watching the POT readings on the 64.  I could swing the 
reading on the 64 from 112 to 137, and I could have moved more, but that 
was not the focus of this test.  So, it shows me that I can setup the 
timing, then adjust the resistance if the error margin is too much.

> How could the 1351 still work as intended?... Well, if you drop the 
> read value's MSB, the values between 64 and 192 (or whatever they are 
> around 64 and 192) will map to somewhere between 64...127 and 0...63 
> respectively, with a "wrap-around" at the middle. The trick is: the 
> values transmitted by the 1351 are "cyclic". It's kind of irrelevant 
> if the internal counter of the 1351 start from 0 and count up to 64, 
> then wrap around, whilst the values in the POT registers count from 64 
> to 127, wrap around, and continue counting from 0 to 63.

True, but I'm not trying to emulate the mouse, but a real paddle, so I 
need my 0-255, and I need it to be reasonable stable over the entire range.

> An AVR clocked at 8Mhz should be suitable for jitterless operation if 
> I'm right...

It is, if that is ALL you are doing, or if you can accomplish what you 
need in the 256 "wait" cycles, but that's not always possible.

> What's this equipment anyway, and what interface is this?

It's just some ideas I'm working on here.  The idea is to create a chunk 
of HW with a MCU that can plug into the joyport, and have lots of IO 
options.  Then, folks can program the HW "dongle" with different 
programs to be different interfaces:

Emulating 1351 using:
     PS/2 mouse
    Serial mouse
    touchpad
Emulating 64 joystick/paddles using:
    PC gamepad
    console gamepad
    RS232 from another computer

who knows.

The idea would be to layout the PCB and put a suitable MCU on it and 
make it small enough to fit in a DB9 shell.  Then, people only have to 
learn to program the MCU, the bulk of the HW work is done.

Jim


-- 
Jim Brain, Brain Innovations
brain@jbrain.com                                http://www.jbrain.com
Dabbling in WWW, Embedded Systems, Old CBM computers, and Good Times!


       Message was sent through the cbm-hackers mailing list

Archive generated by hypermail pre-2.1.8.