J'éteins jamais l'Emu à la main (TiEmu dans mon cas), parce que ça n'a aucun intérêt. C'est donc forcément de l'APD qu'il s'agit. Pour mes essais avec l'extinction à la main, je n'ai pas pu reproduire le bug.
Sinon, ya un truc qui m'étonne un poil dans le code de l'int 4
d2 == (a1).w , a1=$60000C
\NoOverflow
move.w (a1),d2 ; Read Status
btst #3,d2 ; Internal Activity ? ( Autostart ?)
bne \Exit
; Check Link Error...
btst #7,d2 ; Link Error ?
beq.s \NoResetLink
\ResetLink move.b #$E0,(a1) ; Reset link: AutoStart Enable, Link Disable, Link TimeOut Disable
move.b #$8D,(a1) ; Trigger int4 if Control Link Error, Control Autostart, Byte in Receive Buffer. AutoStart enable, Link Enable, Link TimeOut Enable
st.b LINK_RESET ; Link is reseted (FIXME: purging Buffer ?)
bra.s \Exit
\NoResetLink:
D'après les commentaires, tu tests le bit 3 pour y chercher une activité, et le bit 7 pour savoir si une erreur est reportée.
J89hw.txt ne dirait pas l'inverse ?
$60000C RW ($8D when idle, write $E0 then $8D to reset, $8F when sending)
Read to begin acknowledging link interrupt (level 4)
:7 Autostart enable, should be set if $600005:3 is set
:6 Disable byte sender/receiver (also disables interrupts)
:5 Link timeout disable
:4 -
Trigger interrupt level 4 on ...
:3 ... error (timeout or protocol violation)
:2 ... any link activity
:1 ... transmit buffer empty
:0 ... byte in receive buffer
Ca serait pas l'inverse des fois, ou c'est moi qui déconne (encore une fois) ?