Bon voila j'ai fait un programme dont voila la source:
include "TIOS.H"
include "kernel.h"
xdef _main
xdef _comment
_main:
;****** On alloue de l'espace pour le nouveau code ******
move.l #(endevent-newevent),-(a7) ; Place sur la pile la taille du code
jsr tios::HeapAlloc
lea 4(a7),a7
;****** On lock le handle ******
bset.b #7,-2(a0)
;****** On sauvegarde l'adresse exécutée a la suite de l'auto int 2 ******
tios::DEREF d0,a0 ; Récupère l'adresse du handle
move.l a0,adressecode ; Copie dans la variable
move.l $64,a0
move.l a0,saveold
pea name(pc)
move.w #$C,-(a7)
jsr tios::FindSymEntry
lea 6(a7),a7
move.w 10(a0),handle
;****** On copie le code dans le handle ainsi alloué ******
move.l #(endevent-newevent),-(a7)
pea.l newevent(PC)
move.l adressecode,-(a7)
jsr tios::memcpy
lea 12(a7),a7
;****** On redirige l'auto interruption 1 ******
move.l adressecode,a0
lea 6(a0),a0
bclr.b #2,$600001
move.l a0,$64
bset.b #2,$600001
rts
EVEN
newevent:
saveold: dc.l 0
handle: dc.w 0
movem.l d0-d7/a0-a6,-(a7)
move.w handle,-(a7)
jsr kernel::exec
lea 2(a7),a7
movem.l (a7)+,d0-d7/a0-a6
jmp $1fbf2
endevent:
EVEN
rts
adressecode: dc.l 0
handlecode: dc.w 0
name: dc.b "prog",0
_comment: dc.b "Install le TSR",0
END
Il subsiste 2 problemes :
Sans le jsr kernel::exec ca marche mais des que je le rajoute ca bug. Pour info le fichier prog est un fichier avec le strict minimum.
Le second probleme est lorsque j'effectue le saut jmp $1fbf2, je n'arrive pas a utiliser la valeur contenue dans la variable saveold qui contient pourtant $1fbf2
pourquoi je ne peut pas faire jmp saveold?