                Memory expansion tester for the Commodore Vic20

        Foreword

I recently removed the 8k ROM from a Vic-1211A (Super Expander) cartridge
(because it caused conflicts with the 8k RAM installed in the BLK5.  Wow!
Now I can use a 3k + 2 x 16k memory expansion to reach a total of 40kB of RAM
on my Vic!) and wanted to make sure that the 3k memory expansion is still
working properly.  So I wrote a simple Basic-program for the testing, and
when I got it running, it seemed like it would take several hours to test the
3k memory.  Well, I started to write a ML-version of the program, and I
finished it before the Vic had completed the 3k-test with the Basic program.
The program is very simple, and does not include any bells&whistles, but it
does the job.  (And that is the main thing for a real hacker...)

        Usage

The program is very simple to use.  Just load it on your Vic, and start it
with one of the following SYS-calls:

SYS5000         Test the 3k RAM expansion
SYS5003         Test the 8k RAM in BLK1
SYS5006         Test the 8k RAM in BLK2
SYS5009         Test the 8k RAM in BLK3
SYS5012         Test the 8k RAM in BLK5

It takes about 17 seconds to test the 3k RAM area, and about 46 seconds to
test a 8k memory block, if there was no errors.  (measured with a PAL-Vic.
May take a little longer with a NTSC-Vic.)

This program uses the principle "no news is good news".  So, if you didn't
get any output (except for the "ready"-message;-) on the screen, there was no
errors.  If there is problems with any memory location, the program will
print the memory location (4 characters) and the test value (2 characters) on
the upper left corner of the screen.

        How does the program work?

It just runs through the memory area to be tested, and tries to poke all the
256 different combinations to every memory location, and verifies all the
values.  Of course, to make the testing even faster, I could have used only
a few values, for example $00 and $ff, but this doesn't reveal if there is a
short circuit between two bits.  I chose to use the previous method to
certify a reliable test.

        Future plannings

It would be very useful feature, if the program tried to find out the faulty
bit, not the memory location.  This would make it much easier to find the
faulty chip.  Maybe in the next version...

        The source code

The source code is also included in the package.  It was written for the DASM
cross-assembler.  You can download this excellent assembler, the *nix version
from http://www.funet.fi/pub/cbm/programming/unix/ and the M$-D0S executable
from http://www.funet.fi/pub/cbm/programming/msdos/ .  I decided to include
the source code, because the program is still a "quick hack".  I used only a
few minutes for writing it and this documentation.  So you probably can find
bugs from the program, and may want to fix them, or just make the program to
fit better for your usage.  The patching will be much easier when the source
code is available.  However, I will probably make a new version with better
UI, when (read "if") I have more time for such projects...

        Contacting the author

If any questions, bug reports or other comments, feel free to email me at
<Timo.Raita@HIT.FI>.  And don't forget to check out my C=homepage at URL
http://www.hit.fi/~traita/cbm/
