home *** CD-ROM | disk | FTP | other *** search
- ; Die von Commodore empfohlene Resetroutine
- ; Entnommen aus dem AMIGA ROM KERNEL, Hardware, Third Edition
- ; Addison Wesley
-
- INCLUDE "exec/types.i"
- INCLUDE "exec/libraries.i"
-
- csect text
- xdef _ColdReboot
- xref _LVOSupervisor
-
- REALEXECBASE equ 4 ;Pointer Exec-Library
- MAGIC_ROMEND equ $01000000 ;Ende des Kickstart-ROM
- MAGIC_OFFSET equ -$14 ;Offset vom ROM-Ende zur
- ;Kickstart-Größe
- KICK_V36 equ 36 ;Ab Kickstart V36 stellt das
- ;Betriebssystem eine eigene
- ;Reset-Routine zur Verfügung
- V36_ColdReboot equ -726 ;Offset der Reset-Routine
-
- _ColdReboot:
- move.l REALEXECBASE,a6 ;Exec-Library-Pointer in A6
- cmp.w #KICK_V36,LIB_VERSION(a6)
- blt.s old_exec ;Kickstartversion < 36
- ;Der Reset muß selbst aus-
- ;geführt werden
- jmp V36_ColdReboot(a6) ;Sonst die Coldreboot-
- ;Routine anspringen, aus der
- ;wir niemals zurückkehren
-
- old_exec:
- lea.l GoAway(pc),a5 ;Die Adresse des Reset-Codes
- jsr _LVOSupervisor(a6) ;Den Code ausführen
- ;Diesen Punkt erreichen wir nicht mehr
-
- CNOP 0,4 ;Auf Langwort ausrichten
- GoAway:
- lea.l MAGIC_ROMEND,a0 ;ROM-Ende
- sub.l MAGIC_OFFSET(a0),a0;berechnen des PC
- move.l 4(a0),a0 ;PC beim Einsprung
- subq.l #2,a0 ;Zeigt auf den zweiten Reset
- reset ;reset und jmp müssen ein
- jmp (a0) ;Langwort teilen
-
- END
-