From: "Philipp Hachtmann" <hachti at
hachti.de>
Sent: Thursday, December 18, 2008 11:00 PM
Since the
shift registers move quite fast, it completely
swamps the lamps' ability to change brightness. Unlike the VGA display,
I haven't observed any "beat frequency" artifacts.
I know the VGA
problem... Happens only if I restrict the update to the
blanking period...
If I don't restrict, I get a slight stranger image, but the real
blinkenlight effect :-)
I have had the VGA and the incandescent lamps running side-by-side, so I
can see how "wrong" the VGA stuff looks :-). There is stuff flashing on
and off in the VGA display that should just be "on dimly", all over the
place. It gives a misleading impression that things are happening on
a human timescale that just aren't. Of course, for single stepping,
the VGA display is OK, since the display is "static" until you press
a switch (or a key on the keyboard, in the case of my VGA display).
The VGA display is *way* better than no lights, though :-).
Vince
An emulator I am developing for a machine (Wang 3300) with a front panel would suffer the
same problem too. It is really an aliasing problem. You are attempting to sample a 1 MHz
signal at 60 Hz, so what do you expect?
My solution in the emulator is to compute the ratio of on/off over that 1/60th of a second
and then use that to display an image of a lamp. Actually, I go one better than that. I
have a simple first order time constant model of the lamp so that it doesn't go from
0->100% in 1/60th of a second. new_intensity = K*old_intensity + (1-K)*new_duty_cycle.
Pick K to approximate the thermal inertia of the lamp.
Oh, to keep from having to compute a tally of all the lamps after each instruction
simulation cycle, I have an array of 256 counters for each byte of address or data bus.
So for a given byte, after each instruction I just do: histo[byte_value]++. At the time
it comes to display each lamp, I look at all the buckets and figure out the average duty
cycle for each of the 8 lamps in the group.
Those two solve the sampling problem to a sufficient degree that I'm done tweaking
with it.