The QSAVE package consists of: 1) a hardware unit, 2) a software program, and 3) an instruction booklet. It performs tape SAVE, LOAD, and verify at 4000 BAUD.
The hardware box has two standard phono plug connections for feed-through of the 9v power supply and two for connecting the recorder output and computer input. Described as a filter, a two stage amplifier, and a signal shaper, this unit is used only during LOADing to condition the signal from the recorder to the computer.
The actual circuit design is simple but elegant. A four stage op amp chip is used along with a timing chip for voltage doubling. Two stages of the amplifier give a mild gain and the other two stages are arranged as high and low filters. Clipping diodes provide the square wave signal shaping. The circuit board and overall construction show a quality level of wokmanship. The current draw was measured at 17ma.
The software program runs the Basic portion automatically after LOADing and relocates the machine code program above RAMTOP at address 32000. USR calls access the SAVE, LOAD and verify functions.
The verify function checks on whether the program has been saved properly by calculating a simple checksum of the bytes and then recording this value at the end of the tape. During verify the tape is read (but not LOADed to memory), the checksum is calculated and compared to the checksum recorded on the tape. It does not make a byte-by-byte comparison with the program still in the computer, nor does it make any use of the program in memory. If the verify does not work, you perform the SAVE operation again.
The QSAVE program must be LOADed each time the computer is powered up or reset. This is a nuisance and could interfere with other programs using the protected USR area above RAMTOP, as more and more programs seem to be doing. The QSAVE code could be put in an EPROM or nonvolatile memory in the 8K-16K address space.
The program SAVE/LOADs the entire 16K of RAM everytime. This takes 25-30 seconds. The program could be made capable of loading just up to E-LINE as the Sinclair software does. Since the SAVE/LOAD actually starts at address 16301 and goes to 32896, the user might have problems with RAM at addresses just below 16K and just above 32K. Finally, by POKEing in the proper values, the program could save a full 48K of user RAM in less than 1½ minutes.
A BREAK key capability would be helpful since the program would hang up in the machine code during the search for the proper recorder volume.
SOFTWARE PROFILE
Name: QSAVE
Type: Tape Facility
System: 8K ROM; 16K RAM
Format: Cassette; hardware
Summary: An inexpensive alternative that gives very reasonable LOADing times.
Price: $37.50
Manufacturer:
Personal Software Services
112 Oliver St.
Coventry CV6 5FE
United Kingdom
The software shows some evidence of having been rushed to the market without a final cleanup. For instance, the machine code program has some extraneous code that is never used. The machine code for LOADing the program above RAMTOP appears to test for old vs. new ROM and make the necessary changes to allow a call to ROM for the FAST routine by the old ROM. But, in fact, the old ROM capability is not there. The machine code also puts the computer in FAST mode and then leaves it there. A corresponding switch back to the SLOW mode before returning from the machine code program would be useful.
The key to understanding how this program works (and, to an extent, the Sinclair SAVE and LOAD procedures) is the fact that the bits are represented by the length of the silences on the tape. The machine code program listens for and measures the length of the silences. The tone bursts on the tape are nothing more than separators of the silences. This puts a premium on having good quality tape with low inherent background noise and a good erase head.
Also similar to the Sinclair tape procedures, the BAUD rate for the data transfer is variable depending on the mix of 0 and 1 bits. On the Sinclair the BAUD rate is 5600 if all 0 bits are being transferred and 3000 if all 1 bits are being transferred. Since in QSAVE each bit is a single silence separated by tone bursts, the apparent audio frequency is the same—5600 Hz and 3000 Hz. This is probably pushing the limits of frequency response of inexpensive recorders that are intended for voice recording only. The 4000 BAUD is an average value only.
I then performed a series of experiments with several recorders and the QSAVE package. The first was a bottom-of-the-line GE that had been resurrected from the dusty depths of a closet and used from the time the computer was purchased. After detuning the software program to 2000 BAUD by POKEing new values into the delay loops, the QSAVE package would work with this recorder. This detuning lowers the apparent audio frequencies by half. Even so the volume setting was very touchy.
A second recorder of unknown history and condition could not be made to work with either the original 4000 BAUD version or the detuned 2000 BAUD version.
The third recorder was a nearly new top-of-the-line Sony. The QSAVE package worked at 4000 BAUD. Furthermore, the volume setting was almost irrelevent. Reliable LOADing was obtained at any volume setting from ¼ to full volume.
Lastly, another Sony identical to the third recorder was tried. It had seen heavy recording usage and would not even load the standard Sinclair tapes. After the worn record/playback head was replaced, it performed as well as the new model.
These experiments suggest that fairly good recording equipment is required to use the QSAVE package. Since the silences on the tape are critical, frequency response and reasonable signal-to-noise ratio by the playback head are needed. None of the recorders had a tone control. The instruction booklet indicates that a half setting on the tone control can reduce the sensitivity of the volume setting.
In conclusion, QSAVE is an interesting package. It does perform as advertised when used with good quality recording equipment, but there is room for improvement to a fine product. I plan to wire the QSAVE hardware into a new computer case (my current project) and to put the machine code program in nonvolatile memory below 16K. Unless and until a reasonably priced disk drive is available for the ZX81, this package is an inexpensive alternative that gives very reasonable LOADing times compared to the normal Sinclair tape operations.