home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 June
/
SIMTEL_0692.cdr
/
msdos
/
sysutl
/
ramtest.arc
/
RAMTEST.DOC
< prev
next >
Wrap
Text File
|
1986-04-01
|
13KB
|
380 lines
RAMTEST Page 1
WARNING
-------
Executing this program WILL destroy the contents of memory, in-
cluding RAM disks!
Now that you've been warned, I think you will find this program
useful, not only in identifying an existing fault, but also as
part of a periodic maintainence program. This program has been
developed as an exhaustive test of an IBM PC's system RAM. It is
much more comprehensive than the PC Power On Self Test (POST) and
delivers diagnostic messages which are much easier to understand.
There are two different versions of the test. RAMTEST.COM is the
test which should be used with the IBM PC and compatibles. Note
that it requires a fair amount of hardware compatibility to work
properly. Users of computers which do not make use of parity
checked memory (such as the Eagle PC) or who experience dif-
ficulty during PASS 2 of the test should install the patch given
in the Hardware Requirements section.
RAMTESTA.COM is the version to be used on the IBM PCAT. The
documentation for both versions is identical. For more informa-
tion on the required hardware compatibility, see page 3 of this
document.
To start the test, just type RAMTEST at the DOS prompt. There are
no additional parameters.
This test is best run from a floppy disk which has been formatted
using the /S option and contains no other RAM-based utilities.
Some of the commonly available memory-resident utilities (for ex-
ample, SideKick from BORLAND) 'take command' of the system and
will cause RAMTEST to crash.
RAMTEST functions in several distinct phases. After signing-on,
RAMTEST starts searching for the top of contiguous memory. This
search is performed by examining RAM and not by consulting the
system configuration switches. Once the top of memory is found,
the actual testing portion of the program is relocated and test-
ing begins.
RAM is tested beginning with address 0:500 and continues up to
but not including the top 32k of the contiguous RAM below screen
memory. These limits were chosen for the following reasons. 1)
BIOS uses RAM below 0:500 for scratch area and RAMTEST uses BIOS
exclusively for screen I/O. 2) The testing program needs a place
to live undisturbed.
RAM is tested in 32k blocks. The pattern for the test is taken
from the BIOS ROMs. Randomness is added by use of iteration count
to modify the data. During PASS 1, each RAM location is modified
and then verified. This insures that each location can be ac-
curately written to and read from. During PASS 2, each location
Copyright (c) 1986 Digital Mechanics, Inc.
RAMTEST Page 2
is re-read and compared to it's reference byte in ROM and the
parity bit is checked. This part of the test insures that the
parity generating and checking circuitry is functioning cor-
rectly, that the address decoding is working properly and that
there are no locations in RAM shorted to other locations.
Should no errors occur during the two passes, RAMTEST announces
the successful completion of the test and prompts you to turn off
the computer to stop the test. If not stopped, however, RAMTEST
will start over, using a different set of patterns each time.
Since some memory errors do not show up until after hours of
operating time, if you're trying to track down a failure, it is
suggested that you let RAMTEST run awhile, perhaps overnight.
Should an error occur, RAMTEST stops immediately, displays a mes-
sage identifying the error, and halts. Note that the only way to
exit this condition is to turn the computer off. A typical error
message is:
Memory contents failure.
Address = 5000:0000
Data is: 1B Data should be: 1F
Turn power off, wait 5 seconds, and turn power back on.
The above example shows that the failure occured on an expansion
board (System memory extends to 0:FFFF on 64k motherboards, and
to 3000:FFFF on 256k motherboards. The presence of 4116 RAM chips
indicates a 64k motherboard.). It also shows that bit 1 was 0
when it should have been 1. In cases like this, the RAM chip in
the bit 1 position is frequently at fault. The RAM chips are the
most delicate components in the memory system, and the easiest to
test for defects. This is because the RAM chips are socketed (ex-
cept for the first 16k or 64k) and the rest of the chips such as
address decoding and data buffers are rarely, if ever, socketed.
The last two pages of this document diagram the location of the
RAM chips on the motherboard for both 64k systems and the 256k
systems. Refer to the documentation that came with your add-in
memory board for instructions on locating and replacing RAM chips
that make up the memory above 1000:0 (64k motherboard) or 4000:0
(256k motherboard).
The failure codes which are analyzed at the top of each page
refer to the code which the PC prints when an error is encoun-
tered during POST. If this occurs, the code will be printed, the
speaker will beep, the screen will go blank, and the computer
will have to be turned off. This will all happen in the span of
about one second, so watch carefully to see the error code.
Copyright (c) 1986 Digital Mechanics, Inc.
RAMTEST Page 3
RAMTEST is provided at no charge to the user. Feel free to share
it with your friends, but please do not give away altered ver-
sions or versions which have had the copyright notice removed.
The essence of 'user-supported' software is to provide personal
computer users with quality software without high prices, and yet
to provide incentive for programmers to continue to develop new
products. If you find this program useful, a contribution ($10
suggested) would be greatly appreciated. Any suggestions or com-
ments you may have are also welcome.
Jim Weisz
Digital Mechanics, Inc.
P.O. Box 1356
Lombard, Il. 60148
HARDWARE REQUIREMENTS
PC NMI Enable/Disable port = 0A0H
RAM parity check control port = 61H (bits 4 & 5 00xx0000)
Parity status port = 62H (bits 7 & 8 xx000000)
Note: Users of the Eagle PC and other compatible computers which do not
use parity memory need to make the following patch using DEBUG.
The patch disables parity checking which causes problems on the
Eagle. (Maybe the Sperry PC also)
A>DEBUG RAMTEST.COM
-F 1F2 1F9 90
-F 21A 222 90
-W
Writing 06A4 bytes
-Q
A>
PCAT NMI Enable/Disable port = 70H
RAM parity check control port = 61H (bits 2 & 3 0000xx00)
Parity status port = 61H (bits 7 & 8 xx000000)
Copyright (c) 1986 Digital Mechanics, Inc.
RAMTEST Page 4
MEMORY FAILURE CODE ANALYSIS: 64k motherboard
SAMPLE FAILURE CODE: 4402 201
|||| |||
|||| +++---- SYSTEM CODE - INDICATES MEMORY FAILURE
||++-------- FAILED BIT - 00 INDICATES PARITY
|+---------- FAILED 16K BLOCK - 0, 4, 8, OR C
+----------- FAILED 64K SEGMENT
SYSTEM BOARD (Lower left corner when viewed from the front)
SEGMENT = 0000
BIT FIRST 2 DIGITS OF
ADDR P 0 1 2 3 4 5 6 7 ERROR CODE
0000 - 3FFF * * * * * * * * * 00 (This row is
soldered in.)
4000 - 7FFF * * * * * * * * * 00
8000 - BFFF * * * * * * * * * 00
C000 - FFFF * * * * * * * * * 00
SECOND 2
DIGITS OF 00 01 02 04 08 10 20 40 80
ERROR CODE
Copyright (c) 1986 Digital Mechanics, Inc.
RAMTEST Page 5
MEMORY FAILURE CODE ANALYSIS: 256k motherboard
SAMPLE FAILURE CODE: 4402 201
|||| |||
|||| +++---- SYSTEM CODE - INDICATES MEMORY FAILURE
||++-------- FAILED BIT - 00 INDICATES PARITY
|+---------- FAILED 16K BLOCK - 0, 4, 8, OR C
+----------- FAILED 64K SEGMENT
SYSTEM BOARD (Lower left corner when viewed from the front)
BIT FIRST 2 DIGITS OF
SEGMENT P 0 1 2 3 4 5 6 7 ERROR CODE
0000 * * * * * * * * * 0x (This row is
soldered in.)
1000 * * * * * * * * * 1x
2000 * * * * * * * * * 2x
3000 * * * * * * * * * 3x
SECOND 2
DIGITS OF 00 01 02 04 08 10 20 40 80
ERROR CODE
Copyright (c) 1986 Digital Mechanics, Inc.
Version 2 addendum
Version 2 of RAMTEST corrects an error which occurs when the test is
run on a compatible machine. Briefly, the pattern which was written
to memory came from the top 32k of the IBM PC ROMs. Compatibles
almost invariably do not have that much ROM, so the pattern was being
generated from non-existant memory. On the second pass, a different
value was obtained and resulted in a memory contents error. This has
been corrected by using a random number generator instead.
The memory contents error message has been changed slightly so as to
be more understandable. The new format is:
Memory contents failure.
Address = 5000:0000
76543210 Bit #
Data is: 00011011
Data should be: 00011111
Turn power off, wait 5 seconds, and turn power back on.
As you can see, the offending bit is more easily recognized by
comparing the two data patterns. In this example, the RAM chip
occupying the bit 2 position is probably bad. As a note, if more
than one bit is different, the RAM chips are probably not at fault,
although it is possible.
To further explain the failure address, the following chart contains
the addresses contained in the first 4 rows of memory on 64k, 256k,
and popular 640k motherboards.
64k 256k 640k
0000:0000 - 0000:3FFF 0000:0000 - 0000:FFFF 0000:0000 - 3000:FFFF
0000:4000 - 0000:7FFF 1000:0000 - 1000:FFFF 4000:0000 - 7000:FFFF
0000:8000 - 0000:BFFF 2000:0000 - 2000:FFFF 8000:0000 - 8000:FFFF
0000:C000 - 0000:FFFF 3000:0000 - 3000:FFFF 9000:0000 - 9000:FFFF
I hope this additional information is helpful. With any luck,
'Version 3' of this program will have much better diagnostics and may
even be published. Thanks for your support.