1

Je développe un nouveau HibView. Lorsque que Preos n'est pas installé, tout se passe assez bien, la vitesse de défilement est normale.
Lorsque que preos est installé, ca défile vraiment lentement. Le pire est quand je maintient une touche enfoncée... Et ca finit par un crash.
Je l'ai testé avec preos 0.71, sur ma ti89 hw1 AMS 2.05.

Dans HibView, je redirige les autoint 1 vers un compteur qui me permet de séparer 2 pressions de touche d'un intervalle minimum, et aussi l'autoint 5 pour utiliser rowread.

Une idée d'où ca peut venir ?

2

Bug de ton programme ?
Ca arrive pareil sur VTI ?
ca ne le fait pas avec un autre programme ?

3

PpHd
: Bug de ton programme ?
justement, la est la question, d'ou viens le bug ? Ca me paraitrait vraiment bizarre qu'un tel bug vienne de mon prog. Ce soir je te poste quand meme ce que j'utilise pour la synchro, des fois que ce soit moi qui fasse des betises.
Ca arrive pareil sur VTI ?
non, sous vti, aucun probleme
ca ne le fait pas avec un autre programme ?
j'ai pas essaye avec d'autres prgm, faut que je teste quoi, avec quel prog ?

4

kerno par exemple, doorsos ou unios.

Ca le fait avec d'autres programmes ? Et si tu le compiles en kernel, est-ce que ca le fait aussi ?
Et avec install/uninstall de preos, ca continue ?

5

PpHd
: kerno par exemple, doorsos ou unios.
ok, j'essayerai ce soir
Ca le fait avec d'autres programmes ? Et si tu le compiles en kernel, est-ce que ca le fait aussi ?
j'ai oublie de dire que j'ai fait une DLL nostub. Je peux compiler en kernel avec la DLL ?
le choix de faire une DLL nostub est provisoire, je ne sais pas si c'est vraiment pertinent ...
Et avec install/uninstall de preos, ca continue ?
j'essayerai ce soir aussi

6

>j'ai oublie de dire que j'ai fait une DLL nostub. Je peux compiler en kernel avec la DLL ?
Je sais pas. Peut etre. Si tu as le temps, fait une LIB Kernel a la place grin

7

le choix de faire une DLL nostub est provisoire, je ne sais pas si c'est vraiment pertinent ...
Sachant que la TIGCC team déconseille de l'utiliser comme lib dynamique(paradoxal pour une dll), son n'existance même n'est pas pertinante.
Si c'est pour faire une lib dynamique, les lib kernel sont faites pour ça.
avatar

8

Alors :
- install/uninstall : pas de problèmes
- si j'installe preos, c'est lent, puis au moment de quitter : "crash intercept". Le prog hibview qui apelle la DLL a son in_use à 1 puisque je ne le vois pas dans l'arborescence de la TI et il revient apres un reset.
- compilation en mode kernel :
#error EXECUTE_IN_GHOST_SPACE does not work in kernel mode yet

- dooros, kerno et unios : pas de problème de ralentissement

Mon code :
volatile unsigned short h_cptSynchro;

//to save the previous INT_HANDLER
INT_HANDLER OldInt1 = NULL;
INT_HANDLER OldInt5 = NULL;

//the counter
DEFINE_INT_HANDLER (IntCpt) {
  h_cptSynchro++;
//  ExecuteHandler (OldInt1);
}


/*===============================================================================================
== Initialise the counter for the synchronisation
===============================================================================================*/
void h_initSynchro(void) {
  h_cptSynchro=0;
  OldInt1 = GetIntVec (AUTO_INT_1);
  OldInt5 = GetIntVec (AUTO_INT_5);
  SetIntVec (AUTO_INT_1, IntCpt);
  SetIntVec (AUTO_INT_5, DUMMY_HANDLER);
}


/*===============================================================================================
== Stop the counter
===============================================================================================*/
void h_freeSynchro(void) {
  SetIntVec (AUTO_INT_1, OldInt1);
  SetIntVec (AUTO_INT_5, OldInt5);
}

void h_synchro(unsigned short time) {
	while(h_cptSynchro<time)
	  h_saveEnergy();
	h_cptSynchro=0;
}


void h_startSynchro(void) {
	h_cptSynchro=0;
}

void h_waitSynchro(unsigned short time) {
	h_cptSynchro=0;
	while(h_cptSynchro<time)
	  h_saveEnergy();
}

/*===============================================================================================
== Do a pause
=================================================================================================
== time : the time to wait between to press of button
===============================================================================================*/
void h_pause(unsigned short time) {
  h_waitSynchro(time);
  while (!(K_ENTER || K_ESC))
    h_saveEnergy();
  h_startSynchro();
}


et apres, la fonction qui est la boucle principale :

h_Code h_read(short num_line, short * bookmark, unsigned char * name_var, h_File * hfile,
	       h_Config * hcfg) {
  short key=0;
  short i;
  short no_obj;
  unsigned short pos_txt;
  unsigned short next_pos_txt;

  h_initSynchro();

draw:
  //draw in the screen
	h_drawPage(LCD_MEM,hfile);

  h_synchro(hcfg->speed_key);

  //wait for a key
  do {
    key=0;
    if (K_DOWN && h_goDown(hfile)) {  // h_go down
      if (K_DIAM) {   //to the bottom
				h_goLastPage(hfile);
        h_synchro(hcfg->speed_key);
      } else if (K_2ND) {  //by page
        h_goPageDown(hfile);
        h_synchro(hcfg->speed_key);
      } else { //by pixel
        h_goPixelDown(hfile);
        h_synchro(hcfg->speed_scroll);
        continue;
      }
    } else if (K_UP && h_goUp(hfile)) {  //scroll to the beginning
      if (K_DIAM) {  //to the top
        h_goFirstPage(hfile);
        h_synchro(hcfg->speed_key);
      } else if (K_2ND) {  //by page
        h_goPageUp(hfile);
        h_synchro(hcfg->speed_key);
      } else {  //by pixel
        h_goPixelUp(hfile);
        h_synchro(hcfg->speed_scroll);
        continue;
      }
    } else if (K_CLEAR) {  // turn the calculator off
      off();
    } else if (K_APPS) {  //the bookmarks
      *bookmark=h_bookmarkMenu(hfile,LCD_MEM,hcfg);
			if (*bookmark>=0 && *bookmark<hfile->nb_bkmks)
        goto move;
      *bookmark=-1;
      goto draw;
    } else if (K_ESC) {
      if (K_2ND)
        key=KEY_ESC+KEY_2ND;
      else
        key=KEY_ESC;
    } else if (K_PLUS && K_DIAM) {  //to control the contrast
      OSContrastUp();
      h_synchro(hcfg->speed_key);
    } else if (K_MOINS && K_DIAM) {
      OSContrastDn();
      h_synchro(hcfg->speed_key);
   } else {
      h_saveEnergy();
    }
  } while (key==0);

  h_synchro(hcfg->speed_key);

//  memcpy(hfile->vscreen,LCD_MEM,LCD_SIZE);
  
  h_freeSynchro();
  
  return key;
}

9

h_SaveEnergy SVP ?

10

c'est une macro avec juste un pokeio(...)
Je l'ai repique sur un exemple de Kevin.

11

Certes, mais donne quand meme smile

12

en fait j'ai pas les sources la, je suis pas chez moi.

mais je l'ai quand meme retrouve avec [google]kevin pokeio[/google] cheeky
pokeIO(0x600005,0b10111)

13

Essaye de la remplacer par rien pour voir.
Essaye aussi de voir si ca le fait sur d'autres HW.

14

PpHd
: Essaye de la remplacer par rien pour voir.
j'essayerai
Essaye aussi de voir si ca le fait sur d'autres HW.
j'ai qu'une hw1. Je demanderai a mes beta testeurs, mais tu en a peut-etre une toi ?

15

Envoie moi ton prog que j'essaye quand meme.

16

heu....
Alors la je comprend plus....
Apres avoir essayer sans pokeIO, qui a bien marché, je remets avec pokeIO, et tout marche bien.... confus
J'arrivais pourtant a reproduire a chaque fois ce bug...
Je t'envoie quand même ma version beta ?

17

Ta version compilée précédemment était compilé avec la même version de TIGCC que le programme actuel qui fonctionne ?
avatar

18

ou exactement les mêmes :
tigcc version 1.2.9 built for TIGCC/*nix version 0.95 r3

19

Je viens de retester avec un version que j'ai sauvegardée qui date de la semaine dernière, pas de problèmes...

20

bang

21

je sais mur

mais franchement, je comprend pas confus
la prochaine fois, je t'envoie le prog direct, avant que la conjecture spatio-temporelle qui fait que ca bug ne s'auto-detruise. alien

22

As-tu teste avec la meme version de preos ?

23

oui, je ne l'avais pas desarchive de ma Ti.

24

Ben alors je sais pas. Meme version du viewer ? Oui. Avais-tu installe autre chose ?

25

Il n'y avait aucune difference, j'avais rien installe de special... pas d'APP rien. Je faisais un reset (2nd + gauche + droite + On) entre chaque test.
L'ordre de mes tests, c'etait :
- preos : plante
- preos + uninstall : plante pas
- preos : plante
- unios, dorros, kerno : plante pas
- preos sans le pokeio : plante pas
- preos avec le pokio : plante pas

A mon avis je reussirai pas a reproduire ce bug... (remarque, tant mieux ^^)

26

Pas sur sad