I wrote a program for the (unexpanded) Vic-20 that is based on the Micro Head Align program for the Commodore 64. I wrote this program because there are many of these kinds of programs for the Commodore 64 and none for the Vic-20. For example, on the Commodore 64 you can use the excellent HeadAlign program by Enthusi.
If you suspect that the azimuth of your Datassette read/write head is out of alignment, then you can use the Vic-20 program to realign your Datassette head. This comes in handy if you plan on digitizing your Vic-20 cassette collection (e.g., with a Tapuino device) and you are having trouble reading the tapes.
Here’s the Basic program as a TXT file. It is based on the Micro Head Align program, and should be simple enough for you to type out manually. If you have a floppy device, then you can use this disk image D64 or this PRG file. The program will run on an unexpanded Vic-20.
The following screenshot shows what you should get when you run the program and play a Vic-20 tape. This screenshot represents the output of a Basic program stored on tape and played on a well-aligned and clean Datassette.
A very basic explanation of the output is that each white square represents a moment when the Vic-20 detects a “signal” from reading the tape, and the placement of the squares on the screen represent the time between “signals”. If the Datassette is well-aligned and clean, then you should get straight “lines” scrolling down the screen (yes, I know the explanation is a little wishy-washy), indicating a good read.
If you are having issues loading programs from tape, you may be tempted to start fooling around with the tape head azimuth right away… Don’t touch the azimuth head until after you have eliminated other possible causes of errors. Here are some notes/pointers about troubleshooting tape errors on your Vic-20:
- Suspect the tapes: It is possible that some load errors are due to degraded tapes. I recently bought a batch of Vic-20 tapes online and many of them had deteriorated to the point where I couldn’t read them reliably. Get a reasonably new cassette (from the 90s) and try to save and load a simple basic program from tape. If you can do this, then most likely your hardware is OK.
- Clean your Datassette:
- Use contact cleaner to clean the metal contacts of the Datassette connector (the one that connects the device to the computer). The contacts oxidize over time and may not be providing clean signals to the computer.
- Clean the head: use a q-tip and isopropyl alcohol to remove any residue from the tape head. While you’re cleaning the read/write head, go ahead and give the record head a good cleaning.
- Open the Datassette and clean out any dirt and dust bunnies that may have accumulated in there.
- Suspect that some electronic components of your Datassette have failed: the Datassette has electrolytic capacitors that can fail over time… replace them (get a friend with soldering skills to help you).
- Clean the flux residue from the PCB: these Datassettes were mass-produced and many were sold with flux residue still left on their PCBs. Flux residue and other contaminants on the main board can cause electrical failures or interference. I used flux remover to clean the PCB solder points, and this improved loading. The following two screenshots of the Tape Adjustment program show the signals from a noisy Datassette (pre-cleaning) and the same signal from a cleaned Datassette (with new capacitors).
- The tape head is out of alignment:
- Insert a Vic-20 tape in the Datassette and load and run the Vic-20 Tape Adjustment program. Press play when prompted.
- On later Datassette models, there is a tiny screw-hole above the rewind button that allows you access to the head azimuth screw. On earlier models, the screw is only accessible by removing the case. While the tape is playing, use a small screw driver to adjust the azimuth screw. Turn the screwdriver in small increments and avoid over-tightening or over-loosening the screw.
- Use the program output to obtain clean straight vertical lines.