KOBRAHSOFT SOFTWARE SUPERCOPIER SC5 UTILITY OWNERS MANUAL (c) KOBRAHSOFT 1988 INDEX ----- Contents -------- * Supercopier SC5; Introduction & Technical Section. * General backup methods; Loading SC5(a). * Supercopier SC5 (b); Loading and Using. * Supercopier SC5(c); Loading and Menu. * Speedlock Decoder SD1; Loading. * Using SD1 for Disk Drives. * Final Transfer. * Copying 128K Programs. * Header Reader; Loading and Using. * Headerless Block Length Reader. "SUPERCOPIER SC5" ----------------- INTRODUCTION. We thank you for buying our "SUPERCOPIER SC5" utility for your Spectrum, and we hope you will enjoy using it. PLEASE NOTE:- SUPERCOPIER SC5 IS SUPPLIED SOLELY ON THE UNEERSTANDING THAT YOU ONLY USE IT TO MAKE BACK UP COPIES OF YOUR OWN SOFTWARE FOR SECURITY REASONS, NOT TO USE IT TO MAKE COPIES TO SELL OR OTHERWISE DISTRIBUTE - THIS IS PIRACY, AND WE DO NOT CONDONE PIRACY! NOTE:- SC5 now contains THREE main parts i.e.:- SC5(a); SC5(b) and SC5(c). (a). "SUPER KOBRAH COPY PLUS":- This deals with normal speed programs and normal speed long blocks up to 49087 bytes long. It also copies normal speed "toned" programs i.e. programs with no pause between code blocks. (b). "THE KOBRAH TAPE UTILITY":- This again deals with normal speed programs, but it has the facility of you being able to select your own type of copier for the program you wish to copy. It can copy the multiple block programs e.g. Firebird type. (c). "KOBRASOFT ADVANCED TAPE COPIER":- A very versatile copier which will copy virtually ANY Fast Loader, with its easy to use baud rate measurer. It will also copy Trivial Pursuit question packs and other programs without leaders - as far as we know no other copier will copy these. Another very useful point is its ability to copy VERY LONG programs - up to around 80K! This is done using code compression techniques. It also will "smooth" out the baud rate for different tape decks - this is very useful for +2 owners. PLEASE NOTE:- Please do not expect SC5 to copy ALL your programs, it cannot, neither can any other copier available. This is due to the increasing complexity and protection methods used in modern software. We feel SC5 WILL enable you to copy more programs than any other copier currently available. SC5 now includes our "SD1 Speedlock Decoder" program, which enables even the latest "Pulsed Leader' programs to be easily copied. SC5 also has instructions on how to copy true 128K programs. It also supplies you with FREE Header Reader AND Headerless Block Length Reader programs to help you more accuratelv determine the composition of the programs you are trying to copy. TECHNICAL SECTION. ------------------ Here, we shall try and help you understand more about how your Spectrum LOADS and SAVES programs. When you load a program, you usually see at first a burst of RED/CYAN THICK STRIPES - this is called a LEADER (L), and is around 5 sec. in length for a HEADER, but only 2 sec. for a CODE BLOCK. These terms will be explained shortly. After, comes a burst of BLUE/YELLOW NARROWER STRIPES - these are BYTES (B) i.e. bits of code. This, for a typical BASIC program you get:- HEADER (TIME GAP) CODE BLOCK ------ ---------- L----B L----B ^ ^ ^ ^ 5 sec V. short 2 sec. Any length RED/CYAN BLUE/YELLOW RED/CYAN BLUE/YELLOW THICK THINNER THICK THINNER BANDS BANDS BANDS BANDS The HEADER must always come first, since it tells the Spectrum where the following code must go in memory. The burst of BYTES for a HEADER is always very short, since it always contains only 17 bytes. These 17 bytes give the following information:- BYTE NO. INFORMATION. -------- ------------ 1 - gives the TYPE of program, i.e 0 for BASIC: 1 for a NUMERIC ARRAY: 2 for a STRING ARRAY: 3 for MACHINE CODE. 2 - 11 - these 10 bytes give the PROGRAM NAME. 12, 13 - these 2 bytes give, for a block of code the CODE LENGTH, or for a BASIC PROGRAM the length of the program area plus its variables. 14, 15 - these 2 bytes give, for a block of code, the START ADDRESS of the block in memory, or, for a BASIC PROGRAM, the AUTO-RUN LINE NUMBER. 16, 17 - these 2 bytes give, for a block of code, a repeat of the CODE LENGTH, or, for a BASIC PROGRAM, the length of the program area only. You will note, that whilst LOADING or SAVING with SC5(a), its INTEGRAL HEADER READER will give the above information, e.g.:- BASNAME 0------580------1------490 ^ ^ ^ ^ ^ Program Type Length Auto Length Name (Basic) + Run (Program Variables Line only) No. CODENAME 3------48392--------16384------40392 ^ ^ ^ ^ ^ Program Type Length Start Repeat Name (Code) of code of code of length After the HEADER, usually comes a CODE BLOCK. This contains a leader of around 2 sec and then CODE which can be of any length. Thus, we can have:- L------B L------B L------B L------B ^ ^ ^ ^ Header 1 Code 1 Header 2 Code 2 In every case, (L+B) = 1 BLOCK. e.g. for so-called HEADERLESS BLOCKS, we get:- L------B L------B L------B L------B L------B ^ ^ ^ ^ ^ Header 1 Code 1 Code 2 Code 3 Code 4 i.e. here we have 5 BLOCKS but only 1 HEADER - this can be identified by one having ONE leader of 5 sec. - the rest will be 2 sec. Some programs e.g. MASK 2, have normal length Spectrum Leaders, but NO time gaps between parts. These are said to be "TONED". An example of a program with a series of very short AND toned leaders are the Firebird type. These have a large number of very small blocks, with very short toned leaders. Some programs contain FALSE HEADERS. These are blocks of code 17 - 20 bytes long but with illegal character types. They are usually put in to try and crash the copier. However, SC5 ignores these, and remains totally unaffected by their presence. There are also many types of LEADERS now used e.g. VERY SHORT, WIDE, NARROW, etc - SC5 copes with all of these. The Spectrum loads its programs at a certain speed - called the BAUD RATE - this is usually 1500. However, the modern FAST LOADERS have been evolved which increase this to give shorter loading times. FAST LOADERS can be recognised by the fact that the "noise" when loading is usually very high-pitched - the bands of the leader and the code are very narrow, and sometimes of a different colour from normal. These are harder to copy, and SC5(c) must be used for these (see later). GENERAL METHODS OF BACKING UP PROGRAMS. ======================================= The MAJORITY of "ordinary" programs can to copied with SC5(a) ("SUPER KOBRAH COPY PLUS"! in one operation. Exceptions arise when:- (1) The TOTAL PROGRAM LENGTH is longer than about 42000 bytes - here the "Maxibytes" section should be used. For longer blocks (48K to 80K), use SC5(c). (2) For Firebird type programs, or other unusual loading programs, use SC5(b). (3) Any block is a FAST LOADING block, or any single block is longer than 42000 bytes. In these cases, SC5(c) must be used. However, PLEASE BE PATIENT! Don't try and back-up your latest programs first - since they are likely to be the best protected and will need patience and experimentation. Please try first on your 'simpler' programs, then use your experience thus gained to eventually tackle the more difficult ones. LOADING AND USING SC5(a) - "SUPER KOBRAH COPY PLUS":- ----------------------------------------------------- NOTE:- Before loading any SC5 program, ensure your Spectrum is cleared (RESET) by either disconnecting then reconnecting the power, or pressing RESET, whichever is applicable. For the 48K Spectrum:- Type LOAD "" then press ENTER. PLAY in the program. For the 128K Spectrum:- Select 48K Basic from the Menu, and proceed as for the 48K. The program will load and run displaying the messages:- SUPER KOBRAH COPY PLUS SAVE LOAD PAUSE BREAK QUIT 3:NORMAL 4:TONES 5:MAXBYTES The keys available at this stage are:- Press "3" = Select NORMAL data. Press "4" = Select TONED data. Press "5" = Select MAXBYTE option. Press "L" then ENTER = LOAD data. Press "S" then ENTER = SAVE data. Press "P" during SAVE = PAUSE the saving. Press "BREAK" during LOAD/SAVE = Abort LOAD/SAVE. Press "Q" at Menu = QUIT or RESET the computer. When the copier has loaded, it defaults to the "NORMAL" mode; to return to this after using any other mode - press "3". To copy programs with no gaps between parts, press "4" for "TONES". This will copy any such program e.g. Lerm copiers etc. For mode "3" and "4" press next "L" to load, then press ENTER to start loading. As the program loads, the integral Header Reader will read the Headers and give information like:- For a BASIC program:- HD0 NAME (10 letters) 00125 00000 43981 ^ ^ ^ ^ ^ Header Filename File Auto- Code Length Type 0 Length Run Left. (Basic) Line No. For a M/C Program:- HD3 NAME (10 letters) 01573 24352 42864 ^ ^ ^ ^ ^ Header Filename Code Start Code Length Type 3 Length Address Left. (Code) When you have finished loading, press BREAK. The message "LOAD HAS BEEN ABORTED" will be displayed. You can now save what you have loaded by pressing "s" then ENTER. During saving, when the last 500 bytes of a file is being saved a white square will flash - pressing "p" at this point will insert a pause before the next file is saved when you release the "p" key. NOTE:- Pressing "q" at the Menu will Quit the program and RESET the computer. When the saving has finished the message "ALL MY SECTIONS HAVE BEEN SAVED" will be displayed. You may then load/save more data. To load a LONG block up to 49087 bytes - press "5" for Maxbytes mode. Press ENTER, then "1" will LOAD, "2" will SAVE. NOTE:- This mode will ONLY load/save ONE BLOCK, after which the border will go YELLOW. NOTE:- Repeat copies can always be made in normal and toned mode by pressing "s" again, or by pressing "2" again in Maxbytes mode. "SC5(b) THE KOBRAH TAPE UTILITY" -------------------------------- Description. ------------ This is an advanced tape utility in which you work out how a program is loading, then alter the copier to copy it. Firstly, listen to the tape you wish to copy. Write down the answers to these Questions: (1). What types of leaders are there? Are they long, short or normal? As an example consider the 'multiple block' Firebird type games. Here the leaders are very sharp (sounding like a "blip'). Thus, for type of leaders required on reloading we select "short" - we usually select the same as the original leaders. (2). How are the leaders loading? Are they normal, or high pitched (short), or have a deep base sound (wide)? Here, they are normal. (3). How is the game loading? Here it is with short leaders with no gaps. Other possibilities are "Toned" i.e. Normal leaders with no gaps, and Wide. (4). Do you want the copier to put any delays between gaps when saving - here we need none. When we have gathered this information, we can then load the copier:- LOADING SC5(b) - THE KOBRAH TAPE UTILITY. ----------------------------------------- For the 48K Spectrum:- Type LOAD "" ; press ENTER and PLAY the tape. For the 128K Spectrum :- Select 48K Basic from the Menu, proceed as for 48K. On loading, the following messages appear:- THE KOBRAH TAPE UTILITY Select Preferences Leader : Normal Type : Normal Mode : Normal Delay : Normal To select your choice, press "l" to select nature of leaders; "t" to select type; "m" to select mode; "d" to select delay. As an example consider a typical "multi-block" Firebird program. Here there are no sound gaps and fast very short "blip" type leaders. Thus, we set "Leader" to short by pressing "l" until the correct choice appears. Since the leaders, although short, sound normal in pitch, we set "Type" to normal. Since the leaders are short with no gaps, we set "Mode" to short. There are no delays between the blocks, so set "Delay" to none. When all the options have been selected, press "s" to start. Then press "l" to load and "s" to save. Pressing 'BREAK' aborts any load or save. Pressing "q" RESETS the Spectrum. Pressing "c" clears the screen. NOTE:- The screen area is used as a buffer and you will see some weird screen patterns, but this is normal and should be ignored. "SC5(c) KSFT ADVANCED COPIER" ----------------------------- Description. ------------ This is probably the most useful and certainly the most powerful part of SC5. It will copy almost 99% of anything; in fact it will even copy Amstrad tapes! Loading SC5(c). --------------- For the 48K Spectrum:- Type LOAD "" press ENTER and PLAY the tape. For the 128K Spectrum:- Select 48K Basic from the Menu - proceed as for 48K Spectrum. When loaded, the only thing visible is a BLUE screen! This was necessary to save on memory. At this stage, the following keys are available:- "l" = Load. "s" = Save. "c" = Clear Screen. "m" = Measure Baud Rate. "e" = Even out Baud Rate. "o" = Special "ODE" copier. "u" = Return to normal copier after "o". "q" = Quit - Reset the Spectrum. In "Maxi Mode":- "1" = Load a block (first attempt). "2" = Load a block (second attempt). "s" = Save. This copier will copy virtually ANY fast loader or very long program. Firstly, copy any normal speed parts up to the long fast block using SC5(a). Next we measure the baud rate of the fast section. Press "m" and play in a "noisy" part of the fast section. By noisy we mean an area where there is a lot of different changes in the width of the loading stripes. It is usually best NOT to use a screen code area, since large parts of this can consist of only zeroes or ones. Within a second of playing in the noisy part, the screen will go RED, indicating that the baud rate has been measured. NOTE:- DO NOT play in the leader - this will give a false result. Rewind the tape to the start of the long fast block. Press "c" - this will clear the screen back to BLUE. NOTE:- At this stage the copier is VERY sensitive. For this reason, when starting to copy the long block, it is best to PLAY it, and wait until you hear the leader before pressing "1" to load. If this is not done, the copier may copy any "glitches" or backgrolnd noise on the tape. This is very likely to occur when trying to copy a copy (which is not recommended anyway). If this does happen, it is recognised by the copier showing a few white lines at the top of the screen, and then stopping copying and going into "save" mode. It is recovered by pressing "c" to clear the screen, and then pressing "l" WHEN THE LEADER IS LOADING. The copier will now load data up to a maximum of 48000 bytes. if the block is longer than this, it will stop loading, though you will still hear data loading from your tape - watch for this. If this occurs you must use the "Maximode" to copy the long block (see later). If O.K., simply press REC and PLAY then "s" and save the copied block out to a fresh tape. Any more saving and loading is done at the same baud rate unless "m" is used again. If the block is found to be longer than 48000 using "l" above, press "c" to clear the screen, rewind to the start of the long block, press "1" and PLAY in the block. The copier will load 48000 bytes and then stop. When it has stopped, DO NOT TOUCH THE COMPUTER KEYBOARD IN ANY WAY FOR AT LEAST TEN SECONDS. During this time the copier is compressing the 48000 bytes loaded to make room for the rest of the block. Next, rewind to the start of the long block, and press "2" and PLAY in the block again. It will now load the whole block regardless of its length. When finished, press "s" to save, and an uncompressed copy will be saved out to tape. Repeat copies are made by again pressing the "s" key. NOTE:- If there are any large gaps in a game, you should try to keep these in. For example, the ALKATRAZ PROTECTED "Countdown" type games e.g. "Cobra", "Indiana Jones" etc. have a Basic first section, then a fast section with a large gap. Copy the Basic part with SC5(a), then use SC5(c) to copy the long fast block thus:- copy the first part up to the gap, save it; AND LEAVE A GAP ROUGHLY EQUAL TO THE ORIGINAL. It only needs to be near - it is just to give the program time to decode the game code. Then copy the last part from the end of the gap onwards in the usual way. COPYING ODE PROGRAMS. --------------------- These are programs containing a protection system used in "Trivial Pursuit" question packs; and "Sailing" by Activision. As far as we know, no copier up to date has been able to copy these, but SC5(c) can! Firstly, measure the baud rate, and rewind to the start of the data. Press "o" (not zero!) and use "l" and "s" to load and save. NOTE:- The program makes a buzzing sound in operation, and on loadIng and saving NO leader tones are present. To revert to the normal copier afterwards, press "u". SMOOTHING THE BAUD RATE FOR DIFFERENT TAPE RECORDERS. ----------------------------------------------------- Most tape decks run at different speeds, and at higher baud rates e.g. from 2700 upwards loading errors may often occur. Also, when a copier saves a program it may set the baud rate too high to suit a particular tape deck (Plus 2 users please note!). To check if this is happening with your tape deck (especially if it appears prone to a lot of tape loading errors with fast loaders), load in a sample program and look at the yellow/blue code lines when saving. Do they look narrower? If so, the baud rate is too high - press "e" to even it out. This is especially useful for +2 owners. Repeated pressing of "e" will load a program in fast, and save it out slow - an ideal use for microdrive transfer. "SPEEDLOCK DECODER SD1" INSTRUCTIONS ------------------------------------ INTRODUCTION. ------------- One form of software protection which has recently been developed is the famous (or infamous) SPEEDLOCK system - which uses the dreaded 'Pulsed Leaders' to load the program. These have lead to many loading problems, and because of this we have produced our "SD1 SPEEDLOCK DECODER" system. We did this since these programs are now so widespread - being used by several software houses including Ocean, US Gold, and Imagine to name but a few. SD1 converts the pulsed leaders to normal ones, and saves the program out at normal speed. Thus, the programs will take slightly longer to load, but we feel this will be compensated for by the far increased reliability in loading. It also saves the program code in two well defined blocks, with NORMAL headers, and gives the start address for the machine code, as well as producing a Basic loader to reload the program for Tape, Microdrive and Wafa drive conversions. This means that these programs can now be converted to most drives with a minimum of effort on your part. For certain special drives the Basic must be written, but full details on how to do this are given later. LOADING SD1. ------------ Firstly, make sure you clear your Spectrum by either disconnecting then reconnecting the power supply, OR presing the RESET switch, whichever is applicable. For the 48K Spectrum:- Type LOAD "", press ENTER then PLAY on your recorder. For the 128K Spectrum:- Select 48K Basic from the opening menu, then type LOAD "", press ENTER, then PLAY on your recorder. SD1 will load and run, starting with the message:- "Press ENTER then PLAY Tape". Remove the SD1 tape, and insert your Speedlock program tape, and rewind it to the start. SD1 is now ready to use. Some Speedlock programs have ONE Basic section, others have TWO, before the pulsing sections. Where TWO Basic sections are present, SD1 will ignore the first. Press ENTER, then PLAY on your recorder. When SD1 meets the main Basic, it will display its name, which will be used when saving Basic and code blocks. Watch your screen, and when the main Basic has loaded you will hear a warning beep and see a message saying "Stop the Tape". STOP your recorder - there will be a short pause while SD1 decodes the Speedlock Basic, then the message "Start Address of Code = *****" will appear. This is the Execute Address (R.USR number) of the converted program for microdrive, wafadrive or disc. NOTE:- If you are converting to a disc system other than microdrive or wafadrive, you should make a note of this number for later use. For tape, microdrive and wafadrive this is not necessary. NOTE:- You may sometimes see the message:- "Decoding Error - Press ENTER". If this happens, rewind your Speedlock tape to its start, press ENTER, then PLAY to try again. If the error reoccurs, try again using a slightly different volume, if it still happens, assume the program isn't Speedlock, or SD1 can't convert it. The Menu available is:- Key Function --- -------- "l" - start loading a NEW Speedlock program. "t" - Save Basic loader for TAPE use. "m" - Save Basic and code for m/d conversion. "w" - Save Basic and code for wafadrive conversion. "c" - Save code only - for disc drive transfer. "n" - Next stage; loading pulsing parts. BREAK - Performs a reset or NEW. Now, if you wish to go back to the start, simply press the "l" key, otherwise place a new tape into your recorder, start recording, and according to which system you are converting for, press the appropriate key i.e.:- "t", "m", "w" or "c". Press "t" for a copy that is to be reloaded from tape. Press "m" if you are transferring to microdrive. Press "w" if transferring to Wafadrive. Press "c" for any other disc drive. NOTE:- Ensure you press RECORD and PLAY on your recorder BEFORE pressing a key, since pressing a key saves out to tape immediately. On pressing any key except "c", you will save a Basic program that will load in the rest of the program's machine code i.e. a Basic Loader. This will contain the equivalent of LOAD"a"CODE for tape, LOAD*"m";1;"a"CODE for microdrive, or LOAD*"a",34000 for Wafadrive. Also, for microdrive or Wafadrive transfer you will save an additional block of machine code which you need to make the program run NOTE:- Disc drive owners must press "c". Remember, you will need to write your own Basic loader (see later). Also, write down the Start Address as shown on the screen. Having now saved a program to tape, we go on to the next section:- Having saved out to tape, replace the Speedlock tape in your recorder, and press the "n" key. This will show the FINAL Menu, i.e.:- (1) Save Code (Drive/Tape). (5) Start Same. BREAK = NEW NOTE:- This is the Menu available AFTER all pulsing sections have been loaded. Start loading all the pulsing sections by pressing ENTER, followed by PLAY on your recorder. Wait until SD1 has loaded in ALL the program - this is shown by the border going YELLOW. If the screen display is corrupted, this indicates a loading error - this means you must NEW the Spectrum (press BREAK) and reload SD1. The keys available now are as described above i.e. (1), (5) or BREAK. Replace your saving tape into your recorder and set ready to record. For Tape, Microdrive, Wafadrive and Disc drive transfer, press RECORD and PLAY, followed by key (1). Wait until the program has been saved (border YELLOW). For tape backups the process is now complete. The program reloads with the usual LOAD "" ENTER command. When the program has loaded, (screen loaded), Press ENTER to start the game. NOTE:- SD1 always saves 2 blocks of code with normal headers, followed by a single headerless block. The last block is used for tape transfer only and is in fact the screen display. The first 2 blocks have the same name as the original except the tenth character is set to 1 and 2 respectively. These 2 blocks are always of length 4096 and 38144 bytes respectively e.g. suppose the program was called 'test', SD1 would save the following 2 blocks:- "test 1", start address = 23296, length = 4096. "test 2", start address = 27392, length = 38144. In addition, for M/d and W/d, an extra block of code i.e. "test 3", will be saved, whose Start Address = Start of Code address given on screen. This is saved AFTER the Basic loader. For disc drive transfer, NO Basic is saved, ONLY the code block which we have called "test 3" - you need to write your own Basic - see later. NOTE:- After saving, you can either reset (clear) the Spectrum by pressing BREAK, or play the game by pressing key (5). FOR DISC DRIVE OWNERS OTHER THAN M/D AND W/D. --------------------------------------------- By pressing either key "m" or "w" earlier, M/d and W/d owners saved some Basic AND code. By pressing key "c", you saved a block of machine code. You must now write your own Basic loader to load the blocks of code you have saved to tape - this loader must contain the correct loading syntax to suit your drive. Suppose the program you are converting is called "test". By pressing key "c" you saved a block of code called "test 3" whose start address was given on the screen. Let us assume it was 34025. Subsequently you also saved blocks "test 1" and "test 2". You will need to save the following Basic loader to your drive, to auto-run from line 10:- 10: BORDER 0: INK 0: PAPER 0: CLEAR 27390 20: LOAD "test 1" CODE 16384 30: LOAD "test 2" CODE 27392 40: LOAD "test 3" CODE 34025 50: RANDOMISE USR 34025 You only need to alter tne syntax of this program to suit your particular drive. PLEASE NOTE:- (1). For each code block saved to tape you need a Basic line to load it. (2). The code "test 3" MUST be loaded LAST, and into the start address given earlier on tne screen. (3). The code "test 1" must be loaded to address 16384, whereas the code "test 2" must be loaded to address 27392. (4). The R.USR number is always the same as the Start Address shown on the screen. FINAL TRANSFER. --------------- To complete the process, we now need to transfer the Basic and machine code to your drive. The single headerless block (the last on the tape) is only needed for TAPE conversion, and can be ignored for any other case. For Microdrive or Wafadrive conversions, the Basic loader we need to transfer to your drive is already on the saved tape - it is the first program. To transfer it, type MERGE "" , press ENTER and PLAY it in from tape. This stops it auto-running. Now, save to drive with e.g. for microdrive:- SAVE*"m";1;"test"LINE 0 - press ENTER. We now need to transfer the 3 blocks of machine code to the drive. This is done thus:- (1). Reset your Spectrum. We now need to know the start address and length of the first code block which is "test 3". Do this using our Header Reader program HReader. Load this by typing LOAD "" CODE - press ENTER. PLAY in the code block. The Start Address will be 34025. Let us assume the code length is 55 bytes. Reset your Spectrum. Type CLEAR 27390. Load the block from tape with LOAD "" CODE - press ENTER, then PLAY. Save to microdrive with:- SAVE*"m";1;"test 3" CODE 34025, 55 - press ENTER. The next block on tape is "test 1". Load this to a convenient address e.g. 40000 with LOAD "" CODE 40000 - ENTER. Save to microdrive with:- SAVE*"m";1;"test 1" CODE 40000,4096 - ENTER. Load the third and final block with LOAD "" CODE 27392 - ENTER. Save to microdrive with SAVE*"m";1;"test 2" CODE 27392,38144 - ENTER. The program will reload from microdrive with:- LOAD*"m";1;"test" - ENTER. Follow a similar method for Wafadrive. For any other drive, save the Basic as detailed earlier, then the code blocks as for the microdrive method above, using the appropriate drive syntax. Using similar methods, will enable you to transfer other programs. COPYING 128K PROGRAMS ---------------------- The basic method is the same when using SC5 and SC5(b). However, since the 128K Spectrum has such a large amount of memory, it becomes more important than ever to determine accurately the structure of any program we wish to copy; particularly with regard to block lengths. This is where the Header Reader and Headerless Block Length Reader programs come in. For full instructions in their use, see later. We shall illustrate their use in a general method of copying 128K programs using the following program as an illustration:- Daley Thompson's Supertest 128K. -------------------------------- We have found the best method of copying 128K programs is to first make a list of the various Basic programs, and code blocks, together with their lengths. In the case of DTST, PLAY the tape, noting which are Basic programs and which are Code blocks Headerless or otherwise. Next, use the Header Reader program to determine the lenghts of the Basic parts and code blocks with Headers; use the Headerless Block Length Reader for those blocks without Headers. Thus, for DTST, we find:- Tape Count Type ---------- ---- 5 - 7 Basic 8 - 10 Basic 11 - 14 Basic 15 - 26 Basic 27 - 51 Headerless 52 - 76 Headerless 77 - 104 Headerless 105 - 129 Headerless 130 - 161 Headerless 162 - 193 Headerless 194 - 226 Headerless 227 - 242 Headerless We must now determine the lengths of these various blocks. For the Basic programs we can use the Header Reader program provided (we could also use the integral Header Reader in SC5(a), but HReader will give more information). Follow the loading instructions (see later), load the Header Reader and PLAY in the DTST tape. Note the length of each Basic program. Next, load the Headerless Block Length Reader and note the length of each Headerless Block. We find:- Block No. Tape Count Type Length --------- ---------- ---- ------ 1 5 - 7 Basic 128 2 8 - 10 Basic 240 3 11 - 14 Basic 240 4 15 - 26 Basic 6912 5 27 - 51 Headerless 16384 6 52 - 76 Headerless 16384 7 77 - 104 Headerless 16384 8 105 - 129 Headerless 16384 9 130 - 161 Headerless 16384 10 162 - 193 Headerless 16384 11 194 - 226 Headerless 16384 12 227 - 242 Headerless 5888 Remember, SC5(a) can only copy blocks upto around 42000 bytes long. We COULD use SC5(b), but SC5(a) is much easier. We can use that the first SIX blocks add up to 40356 (including 4X17 bytes for the Headers) i.e. we can copy the first 6 blocks using SC5(a) in the usual way. Similarly, blocks 7 and 8 total 32768; use SC5(a) for these. Blocks 9 and 10 total 32768; copy these with SC5(a). Blocks 11 & 12 total 22272; copy these with SC5(a). A similar method can be used for other 128K games. Also, SC5(c) can be used for fast loaders and VERY long blocks. HEADER READER ------------- INSTRUCTIONS FOR USE. ===================== LOADING:- --------- To load, type LOAD "" CODE (ENTER). For the 128K Spectrum, select 128K Basic, type load""code; press ENTER. The program will load then auto-run. USING:- ------- The HEADER READER will read the data from the header section at the start of each data block in a program. It will display details such as:- FILENAME:- The program name. This may sometimes be printed vertically due to the presence of certain control codes in the header e.g. CHR$(13), etc. PROGRAM TYPE:- i.e. Basic, Machine Code, SCREEN$, Numeric Array, Character Array, etc. PROGRAM LENGTH:- The HEADER READER will give, for a Basic program, the total program length (Basic program length + Variables), and the normal program length. It will also give the length of a machine code block. START ADDRESS:- For a machine code block, this is the start of the block in memory. AUTO-RUN LINE NUMBER:- For Basic programs only. To obtain this information, load the HEADER READER as described above, then load your desired cassette and press "PLAY". For each header, the screen will clear, and the data read will be displayed. It is usually best to "STOP" the tape when each header is read, so that the data can be written down. Press "PLAY" to continue. Repeat until no more data loads i.e. the program has finished. This can then be repeated with any other tape you wish to investigate. We recommend you use the HEADER READER before copying a program, since this will tell you how many data blocks you must copy and hence, when the program has ended. NOTE:- DO NOT PRESS 'BREAK' AT ANY TIME - THIS WILL RESET THE COMPUTER. HEADERLESS BLOCK LENGTH READER ------------------------------ INSTRUCTIONS FOR USE. ===================== To load, type:- LOAD "" (ENTER). For the 128K Spectrum, at the Initial Menu all you do is press ENTER. The program will load and then auto-run. The program is then ready use. To determine the length of any required Headerless Block, position your tape at the start of the block, then press "PLAY" on your recorder. The program will read in the bytes, count them, and print out the number of byteS in the block. To read in another block, press "r", then repeat as above. With these two utilities, the composition of most programs can be determined (except fast loaders and pulsing programs).