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 . And don't forget to check out my C=homepage at URL http://www.hit.fi/~traita/cbm/