1

Je suis retombé sur un comportement bizarre, que je crois avoir déjà rencrontré il y a quelques années lorsque je travaillé sur du rescaling pour la version TI-89 de Sim.

Lorsqu'un handler d'auto-int 5 est "trop long" (peut-être lorsque qu'il met plus de temps à s'exécuter que l'inverse de la fréquence de l'AI5), la calc semble geler complètement, au milieu du code de cet handler. Bizarrement, lorsque l'auto-int 3 se déclenche pendant ce gèle (je fais les tests sur une Titanium, il suffit de provoquer une activité USB), tout continue normalement, et l'handler de l'auto-int5 reprend son execution.
Forcer SR à $2700 pour éviter de la réentrance dans l'handler (même si c'est inutile, le masque par défaut fixé par le 68k fait déjà ça) ne change rien. Et comment se fait-il que l'auto-int 3 débloque quelque chose, alors qu'il est lui aussi théoriquement masqué...

Ca m'embête bien tout ça. Des suggestions ou des idées de tests à faire on-calc pour tenter de comprendre ?

2

Marrant en effet.
Je suppose que ça a déjà été testé, mais est-ce qu'on est sûr que le masque du SR permet vraiment d'inhiber certaines interruptions lorsqu'on se trouve dans un état normal (c'est-à-dire non gelé comme dans ton expérience) ?
Je ne connais pas précisément le fonctionnement matériel du 68000, donc je ne sais pas s'il est possible de se débrouiller pour que matériellement cette histoire de masque/priorité saute.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

3

Le 68k User's Manual indique simplement que "the processor priority level is set to the level of the interrupt being acknowledged" lorsqu'une interruption se déclenche. Je suppose que le système de masque continue de fonctionner comme normalement (mais je n'ai pas testé).
Et je viens de vérifier que l'auto-int 3 est bien une interruption masquable comme les autres en temps normal sur Titanium.

4

L'int 6 ne permet pas de debloquer ?

5

Non, il a pas l'air de changer quelque chose.

6

D'un autre cote, il fut un temps ou l'int 3 et l'int 5 partageaient du materiel en commun (Int 3 etait un timer).
Peut etre est-ce un reliquat ?

7

Juste pour me rappeler, c'est pas l'AI3 qui est chargée de se déclencher chaque seconde sur TI89 ? Comment fonctionne l'horloge sur TITI ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

8

Sur HW2, AMS > 2.06 fonctionne comme ça.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

L'horloge et le système de transfert USB partage la même AI ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

10

Je ne sais pas comment ça fonctionne sur HW3, ni où trouver de la doc dessus, mais il semble que l'USB utilise l'AI3.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

11

Sur titanium, l'horloge ne fonctionne plus avec l'ai3, mais avec un rtc hardware.

12

OK !
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

13

PpHd :
D'un autre cote, il fut un temps ou l'int 3 et l'int 5 partageaient du materiel en commun (Int 3 etait un timer).
Peut etre est-ce un reliquat ?

Peut-être bien. Je fais faire un petit test à faire tourner sur HW2, puisque si c'est ça, ça devrait se comporter de la même manière.

14

heu ça a un rapport avec le bug dont tu parles sur ton blog, ça?

15

Oui oui

16

explique moi, ça m'intéresse smile
j'envisage d'acheter une titanium pour devel dans cette direction, j'ai déja fait le cable mini-a/usb femelle grin

17

squalyl^2 :
j'ai déja fait le cable mini-a/usb femelle grin

Fait, en soudant bout à bout ? Dan Englender m'avait déconseillé de tenter ça, "because of the shielding that's needed at high frequencies" comme il dit.

18

oui, mais attention j'ai pas fait ça comme un porc grin

chaque petit conducteur est soudé (pas seulement torsadé ^^) et entouré d'une petite gaine thermo,
le fil de masse non isolé est soudé sans gaine thermo, il est donc en contact avec un petit morceau de papier alu normal rajouté, entouré autour des 4 petits fils internes isolés. puis après je mets le tout dans une gaine thermo plus grosse pour la tenue mécanique. le blindage n'est pas interrompu dans mon cas, j'y ai pensé wink

19

Ok, bah tant mieux si marche, parce que c'est pas facile de mettre la main sur ces trucs smile

20

hmmm je viens de penser à un truc
68k User's Manual
indique simplement que: the processor priority level is set to the level of the interrupt being acknowledged


je parie que les auto int de plus petit numéro sont plus prioritaires que celles qui ont un numéro plus grand.
du coup quand tu es dans l'auto int 5 le niveau d'interruption du 68000 est réglé à AUTO_INT_5_HANDLER = 0x74 et seules les interruptions de numéro plus faible (comme l'auto int 3, numéro 0x6C) peuvent interrumpre le traitement de l'irq courante, ce qui empêche l'auto int 6 (=0x78) de s'exécuter.

21

22

me prends pas pour un *bip* je découvre rien!

relis 3-4 je crois que c'était pas 100% clair pour eux.

23

je croyais que c'etait l'inverse, que les AUTO_INT plus grand avaient plus de priorité que les plus faibles
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/

24

ben faut croire que non smile

quand je vois que INT_VEC_RESET = 0x04, INT_VEC_BUS_ERROR = 0x08, INT_VEC_ADDRESS_ERROR = 0x0C, INT_VEC_ILLEGAL_INSTRUCTION = 0x10, INT_VEC_ZERO_DIVIDE = 0x14 (tigcc: intr.h) je pencherais à croire que c'est l'inverse, sinon on pourrait pas resetter la calc souvent grin

25

26

on aurait dit que tu me faisais le papa qui voit que "gamin découvre" cheeky

désolé je reste calme...

#sang espagnol# grin

27

28

et pourtant depuis un an je vis avec une #sang coreen# grin ce qui fait que je m'oblige a pratiquer le #cépagraaaaave... caaaaalme# zen mais je suis pas a l'abri d'un départ au quart de tout parfois grin

29

squalyl^2 :
je parie que les auto int de plus petit numéro sont plus prioritaires que celles qui ont un numéro plus grand.

Non, c'est l'inverse smile
En fait tu mélanges exception, interruption, niveau d'interruption, priorité (ie niveau d'exception) et masque d'interruption, qui sont plein de trucs différents.
Concernant le problème du reset : "The reset exception corresponds to the highest exception level" d'après le MC6800 User's Manual. Et l'offset dans la table des vecteurs n'a rien à avoir avec la priorité.

30

ben je pensais que les vecteurs étaient stockés dans l'ordre des numéros toussa #shy# #petipetit# #desolé martial# dehors