home *** CD-ROM | disk | FTP | other *** search
/ Grapevine 9 / Grapevine 9 (Disk 1 of 2).adf / source / ResetProtect.s < prev   
Encoding:
Text File  |  1990-09-06  |  1.8 KB  |  46 lines

  1. * RESET PROTECTION ROUTINE
  2.  
  3. * © 1992  DAVID 'BART' DUSTIN / KAOS PRODUCTIONS
  4.  
  5. RESETPROTECTION:
  6.     MOVE.L    $4.W,A6                 ; Execbase into A6
  7.  
  8.     MOVE.L    #RESETLENGTH,D0         ; Size of reset code
  9.     MOVEQ     #0,D1                   ; Use Public memory
  10.     JSR       -198(A6)                ; Allocmem
  11.     MOVE.L    D0,A1                   ; Insert address into A1
  12.     MOVE.L    D0,A2                   ; Insert address into A2
  13.  
  14.     MOVEQ.L   #0,D0                   ; Clear D0
  15.  
  16.     LEA       RESET(PC),A0            ; Pointer to start of reset program
  17.     MOVE.W    #RESETLENGTH-1,D0       ; Size of reset program
  18. .RESETCOPYLOOP
  19.     MOVE.B    (A0)+,(A1)+             ; Copy one byte at a time
  20.     DBRA      D0,.RESETCOPYLOOP       ; Loop until all copied
  21.  
  22.     MOVE.L    A2,42(A6)               ; Insert address into ColdCapture
  23.  
  24.     MOVEQ.L   #0,D1                   ; Clear D1
  25.     LEA       34(A6),A0               ; Start of vectors in ExecBase
  26.     MOVE.W    #22,D0                  ; Number of vectors
  27. .CHECKSUMLOOP
  28.     ADD.W     (A0)+,D1                ; Add each vector to a running total
  29.     DBF       D0,.CHECKSUMLOOP        ; Loop until copied
  30.     NOT.W     D1                      ; Invert the value
  31.     MOVE.W    D1,82(A6)               ; Insert the checksum into ExecBase
  32.  
  33.     MOVEQ     #0,D0                   ; Clear all CLI Error codes.
  34.     RTS                               ; Return
  35.  
  36.  
  37. ***************************************************************************
  38. RESET:
  39.     MOVE.L    $4.W,A6                 ; We need pointer to ExecBase in A6
  40.     LEA       RESET(PC),A0            ; Pointer to our reset program
  41.     MOVE.L    A0,42(A6)               ; Insert the address into ColdCapture
  42. LOCKLOOP:
  43.     JMP       LOCKLOOP(PC)            ; Do infinite loop
  44.  
  45. RESETLENGTH   EQU   *-RESET           ; Calculate size of program
  46.