1

J'ai parfosi un problème de link lors de l'envoi d'un fichier, si la calc s'est éteinte avec l'APD (il me semble). Dur de préciser, c'est pas systématique.

Le code qui réveille la calc et le code qui av recevoir les données est où ? C'est l'int_4 de Tib.asm ?

2

C'est reproductible avec un arret par OFF ou seulement par l'APD ?

iNT5->apd
trap4->off
int4->link

3

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) ?

4

Je testes les bits du link status (l'octet suivant $60000C ) et pas le 'link control'.

5

Ah, donc c'est encore moi qui déconne. Je crois que le message reporté est ça :
"Link: MID?"

Faut que j'aille voir ce qui peut déclencher cette erreur.

6

Bogue lié: mettre le bit link reset (le bit 7 de 0x60000d) crée une erreur dans PedroM. Ça devrait réinitialiser le code link (annuler tous les transferts courants) sans provoquer une erreur.

C'est pour ça que ti68k_linkport_ready dans TiEmu a des tests if (!pedrom):
		if (!pedrom)
			io_bit_set(0x0d,7);	// SLE=1
		df_reinit();
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité