By Wes Brzozowski
version 3.0 documentation dated 1-4-86
Welcome to the wonderful world of the CLONE tape copier. this program provides some relatively easy ways to make copies of your tapes. It also allows some of the more advanced programmers to learn of the “hidden spec”, bundled away inside their program’s headers. But before describiing how to use this product, it would be worthwhile to point out (for your own protection) that there be legal and illegal ways to use CLONE. Knowing what you legally have the right to copy can keep you from any action that mey cause trouble later on.
A SERMON
Any software that’s in the public domain, or which you’ve written yourself, can be copied without limit. Most commercial programs, however, don’t fit this category, since they bear a copyright notice. When you buy such a tape, you buy a cassette and the right to use the information on it, but the expression of the ideas on the tape still ” belongs ” to the copyright holder. You did not buy the right to copy the program, except to make what’s legally termed an “acrhival copy”, or a backup tape, in our language. Its best to keep the backup tape for normal use, and store the original away, just in case.
CLONE can be legally used to make backup copies of copyrighted tapes that you own, but not of those belonging to other people. If you sell or give away the original, you are required to destroy the backup copy. If you can find any “loopholes” in this simplified description, be assured that the actual laws contain no such conveniences. Legally, there’s no cheating allowed, and that’s that. Furthurmore, we not condon software piracy, though we feel that it’s very important to protect our investments in legally acquired tapes by means of backup copies. This is the only intended purpose of CLONE.
A DESCRIPTION
CLONE will operate in an unmodified TS2068, a TS2068 with a SPECTRUM ROM installed, or a TS2068 with some other SPECTRUM emulator, provided that the second ROM (the EXROM) has not been removed. Ths means that CLONE, in its present form, will not work with an “honest to goodness” SPECTRUM.
Up until now, most TS2068 users made backup copies either with two recorders, one feeding the other, or with a “header reader” program, which often provided enough information to individually LOAD and SAVE each data block on the tape. CLONE contains a streamlined version of the tpae-to-tape copier, as well as the most complete header reader we’ve seen, an enhanced version of a listing published in the September issue of SINCUS NEWS. As its main function, however, CLONE also contains the ability to automaically LOAD in multiple data blocks, and then SAVE them all, on command. To those not technically familiar with the TS2068, this is as close as possible to copying programs with a single LOAD and SAVE command, and it requres absolutley no technical knowledge to use.
This “Block Copy” method is not only easier to use than a header reader, but it copies some things that can’t be conventionally LOADed or SAVEd. For the technical crowd, this includes such things as headerless data blocks, blocks with nonstandard flag bytes or intentionally scrambled parity bytes, and data blocks that are deliberately inconsistent with the header information. Machine code programs can produce any of these with a few bytes of code, but they can’t be conventionally LOADed, and so can’t be conventionally SAVEd. Nevertheless the BLOCK COPY method can handle all of these.
The Header Reader in CLONE has other uses. It will often tell how programs are “laid out” in memory, how much machine code it contains, how large a BASIC program is, whether variables have been SAVEd with the program, and how mnay bytes are involved. Those with microdrives or their equivalents will also find it useful in transferring their programs. Some users may never have use for a Header Reader, but we use it often, and suspect that others will find it handy.
Most Ts2068 software can be backed with the BLOCK COPY method, but as nice as it is, it’s still possible to code a program in such an alien format that BLOCK COPY is confoundede. For this, we use LAST RESORT method, which uses two tape recorders, with the TS2068 in between. This eliminates some audio noise, makes volume settings less important, and can prevent some of the distortion added when using recorders whose tape head alignments aren’t perfect.
Unfortunately, if our program just sampled the EAR jack and sent its findings to the MIC jack, the pulses going out would be significantly narrower than those coming in. (Those who understand things like rise times, trigger levels, and such, can work it out. We hope the rest will take our word for it.) In any case, such distortion can be intolerable or tapes of lower quality, or on cassette recorders that really need thier heads aligned. For this reason, LAST RESORT first “calibrates” the program timing by reading a small portion of it, and figuring out how wide the pulses need to be extended. The tape is then rewound and the copy made. This isn’t as easy as BLOCK COPY, and those who don’t have SPECTRUM software won’t use it much, but its great to have when you need it!
Copies made by this method are of inferior quality, but they usually work. This method can’t be used to make a copy of a copy, but since you’re a legitimate owner of the original tape and not a pirate, you won’t have to worry about that, will you?
Those who will make the most use of the LAST RESORT method are owners of SPECTRUM emulators. The newer SPECTRUM software is cleverer and far more sophisticated than most products available for the TS2068, but sometimes their copy protection schemes are just as advanced.
Things like precise timing between data blocks, fast loaders, special tone bursts, and truly bizzare loading formats (a la halls of things) are beyond the abilities of the BOLCK COPIER. LAST RESORT handles them fine, but with an occasional drop in reliability.
As has been mentioned, CLONE is compatable with a TS2068 operating under a SPECTRUM emulator, 2nd by changing the line that loads the machine code portion, can be made to load from microdrive. (It still copies cassette to cassette, but the faster loading of CLONE is awfully nice.)
A GUIDED TOUR
We estimate that there are seven (or possibly eight) people in the world who read the directions completely before trying out a new program. If you’re one of these overly nervous unfortunates, try to fight your instincts, put down these papers and LOAD the program. Whenever possible, it guides you with menues, and will clarify a description that’s otherwise very difficult to make out.
When the program is LOADed, our nifty (however busy) cover screen comes up. By pressing EMTER (or most any other key) the option menu appears. Pressing CAPS SHIFT and BREAK will bring back the cover screen, and will always do so, unless you’re lost in the depths of BLOCK COPY. More on that in a moment.
Press ENTER again to bring back the option menu. Now, press H to enter the Header Reader. You’ll be given the option of output to screen or to a TS2040 printer. Choose the screen, for now. Rewind your CLONE tape, play it, adn press ENTER.
The header information will be displayed in a format that’s a convenient blend of normal notices you get when LOADing a program, and the SAVE statement you would have used to save the program. After a BASIC program is also given some extra information following the characters “p=” and “v=”. These are the number of bytes in the program and the number of bytes of saved variables. We usually don’t care about those things (who cares how many bytes, as long as it fits?), but they will prove usefull in conjunction with BLOCK COPY.
One last item about the header Reader. When variable arrays are handled their size is displayed, but they are assumed to be one dimensional. This is because the dimensions are not included in the tape header, and are not available to use. If the actual dimensions are needed, it’s easy to LOAD the variable in, and then use PRINT statements to find which dimensions give a Subscript Out of Range error, and which do not. This is not the most convenient, but it’s not difficult either.
Next, press CAPS/SHIFT/BREAK to get back to the cover screen, and ENTER to get to the main menu. Press L for LAST RESORT, to get a new menu. Before copying by the LAST RESORT method, you must calibrate to the tape rewind. Rewind the CLONE tape, select the calibration option, and follow the screen prompts. When the LAST RESORT menu reappears, (almost immediately after the tape starts LOADing) rewind the tape, and select the copy option, with a second recorder “reading” the MIC jack before you start playing your source tape, as shown.
___________ _________________ __________ ! !\ ! !\ ! !\ ! MIC >-+------< MIC EAR >-+------< EAR ! ! !Destination! ! ! ! ! ! Source ! ! ! tape ! ! ! TS2068 ! ! ! tape ! ! ! recorder ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !___________! ! !_________________! ! !__________! ! \____________\! !__________________\! \___________\! First, put a blank Then start the "Last Finally, start the tape in here, and RESORT" method on master tape playing start recording... your TS2068 here.
You should first try to make your copy in the “normal” mode. If this doesn’t work try the inverted mode. Which will work depends both on the tape and on your recorder. By the way, you’ll minimize distortion due to tape head misalignment if you make the “destination” tape recorder the same one you normally use with the computer.
If you’re still reading this, but haven’t yet tried LOADing the tape, you’ll be thinking that these instructions are very confusing. If, however, you’ve LOADed the tape and followed along, you’ll have had little difficulty. Our overly cautious friends are urged to stop reading the directions and start following the directions. Load the darn tape!.
The BLOCK COPY method is perhaps the most complex, so we’ve saved it for last. Go back to the maon menu and select the BLOCK COPY option, and rewind the CLONE tape. The prompt “Press L to to start loading blocks” is the last prompt you’ll see. For reasons to be explained, you’ll be working from memory here on, and CAPS/SHIFT/BREAK won’t return you to the main program. Those facts make the BLOCK COPY option more powerful, but they do require a bit of practice, so let’s do it!
Play the CLONE tape, and press L. As the program starts LOADing in, the display will start to fill up with “hash”; don’t worry this is normal. All but the last 500 or so bytes of memory have been set aside to store program blocks, and this includes the 6K normally set aside for the display. This means you can BLOCK COPY up to 47 1/2 K of program.
When no more program is LOADing in, evidenced by the long absence of “Loading lines” in the border, press CAPS/SHIFT/BREAK until the border turns black. The BLOCK COPIER is now ready for new instructions. Place a blank tape in the recorder, set it on RECORD, and press S. A backup copy of CLONE is now being made!. When the border again turns black, you can shut off the recorder; your copy is done. You can now press L to LOAD in a new program to copy.
When the border is black, you always have three options, L to Load a new program (and destroy whatever is already there) S to SAVE the program already there, or CAPS/SHIFT/X, which will reset the machine. Because the BLOCK COPIER uses almost all of the memory, it often destroys the BASIC portion of the CLONE program, as well as the system variables, the stack, and numerous other essential portions of memory. For this reason, it’s impossible to return to the main menu; its gone. The only way out is to reset the machine.
Although it would have been convenient to be able to return to the main CLONE program, it would have meant that many programs couldn’t be Block Copied in one pass, and this is far more convenient that having to reload CLONE. We’ve tried ti both ways, and this is by far the easiest to use.
Some programs actually contain more than 47 1/2 K of data. Some of these can still be BLOCK COPIED, if this data is in smaller blocks. This is where the HEADER READER can help us out. We can total up the number of bytes of machine code, Basic programs and BASIC variables, and if the number is anywhere near 47 1/2K, the program should be copied in parts.
To do this, start to BLOCK COPY your source tape as usual, but pick some convenient spot where LOADing lines in the border disappear, and stop the tape. Do NOT rewind it. Press the CAPS SHIFT/BREAK to stop the copier from LOADing. Now start your destination tape in the recorder and press S to SAVE. When the SAVEing lines stop and remain an all black border, stop the tape recorder. Once again, don’t rewind the tape. You can now press L to LOAD some more of the source tape, and start to play it where you left off. At any time, you can stop the tape when the LOAD lines vanish, press CAP SHIFT/BREAK to stop the LOAD, and repeat the above steps for SAVEing what you’ve just LOADed. You should be able to continue to LOAD and SAVE as many pieces as you like, as long as you never LOAD more than 47 1/2 K at one time. Only after you’ve done with this LOADing/SAVEing process should you rewind the tapes.
It is recommended that you become thoroughly familiar with copying smaller programs before trying this method on something really large. It’s somewhat confusing to do even when you’ve got some experience with CLONE. Without experience, it maybe difficult to even comprehend this explanation.
Note that some SPECTRUM programs contain an entire 48K long code block. This is done so that there will be no room in memory for a program like CLONE, and BLOCK COPY won’t work. This won’t stop the LAST RESORT method however, so get a spare recorder and make that copy!
KEYS to remember:
- IN BLOCK LOAD KEY L=LOAD S=SAVE CAPS SHIFT/X=reset or clear CAPS SHIFT/BREAK=stop LOADing if in loading process.
- REST of the time-CAPS SHIFT/BREAK = return to cover screen.
ENTER from cover screen gets you option menu.
Save to Sinclair Microdrives:
- CLEAR 32767:MERGE** ENTER play the CLONE and then rewind it.
- LOAD “” CODE ENTER play the tape again
last statement in line 6 of the BASIC portion is:
- LOAD “”CODE, replace this with; LET drive = PEEK 23766;
- LOAD * “n”;drive;”cloneO” CODE 57472,8064.
The program will be saved to the microdrive and will LOAD in from any drive; not just drive #1.
