Q. The Commodore 64 is a good micro but has weaknesses, such as the Basic and the tape loading speed. I find the loading speed very annoying as it loads at 600 baud whereas machines like the BBC and Spectrum load at 1200 and 2400 baud respectively. Why is it so much slower than other micros and is there anything I can do to speed it up?
Geoff Connell, Malmesbury, Wilts
A. Working with the cassette recorder on the 64 can be tedious but strictly speaking you're wrong about the baud rates. The Commodore 64 actually loads and saves at 1200 baud but this is effectively halved because all tape operations are done twice with the second copy used as a check against the first. This is why Commodore cassette systems are so reliable.
There are three ways in which you can improve loading and saving times. Firstly, and most obvious, buy a disk drive. Although slow in comparison to other disk systems, it is much faster than tape and offers access to much better software, in addition to random access files and other applications difficult, if not impossible, with the tape drive.
Second, you could buy a neat little product from Supersoft called Arrow, a cartridge that allows you to load and save programs at several times the normal tape speed. It costs £39. Stack of Liverpool offers a similar gadget for £29, also on cartridge, but Stack's version comes with a machine code monitor and toolkit included.
The problem with these is that they only work with programs you have saved yourself, not with commercial tapes.
Finally you can try the following which will cost you nothing at all...
For each program that you want to load, use the tape counter to find the halfway mark and mark this down on the cassette label or inlay card. When you come to load the program, zero the tape counter then allow the tape to run slightly past the halfway mark. Your program is now in memory, but you can't run it yet.
In direct mode enter the following line:
FOR I=46 TO 50 STEP 2:POKE I,PEEK(832):NEXT:FOR I=45 TO 49 STEP 2:POKE I,PEEK(831):NEXT
This takes the values for the end of Basic, start of variables and start of array storage from the cassette buffer and places them into the zero page pointers. Your program can now be run.
This routine is unnecessary for machine language programs as no Basic pointers are used. You can simply SYS to the start of the machine code.