program to load until the game menu is on the screen. At this
         point, reset the computer.
      
      4) Remove the original disk from your drive and insert the utility
         disk. Load the $C000 monitor <> LOAD "49152",8,1 <>. When the
         load is complete, sys the monitor in with SYS 49152. The monitor
         should be active now. Remove the utility disk from the drive and
         replace it with the backup work disk.
      
      5) Interpret memory starting at $0801 (I 0801). Scroll through
         memory and notice the Basic program. Our task is to repair the
         pointers and save the program to your backup (see scheme B
         intro). Using the memory command (H 0801) inspect code at 0801.
         Notice that the first two bytes are 00 00. These two bytes
         represent the start of the next line in this Basic program.
         Obviously, these bytes have been destroyed by the reset because
         the next line couldn't be zero. To find the correct bytes to
         replace the two zeros, follow this procedure. We know that the
         first four bytes are pointer bytes ($0801-$0804). We also know
         that the next time a zero byte appears in memory ($0811), it
         signals a new line. The next address is the address that the
         pointer will point to ($0812). Therefore, the first two bytes in
         this program should be 12 0B because all addresses are read in
         reverse order. Now we can scroll to the two zeros at $0801 and
         type over them 12 08 and hit RETURN. The first four bytes
         starting at $0801 should now be 12 08 00 00 (the 00 D0 bytes
         represent the current line number in reverse D0 00=00 D0; yes,
         we CAN have a line number 0!). Our BASIC program is now repaired
         and all that is left is to locate the end of the program and
         save it to our backup disk. To find the program end, use the
         HUNT command in your monitor. We'll hunt for the three zero
         bytes that signal the end of Basic. <>H 0801 8000 D0 D0 D0 <>.
         As the first bytes begin to be reported, hit the number 1 key to
         stop the hunt. We are only interested in the first address
         reported. In this case it should be $0A6E. Using the memory
         command, inspect memory around the address $0A6E.  You will
         notice that the third zero is at the location $0A70. We now have
         all the information needed to save the new boot to our backup.
         The start address is $0801 (beginning of Basic) and the end
         address is $0A71 (all monitors require us to save the actual
         address plus one: $0A70+1=$0A71). Make sure your backup is in
         the drive and save the memory from $0801-$0A70
         <> S"START",08,0801,0A71 <>.
      
         When the save is complete, you will have a broken copy that will
         no longer do a protection check. We have essentially replaced
         the auto boot and the protection check with the result, a Basic
         boot.

            K.J. REVEALED TRILOGY    PAGE [17]     (C)1990 K.J.P.B.

<<previous page - next page>>