4) The load will resume and the LOGO file and LOADALL file
         will be loaded. When the program stalls, reset out and reboot your
         monitor from the utility disk <> LOAD "8192",8,1 <>. When the
         load is complete, sys the monitor in with SYS 8192. Disassemble
         code at $C000 (D C000) now and scroll down through memory.
         You'll find a very long loader file. When you reach the code at
         $C27A you'll find a JMP C3FD. Disassembly of C3FD shows no valid
         code so this is a likely spot to place another break in the
         program flow. Using the MEMORY command (N C27A), place a 00
         (BRK) at $C27A. Now restart the program with another GO command
         (G C000). When the program stalls out, reset the computer again
         and reload and activate your 2000 monitor <> LOAD"8192",8,1 <>.
         Now we can disassemble memory at $C3FD and again follow the
         program flow (D C3FD). This returns a JMP to 0B40. Disassembly
         of memory at $0B40 reveals the decryption code that we discussed
         in the introduction. This is the heart of this protection
         scheme.

         5) Let's execute the code at $0B40. Make sure your original
         is in the drive. Start up the code with G 0B40. The drive should
         start up and soon stall again. Reset out, re-SYS your monitor in
         (SYS 49152), and disassemble code again starting at $0B40. You'll
         now find different code. Remove the original copy and place your
         formatted work disk in the drive. We can now save this new code
         to our work disk <> S "CODE",08,0B40,0C52 <>.

         Working with your backup:

         6) We now have the code necessary to break this title. Now we
         have to place it on the disk in the proper spot. Checking the disk
         log, we find the files LOGO, BNK12A, TITLE, and BOP1 all have
         the correct addressing to be likely places for this file. We
         must load and check in each one with our monitor the address
         $0B40. The file BNK12A turns out to be the correct file. Now all
         that is left is to place our changed code over the original
         code. Because BNK128 begins in screen memory, we will have to
         pull a few tricks out of the bag to replace our revised code.
         Remember, this file starts in screen memory, and we can't save
         screen memory properly. Follow these steps and try to reason
         them out as we go through them.

         A) Load DISK DR from your utility disk.  When the cursor
         reappears, type RUN and hit RETURN. Place your backup in the
         drive and hit RETURN. You'll be shown track 18, sector 1. The
         jump link to the BNH12A file is at position 195. Cursor over
         to position 195 and hit the J key. You will be taken to the
         first sector in the file. The first four bytes in the file
         are the pointer bytes. We want to change the program address
         from $0400 to $0900, so cursor over to position 3 and hit the
         @ key. Now, hit the 9 and press RETURN. Hit the R key to make

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

<<previous page - next page>>