TheCodR
a écrit : mais resultat, mon premier prog fonctionne nikel, et le second foire completement, plantage de la calc, alors pourquoi ??
allocscr:
pea.l 3840
call HeapAllocPtr
move.l a0,d4
tst.l d4
beq nomem
rts
Là, tu sautes à l'adresse 3840 en retournant. Le rts saute à l'adresse donnée par les 4 premiers octets sur la pile (les 4 octets placés sur la pile en dernier). Ici, c'est 3840.
est ce que c'est a cause du link a6,#0 ???
Non, c'est parce qu'il n'y a pas de link/unlk dans ta sous-routine.
parceque je pense que quand on fait un BSR il doit sauvegarder la position courante du prog, sur la pile (sur x86, c pareil)
En effet.
or comme j'utilise link a6,#0 pour eviter justement de s'embeter a restaurer la pile a chaque utilisation de fonction,
Mais il faut restaurer la pile avant chaque rts, pas seulement avant celui à la fin du programme.
c peut etre pour sa que sa plante, alors comment faire ?
addq.l #4,a7 avant le rts de allocscr.
Tu pourrais aussi mettre un link et un unlk dans allocscr, mais dans ce cas le beq nomem ne marcherait plus parce que ça sauterait le unlk correspondant au link dans allocscr.
tant, qu'a faire, je profite de ce topic pour demander comment utiliser un rawread en ASM nostub.
Voici la routine de TIGCCLIB:
.data .xdef _rowread _rowread: | Write the mask to the port move.w (%sp,4),0x600018 | Wait for a few milliseconds until the I/O can return a valid value move.w #24,%d0 0: dbra %d0,0b | Read the port and write it to %d0 (return value register) move.b 0x60001B,%d0 | Invert the byte not.b %d0 and.w #0xFF,%d0 | Return rts
et puis aussi, savoir comment fait la TI pour l'heure (ams 2.08) lorsqu'elle est eteinte,
est ce que la calc coupe l'ecran seulement et laisse tourner le proc, ou alors le 68k a t'il un mode veille qui continu a executer les int ??
Le matériel de la calculatrice a un mode veille qui réveille le 68k quand une auto-int se déclenche. Cf. http://m101.ryd.student.liu.se/J89hw.txt, port $600005.
tout ce que j'ai remarqué depuis que j'ai l'ams 2.08
c'est que quand j'allume ma TI apres l'avoir eteinte pendant quelque heure, l'ecran est tout noir puis redevient trés vite normal, (ecran HOME), pourquoi ?
Je ne sais pas, c'est un effet bizarre connu.