3

A science-lab program for the Apple II (I forget the name) had a board that plugged into the joystick port and included a "timing resistor". While I don't know what the program actually did with the resistor, a large-value resistor plugged into the an otherwise unused resistor input would allow the joystick hardware to be used as a timing base. Since the third and fourth resistor inputs weren't usually used, a board with a DIP header, a DIP socket, a resistor, and maybe switch, could have served as a combination hardware enhancement and copy-protection dongle (the switch would avoid the need to remove the board when using software that expected something else on that resistor input).

Did any games for the Apple II make use of a timing resistor as a means of generating a time base, or was such usage restricted to the science-lab program I mentioned earlier?

  • 3
    You're describing a "time to charge the capacitor through a resistor" method of reading an analog joystick. But an RC time constant would be a downright horrible timebase compared to the crystal oscillator already present on the board. And as a copy protection scheme it would be laughable - how long do you think it would take word of what resistor value was needed to get out? All someone would have to do is go to radio shack, buy the resistor, and stick it in the right pins of the DIP socket on the board... That's not proof that no one tried this, but it seems unlikely. – Chris Stratton Jan 1 at 19:57
  • 2
    @ChrisStratton: The only practical way of maintaining a constant frame rate on an Apple II game is to ensure that all paths through the main loop code take the same amount of time. That can often be a lot of work, especially if the code needs to do things like draw variable-length lines. Having a resistor that yields a timeout of e.g. 1/30 second would allow a game loop to run as fast as possible and then use the resistor time to wait for the next frame. As for people learning the resistor value, that would happen but it would increase the amount of effort required to pirate the game. – supercat Jan 1 at 20:17
  • @ChrisStratton: Further, as I noted, at least one program I've seen did use an RC for timing purposes. It wasn't a game, but the same principle would have been usable for games as for other purposes. – supercat Jan 1 at 20:18
  • Why would this question be considered "too broad"? – wizzwizz4 Jan 7 at 10:08
2

What you describe is the basic workings of the Apple II analogue paddle/joystick input. There where four of them. They worked by charging a capacitor and measuring the time to be discharged over the resistor. A lower resistor value means faster discharge. So, yes, every game that used paddles or joysticks or anything like that did use these 'timing resistors'.

Of course, as always, many more applications could be made with this basic circuit - like a temperature sensor using heat variant resistors, or light variable ones, or any other input that could be turned into a resistance value. Pick your favourite!

Using the paddle input out of the box (*1) for any serious minded timing is just ridiculous. Over all variation between individual computers is already way past +/-25% - in addition temperature, PS condition and connector issues make it even more variant between individual machines. An effort to equalize these effects are at a level where adding a digital time base might come off way less expensive.


*1 - That is without additional compensation cricuitry and intense calibration before any usage.

  • Yep that sounds like GAME port from the PC (RC based ADC) I used it not just for Joystick but I build a 2D Opto-mechanical scanner around it :) in the time of 386DX... So there is high probability someone did similar stuff on Apple at its timeframe... The timing coefficient affect speed of the ADC and might need tweaking for faster processes (at expense of accuracy and power consumption) – Spektre Jan 2 at 10:02
  • 2
    My question is whether the science application was unique in using one of the paddle inputs with a fixed resistor as a simple means of generating a time base that didn't require hand-computing the instruction time of every single instruction. – supercat Jan 2 at 16:29
  • 1
    The whole way this question is writen makes it rather unclear what you are asking at all. Using the paddle input for any serious minded timing is just ridiculous. Over all variation between individual computers is way past +/-25%. – Raffzahn Jan 2 at 18:12
  • Then maybe it could be used as a random number seed. – traal Jan 2 at 20:44
  • @traal Might work. Not a good one, as there is no equal distribution. Still, it got a good chance of different results on different machines. Maybe some 'amplification' by doing a series of timings, including fast reload and alike would give a unique start. HTen again, jsut taking a sequence of two keystrokes may serve way more reliable - and withotu any need to add hardware (a resistor). – Raffzahn Jan 2 at 20:47

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.