
!pr2
Quick Memory Testing.......................Bob Sander-Cederlof

What do you do when a friend brings his Apple over with an intermittent memory failure?  You KNOW you have a memory test program somewhere, but WHERE?

Here is a quick way to test normal RAM between $7D0 and $BFFF.  (RAM in //e hyperspace or banked into ROM space is another matter.)  Turn on your friend's computer, and hit reset to abort the booting sequence.  We don't need or want DOS around while we are testing memory.  Type HOME and CALL-151 to get into the monitor.  Then type the following monitor command:

!lm+5
*N 7D0:00 N 7D1<7D0.BFFEM 7D1<7D0.BFFEV
   7D0:55 N 7D1<7D0.BFFEM 7D1<7D0.BFFEV
   7D0:AA N 7D1<7D0.BFFEM 7D1<7D0.BFFEV
   7D0:FF N 7D1<7D0.BFFEM 7D1<7D0.BFFEV
   34:0
!lm-5

The "*" is the monitor prompt, so don't you type it.  There are no carriage returns in the line above, it just wraps around the 40-column screen that way.  There must be one trailing blank after the "34:0" at the end.  This makes the monitor repeat the whole command line forever.

I started the test at $7D0 so there will be some visible feedback, but most of the screen will stay clear.  If you begin testing at a lower address, any errors displayed on the screen might be overwritten as soon as they show up.

When you type the RETURN key you will see a line of inverse at-signs at the bottom of the screen.  After a few seconds, this will change to flashing U.  Then *, and then some other character, depending on what kind of Apple you have.  Then the cycle will start over again.

Until a memory error is detected.  Any error will cause two lines to be printed, giving the address before the error with its contents and the contents of the error byte, and the address of the error byte with its actual contents and should-be contents.  For example, if you were in the "AA" phase, and $8123 came up with $AB, you would see:

       8122-AA (AB)    byte before error
       8123-AB (AA)    error byte

If any error lines start printing, note which bit is bad and which 16K bank it is in.  Then you can point directly to the bad chip.

                       7  6  5  4  3  2  1  0
        7D0...3FFF    C10 C9 C8 C7 C6 C5 C4 C3
       4000...7FFF    D10 D9 D8 D7 D6 D5 D4 D3
       8000...BFFF    E10 E9 E8 E7 E6 E5 E4 E3
