home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / code / asm_cras.sit < prev    next >
Text File  |  1988-05-14  |  2KB  |  72 lines

  1. 11-May-88 21:21:35-MDT,2481;000000000000
  2. Return-Path: <u-lchoqu%sunset@cs.utah.edu>
  3. Received: from cs.utah.edu by SIMTEL20.ARPA with TCP; Wed, 11 May 88 21:21:29 MDT
  4. Received: by cs.utah.edu (5.54/utah-2.0-cs)
  5.     id AA03235; Wed, 11 May 88 21:22:04 MDT
  6. Received: by sunset.utah.edu (5.54/utah-2.0-leaf)
  7.     id AA29210; Wed, 11 May 88 21:22:01 MDT
  8. Date: Wed, 11 May 88 21:22:01 MDT
  9. From: u-lchoqu%sunset@cs.utah.edu (Lee Choquette)
  10. Message-Id: <8805120322.AA29210@sunset.utah.edu>
  11. To: rthum@simtel20.arpa
  12. Subject: CrashSaver.asm
  13.  
  14. ; Crash Saver
  15. ; (c) 1985 by DailSoft
  16. ; You may distriJHJHASDKFHSLFHALHHFAthers as long as orginal credit is
  17. ; givin to Macazine.  Also, you must include the entire contents the
  18. ; folders labeled "Crash Saver" and "Ordering" from this issue.
  19. ; Macazine can be ordered from:
  20. ;    DailSoft
  21. ;    P.O. Box 2861
  22. ;    Newport News, VA  23602
  23. ; The cost of Macazine is $15.95/issue or $60.00/year (6 issues).
  24. ; This program is designed to allow for a return to the Finder when a
  25. ; system error occurs.  By pressing the Interrupt button (not the Reset
  26. ; button) on the programmers switch during a system error, an
  27. ; ExitToShell trap will be executed.  This will return you to the
  28. ; Finder  (or to the Switcher).  One reason for doing this is to preserve
  29. ; your RamDisk.
  30. ; Warning, this method will usually work, but in some cases, ExitToShell
  31. ; will produced a repeated System Error.
  32. ; This  application should be made your startup application. 
  33. ; Note: By modifying the interrupt vectors, MacsBug will not work when this
  34. ; utility has  been installed.
  35.  
  36. Include     MacTraps.D    ; Use System and ToolBox traps
  37. autoInt4    EQU    $70
  38. autoInt5    EQU    $74
  39. autoInt6    EQU    $78
  40. autoInt7    EQU    $7C
  41.  
  42. Install
  43.     ; Allocate space on the system heap for the crash saver.
  44.     MOVE.L    #(Exit-CrashSaver),D0    ; Length of block.
  45.     _NewPtr    ,SYS            ; Allocate in system heap.
  46.     
  47.     ; Make interrupt vectors point to crash saver.
  48.     MOVE.L    A0,autoInt4
  49.     MOVE.L    A0,autoInt5
  50.     MOVE.L    A0,autoInt6
  51.     MOVE.L    A0,autoInt7
  52.     
  53.     ; Copy local copy of crash saver to the system heap.
  54.     MOVE.L    A0,A1            ; A1 points to destination.
  55.     LEA        CrashSaver,A0    ; A0 points to source.
  56.     MOVE.L    #(Exit-CrashSaver),D0    ; D0 is length of copy.
  57.     _BlockMove            ; Execute move.
  58.     RTS                ; Return to the Finder.
  59.  
  60. CrashSaver
  61.     AND    #$F8FF,(SP)    ; Force all interupts to be enabled.
  62.     ; set return to ExitToShell call.
  63.     LEA    ETS,A0
  64.     MOVE.L    A0,2(SP)
  65.     RTE
  66.     
  67. ETS
  68.     NOP            ; Make sure interrupt button is released before exit
  69.     _ExitToShell
  70. Exit
  71.     END
  72.