Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » interférence avec les NVG (84 réponse(s))
./REPRISE DU POST PRECEDENT (post n°76)   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 13 juillet 2005 à 17:50 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Link :
LionelA->si le basic est appelé depuis un prog assembleur, il y a des chances que le break cause quelques problèmes...

Pas avec les bons TRY (les TRY en C peuvent aussi intercepter le break).
-Edité le Mercredi 13 juillet 2005 à 17:50 par Kevin Kofler-
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°77   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 13 juillet 2005 à 17:51 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


andoh_wilfried :
Le probleme lorsqu'une erreur se produit dans un prog basic, je constate que le prog ASM reste marqué comme en cour d'utilisation. Ce qui est très genant pour les prochains appels.

Il faut mettre ENABLE_ERROR_RETURN et des TRY...FINALLY...ENDFINAL convenables.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°78   Marquer comme non lu.
andoh_wilfried Ecrit le: Mercredi 13 juillet 2005 à 18:53 Déconnecté(e)    Voir le profil de andoh_wilfried Envoyer un email à andoh_wilfried Envoyer un message privé à andoh_wilfried  

Ben voilà ce qui me manquait : ENABLE_ERROR_RETURN
Merci K.K.
    
./Post n°79   Marquer comme non lu.
Folco Ecrit le: Mercredi 13 juillet 2005 à 19:37 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


halala, toutes ces couches d'abstractions... #roll#
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°80   Marquer comme non lu.
andoh_wilfried Ecrit le: Jeudi 21 juillet 2005 à 16:59 Déconnecté(e)    Voir le profil de andoh_wilfried Envoyer un email à andoh_wilfried Envoyer un message privé à andoh_wilfried  

LionelA :
par contre je suppose que tu dois pouvoir faire quelque chose pour remedier au plantage dans une fonction de ce genre (en redirigeant l'AI6 par exemple)


DEFINE_INT_HANDLER(ON){
  ExecuteHandler(AI6);
  // tu peut executer du code ici pour par exemple restaurer les AI1 et 5 et quitter le prog
  // ou alors ecrire un enter dans le buffer du clavier (c'est plus crade)
}



désolé de revenir là dessus mais pas très bien pigé.

1- sauvegarde AI6
AI6 = GetIntVec(AUTO_INT_6)

2- Définition de la nouvelle AI

DEFINE_INT_HANDLER(AI_ON){
  ExecuteHandler(AI6);
  // tu peut executer du code ici pour par exemple restaurer les AI1 et 5 et quitter le prog
  // ou alors ecrire un enter dans le buffer du clavier (c'est plus crade)
}

3- Remplacement de l'AI
SetIntVec(AUTO_INT_6, AI_ON)

je pige pas en quoi cette manoeuvre empêche de détecter le BREAK-ON du basic vu que l'ancien vecteur est toujours exécuté.



    
./Post n°81   Marquer comme non lu.
andoh_wilfried Ecrit le: Jeudi 21 juillet 2005 à 17:13 Déconnecté(e)    Voir le profil de andoh_wilfried Envoyer un email à andoh_wilfried Envoyer un message privé à andoh_wilfried  

Kevin Kofler :
andoh_wilfried :
Le probleme lorsqu'une erreur se produit dans un prog basic, je constate que le prog ASM reste marqué comme en cour d'utilisation. Ce qui est très genant pour les prochains appels.

Il faut mettre ENABLE_ERROR_RETURN et des TRY...FINALLY...ENDFINAL convenables.


J'ai du mal à voir comment implémenter ça.

vois-tu, on appelle la LiB comme ceci :
main\ ExtLib( "BasicProg1", "BasicProg 2" , ... )

Le code pour lancer les prog Basic ( "BasicProg1", "BasicProg 2" , ... ) est dans le _main.

Je vois mal comment détecter l'appui du Break et continuer l'exécution alors que la touche ON a été pressé dans un programme basic appelé par "BasicProg1" par exemple.
    
./Post n°82   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 21 juillet 2005 à 17:27 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Ben, tu ne continues pas l'exécution, tu l'arrêtes comme prévu par AMS! Le but de ENABLE_ERROR_RETURN et TRY est de quitter proprement.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°83   Marquer comme non lu.
andoh_wilfried Ecrit le: Jeudi 21 juillet 2005 à 17:35 Déconnecté(e)    Voir le profil de andoh_wilfried Envoyer un email à andoh_wilfried Envoyer un message privé à andoh_wilfried  

Justement moi je veux juste désactiver l'usage du Break entre 2 appels à la fonction 'Break()'.

Sinon je gère bien les erreurs à l'intérieur de mes extensions.
j'exécute ER_throw(ER_BREAK) après une erreur dans eXTlIB.
Ce qui permet de retourner à l'endroit où se produit l'erreur dans le prog en basic.



par contr l'idée de LionnA pour désactiver le Break-On pas bien compris.
je vais essayer mais , je pige toujour pas (post n°80).

-Edité le Jeudi 21 juillet 2005 à 17:41 par andoh_wilfried-
    
./Post n°84   Marquer comme non lu.
LionelA Ecrit le: Jeudi 21 juillet 2005 à 22:56 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


je suis pas sur que ca marche de pas faire ExecuteHandler(AI6);
Il te faudra acknoledger l'interruption a la main peut etre, mais je ne connais pas AMS assez bien (la preuve avec mon pb dans le topic AI6 & V200)
En tout cas je peux te dire ce que Kevin m'a dit ce matin, c'est que l'AI6 peut arriver pour diverses raisons autre que l'appui sur [ON], il faut donc que tu verifie si la touche a été appuyée avec :
if(!peekIO_bit (0x60001A, 1)) {...} // if [ON] is pressed

Ensuite pour Ack l'AI6 si tu n'execute pas le handler de AMS, alors essaye de faire ca :
*(unsigned char*)0x60001A = 0;

A ce qu'il parait c'est ce que fait AMS :)
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/
    
  :: Index » Forum Ti68K » Programmation C » interférence avec les NVG (84 réponse(s))
Pages : 5/5     « 1 2 3 4 [5] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 48.13ms avec 18 requetes