B)  Place a 30 at $OBlA and at $081D. This will allow the drive
           to send back an OK condition and pass protection because we
           will now be comparing to NO error.
      
       C)  Place a 60 (RTS) at $0844 which will cause the routine that
           checks protection to be short circuited.
      
      When your changes have been made, this title may be file copied.
      
      
      
      
                    INTRO : PROTECTION SCHEME TYPE B
      
      This protection scheme has allowed software publishers a means
      of protecting their programs from the finest nybblers on today's
      market. It employs a loader that resides in RAM at $C000. This
      loader does the protection check and then proceeds to gather a
      Basic boot from the program disk. This boot is placed in RAM at the
      beginning of Basic ($0801-). Our task in each of these schemes will
      be to let the original disk pass protection and then place the boot
      in memory. At this point we can retrieve the boot and from then on
      use it to load our back-up, leaving the protection check completely
      behind.
      
      Before starting, you must understand the way a Basic program is
      placed in memory and how the pointers affect it. The reason for
      this is that most of the time upon reset, the beginning pointers
      will be destroyed and we will have to repair them ourselves.
      
      The pointers used by Basic are very specific, and if not
      correct, the Basic program will fail to operate properly. To show
      you how a Basic program looks in memory, let's inspect the example
      on your work disk.
      
      First, load the $C000 monitor from your Utility disk
      <> Load "49152",8,1 <> and sys it in by typing SYS 49152 and
      hitting RETURN. You should be in the monitor now so load again
      from your work disk the file called BASIC EXAMPLE
      <> L "BASIC EXAMPLE",08 <>. After the load, examine memory from
      $0801-$0890 (M 0801) Scroll up and down through the code. You
      should be looking at the same code as shown below. Please note
      that the example below has all pointer bytes underlined for ease
      of viewing.
      
            K.J. REVEALED TRILOGY    PAGE [13]     (C)1990 K.J.P.B.

<<previous page - next page>>