home *** CD-ROM | disk | FTP | other *** search
- * RESET PROTECTION ROUTINE
-
- * © 1992 DAVID 'BART' DUSTIN / KAOS PRODUCTIONS
-
- RESETPROTECTION:
- MOVE.L $4.W,A6 ; Execbase into A6
-
- MOVE.L #RESETLENGTH,D0 ; Size of reset code
- MOVEQ #0,D1 ; Use Public memory
- JSR -198(A6) ; Allocmem
- MOVE.L D0,A1 ; Insert address into A1
- MOVE.L D0,A2 ; Insert address into A2
-
- MOVEQ.L #0,D0 ; Clear D0
-
- LEA RESET(PC),A0 ; Pointer to start of reset program
- MOVE.W #RESETLENGTH-1,D0 ; Size of reset program
- .RESETCOPYLOOP
- MOVE.B (A0)+,(A1)+ ; Copy one byte at a time
- DBRA D0,.RESETCOPYLOOP ; Loop until all copied
-
- MOVE.L A2,42(A6) ; Insert address into ColdCapture
-
- MOVEQ.L #0,D1 ; Clear D1
- LEA 34(A6),A0 ; Start of vectors in ExecBase
- MOVE.W #22,D0 ; Number of vectors
- .CHECKSUMLOOP
- ADD.W (A0)+,D1 ; Add each vector to a running total
- DBF D0,.CHECKSUMLOOP ; Loop until copied
- NOT.W D1 ; Invert the value
- MOVE.W D1,82(A6) ; Insert the checksum into ExecBase
-
- MOVEQ #0,D0 ; Clear all CLI Error codes.
- RTS ; Return
-
-
- ***************************************************************************
- RESET:
- MOVE.L $4.W,A6 ; We need pointer to ExecBase in A6
- LEA RESET(PC),A0 ; Pointer to our reset program
- MOVE.L A0,42(A6) ; Insert the address into ColdCapture
- LOCKLOOP:
- JMP LOCKLOOP(PC) ; Do infinite loop
-
- RESETLENGTH EQU *-RESET ; Calculate size of program
-