logo screen. $0C5C is a JSR (GOSUB in BASIC) to the logo screen.
         $0C5F is the start of the main program load. It is this code
         that is of interest to us.

         4) The code at $0CE2-$0D03 is a decryption routine. Examine
         it, because it is the key to the de-protection. This routine allows
         decryption and examination of the protection code. At the end of
         this decryption routine is a RTS ($0D03). Using the MEMORY
         command (M 0D03), change the 60 to a 00. This will allow a
         normal operation of code until the 00 (Break or Stop)  is
         encountered. The program, once started, will stop right after
         the decryption, allowing us to examine the protection routine.

         5) For our purposes, we will skip over the fast loader and
         logo screens. Let's start the program after the logo screen is run
         ($0C5F). Type G 0C5F and hit RETURN. The screen should turn
         black. Wait for about five seconds and reset the computer.
         Return to the monitor with SYS 49152. Using the INTERPRET
         command, examine code from $0A00 on (I 0A00). Code at $0AB6
         reveals a Block Execute (executes the protection check placed in
         drive memory) and code at $0AC2 reveals a Memory Read that reads
         the value placed in the drive by the protection check. This
         value, in this scheme, is always an $FF. Examine code at $0A92.
         The value is being returned to the computer by a Memory Read
         with a kernal routine. The $FFCF routine brings back the value
         $FF. It is then EORed with $FF which turns it into a $00 and
         then stores it at location $0AB5. Our job is to place the
         correct value in $0AB5 and disable the routine overwriting it.
         This can be accomplished by placing three NOPs at $0A97 which
         will allow the routine to Memory Read the value but not place it
         in computer RAM. All that is left is to place the value of $00
         at $0AB5.

         6) Now we have the correct values to plug into the code to
         disable and give the protection check what it wants. The last step
         is to place the changes on the disk. This is best done with a
         sector editor because to scratch and replace the 1985 file will
         destroy necessary code placed on the disk. This code is not
         accessed in the normal fashion, so it may be overwritten if we do
         a scratch and save of the 1985 file. Finish the job by following
         these steps:

         A) We know the code was originally encrypted, so we must
         place our values on the disk in encrypted form. The three bytes at
         $0A97 and the single byte a $0AB5 are the only changes
         needed. Reload the 1985 file <> L " 19*",08 <>. Again go to
         location $0D06 and place a 00 in memory. Inspect the three
         bytes at $0A97. They should be 19 8E E8. The byte at $0AB5
         should be an BA. These are the bytes we will look for on our
         backup with the sector editor.


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

<<previous page - next page>>