VIC Rabbit: A High-Speed Cassette Interface
Roger N. Trendowski
With a very unassuming name, the VIC Rabbit may be one of the most useful peripherals you can add to your VIC-20 cassette system. What is a VIC Rabbit? It's a Read Only Memory (ROM) cartridge, manufactured by Eastern House Software, that plugs into the VIC expansion port.
VIC Rabbit adds 12 new commands to VIC BASIC. Of these, the new SAVE, LOAD, and VERIFY commands are the most impressive. (More about these commands later.) The Rabbit consists of two ROM sockets mounted on a circuit board; a ROM is mounted in one socket and the other is empty. Eastern House has plans to develop additional ROMs; possibly other utility programs or a word processor.
Also mounted on the circuit board are some capacitors, a controller chip, and at the rear, a female 44-pin connector. This expansion connector allows you to add additional memory, another utility cartridge, or even an expander motherboard with multiple slots. In other words, the Rabbit won't take over your expansion port.
SAVE, LOAD, And VERIFY
To activate the Rabbit, type the following command: SYS 7*4096. The manufacturer's name will be displayed, followed by READY.
Two SAVE commands, a LOAD command, and a VERIFY command are the main capabilities of the Rabbit. One of the SAVE commands, *S, is for saving programs with a six-second tape leader. The other SAVE command, *SS, provides only a three-second leader. The general format of the SAVE commands:
*SS"name",1,xxxx,yyyy *SS"name" *S
The name and device number are optional arguments, as they are with the normal SAVE command. The optional xxxx and yyyy fields are hexadecimal addresses which allow you to designate where in Random Access Memory (RAM) you want the program when reloading it.
Loading is done with a similar format:
*L"name",1,xxxx *L"name" *L
Normally, a program is loaded into memory at the same location from where it was previously saved. If you load a program with *L"name",1,f00, for example, the program will be loaded at the starting address of $0f00 (3840 decimal). After the program is loaded, the program name, program length (hex), starting address, and ending address are displayed in reverse video.
The format for verifying a program is:
This VERIFY command is a different technique than is normal for the VIC-20. To guarantee a good recording, the standard VIC VERIFY command reads a program from tape and compares it (byte-for-byte) with the program stored in RAM. With the VIC Rabbit, a checksum value is calculated as the program is read from the tape. (The checksum is the cumulative total of the value of each byte in the program.) Next, the computed checksum is compared with a checksum which was saved on tape at the end of the program. Because Rabbit never compares the tape version with a copy in RAM, you don't actually need the program in RAM to verify it.
Saves Five Times Faster
The Rabbit performs a short SAVE five times quicker than the normal VIC SAVE. For example, for a 3K byte program, the SAVE command process takes one minute and nine seconds; the Rabbit, 15 seconds. For a 16K program, SAVE takes five minutes; the Rabbit takes only one minute.
The *S commands takes three seconds longer than *SS, since a longer leader is put on the tape. The *S command can be used to move past the plastic leader found at the beginning of most cassette tapes. Both the LOAD and VERIFY Rabbit commands take the same length of time as the SAVE command.
I did not actually test for error-rates on the Rabbit; however, I did record the number of bytes and the number of SAVEs I performed over a four-hour period of testing. I experienced no loading errors with 75 SAVEs and LOADs (involving about 200K).
There are three limitations to the Rabbit. First, it obviously cannot load a program which was saved in regular VIC tape format. Second, multiple commands cannot be used, e.g., *S:* S. Third, the Rabbit does not transfer data files to cassette tape. The PRINT # command, which VIC Rabbit does not affect, normally does this in the VIC-20.
*E,"name" — This command loads a program and then automatically runs it.
*T,v,xxxx,yyyy — This command performs RAM tests in the memory range xxxx to yyyy (hex). If v = 1 for Test 1, the Rabbit tests RAM chips for storage retention. If v = 2 for Test 2, the chips are tested for proper selection operation. If an error is found, the bad memory address is printed out, along with the test pattern and error pattern numbers.
*Hxxxx and *Dxxxx — These commands convert a hex number to decimal and decimal to hex. They are especially useful when working with the hex starting address and number of program bytes which are printed out with the load and verify commands.
*Gxxxx — Go to machine language program at hex address xxxx.
* — This is one way to get back to the normal VIC screen. Pressing the RUN/STOP and RESTORE keys also works.
*Z — This command switches the VIC to the graphics character set, or back to the alphanumeric character set. This command may be useful on other Commodore computers; however, on the VIC you need only to press the COMMODORE and SHIFT keys to accomplish the same thing.
*K — Use this command to kill the Rabbit (disable the link). To reactivate the Rabbit link, you must type SYS 7*4096.
VIC Rabbit can be used in a variety of configurations, with memory expansions, utility and graphics cartridges, and expansion motherboards. Rabbit uses address space in the third 8K RAM expansion block (from decimal 28672 to 32767). This leaves room for 27K of memory expansion. The Rabbit should be configured in series with an expansion motherboard if you intend to use one.
If you load the motherboard with both 8K + 16K, the Rabbit will isolate that portion of memory that overlaps into the address space that it uses. A block three memory expander should not be plugged in parallel with the Rabbit since that places two circuit controllers on the same VIC input lead. VIC will not know which device to take orders from.
According to Eastern House Software, block three RAM address space was used for the VIC Rabbit program so that the ROM area (decimal 32768 - 36869) could be reserved for other utility programs.
An eight-page booklet is supplied with the VIC Rabbit. Except for the first page, it is easy to read. Page 1 is somewhat confusing because of its discussion of Rabbit interfaces with Commodore 64, PET Model 2001 and 4001, and CBM 8032. A separate VIC-20 instruction book will be available soon, according to the manufacturer.
The VIC Rabbit is an impressive product which should be extremely useful for BASIC and machine language programmers. It is built with expansion in mind and is both innovative and inexpensive.
Eastern House Software
3239 Linda Drive
Winston-Salem, NC 27106