July 2015 - MegaMemoryTester 2.1 released
- When bad memory is detected, the read memory value and the expected value is given.
- Single bit pattern going from high bit to low bit added to Phase 1.
February 2011 - MegaMemoryTester 2.0 released
- Available as both a GS/OS and ProDOS 8 application.
- Memory test screen now has a menu to control operation and options.
- A test run can be stopped midway and be restarted.
- The iteration count (or "repeat mode") can not be changed during a test.
- The start and end banks can now be selected.
One may have to wonder why another memory tester would be needed for a computer that is over twenty years old. The IIGS had many memory testers written during the late 1980's and early 1990's so one would think that the glut would satisfy the market. It turned out that none were identified to actually work correctly for all IIGS memory checking needs. For example, the one that comes with AppleWorksGS doesn't check the last bank of RAM on a ROM 03. The highly regarded BitBanger incorrectly identifies some good cards as bad. With new memory cards being developed for the IIGS, it just made sense to ensure an accurate memory checker was available--especially to verify integrity of older cards that may need to be replaced. And MegaMemoryTester has product placement with Web addresses where new memory card products can be purchased (you can be sure that these vendors use MegaMemoryTester).
MegaMemoryTester runs a little bit slower than other memory checkers, but this is to ensure accuracy with any type of IIGS memory card. A RAM card will either have a type of DRAM (composed of logic gateways) or a SIMM stick (which is composed of RAM chips and additional logic gateways). Failures that can happen include: a logic gateway is stuck open or closed, a logic gateway incorrectly opens or closes based on the state of another logic gateway, or some other issue to a logic gateway that causes it to intermittently change state (i.e. randomly lose or change contents, perhaps due to something like heat as the computer and chips warm up with usage). MegaMemoryTester can successfully identify bad hardware in any of these cases. Note: it doesn't check on-board RAM--the IIGS self-test is used to do that.
The IIGS memory can be thought of being segmented in 64k chunks called banks. Memory addresses are often referred in hexadecimal consisting of seven characters, looking like $123456. The dollar sign means hexadecimal. The next two characters is the bank number.
The ROM 00 and ROM 01 have on-board memory in banks $00, $01, $E0, and $E1. A ROM 03 has on-board memory in banks $00-$0F, $E0, and $E1. IIGS RAM cards have memory mapped at the next available bank ($02 on ROM 00/01 and $10 on ROM 03) and span up to the fixed upper limit of $7F. A four meg card on a ROM 00/01 would consist of banks $02 through $41. This same card in a ROM 03 would use banks $11 through $4F.
MegaMemoryTester is available as both a GS/OS and a ProDOS 8 application. MegaMemoryTest is the GS/OS version and MMT.SYS is the ProDOS 8 version. The two version share the same code when performing the test of RAM.
The text-based interface is styled after the Classic Desktop Accessory and has to be kept simple to ensure it runs identically in GS/OS as well as ProDOS 8, especially on a ROM 1 which only has 256k of on-board memory. If the GS/OS version can't allocate on-board memory to ensure that the test doesn't overwrite the executed code, the IIGS may need to be shift-booted. If the GS/OS environment is failing horribly, boot into ProDOS 8 and run MMT.SYS.
Before starting the memory test in the GS/OS version, a reminder is presented to confirm that it is understood that memory will be cleared of its contents, including RAM disks. An option to quit the application is presented, otherwise the program continues to the test screen. The ProDOS 8 version does not include this confirmation screen. The test screen for the GS/OS version is the only screen available in the ProDOS 8 version.
The test screen displays basic information about the IIGS such as ROM releases, the total amount of RAM, and the amount of expansion RAM available. The menu on this screens has options to start the test, set the number of iterations to test memory, a start and end bank of memory, and quit the program. The default is to run with a single iteration, start at the lowest bank of memory on the memory card, and end through the last bank of memory on the card.
The number of iterations can be changed to infinite. The start bank can be changed to any valid bank from the lowest to the end bank. The end bank can be changed to any valid bank from the start bank to the last bank on the memory card.
Once the test starts, it runs in two phases. The first phase test checks memory by first writing and then reading different bit patterns. Since the IIGS is a 16-bit computer, 16-bits of RAM is tested at a time to increase efficiency. Failures are identified in 16-bit words, based on the even byte memory address. The bit patterns include testing each bit with a "1" individually (both ascending and descending order) and the following patterns which repeat to fit in 16 bits: 0000, 1111, 0101, 1010, 1100, 0011, 0110, and 1001. This phase identifies all of the logic gateway problems that aren't necessarily heat related.
The second phase runs in two steps. First, it writes a predetermined pattern across all of memory. The second step is to go back to the start of memory and read the pattern to make sure it matches. This phase is for identifying the more intermittent problems. Sometimes bad memory will hold state to pass the first phase, but needs the additional time to change itself in the second phase. Since intermittent problems are the hardest to identify, MegaMemoryTester may need to be placed in repeat mode to catch a problem. It will count every iteration and display that information on the screen. This allows for a repeating test to be left running over night and if a memory failure occurred, the iteration count and bad memory word gets displayed. Changing the IIGS speed to slow may be needed here as well. Caching accelerators such as TranswarpGS or ZipGS do not need to be disabled since they do not accelerate when checking more memory than their cache size.
The memory test can be stopped by pressing OpenApple-Period at any time. Control will return to the test menu.
Any time a memory failure is identified, user input is required to acknowledge the failure. The memory location is given as well as the read value and the expected value. When MegaMemoryTester is finished, the IIGS will need to be rebooted before another application can be used.
MegaMemoryTester is also future-ready to support more than eight megs of RAM if IIGS hardware hackers want to add that capability.