LERM - TAPE UTILITY 8. ---------------------- C O N T E N T S --------------- Page Item ------------------------------------------ 1. Introductory section. inc Guarantees and faulty tapes. 3. Technical information. inc main techniques. 6. Manual for TAP UTILITY 8. 9. "J" mode 11. "B" mode 14. Helpful hints. 17. Manual for CONVERSION UTILITY 1. ------------------------------------------ TU8-1 Copyright LERM 1986 ------------------- TAPE UTILITY 8 - INTRODUCTORY SECTION ------------------------------------- IMPORTANT - READ THROUGH THIS MANUAL CAREFULLY, AND FOLLOW THE INSTRUCTIONS. We do stress that it is a condition of sale that these utilities are NOT used to break copyright laws. They are for making your own personal copies, and these must NOT be sold, hired, or lent to others. Failure to do this may result in prosecution and we have no sympathy whatever for those defrauding companies from their well earned profits. This sort of THEFT must be stamped out otherwise YOU will suffer. We will report such illegal actions. We are aware that this package doesn't manage all programs. The variety of programs that are available makes a 100% copier impossible. Also we can't have every program to test it anyway! It must be accepted that a copier has a limited life, and you shouldn't expect too much. If it manages most of your programs we hope that you will be well satisfied. This package took many hundreds of man hours to complete - it costs a few pounds, and like other programs MUST be paid for! PROGRAMS PROVIDED ----------------- You are provided with two programs - TAPE UTILITY 8 (TU8) and CONVERSION UTILITY 1 (CU1). This is the order in which they have been placed on your tape, with a short gap between them. TAPES AND EQUIPMENT ------------------- The latest programs require high quality tape (computer tape or chrome dioxide etc), and good cassette recorders with clean recording and erase heads. GENERAL COMMENTS. ----------------- 1. Before attempting to LOAD in any of the programs ensure that you have an EMPTY Spectrum. i.e switch it off and on again or type NEW (and ENTER), or RANDOMISE USR 0 (and ENTER). IN ADDITION WE WARN YOU TO REMOVE ALL HARDWARE INTERFACES (e.g. Multiface, Tech research disc interface, Interface 3, etc.). Even a joystick or a printer which is switched on can upset the programs. TU8 has been secured against hardware devices. YOU HAVE BEEN WARNED. To LOAD in either program from tape simply rewind to its start, ENTER LOAD"" into your Spectrum, and press PLAY on your recorder. If the load fails rewind the tape and adjust the volume control on your recorder, and try again. NOW PLEASE TRY COPYING YOUR SIMPLE PROGRAMS FIRST, TO CHECK THAT OUR PROGRAMS WORK. WE REGRETTABLY DO SEND OUT A SMALL NUMBER OF FAULTY TAPES - THIS IS UNAVOIDABLE AS TAPES ARE DELICATE AND WE CAN'T TEST EVERY TAPE WE SELL! Sometimes your cassette recorder doesn't quite soil a particular copy. IF THE TAPE IS FAULTY THEN SEND IT BACK FOR REPLACEMENT - we normally are v.prompt!! Please mark the envelope "FAULTY". 2. We are always updating our programs, and to obtain the latest version (after checking that there is one), simply SEND us a large STAMPED ADDRESSED ENVELOPE, THE COST and YOUR OLD TAPE. Please mark your package "UPDATE". -1- GUARANTEES MONEY BACK GUARANTEE (not updates) If ON RECEIPT you are not completely satisfied with your programs and want a full refund, send the tape back STRAIGHT AWAY. Please state your reason(s) for return, giving all details if for some strange reason the package failed to work. Sorry, but we can't afford to offer money back on updates. ALSO an SAE does speed up the process. GENERAL GUARANTEE Your programs are guaranteed for 6 months. Send back the faulty copy and it will be replaced free of charge, but again an SAE will save you time. ALL THE PROGRAMS IN THIS PACKAGE, TOGETHER WITH THE MANUALS ARE OUR COPYRIGHT, AND OTHER THAN A GENUINE PURCHASER FOR THEIR OWN USE ONLY, NO PART MAY BE REPRODUCED. LERM, 10 Brunswick Gdns, Gorby, Northants. Great Oakley (0536) 743845 (evenings before 9.0p.m). For a postal reply you MUST enclose a stamped addressed envelope. WE REGRET THAT WE CAN'T GIVE ADVICE ON BACKING-UP INDIVIDUAL PROGRAMS - the chances are we don't have them anyway! We can only give help in the use of the programs. WHAT TO DO FIRST and INFORMATION ABOUT the TU8 package ------------------------------------------------------- We advise you to try to read through and understand the TECHNICAL INFORMATION section first. It may well require several attempts. The problem is simply that with the wide variety of security techniques currently available the copier has to become more complex to match. What TU8 does ------------- This is the main program. It will make a back-up copy CONTINUOUSLY of most older programs, copy programs with short/unusual tone leaders, fast baud rates, and jerky programs. What Conversion Utility 1 does ------------------------------ This is only for programs protected by a system called Speedl***. Several companies use this (e.g. Ocean, US Gold, formerly Ultimate). The programs have a jerky tone leader. CU1 will (i) completely convert these to normal speed with a normal tone loader for reliabe loading OR (ii) Give you the load and USR adressess for drive transfer, chop and split the machine code, remove screens, and save out some basic for your system - thus drive transfer is almost automatic !! TU8-INT ------- -2- TECHNICAL INFORMATION --------------------- In order for you to try and understand your Spectrum a little more, and to help you make your back-up copies of the more difficult programs, we have included this section. Please read it carefully (perhaps several times), as soon as you can. TONE leader, BYTES, BLOCK of code, and PROGRAM PART --------------------------------------------------- (i) TONE leader. (abbreviated T) When you save or load in a program the first thing you see on the screen is some THICK red and CYAN border stripes. This is called the TONE LEADER (TONE for short). It is used as an introduction to ensure that your code is taken into the computers memory at the correct time. (ii) JERKY TONE leader. (abbreviated J) To try to stop copying a "jerky" or "clicky" tone leader was developed. Instead of you seeing a smooth tone leader of red/cyan stripes they appear to jerk up and down making a short click at the end of each jerk. This is used extensively now by Ocean, US Gold, etc. Many cassette recorders find these programs unreliable to load. Both TU8 and CU1 will deal with these. (iii) BYTES (abbreviated B) After the TONE there are some BYTES. These are usually easily spotted because you normally see NARROW yellow and blue stripes. In fact they can be made other colours, or by using machine code, the border colour can remain unchanged. BYTES are the actual numbers (in the range 0-255) that are put into the computers memory. i.e. BYTES include basic, machine code, data. ALL are bytes, it is just that they have different purposes. (iv) BLOCK of Code A tone leader, together with the bytes that follow are called a BLOCK of code. (v) PROGRAM PART Suppose you load in a single piece of BASIC into your computer. What happens? First you will see T (Tone), then a short burst of B (bytes). This is the first block. Secondly, after a short time, you will see a second T, followed by a longer burst of B, the time that this second B lasts depends upon how long your program is. You have thus a second BLOCK of code. BLOCK 1 BLOCK 2 +-------v short summary | T B time T B | ^ gap ^ ^ | +-----Tone leader --+ | | (THICK RED/CYAN) | | | +--------- Bytes -----------+ (NARROW yellow/blue) The two blocks combined we shall call a PROGRAM part. Thus if you have some BASIC (TB TB) and then say an array of data (TB TB) you have saved TWO program parts, as your complete program has two "parts" to it. If on the other hand you save some Basic, and then some code, and then an array, then your program would have 3 program parts. -3- Finally note that the BYTES (B) although usually narrow yellow/blue can be changed by a programmer to other combinations. You can really recognise BYTES by the fact that the lines are NARROW rather than by their colour. In a similar way the colour of the TONE may be altered. BAUD RATE --------- Normally the Spectrum loads/saves programs at a particular SPEED. It is called the BAUD rate. Normally for a Spectrum it is 1500. It is possible for a programmer to increase or decrease this speed. If you speed up the rate and reduce loading time you pay the penalty of more unreliable loading. Many modern programs use a faster Baud rate, and TU8 copes with these. They are most easily spotted by the fact that (i) when the bytes are loaded the gaps between yellow/blue (OR perhaps other colour combination) is NARROWER than usual; (ii) the pitch of the noise that is made is HIGHER and more "scratchy". MORE ABOUT TONE LEADERS ----------------------- To improve their security various companies have made up their own TONE leaders. The first PROGRAM PART has to be "normal" or the Spectrum wouldn't load it. After this however, by writing some machine code, the programmer can by-pass the usual loading system and create his own. This is an outline of some of the possibilities. (i) Create a TONE leader rather NARROWER or WIDER than normal (ii) Do a very short tone leader (say a tenth of a second) instead of the usual 2-5 seconds. (e.g. our own TU8 has these). The border goes THICK yellow/blue for a very short time. (iii)It is possible to save a program (using machine code) but without any sound gap between the BLOCKS of code. e.g. T B T B T B We are going to call this TONING. We have done this in TU8, and, if you listen to the tape, continuous sound is heard. This can fool copiers as they assume that there will be a sound gap. What happens is that they get confused, the border goes thick yellow/blue when they hear the T and thus they save the tone leader as bytes by mistake. LIST OF MAIN SECURITY TECHNIQUES -------------------------------- (a) Making the program very long (even more than 48k and check that all the bytes are correct). (b) Use of different baud rate (e.g. Automan**) (c) Jerky tone leaders. (e.g. Decath***) (d) Toning (e.g. Chuckie E**) (e) Short tone leaders (e.g. Starbl***). (f) A combination of the above (Decath*** also loads at faster than normal speed). This is not a complete list either (see HEADERLESS blocks below) HEADER ------ Above we didn't quite tell the whole story. Suppose again you load in a simple Basic program. FIRST you see the thick RED/CYAN stripes of the TONE leader (i.e an introductory sound to prepare for loading) SECOND you see a SHORT burst of NARROW yellow/blue. i.e. you have the first BLOCK T B. -4- This first burst of B is called the HEADER, and is short since a HEADER contains only 17 bytes (or numbers). The HEADER tells the Spectrum the type of program it is loading in, where to load it, and its name. That's why just after this you see a message like Program: Fred or Bytes: Fred After this the second block would be loaded in. First the TONE (T), and LAST you see some more yellow/blue narrow border lines which show teh Basic bytes being loaded in. summary: when loading in a single program part we see BLOCK 1 time BLOCK2 T H gap T B NOTE we have now abbreviated the header as H, and changed from TB TB to TH TB. The below gives you the details of the HEADER numbers. HEADER DATA - Optional reading. ------------------------------- For the technically minded you are shown for any program its "header data". Spectrums have 17 numbers in their headers. This tells the Spectrum the programs name and other vital information. On the screen will appear something like e.g. HEAD:0-250-10-200 There will always be FOUR numbers shown. What to they mean? ------------------ First number: 0= basic 1= number array 2. string array 3= code (loaded/saved using LOAD""CODE or SAVE"name"CODE) (thus example header above is BASIC) Second number: gives the number of bytes that are to be loaded in. (our example has 250) Third number : If BASIC (i.e. 1st number=0) this gives the AUTOMATIC line number from which the program would run. If this is greater than 32768, no AUTO run occurs. If CODE (i.e. 1st number=3) this indicates the address where the first byte should be loaded when placed in the computers memory. Fourth number: This gives the number of bytes of BASIC if the first number was 0. (note this number will usually be less than the 2nd number as the latter includes bytes for the variables as well as the basic.) (our example has 200, thus 50 bytes are used for variables) e.g.2 for HEAD:3-780-36874-780 you would have CODE of length 780 bytes which would start to be loaded in from address 36874. HEADERLESS PROGRAMS ------------------- All programs must start with a header, and then some bytes. i.e. T H T B. After this the machine code programmer can do without "headers" altogether, as he/she can control where the bytes are to be loaded. These are so called "HEADERLESS" blocks. e.g.T H T B T B -5- MANUAL FOR TAPE UTILITY 8 ------------------------- INTRODUCTORY NOTE ----------------- This program could be regarded as 3 programs in one. When loaded you are into the first program or MODE - we will call this the "M" (for MAIN) MODE. There are TWO other MODES - the "B" and "J" modes. LOADING IN TU8 -------------- Follow the instructions on the introductory sheet. On successful loading a message "HERE ARE YOUR INSTRUCTIONS" will appear. SECTION A:HOW TO BACK-UP MANY PROGRAMS USING THE "M" MODE --------------------------------------------------------- What can it do? The "M" mode can handle programs by loading them in CONTINUOUSLY provided that all the blocks don't exceed approx 38k. It handles short tone leaders AND TONING automatically. What can't it do? As it is user friendly and simple to use, it can't manage high baud rate parts, or a SINGLE long block over 38k, or Jerky tone leaders. HOWEVER you will usually use this mode to copy the FIRST header and BYTES of your program. 1. MAKING A BACK-UP COPY --------------------- What follows under this main section is the QUICK and EASY guide to copy MANY programs. It is designed to get you going quickly, leaving the more difficult aspects until later on. All you basically have to do is to load in your program as you normally would, except that it is now under TU8's control. After loading enter break. Then you save it back out again. It is that simple for MANY programs. Try it and see, but leave your latest programs until last as they may take more effort, needing perhaps the "B" or "J" modes. 2. LOADING IN THE PROGRAM TO BE COPIED ----------------------------------- (a) Rewind the program to be copied to its start. (b) Press PLAY on your recorder and then the letter "L" key on your Spectrum. (the "L" key can manage short tone leaders automatically but NOT tuning.) (c) After loading is completed enter BREAK, and stop your recorder playing. (d) You will be asked if there are any more parts to be loaded in. On the assumption that the answer is no press key "n". If there were then press "y" and start your recorder playing again. Saving a copy ------------- (e) Put a fresh tape into your recorder and start it RECORDING. (f) Press key "s" (for SAVE) on your Spectrum and wait until saving is complete. PRESSING "a" (for advance) instead takes you back to the loading step (b). This is included in case you accidentally load in a block/program and don't with to make a copy. Repeat copies ------------- (g) After saving, stop your recorder. If you want to make another copy press "y" for YES, and you are taken back to part (e). Pressing "n" for NO takes you back to part (a) ready to copy another program. To get rid of TU8 While at the loading step (b) you can get the computer to new itself by entering CAPITAL "N". -6- 3. OTHER FEATURES -------------- Having got used to PART 2 above, you can now get used to some of the extra features that are provided for you. Before reading this we are going to assume that you have read and understood the TECHNICAL INFORMATION section of the manual. ABORT ----- (a) If you enter BREAK at any time during LOADING, the loading process is discontinued (or ABORTED), and you are taken to Section 2(d) ready to save what has been loaded, or load in more program parts. TU8 will copy exactly what it has taken in up to the time of entering BREAK. (b) If you enter BREAK during saving your TU8 will stop saving, and take you to the repeat copy stage at section 2(g). Note you may have to hold down the BREAK for a little while to effect this step. DELETE ------ While at PART 2 step (e) a number will appear half way up the screen on the left hand side. This tells you how many BLOCKS are in TU8's memory. (a simple basic program would have 2). Every time the "d" key is pressed the number of blocks is reduced by ONE - TU8 forgets the last block loaded. e.g. if your program has 5 blocks pressing the "d" key twice removes the last 2 blocks, and only the first 3 played into TU8's memory would be saved. PAUSE ----- Some programs have gaps between their various parts. e.g. after loading in some basic, a tune is played, the screen is altered, etc. The next program part doesn't appear on the tape for perhaps 5 seconds or so. Thus your copy needs these "gaps" placing between them. After saving any BLOCK TU8 checks to see if you are HOLDING DOWN the "p" key. YOU MUST PRESS AND HOLD DOWN THE "p" KEY WHILE TU8 IS SAVING THE BYTES OF THE BLOCK BEFORE THE GAP TO BE INSERTED. If you aren't holding down the "p" key then TU8 saves the next block. If you are it waits until you release the "p" key. Try this out and experiment to see the effect! e.g. a program has T H T B T H T B you want a 5 second gap here After TU8 has saved the T H T and is saving the FIRST B, hold down the "p" key. When it has finished saving the FIRST B count to 5, then release the "p" key. It will then save the last T H and then T B. You can put gaps even between the H and next T if you want. 4. THE MORE DIFFICULT PROGRAMS and TONE LEADER PROGRAMS ---------------------------------------------------- The general rule here is: (i) copy what you can using the method outlined in PART 2 (ii)use either the "B" or "J" modes for the rest of the program (see later). TONING and SHORT TONE LEADERS - the "t" (for TONE) key ------------------------------------------------------ To load in blocks you can use the "t" key instead of the "l" key. This key automatically takes care of TONING by detecting the difference between the tone leader and the -7- bytes. It also handles very short tone leaders. In fact you could use this key all the time rather than the "l" key. It doesn't give the header information upon loading and can be a little VOLUME sensitive - if loading stops too early then you will have to enter break, and try again at a different volume level. This key is thus very powerful and overcomes most old security techniques automatically. 5. FINAL NOTE ON "M" MODE: MEMORY SHORTAGE --------------------------------------- Provided that the total of all the program parts is less than approx 38k, TU8 in the "M" mode can manage all the blocks. It is possible however (e.g. Scrabble), that there isn't enough room for the whole program. USUALLY TU8 will warn you if it is likely that you aren't going to have enough room. If this happens: (i) Stop your tape as soon as the warning message appears, and save onto a fresh tape what you already have in TU8. (ii) Now load in the last long part separately and save. i.e. do the copying in 2 stages rather than continuously. Block number 1 2 3 4 5 e.g. T H T B T H T B ^ T B | ^ | | copy up to here first stopping your copy this last recorder as soon as the last byte long part of block 4 has been loaded separately. If this single block is too long (more than 38k) then you will have to use the "B" mode program for that BLOCK ONLY. SUMMARY OF KEYS FOR "M" MODE ---------------------------- When ready to LOAD Key Purpose --------------------------------------------- l Normal Load. t Loads looking for tone leaders. N Effects a NEW. B Enters "B" mode. J Enters "J" mode. When ready to SAVE Key Purpose --------------------------------------------- s Normal SAVE. a Advances - skips out the saving process p Gives PAUSES between blocks. REMEMBER you can enter BREAK at any time. -8- SECTION B: THE "B" and "J" MODES -------------------------------- What are they for? The "J" mode is used ONLY for jerky tone leader parts. It can make a Tape Back-up copy (saving out with the same jerks), or send out the bytes as normal Spectrum for stop/study or possible drive transfer only. Normally however we would expect you to use the CU1 program for this type of program. The "J" mode is probably best left unused unless CU1 fails to work for a particular program. SUMMARY: Used for jerky programs if CU1 fails. The "B" mode copies blocks, ONE AT A TIME, of virtually any length (many over 48k) including high speed loading parts, NON-standard and VERY SHORT tone leaders. In fact you could use it all the time, rather than bothering with the "M" mode. It DOESN'T cope with TONING (i.e. if there is no sound gap between the END of one block and the tone leader of the next. HOWEVER all you need do is to stop the tape as shown below. T H T B T B T B NO SOUND GAP HERE Stop tape here and copy each separately SUMMARY: Use for blocks the "M" mode can't cope with. NOTE: YOU WILL FIND THE "J" AND "B" MODES USUALLY DISPLACE THE SCREEN PICTURE BY ONE PRINT SQUARE TO THE RIGHT. THIS IS NOT AN ERROR. APART FROM THIS USUALLY ANY SCREEN BLOCK WILL BE NORMAL. Note also that these modes are MUCH MORE volume sensitive, and that YOU MAY have to make a few attempts at LOADING with different volume settings. How to enter the "B" or "J" modes? Simply press either CAPITAL B or CAPITAL J, from the "M" mode menu. Upon entering either the "B" or "J" modes the border will turn red. Then press the "y" key. THE SCREEN WILL BE BLACK, and the BORDER YELLOW. If this fails then try again. NOTE THAT THE "b" KEY IN BOTH THE "J" AND "B" MODE PROGRAMS IS USED FOR MEASURING. IF A PROGRAM BLOCK IS VERY LONG THE PART OF THE PROGRAM THAT CONTROLS THE "b" KEY IS OVERWRITTEN AND THEREFORE CAN'T BE USED ANY MORE. THE "J" MODE ------------ This mode manages those jerky tone leaders. We warn you they are not easy to manage - look at the "HELPFUL HINTS" section of the manual. The menu (NOT shown on the screen) is as follows: Key Purpose ------------------------------------------------------- b Measures the "jerk". Border MAGENTA after use. l Loading in key. m Moves screen picture to the right by one pixel s Save key. 0 Saves but with normal tone leader at normal speed (for micro, wafa, and disc drive transfer). This is the number zero NOT the letter "o". a Abort. Does a Clear screen. Makes border yellow q Quit - program NEW's itself. ------------------------------------------------------- Be sure to set the volume on your recorder to the level usually used for your program. -9- a. WHAT TO DO FIRST ------------------- Copy all "normal" parts with TU8 in the "M" mode. Then enter the "J" mode to copy the jerky parts. Each jerky part must be copied SEPARATELY. All that we have met have a short jerky block then one or two more much longer blocks, depending on whether the screen is in a block on its own OR the screen and main bytes are rolled into one. e.g. one possible structure is: T H T B J B J B normal basic 1st short main (use "M" mode) jerky part jerky part How to measure the jerky parts. Each jerky tone leader has its OWN fingerprint although they sound the same, each program has its own slightly different "jerk". In ADDITION the position to which each PIXEL is loaded in also varies. So you must (i) measure the jerk and (ii) set up the program so that it loads into the correct pixel - this process is not as hard as it sounds! How to measure the jerk. Rewind your tape to the start of any jerky part (labelled "main" above). Press play on your recorder, and then tap the "b" key while the "jerky" tone leader is being played into the computer. The border will be thick red/cyan in colour. After the jerky part has been played in the border stripes will become much narrower indicating that bytes are being played. Tap the SPACE key when this happens and then stop the tape. THUS YOU MUST PLAY IN THE LAST PART OF THE JERK AND NOT TAP THE SPACE KEY UNTIL THE BYTES HAVE STARTED. (the program will automatically stop measuring after approximately 10 seconds of program has been played in since pressing the "b" key - but do ensure that you only take in ONE jerky leader). We usually measure the jerky tone of the first block which has only a few bytes that follow, and tape the space key during the gap between it and the next jerky block. After measuring the jerk the border should change to MAGENTA. If it doesn't the chances are that the jerk hasn't been measured correctly, in which case try again! It is not necessary to play in the full jerk, so you could start pressing play on your recorder say half way through. What is important is to keep playing to get the jerky measurer to also receive some bytes. You can remeasure the jerk by repeating the above if you kame a mistake. Programs we have met so far have the same jerk for every block. b. LOADING IN A JERKY PART -------------------------- Unfortunately the first pixel used for loading in these programs varies. There are thus 8 possible positions to choose from. However you can set up the "J" mode to the correct pixel as follows. (i) Rewind your tape to the part of the program that loads in a screen picture. (ii) Press PLAY and then tap the "l" (for LOAD) key, and wait until the screen has completely filled with the screen string. If that block loads in MORE than the screen string then just stop the tape after the picture is complete. (iii) If the picture is correct EXCEPT that it is moved by a print square then the "J" is already set up for the correct first pixel, and you can miss out step (iv). (iv) If the screen colours are incorrect (perhaps flashing print squares etc), then keep tapping the "m" key until the picture -10- has the correct colours. The "m" key moves the screen string one pixel at a time to the right every time it is pressed. HAVING MEASURED THE JERK, AND SET UP THE CORRECT PIXEL LOCATION YOU ARE NOW READY TO LOAD IN EACH BLOCK AND THEN MAKE A BACK-UP COPY. c. LOADING/SAVING A JERKY BLOCK ------------------------------- (i) Rewind your original tape to the first (very short) jerky block. e.g. T H T B T H T B +-> J B J B J B Basic Code | 1st short screen main jerky | jerky block block | + Start here (ii) Press PLAY with your original tape in position, and then the "l" key. Wait until the jerky tone leader and the bytes have gone through, then stop the tape. If it stops loading while the jerk is being played in then tap the "l" key again until TU8 takes in the bytes (which is shown by the border becoming narrow yellow/blue). (iii) Place a clean tape into your recorder, and then, having pressed record, tap the "s" key to save it with a jerk (or for drive transfer/study ONLY, the 0 key). Repeat copies are possible by pressing the appropriate key, and you could save with "s" then "0" if you wish. (iv) Repeat stages (ii) and (iii) until you have copied all the jerky blocks. (3 in the example above) Your back-up copy will then be complete. d. THE "a" (abort) KEY ---------------------- By tapping this key it is possible to effect a CLEAR SCREEN making the paper black, and ink white, returning to step c. It doesn't affect the jerky measurer. Under certain special circumstances it can cause a crash, and should not be used if the Spectrum has some part of a program you still need to copy within its memory. e. OTHER POINTS TO NOTE ----------------------- (i) By tapping the SPACE key during a load or save you can stop the program working and return to the menu status. e.g. during saving your tape runs out so tap the space key, and after placing a longer tape into your recorder, press "s" or "0" to save again. (ii) Tapping the "q" key NEW's the program. THE "B" MODE ------------ This program allows you to copy high/low speed loaders, short tone leaders, and very long programs, including most of those that check the screen picture. It is thus quite complex and will take some getting used to - sorry but the diversity of programs makes this necessary. This is the menu of options. As for the "J" mode, use the "M" mode to copy the first normal basic, and then enter this mode to copy the rest. i.e. USE THIS MODE TO COPY ALL BLOCKS EXCEPT JERKY TONE LEADERS! -11- Key Purpose --------------------------------------------------------- l LOAD blocks up to approx 47300 bytes. c Used for 1st LOAD for long block only. 2 Used for 2nd LOAD for long block only. s SAVE blocks. 0 Saves at normal speed with a normal tone leader. (this is key number zero, not the letter "o") Makes border green. t Measures both the TONE leader and Baud rate. b Measures the BAUD rate. Border RED after use. q QUIT - does a NEW. a Abort - doeas a Clear screen. Makes border yellow. ---------------------------------------------------------- a. WHAT TO DO FIRST - USING THE "b" BAUD RATE MEASURER ------------------------------------------------------ The BAUD RATE (speed of loading/saving) is set up initially as "normal" for the Spectrum when you first enter this mode. If the block you are trying to copy is faster/slower than normal then you must use either the "t" or "b" key to measure the baud rate FIRST before attempting to load or save a block. This is how to use the "b" key to measure the speed for baud rate): (i) Rewind your tape to the start of the block you are wanting to copy. Press play, and let the TONE LEADER pass through. (ii) When bytes are going through (NOT TONE LEADER), simply tap the "b" key. UNLIKE the jerky measurer it is almost instantaneous! Try to find a nice "noisy" section of the bytes, not one with a pitch of the same level. e.g. when saving a screen picture frequently there are say 200 bytes all the same thus producing a sound of a single pitch level. Thus you get a "smooth" sound, and the yellow/cyan bands would be the same width. We want a mixed up (or noisy) section where a mixture of bytes is being played. Thus try to tap the "b" key during a "noisy" part. If you are not happy that you have found an appropriate part, then repeat step (ii) again. AFTER USE THE BORDER WILL GO RED. NOTE: Some programs have different BAUD RATES for each block, so before using one of the load keys you will have to measure the baud rate using "b" first. If the program has the same rate for each block then you will only need to use "b" once. Finally you can test to see if it has measured the baud rate correctly if the program has a screen string. Simply try loading it in, using the "l" option, and if the picture together with the colour attributes are normal (but displaced by one print square to the right), then the setting was correct. Unfortunately IT COULD STILL BE CORRECT EVEN IF THE COLOURS AREN'T NORMAL (e.g. this happens with Wiz.Lair). b. THE "t" key -------------- This key will measure the pitch of the tone leader and should be used if the tone leader of the block appears much higher/lower than normal. Not only that but it measures the baud rate of the bytes that follow at the same time, and is thus used when you have a standard tone leader, but very few bytes follow making it impossible to use the "b" key (e.g. a header which only has 17 bytes). -12- You can even use the "t" key to measure the tone, fast forward the program a bit, and then use the "b" key in the middle of the bytes to set the baud rate. This might be necessary as the "b" key measures the baud rate more accurately than the "t" key. To measure both the TONE and baud rate: (i) Rewind your original to the start of the tone leader. (ii) Press the "t" key and then PLAY on your recorder IN THAT ORDER. Wait until both the tone leader and some bytes have passed through. The border will be THICK magenta/white for TONE leader, and narrow magenta/white for the bytes. Try to get a couple of seconds of bytes (if possible) and tap the space key when you have finished. Stop your tape. NOTE: The "t" key can measure even very short tone leaders (as we use in TU8) as well as high/low tones! (e.g. Wiz.Lair) +--------------+ | v e.g. T H T B | short tone B Low tone B <--+ Basic | ^ ^ | | | | | | Press "t" key here | | | +----- Tap space key during this -+ part after a second or two The program will stop measuring the tone and baud rate automatically after approximately 15 seconds. You are now ready to load in and then save the blocks of your program. c. SUMMARY OF THE LOADING/SAVING TECHNIQUES ------------------------------------------- If the block you are trying to copy is under approx 47300 bytes then all you use is the "l" key to load in the block. If the block is longer than this however then you have to load the block in TWICE. The first time you use the "c" (for count) key, and the second time the "2" (for second) key. (i) Copying blocks under approximately 47300 bytes. Rewind your tape to the start of the block. Press "l" and then the PLAY key, and wait until loading is complete. Remove your original tape from your recorder and replace with the fresh one. Press record on your cassette and then press the "s" for save key. Wait until saving is complete and repeat this process until you have copied each block. SUMMARY: The "l" key loads in blocks up to approx 47300 bytes in length. Screen picture will be displaced by a print square. No corruption occurs when copied. This is your main loading in option and should be used provided the block is under 47300 bytes long. e.g. T H T B : T B T B T B Basic : All blocks high speed perhaps with : short tone leader - all under 47300 Usually use "M" mode: bytes long, none very short either. for this part. : Use "B" mode for these parts. (could use "B" mode): Use "b" key to measure the speed : then "l" to load and "s" save. : The baud rate might be different for : each block and thus the "b" measurer : would have to be used FIRST for : each block before loading. Use "t" (to measure the tone) instead of "b" if (a) the tone leader is higher or lower than normal or (b) the bytes are too few to effectively use the "b" key. Remember that having measured the tone with "t" you can still use the "b" key provided that there are sufficient bytes to test. -13- (ii) Copying very long blocks - over 47300 bytes ------------------------------------------------ This is what you must do for very long blocks (high speed or otherwise). We will assume that you have already measured the baud rate and tone leader (if required). e.g. Fairligh*, Elit*. a. Rewind tape to the start of the long block. Press the "c" key (for count) and then the PLAY key on your recorder. Wait until the border changes to BLACK, then stop the tape and REWIND it back to the start of that long block. You will find that the screen picture flashes/alters for a while, and eventually the border will change to CYAN. b. Now press the "2" key, and play on your tape, and wait until loading is complete. c. Stop your tape. Replace with your fresh tape, set your cassette recording, and then press the "s" key for SAVE. You have now completed copying the long block. Using this method you can copy very long high speed blocks, many even 51k long 100% accurately!! e.g. E. ones a Wally, and H. dummy run have very long high speed last blocks that require the use of both "c" and the "2" key. NOTE: It is possible to have a program at normal baud rate that the "M" mode of TU8 can't manage. e.g. T H T B T B Basic Headerless block. If the "M" mode fails to copy the program correctly then use the "M" mode to copy the first program part, enter the "B" mode and use it to copy the rest. d. Another saving option ------------------------ The "0" key. (converts for drive transfer or study). If you have a high speed loader and want to convert it to normal for POSSIBLE drive transfer then press key "0" (the number zero) before pressing "s". (You may need an information sheet or OTHER help for successful transfer). UNLIKE this option in the jerky copier it alters the saving setting to the "normal" speed. Thus if you want to do both tape to tape and a drive conversion copy, save under "s" the first time, then press "0" and the "s" for the second - the original speed is "forgotten" by TU8 and so pressing "s" again will still save at normal speed. To summarise: pressing "0" (zero) sets the saving to "normal" speed. To reset to other speeds you will have to use the "b" key again. e. THE "q" KEY -------------- Pressing "q" gets the program to NEW itself. f. THE "a" KEY -------------- This clears the screen and resets the baud rate - i.e. it sets everything to the same position as it was when you pressed capital "B" to enter this mode. HELPFUL HINTS ------------- Trying to make a BACK-UP copy of jerky leaders and fast speed loaders is tricky because it makes everything much more critical. Here are some general hints, but you will have to EXPERIMENT WITH YOUR EQUIPMENT. Usually your copy will load, it is just a question of finding the correct volume level. -14- (i) You must have a decent recorder (preferably one without an automatic volume control when saving). The heads must be clean, and in alignment. Your tape must be high quality, and your original in a fit enough state. If it loads in only one time in four, the chances are you will need at least 4 attempts to load it in succesfully !! (ii) Load it into the copier at the volume level you would normally use for the program. (iii) It is highly likely tht the copy you have made will be saved at a HIGHER level than the original. As jerky/fast loaders are VERY VOLUME SENSITIVE, it is HIGHLY LIKELY that you will have to experiment to see what volume your copy will load in at. We generally thus advise that: a. FOR HIGH SPEED PROGRAMS: You try to load in at a reduced volume (say 20% less than usual). When you find the correct volume NOTE IT DOWN ON YOUR TAPE, so that in future you will not have to make several attempts to get it to load. b. FOR JERKY TONE LEADERS: The same as for high speed programs but even lower (perhaps 20-50%). In fact set the volume JUST HIGHER than the MINIMUM you can use for it to accept the jerky tone. i.e. as low as possible. ------------------------ c. Because the copy is made at a higher level it might be that you can load in the copy with a much smaller range of volume settings. We have found, particularly with the JERKY types, that it is possible to load in some copies more reliably by placing a lead into the "ear" socket of the recorder, while placing the other end into the "mic" on your Spectrum (rather than "ear"). This works because both "mic" and "ear" can be used for loading, but "mic" requires a higher volume. Thus depending on your equipment, this ear to mic method may allow you a wider range of volume settings. Sorry but you will have to experiment. High speed/jerky programs have caused many problems, with many customers finding them difficult to load, and so the copy you make may be equally difficult, or easier to load. The returns rate has been known to be very high. Some tapes will load on one cassette player but not on another. (iv) We have sometimes found that it is only one part of the copy that is wrong. e.g. Suppose the program has this structure T H T B J B J B J B Block 1 2 3 4 5 The copy loads in but crashes at the end of block 3. However, upon loading the copy, but stopping at the end of block 2, loading FROM THE ORIGINAL its block 3, and then going back to the copy for blocks 4 and 5, the program then ran as normal. Thus it is clear that only block 3 was wrongly copied, and it is thus necessary to remake that part. (v) Completely fresh tape is always the best to use. If you have previously used the tape, and are copying over it, then your recorder has to erase first, and then save. Sometimes the erase head isn't all that efficient, and thus there is still some background noise. -15- (vi) When using the "t" key in the "B" mode OR the "b" key in the "J" mode we, having used these keys, then do a simple test. We load in a few bytes of the block, stop the tape, and then perform a "dummy save" (i.e. press "s" but save the sound onto some spare tape or simply listen to the sound through a speaker) If the "saved" TONE leader is very short or clearly far too high/low, or the jerky part too fast/slow etc, we then remeasure and test again. (vii) Do be patient. Managing these programs isn't easy, and don't expect TU8 to manage all programs. It can't. PLEASE DON'T ASK US HOW TO COPY AND/OR TRANSFER INDIVIDUAL PROGRAMS - WE CAN ONLY GIVE ADVICE ON THE USE OF THE PACKAGE This must be strictly observed. TU8-1 P.S. We met one program by P.S.* called Swords and sorcer* which LOOKED as if it had a jerky tone leader. In fact you simply use the "B" mode, measure the baud rate, and then hold down the letter "l" key to hold in the blocks. The copied blocks have a normal smooth tone leader, but the program will still load as normal. -16- CONVERSION UTILITY 1 (CU1) -------------------------- Introduction ------------ Over the past few years a security system called Speedlock has been developed. It is used by Ocean, US Gold, and on some Ultimate programs. These programs are characterised by a "jerky" or "clicky" sounding tone leader. The "J" mode in TU8 will make a back-up copy of most of these programs. It can even save out clicky parts as normal for possible drive transfer. CU1 however will (i) COMPLETELY convert most of these programs to standard form. i.e it will save out all parts with a normal tone leader and the bytes at normal speed. The converted program will then load in from tape as normal, probably much more reliably, but take slightly longer than did the original. (ii) For transfer to M/drive or W/drive a new BASIC loader is generated, followed by code split up/chopped automatically as required to make transfer as easy as possible. For other disc drives, as they use different loading methods, the BASIC is not saved and must be written - full details are given later about this simple program. Thus DRIVE transfer is semi-automatic with all the load and run (or USR addresses) given. You can thus get the satisfaction of doing the work for yourself. Very rarely you may need our MD1b or WD1b package as well. Getting started --------------- Ensure that you have an empty Spectrum. Rewind your LERM tape to the start of CU1. It will be the second program on the tape. Type LOAD "" (and enter), then PLAY on your recorder. Wait until loading is complete. How to use CU1 (PART 1) -------------- a. Loading in the main BASIC ---------------------------- Rewind your clicky leader program to its start. Press PLAY on your cassette and the ENTER key on your Spectrum. CU1 will now load in the first BASIC part of your program. SOME of these programs start with a SHORT piece of BASIC. CU1 will automatically IGNORE this basic if present. Eventually CU1 will meet the "main" BASIC, and when it does so it will give the program a name (as the "header" passes) and then take in the bytes. AFTER the main BASIC has passed through CU1 STOP the tape. Note that the name found on this header is subsequently saved by CU1. The following "menu" of options will appear at the BOTTOM of the screen. Key Purpose ------------------------------------------------------ l Start LOADING in a brand new jerky program t Save BASIC and code for TAPE use. m Save BASIC and code for m/drive conversion. w Save BASIC and code for Wafa drive conversion. c Save code only - for Disc drive transfer. n for NEXT stage of operation. Used to start loading in a jerky block. CS/DR (Caps shift and break) Program NEW's itself. ------------------------------------------------------ -17- In addition the screen displays some extra information. This is required for ALL DRIVE TRANSFERS. The main part of the screen will be as shown in the sample below: Stack Address k Number of bytes Jump to 65344 32768 20 59400 16384 5 48600 This shows you that there are 2 jerky blocks, which are 20 and 48600 bytes long, and they load into 32768 and 16384 respectively. Thus the last long block loads into the screen area (which starts at 16384) and then runs through the Spectrum's memory. The jump address is the address from which the program runs (i.e. the USR number). There may be a number under stack - if so this is the address to which the stack is set (for those who know what a stack is!). FOR DRIVE TRANSFER. The column "k" gives the KEY NUMBER to be used for SAVING each block during conversion in stage 2 of CU1. A blank in this column means IGNORE that block for drive transfer. b. Saving some BASIC and code ----------------------------- At this stage, if you want to, you can go right back to the start at step a, by simply pressing the letter "l" key. More usually however you will place a fresh tape into your cassette, start recording and then press either the "t", "m", "w", or "c" keys. Which should you press? For a copy that is intended to be loaded in from tape press "t". If you are transfering to m/drive press "m", WAFA drive press "w" or disc drive "c". What are you doing? Firstly, by pressing any key except "c", you will save a BASIC program that will load in the rest of the programs machine code. The BASIC will have the equivalent of LOAD "a" CODE for tape, LOAD*"m";1;"a"CODE for m/drive, or LOAD*"a",34000 for Wafa drive. Secondly some machine code is saved which is required to make your program run. FOR DISC DRIVE owners (who press "c") the syntax of your system is unknown to CU1 so you will have to write your own BASIC (see later), but you will still need to save the code by pressing the "c" key. DISC owners will have to NOTE DOWN THE ADDRESS given. e.g if the message says MCODE ADDRESS AT 64211, then this number must be noted down. The reason for this is that although the original program has a USR number of its own, your converted program has another USR number. This is the one you have to note down. In fact the code saved by pressing "c" will be loaded into this address (64211 in the above example) which is also its USR number. c. Dealing with the jerky blocks (Part 2 - irreversible) -------------------------------- Having saved onto tape from step b, place your original tape back into your recorder ready to deal with the jerky blocks. Every jerky program we have met now begins with a VERY SHORT jerky part. This is NOT required by the program, and should be missed out no matter whether you are saving to tape or a drive. You can either wind your tape past this part, OR load in this short block, and then immediately load in the next block after it (key 1). e.g. T H T B T H T B J B J B J B Short basic Main basic Short Screen Main code (ignored) (saved using jerky t,m,w,or c) (by-pass) -18- (Sometimes the last two blocks are combined into one. Sometimes there is even another jerky block at the end.) If you are making a tape based copy then you must load in and save all blocks except the very short first one, for other transfers, if there is a block that has only a screen string (i.e. from the analysis it is 6912 bytes long as in the example above), then fast forward past the screen. In our example we would thus now be at the start of the "main code" if we were transferring to drive. PRESS THE "n" KEY TO START LOADING IN THE JERKY BLOCK, and wait until loading is complete, then STOP THE TAPE. d. Saving a converted jerky block --------------------------------- At this stage there are the following options, but these DO NOT appear on the screen after loading in a jerky part. FOR DRIVE TRANSFER CU1 advises you of the key to use to save each jerky block. (ignore those with a blank) Key Purpose ------------------------------------------------------ 1 Loads in the next jerky block 2 Save for TAPE use (saves a single headerless block) 3 Saves block but with a header 4 Saves block split into 2 parts with headers (first 4096 bytes then the rest) 5 Chops off the screen picture then saves in two parts, with headers, 4096 bytes and the rest CS/BRK (Caps shift and Break) - Program NEW's itself ---------------------------------------------------- Note that when "headers" are saved (keys 3, 4, and 5) they are given the file names as the original program except that a "0", "1", "2" etc becomes the tenth character of the filename. Also the headers given contain the correct number of bytes but not the correct load address. This doesn't matter as it is contained within the first BASIC program which loads in the rest of the code. NOTE that when ready to save a "converted" jerky block the border changes to MAGENTA. To begin saving start your tape recording and then press the required key. For making a TAPE back-up ------------------------- Now if you are making a TAPE back up all you need to do is to put your fresh tape into your recorder, start recording, and then press key "2". If there are any more jerky blocks to the program, then load them by pressing the number "1" key, and save by pressing "2". When you have converted all the program's jerky blocks then new the program by pressing Caps shift and break. Remember, for tape you need to save all jerky blocks (including the screen) except for the first very short jerky block. For Micro/Wafa/Disc drive transfer ---------------------------------- It is essential for drive transfer that program blocks are loaded in and saved in their correct sequence. CU1 increments the 10th character of the filename each time a header is saved. Keys 3, 4, and 5 are used for saving, and the number 1 key for loading. To repeat, if any blocks load in 6912 bytes (a screen string) those block should be ignored. (Some games actually load the bytes into a space in the memory and then move them to the screen at 16384). The following are the three saving keys: -19- KEY 5: If the block starts loading into the screen (at 16384) and carries on past that (say it is 38000 bytes long), then save using key 5. This will chop off the screen picture (you will see it disappear and be replaced by rubbish) which is not required, and split the remaining bytes into 2 parts, first 4096 bytes (which should load into 23296) and then the rest (which should load into 27392 onwards) so: Memory locn. 16384 23296 27392 and beyond Original (loaded in across all of memory) Key 5 chops off 1st save 2nd save from from here here Remember: after pressing key 5 the screen display (6912 bytes) is irretrievably removed from the memory. KEY 4: This does the same as key 5 except that id DOESN'T chop off a screen picture, it just splits the bytes into two. Thus you would use this if the block starts by loading bytes anywhere between 23296 and 27391 so: Memory locn. 23296-27391 27392 and beyond Original starts somewhere in here and continues beyond 27392 Key 4 1st save from 2nd save from here here KEY 3: This is used to save a block that doesn't need any chopping or splitting - i.e. it loads into an address beyond 27392. Once you have entered stage 2 use key 1 to load in each jerky block (EXCEPT the short FIRST one), and then save onto tape using key 3, or 4, or 5. Normally you don't need to decide which key to use since this is given to you during stage 1. Remember, if no key is given, ignore the block. WHEN THIS IS COMPLETE NEW YOUR SPECTRUM by pressing Caps Shift and Break. e. EXTRA step for DISC owners ----------------------------- At step (e) tape, m/drive, and w/drive owners saved some BASIC and code. You, on the other hand, by pressing the "c" key only saved some code. What you now have to do is to make up your OWN BASIC program that will load in all the blocks of code you have saved onto tape. e.g. Suppose you have a game called FRED. When you pressed "c" to save only code (no BASIC), this code would be given the name "FRED 0", and the number you noted down was 65411. All subsequent blocks would be given names of "FRED 1", "FRED 2" and so on. You must then write and save, the following BASIC, to auto-run from line 10: 10 CLEAR 27390:BORDER VAL "0":PAPER VAL "0": INK VAL "0":CLS 20 LOAD "FRED 0" CODE 65411 30 LOAD "FRED 1" CODE 16384 40 LOAD "FRED 2" CODE 27392 50 RANDOMISE USR 65411 YOU MUST ALTER THE LOADING SYNTAX TO SUIT YOUR DRIVE. -20- Notes: (i) For each block of code you have on your tape you must have a line to load it in. (ii) The first piece of code (called "FRED 0" above) must be loaded into the address given to you by CU1. (65411 in the example) (iii) The RANDOMISE USR number is always the asme as the first address of the code produced by "c". (65411 in the example) (iv) If the bytes were SPLIT (i.e. you used key 4 or 5 on a block) then load the first block into 16384 and the second into 4096 bytes higher than the address given from the analysis. e.g. If the original block loaded into 16384 and beyond and was saved using key 5 then lines 30 and 40 above (with program name altered) would always be corrected. e.g. If the analysis indicated that the block should load into 24000 and beyond and was thus saved using key 4, then line 30 should load the bytes into 16384, but line 40 should load the second block of bytes into 28096 (24000+4096). (v) If splitting wasn't used for any block (i.e. you saved by using key "3") then load the code directly into the address given by CU1. (e.g. if code loads into 35000 then use LOAD "FRED 3" code 35000) (vi) If the program has a screen picture ON ITS OWN as a block (i.e. it loads 6912 bytes) then simply by-pass this block altogether. f. The final step ----------------- The last thing you need to do is to transfer the BASIC and all the code to your drive. If you have a Wafa or Micro drive then all you will need to do is to use our Wafa or Minitape programs, as these will transfer both directly to your drive. If you haven't then (i) Transfer the BASIC so: New your Spectrum. Enter MERGE"", and play the BASIC from your tape. After loading is complete save the BASIC onto your drive to auto-run from line 1. (ii) Transfer the code: Follow the BYTES TRANSFER instructions in our MD1b/WD1b manual. g. Repeat copies ---------------- At any stage you can have repeat copies but note during drive conversion this could lead to extra header numbers being generated (i.e. the number at the end of the filename will not reset back to zero). For tape conversion there are no such problems. While at PART ONE you could save a TAPE and MICRODRIVE version of basic and code. Similarly at PART two you can repeatedly save copies with the same key number, or another, except that key 4 will give a repeat of that saved initially with key 5. h. Program examples for DRIVE transfer -------------------------------------- (a) Raid over Mosco* - 2 jerky blocks Structure of JB JB jerky blocks short jerky long jerky - loads into 20 bytes into screen at 16384, and is Jump=32768 32768 48640 bytes long. -21- Load in and save the required BASIC and the first block of code. CU1 creates the BASIC automatically for Wafa and Micro drive owners. Disc owners will need to write BASIC as above except that FRED will be replaced by rb, (the original filename), and the new USR number is 65440. While in PART 2, use key 5 to remove screen from the 2nd jerky block, and split into 2 parts, the first of length 4096 bytes and then the rest. W/drive and M/drive owners can then use WT1 or MT6 to transfer the BASIC and the code (3 parts) to their drives. (b) Underwurl** - 3 jerky blocks Structure JB JB JB of jerky short picture only main code blocks. 20 bytes loads 6912 bytes Loads 34820 into 32768 into 16384 bytes into 26610 Load in and save the required BASIC and the first block of code. CU1 creates the BASIC automatically for Wafa and Micro Drive owners. Disc owners will need the following BASIC: 10 CLEAR 27390:BORDER VAL "0":PAPER VAL "0": INK VAL "0":CLS 20 LOAD "UNDER 0" CODE 62389 30 LOAD "UNDER 1" CODE 16384 40 LOAD "UNDER 2" CODE 30706:RANDOMISE USR 62389 Use key 4 to save only the main code. This loads into 26610, and so has been split. The first split part always loads into 16384, and the second into the load address + 4096 (in this case 26610 + 4096). If the main code had loaded into say 28000, then it would have been saved under key 3 (no splitting), line 40 would have been removed, and the address in line 30 altered to 28000. CU1-1 -22-