


                          MEMORY DIAGNOSTICS

     This routine uses a machine language subroutine to perform a thorough
checkout of up to 832 KB of contiguous expansion located at absolute addresses
in the range of 64K to 640K and 768K to 960K. A cyclic redundancy algorithm is
used for maximum reliability.  Initially, the memory check routine will display
a menu of expansion memory options to be checked.  Select the option which
conforms to the total amount of memory which is installed on expansion boards
only. Do not include the system board memory which is installed on the PC
motherboard when calculating this figure.  For instance, if you have a 64K IBM
PC with a 256K Quadboard and a 192K expansion memory board, you would select
option 7, which will test 448K expansion memory, even though your total system
memory is 512K.

     After selecting the correct expansion memory checking option, a line
similar to the following will be displayed:




         64K 128K 192K 256K 320K 384K 448K
PASS 1

    This display will be used to show which memory is currently under analysis.
If memory errors occur, an error code will be printed in the column under the
heading of the 64K block in which the error occurs.  If no errors occur in a
block, four dots ("....") will be printed in the column.  If there are more 64K
blocks to be tested, the routine will move on to the next column.  Otherwise,
PASS 2 will be printed, and memory testing will be repeated starting from the
first 64K block.  For the example cited above, the display would then look as
shown below, providing that all memory tests are passed:

         64K 128K 192K 256K 320K 384K 448K
PASS 1  .... .... .... .... .... .... ....  TOT ERRS=0
PASS 2

     TOT ERRS is an accumulative figure which will keep track of all memory
errors which occur during the entire memory testing procedure.

     You may allow the memory test to complete several passes before returning
to the diagnostics main menu.



                             MEMORY ERRORS

    Create a hard copy of the errors that occur by handwriting the display on a
scratch pad, or by pressing shift-PrtSc, if you have a printer connected.
Notice the column under which the error code is displayed.  This shows which
64K block of your expansion PCB the memory error is in.  The block diagram in
your expansion PCB manual shows the physical location of each 64K block.

     Error codes are printed in hexadecimal.  An error code which contains hex
digits in the range A to F may indicate an addressing error.  This is usually
caused by having incorrectly set dip switches or by trying to test a non-
existant block of expansion memory.  Check your expansion board manual for the
proper settings of the dip switches on your expansion board and on the IBM PC
motherboard, and be sure to select the correct memory test for the amount of
expansion memory installed.

     Nine LSI chips are used for each 64K block of memory installed on your
expansion board.  If you get an error code in the range of 100 to 180 hex, the
last two digits of that error code can be used to determine which chip in a 64K
block is producing the errors, according to the following table:

         180  -  D7
         140  -  D6
         120  -  D5
         110  -  D4
         108  -  D3
         104  -  D2
         102  -  D1
         101  -  D0
         100  -  Parity Check

     If parity checking is turned off, the initial digit in the code will
not be returned.  The error code would consist only of the last two digits.

     The table is arranged in the order that the chips are placed on a
Quadboard, i.e., the parity chip is at the bottom of a 64K block, and the D7
chip is at the top.  For the Quad 512+ board and the Quadram 192K board, the
chips are arranged in rows rather than columns.  The Quadram 192K memory
axpansion board has its chips arranged within the rows in the same order as for
the Quadboard. The Quad 512+ board has two 64K blocks in each row.  The chips
in a single row of the Quad 512+ board are arranged as shown below:

         D0 D1 D2 D3 D4 D5 D6 D7 Parity D0 D1 D2 D3 D4 D5 D6 D7 Parity

     If you get an error code which is not in the table shown above, you may
have more than one bad chip in a single 64K block. Isolate the bad chip by
swapping out the lowest numbered chip from the bad block with a chip from a
good block and move up the block chip by chip until you get error codes in both
blocks.  These error codes should then be found in the table.  You may be able
to make a temporary fix on your board by turning off parity checking and
replacing bad chips with parity chips.

     The Quadtest memory check routine will do a graphical display of any bad
memory chips found on Quadboard, Quad 512+, or the Quadram 192K board,
providing that those memory boards are started as the first expansion memory
board addressed in the memory space.  Press the F10 function key after the
completion of a pass in which errors have been detected to see the memory
board display.  The Quadboard display is used for the 192K board as well,
since the placement of the chips is the same.  Rotate the 192K board 90
degrees counterclockwise to orient the rows of chips like the columns on the
Quadboard.

     The display routine can be operated in standalone mode.  Assign to XM%
a value from 1 to 8 representing the total # banks of memory chips installed
on your memory expansion board.  Then enter GOSUB 60300.

     Replace defective memory chips, and repeat the memory diagnostics checks.
