alors soit j'ai pas pigé comment marchent les ports quand on accède comme des words, soit y'a un bug.
Parce que je vois à la ligne 407 de tib.asm:
(ligne 373) lea $60000C,a1 ; DBus Configuration Register ... (ligne 383) move.w (a1),d2 ; Read Status ... ligne 407 \NoReceiveByte: btst #9,d2 ; Check if the int is triggered if Transmit Buffer is empty beq.s \Exit lea LINK_SEND_QUEUE,a0
Je suis d'accord, le bit 9 de d2.w=(a0).w=($60000C).w, c'est le bit CTX du registre selon http://www.galaxoft.org/linkguide/dbus.html
mais à la fin du code je trouve:
(ligne 432) \DoNotTriggerIntForSend bclr #1,(a1) ; Do not triggered Int4 if Send Buffer is empty \Exit movem.l (a7)+,d0-d2/a0-a2 RTE: rte
Ici, c'est le bit 1 de ($60000C).w qui est effacé , alors qu'il est indiqué sur ma doc que ce bit est "Always 1" (pas utilisé quoi)
Je pense à mon avis qu'on devrait trouver ici:
bclr #9,(a1) ; Do not triggered Int4 if Send Buffer is empty
d'autre part dans link.asm dans la routine OSWriteLinkBlock à la ligne 100 pour activer le transfer du buffer je peux lire:
(ligne 96) cmp.w 4(a1),d1 ; Compare to max size transmit buffer bhi.s \Error ; Not enought space ! ; btst #1,($60000C) ; Well if it is <> of 1, skip else set to 1 ; bne.s \NoRetrig bset #1,($60000C) \NoRetrig: move.w d1,QUEUE.used(a1) ; New number of bytes in transmit buffer
de même, pour activer le transfer on devrait lire:
bset #9,($60000C)
merci de me confirmer ce truc, à savoir: j'ai rien compris ou quoi? (vu que ça a l'air de marcher en général pisque personne ne s'est plaint
