[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What do you get when you access RAM that isn't there?



Redskull wrote:

>6502 data lines are tri-state devices with no internal pull-ups,
>which means if nothing on the bus responds to a chip enable
>signal, the inputs will be undefined. = Random Garbage.

On an 8-bit Apple it's not random, but subtle.

Joel had it exactly right, and it's the same for any undecoded read
address, whether in RAM space or I/O space:  the last accessed
video byte is held by the capacitance of the tri-stated bus and is
read as data.  (For the 8-bit Apples--the IIgs is a different beast.)

This finding was the basis for Dan Lancaster's (and Joel's!) "vapor
lock" technique--so-called because it locks the Apple's program
execution to the video generator by reading the "vapor" bytes
of the video refresh.

If you try reading a non-existent address in the monitor, you will
see lots of $A0's, since the text screen is mostly blank.

Aside from a very few programs that use this technique to
synthesize a mixed video "mode" in software, practically
nothing depends on this effect for correct operation.  (Probably
just as well, since it would be very inefficient to emulate
precisely.  ;-)

-michael

Check out 8-bit Apple sound that will amaze you on my
Home page:  http://members.aol.com/MJMahon/