C key and hit RETURN. The sector is now changed on the disk. We
      have just changed the boot address to $0801, which places it in
      Basic memory. The boot will not run properly, but we may load
      and examine it.
      
      2) Turn your computer off and insert the reset button assembly into
      the cartridge port. Turn on the computer and load the $8000
      monitor from the utility disk <> LOAD "32768",8,1 <>. Type SYS
      32768 and hit RETURN. With the monitor active, place the altered
      backup in your drive and load the boot file <> L "BOOT",08 <>.
      disassemble code at $0801 (D 0801) and scroll down through the
      code. The code from $0838 to $0853 is a loader routine that
      loads in the file LOADER and then jumps to $C000. This gives us
      the information we need to trace the program flow. Take this
      backup out of the drive and put the other backup in its place.
      (Remember, we altered the boot file on this backup.)
      
      3) Load the LOADER file <> L "LOADER",08 <>. When the load is
      complete,  interpret memory at $C000 (I C000). Scroll down
      through the code watching the left hand screen. At address $ClA3
      you'll find the block read command: U1 2,0,32,8. This is the
      command to read Track 32 Sector 8. Our error scan has shown a 21
      error in this location. Now let's disassemble and locate the
      protection code.
      
      4) This protection scheme is written as a series of JSR (GOSUB in
      Basic). Remember each JSR ends with a RTS (RETURN). Code will be
      explained in segments. Try to follow the program flow.
      
       A)  Starting at $C000 in the DISASSEMBLE mode, scroll down to
           $C017 : JSR C116.
      
       B)  Disassemble $C116 : JSR C14B.
      
       C)  Disassemble $C14B : JSR C172.
      
       D)  Disassemble $C172 : Opens a channel to the drive then RTS.
      
       E)  Disassemble $C14E : JSR C188.
      
       F)  Disassemble $C188 : Sends Block Read command to the drive
           then RTS.
      
       G)  Disassemble $C151 : JSR C1AF.
      
       H)  Disassemble $ClAF : Inputs two characters from the error
           channel and stores them at $C1CA and $C1CB then RTS.
      
       I)  Disassemble $C154 : The accumulator is loaded with the error
           character placed in $C1CA and compared with a $32. The
      
            K.J. REVEALED TRILOGY    PAGE [5]      (C)1990 K.J.P.B.

<<previous page - next page>>