home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1993 / 2 / 02 / debugging / resethandler.asm < prev    next >
Encoding:
Assembly Source File  |  1995-06-01  |  1.6 KB  |  46 lines

  1. ; Die von Commodore empfohlene Resetroutine
  2. ; Entnommen aus dem AMIGA ROM KERNEL, Hardware, Third Edition
  3. ; Addison Wesley
  4.  
  5.     INCLUDE "exec/types.i"
  6.     INCLUDE "exec/libraries.i"
  7.  
  8.     csect   text
  9.     xdef    _ColdReboot
  10.     xref    _LVOSupervisor
  11.  
  12. REALEXECBASE    equ 4          ;Pointer Exec-Library
  13. MAGIC_ROMEND    equ $01000000  ;Ende des Kickstart-ROM
  14. MAGIC_OFFSET    equ -$14       ;Offset vom ROM-Ende zur
  15.                                ;Kickstart-Größe
  16. KICK_V36        equ 36         ;Ab Kickstart V36 stellt das
  17.                                ;Betriebssystem eine eigene
  18.                                ;Reset-Routine zur Verfügung
  19. V36_ColdReboot  equ -726       ;Offset der Reset-Routine
  20.  
  21. _ColdReboot:
  22.     move.l  REALEXECBASE,a6    ;Exec-Library-Pointer in A6
  23.     cmp.w   #KICK_V36,LIB_VERSION(a6)
  24.     blt.s   old_exec           ;Kickstartversion < 36
  25.                                ;Der Reset muß selbst aus-
  26.                                ;geführt werden
  27.     jmp     V36_ColdReboot(a6) ;Sonst die Coldreboot-
  28.                                ;Routine anspringen, aus der
  29.                                ;wir niemals zurückkehren
  30.  
  31. old_exec:
  32.     lea.l   GoAway(pc),a5      ;Die Adresse des Reset-Codes
  33.     jsr     _LVOSupervisor(a6) ;Den Code ausführen
  34.     ;Diesen Punkt erreichen wir nicht mehr
  35.  
  36.     CNOP    0,4                ;Auf Langwort ausrichten
  37. GoAway:
  38.     lea.l   MAGIC_ROMEND,a0    ;ROM-Ende
  39.     sub.l   MAGIC_OFFSET(a0),a0;berechnen des PC
  40.     move.l  4(a0),a0           ;PC beim Einsprung
  41.     subq.l  #2,a0              ;Zeigt auf den zweiten Reset
  42.     reset                      ;reset und jmp müssen ein
  43.     jmp     (a0)               ;Langwort teilen
  44.  
  45.     END
  46.