In testing the utility of CLONE as a tool for assisting in my switching programs from tape to disk, I found the following to be of note.
A) The disk operating system code, although it is not supposed to interfere with the standard TS2068 system routines, does prevent BLOCK copy (not tape to disk, but tape to tape). I have no idea why.
B) The LAST RESORT method seems to work. But…
C) What’s the use if the target of a copy program is a disk and not another tape?
The use of course is to use the HEADER READER to eliminate doubt when searching for how the code was saved (with a starting LINE number, for example). The most important of these with programs that involve blocks of code are starting addresses and numbers of bytes of CODE. My hunt and peck method worked (described in a recent issue GOING TO DISK on the TS2068) but on more than one occasion the program seemed slightly damaged in operation. I found out quickly why. In almost every case, using HEADER READER, I found that I had saved a little too much or too little.
The starting LINE number in a SAVE is very, very important in tricky headers. CLONE showed this without fail every time. I moved a program that I had not thought possible to move to disk and all of my disk versions of programs work the right way all of the time now.
For Portuguese TC2068 Disk System Owners Only….
I use the Portuguese-supplied system from Zebra Systems. Yes, it runs hot, but then the power supply was designed for 50 cycles. I find that this system, other than that problem, is a brilliant solution to the problem of mass storage of programs and, where I’ve been able to fix the read/write tape routines to read/write disk routines I have been rewarded all the more. How do you use CLONE, then, to assist in this process?
Use the HEADER READER on everything with the output option set to printer. The output is clean and simple; you’ll have the name of the program, the header, and the code (or groupe of code — TECH DRAW has 4, including the print driver). On virtually every header, you can MERGE it with a line such as 9998 REM. Somebody will use that line for code on occasion; if you wonder, try MERGE-ing with 9999 — any difference? If not, go on.
Then, search the Header code for SAVE and LOAD routines. Understand what they are used for. Then, you have to follow the TOS rules. You cannot read or write anything with TOS without a file name. So, make up appropriate (and different) names for CODE and PROGRAM to be saved and loaded. Insert an asterisk (*) after SAVE (SAVE *”HEADERNAME” or SAVE *”CODENAME”); do the same with LOAD. Be consistent with the file names. Look for other SAVE and LOAD routines, as TASWORD’s for SAVing and LOADing files. Fix those. Then, using the LINE number from HEADER READER’s report, save the revised header to disk, i.e., SAVE *”NEWHEADER” LINE 10.
Then, if you want the loading screen present on many programs, if it’s reported as being on the tape, LOAD “screenname” SCREEN$, and then SAVE *”screenname”SCREEN$.
Then, if there’s a section of code, LOAD “codename” CODE. Then, save it as follows: SAVE *”CODENAME” a,b, where a=the starting address shown by the HEADER READER report (after the subhead “bytes”), and b=the number of bytes shown by the HEADER READER report (second number). Do this for all segments of code.
Then, try it out, but LOAD *”PROGRAM” from disk, not from tape. The pleasure of swift entry into your favorite game, your word processor, or your filer is a genuine pleasure, made even greater if you can change the appropriate routines so that you can read and write to disk. And it’s all the better because CLONE makes the job of getting to disk vastly easier and very precise. Congratulations to all responsible!
Art M.
Thanks for the article and nice words for CLONE, I look forward to your ideas each issue-ed.