> If you have, say, a 320x200 screen that's refreshing at 60Hz, you
> need to time the light-pen's pulse to within 1/60*320*200 ==
> 1/3_840_000 of a second to get within-one-pixel positioning
> information. That's not child's play, but it's not rocket science
> either. (It's actually a little bit worse than this because of the
> retraces. But I'm not sure how fast the old CGA screens refreshed,
> either; I suspect it might have
> been slower than this.)
well, there's interlacing, too. Didn't CGA interlace, making it easy
to support TV output?
> But if you have, say, a 1280x1024 screen that's refreshing at 85Hz,
> you need to time the light-pen's pulse to within 1/1280*1024*85 =
> 1/111_411_200 of a second. That's about nine nanoseconds. This is a
> little tougher, or so I've heard, anyway. It seems it would be
> especially tough if you're transmitting your timing signals over
> USB, which transmits a bit every 83 nanoseconds or so, and thus a
> byte every 666 ns or so.
well spotted. Bear in mind that the tip of a finger is rather bigger
than a pixel, so you have some latitude. and longitude.
I think you'd get around this by using more analogue electronics
upfront - local oscillators generating sinewaves at the required
frequencies against which the decay curve of the carefully-matched
diode output can be offset. It then becomes a question of sampling the
smoothed residual difference over time (voltage across capacitor...)
and sending that over USB. (Can't find my Horowitz and Hill. Rats.)
Or you'd switch from USB to the faster FireWire. Hey, this could be
the FireWire killer app.
> If I get a touch screen, it damn well better be horizontal, btw.
Build a sling with a couple of fans in it from a sack. Cut a hole in
your desk. Drop the iMac into it.
Et voila. you just drop DVD-ROMs in, too.