Trackloaders
How to force a RESET
Here is the official routine supported by Commodore:
^^^^^^^^^^^^^^^^^^^^^^
INCLUDE "exec/types.i"
INCLUDE "exec/libraries.i"
; csect text ; in lattice ASM
; section text,code ; in Devpac/Argasm
xdef _ColdReboot
xref _LVOSupervisor
EXECBASE equ 4
ROMEND equ $01000000
SIZE_OFFSET equ -$14
KICK_V36 equ 36
V36_ColdReboot equ -726
_ColdReboot:
move.l EXECBASE,a6
cmp.w #KICK_V36,LIB_VERSION(a6) ;which Version of Exec ?
blt.s .old_kick ;old one -> goto old_kick
jmp V36_ColdReboot(a6) ;else use Exec-Function
.old_kick:
lea .Reset_Code(pc),a5
jsr _LVOSupervisor(a6) ;get Supervisor-status
;never reaching this point
cnop 0,4 ;very important
.Reset_Code:
lea ROMEND,a0 ;Calc Entrypoint
sub.l SIZE_OFFSET(a0),a0
move.l 4(a0),a0
subq.l #2,a0
reset ;Reset peripherie
jmp (a0) ;done
; and in the same LONGWORD !!!!
END
Trackloaders
Use CIA timers! DON'T use processor timing. If you use processor timing you
will MESS UP the diskdrives in accelerated Amigas.
Use AddICRVector to allocate your timers, don't hit $bfxxxx
addresses!!!
On second thoughts. DON'T use trackloaders! Use Dos...
Main Menu