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 » C'est la programmation ou VTI (19 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Thor Ecrit le: Mardi 10 mai 2005 à 11:35 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Voila dans mon dernier projets j'utilise :
//Key is a simple function which return a code depending on 
//pressed key. It's a sort of ngetchx() but with _rowread
short key(void)
{
short value=0, pseudo_s=0;
while (value==0)
 {
   BEGIN_KEYTEST
   // [ESC] is pressed
   if   (_keytest_optimized(RR_ESC) && pseudo_s>500) value=ESC;
   // [ENTER] is pressed
   if   ((_keytest_optimized(RR_ENTER1) || _keytest_optimized(RR_ENTER2)) && pseudo_s>500) value=ENTER;
   // [CLEAR] is pressed
   if (_keytest_optimized(RR_CLEAR) && pseudo_s>500) off();
   // [+] is pressed
   if (_keytest_optimized(RR_PLUS) && pseudo_s>500) OSContrastUp();
   // [-] is pressed
   if (_keytest_optimized(RR_MINUS) && pseudo_s>500) OSContrastDn();
   // [LEFT] is pressed
   if (_keytest_optimized(RR_LEFT) && pseudo_s>500) value=LEFT;
   // [DOWN] is pressed
   if (_keytest_optimized(RR_DOWN) && pseudo_s>500) value=DOWN;
   // [RIGHT] is pressed
   if (_keytest_optimized(RR_RIGHT) && pseudo_s>500) value=RIGHT;
   // [UP] is pressed
   if (_keytest_optimized(RR_UP) && pseudo_s>500) value=UP;
   if (pseudo_s<502) pseudo_s++;
   END_KEYTEST
 }
return value;
}

Le problème réside dans le fait que si je presse [+] ou [-] sur VTI le contrast change directement du blanc au noir ! Je trouve ça bizarre puisque les autres touches elle sont trés bien régulée par le pseudo_s>500...
Je me demandais donc si ça n'est pas VTI qui bug car j'avais lu dans un soft de la TICT qu'il y a des problème avec le contraste avec VTI (notamment quand on savegarde la valeur du contraste puis on la réinstalle) ..
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Mardi 10 mai 2005 à 11:58 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Tu ne remets pas à 0 le compteur pseudo_s.
Mais 500, ça me semble court...
    
./Post n°2   Marquer comme non lu.
Thor Ecrit le: Mardi 10 mai 2005 à 12:28 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Ah oui je vois ce que tu dis : en fait cette fonction c'est une sorte de ngetchx() mais comme a chaque fois dans la boucle principale je fais : pressed_key=key(); ça ressort de la fonctions key ... alors que pour [CLEAR], [+] ou [-] ça reste dans key. Merci je vois le problème maintenant. ;)
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°3   Marquer comme non lu.
geogeo Ecrit le: Mardi 10 mai 2005 à 20:01 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


VTI est buggué là dessus. Le pas de constrate est plus petit sur HW1 que sur HW2. Essayes sans ton programme en mettant le contraste à zéro et en essayant de le mettre au max, tu verras que 2 cycles vont se produires.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°4   Marquer comme non lu.
Onur Ecrit le: Mardi 10 mai 2005 à 20:29 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


euh.. pourquoi faire des very_optimised_test_keys alors que tu mets de l'attente apres?
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°5   Marquer comme non lu.
Thor Ecrit le: Mardi 10 mai 2005 à 20:57 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je sais pas je trouve ça plus lisible avec le BEGIN et le END :)
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°6   Marquer comme non lu.
geogeo Ecrit le: Mardi 10 mai 2005 à 21:02 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ton code s'optimise bien avec switch case.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°7   Marquer comme non lu.
geogeo Ecrit le: Mardi 10 mai 2005 à 21:13 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  



//Key is a simple function which return a code depending on 
//pressed key. It's a sort of ngetchx() but with _rowread
short key(void)
{
short value=0, pseudo_s=0, key;
while (!value)
 {
   OSSetSR (0x0700);
   if (kbhit ())
      key = ngetchx ();
   OSSetSR (0x0000);

  if (pseudo_s>500)
   {
      switch (key)
      {
         case KEY_CLEAR:
           off (); break;
         case KEY_PLUS:
           OSContrastUp(); break;
         case KEY_MINUS:
           OSConstrastDn(); break;
         case KEY_ESC:
         case KEY_ENTER:
         case KEY_LEFT:
         case KEY_RIGHT:
         case KEY_UP:
         case KEY_DOWN:
           value = key;
      }
  }
  else if (pseudo_s>502) pseudo_s++;
}
return value;
}


Juste un petit changement au lieu de trouver ESC, LEFT... dans value tu trouveras les constantes KEY_ESC, KEY_LEFT....
-Edité le Mardi 10 mai 2005 à 21:13 par geogeo-
-Edité le Mardi 10 mai 2005 à 21:15 par geogeo-
-Edité le Mardi 10 mai 2005 à 21:28 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°8   Marquer comme non lu.
geogeo Ecrit le: Mardi 10 mai 2005 à 21:17 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ah oui quand tu as un truc avec des attentes et qui ne demande pas de ressources, optimises en taille en non en vitesse. D'ailleur le code que je t'ai proposé est encore un peu optimisable.
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°9   Marquer comme non lu.
limmt Ecrit le: Mardi 10 mai 2005 à 21:44 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


switch case optimize en taille t'est sur? c'est pas juste l'affichage qui change?
pasque au fond y'a le même nombre de tests en asm non?
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°10   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 11 mai 2005 à 08:33 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

> Le pas de constrate est plus petit sur HW1 que sur HW2
C'est normal, voir j89hw.txt.

> switch case optimize en taille t'est sur ?
En autre chose qu'en -Os, non (jump table, qui sera énorme ici car les valeurs ne sont pas proches du tout).

Au passage, JAMAIS de OSSetSR(0x0700). Tu risques de dérégler la clock des HW2. Il faut utiliser 0x0200. Et je ne suis pas sûr que le code de geogeo marche, le test qui conduit à l'incrémentation semblant dans le mauvais sens.
Lionel Debroux - membre de TICT.
    
./Post n°11   Marquer comme non lu.
geogeo Ecrit le: Mercredi 11 mai 2005 à 12:11 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Arf en effet pour le test %) J'avais pas vu!
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°12   Marquer comme non lu.
Thor Ecrit le: Mercredi 11 mai 2005 à 12:37 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Donc je peux pas utiliser ta technique des OSSetSR() :( Ya un autre moyen?
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°13   Marquer comme non lu.
Sasume Ecrit le: Mercredi 11 mai 2005 à 13:21 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Détourner les interruptions temporairement (ou tout le temps sinon, si ça ne te pose pas de pb).
    
./Post n°14   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 11 mai 2005 à 13:58 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

> Donc je peux pas utiliser ta technique des OSSetSR()
Mais si. _rowread / _keytest ne marchent bien qu'avec les AI 1 et 5 désactivées / détournées...
Seulement, l'argument max est 0x0200, pas 0x0700.
Lionel Debroux - membre de TICT.
    
./Post n°15   Marquer comme non lu.
Thor Ecrit le: Mercredi 11 mai 2005 à 14:08 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Il faut utiliser 0x0200. Et je ne suis pas sûr que le code de geogeo marche, le test qui conduit à l'incrémentation semblant dans le mauvais sens.

C'est ça qui m'avait fait peur :D mais je veins de voir le ">"
Donc je n'est plus qu'a remplacé les 0x0700 par 0x0200 :D Et ça ne pose pas de problème avec les grays ou mon handler de comptage de secondes écoulées?
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°16   Marquer comme non lu.
Thor Ecrit le: Mercredi 11 mai 2005 à 14:13 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Au fait les KEY_PLUS et KEY_MINUS n'existe pas ;) (je les trouve pas avec les autres KEY en tout cas et la complilation ne passe pas)
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°17   Marquer comme non lu.
geogeo Ecrit le: Mercredi 11 mai 2005 à 14:17 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Créer les définitions :)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°18   Marquer comme non lu.
Kevin Kofler Ecrit le: Mercredi 11 mai 2005 à 17:38 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  


Lionel Debroux :
> switch case optimize en taille t'est sur ?
En autre chose qu'en -Os, non (jump table, qui sera énorme ici car les valeurs ne sont pas proches du tout).

Euh, ça dépend. Les jump tables énormes et peu denses, ils sont quand-même remplacés par des arbres équilibrés en optimisation vitesse, sinon on aurait des jump tables de 3 MO, ça n'irait pas. (En revanche, en optimisation taille, ce ne sont même pas des arbres équilibrés, ce sont des arbres linéaires, vu que ça minimise la taille du code.)

Au passage, JAMAIS de OSSetSR(0x0700). Tu risques de dérégler la clock des HW2. Il faut utiliser 0x0200.

Sauf que 0x0200 ne touche pas à l'AI5, donc ça sux aussi. (Ça ne permet pas de faire un _rowread ou _keytest correct.)
Il ne faut pas utiliser OSSetSR tout court, il faut rediriger les interruptions 1 et 5!
-Edité le Mercredi 11 mai 2005 à 17:39 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°19   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 11 mai 2005 à 17:45 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

_rowread / _keytest ne marchent bien qu'avec les AI 1 et 5 désactivées / détournées...
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » C'est la programmation ou VTI (19 réponse(s))
Pages : 1/1     « [1] » »|

.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 65.93ms avec 18 requetes