1

Salut !

J'ai déja parlé de ce pb mais je n'ai pas reussi à le résoudre. En fait, c'est la Status Bar qui s'affiche avec le "lock alpha" quand j'utilise des boites de dialogues du TIOS. Comment faire pour qu'elles ne s'affichent plus?

Merci d'avance!
François BALLAND

Site Ti : http://www.balland.org

2

Si tu veux désactiver le lock alpha, y a des routines de KK qui trainent quelque part, utilise le moteur de recherche.
Si tu veux que la status bar n'aparaisse pas, ben, avec des boites de dialogue, c'est impossible, vu qu'il faut désactiver l'AI1 ou 5, je sais plus. Et alors, tu ne peux plus utiliser le clavier, et c'est genant dans les boites de dialogues grin
Mon site perso : http://www.xwing.info

3

nan! mais y'a forcément une methode !!
François BALLAND

Site Ti : http://www.balland.org

4

nan grin, attend la reponse des pros du sujet (KK, squale...), et dtu verras, on peut pas. Il faut refaire un systeme de boites de dialogue perso, en utilisant _rowread...
Mon site perso : http://www.xwing.info

5

les boites de dialogues, ça c'est chiant en C (sur TI of course) ! winkfou
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

6

voilà les routines de KK

char AlphaLockSaveState;

void AlphaLockOn(void)
{
        if (*((*(long **)0xc8)-1)<=1155)
        {
                AlphaLockSaveState=*((char *)*(*((*(short ***)0xc8)+0x96)+4)+0x1f);
                *((char *)*(*((*(short ***)0xc8)+0x96)+4)+0x1f)=1;
        };
        else
        {
                _rom_call(void,(char*),481)(&AlphaLockSaveState);
        };
};

void AlphaLockOff(void)
{
        if (*((*(long **)0xc8)-1)<=1155)
        {
                AlphaLockSaveState=*((char *)*(*((*(short ***)0xc8)+0x96)+4)+0x1f);
                *((char *)*(*((*(short ***)0xc8)+0x96)+4)+0x1f)=0;
        };
        else
        {
                _rom_call(void,(char*),482)(&AlphaLockSaveState);
        };
};

void RestoreAlphaLock(void)
{
        if (*((*(long **)0xc8)-1)<=1155)
        {
                *((char *)*(*((*(short ***)0xc8)+0x96)+4)+0x1f)=AlphaLockSaveState;
        };
        else
        {
                _rom_call(void,(char*),483)(&AlphaLockSaveState);
        };
};

7

Arf, merci, j'avais la flemme de cliquer sur la loupe gni
Mon site perso : http://www.xwing.info

8

et elle sert a quoi cette fonction? désactiver le alpha lock? On l'utilise comment?
François BALLAND

Site Ti : http://www.balland.org

9

ben avant d'ouvrir la boite de dialogue, tu appelle la fonction AlphaLockOff.
Mon site perso : http://www.xwing.info

10

Ça ne sert strictement à rien.
Ce qu'il faut pour désactiver le alpha-lock dans une boîte de dialogue, c'est rajouter un élément XFLAGS avec le flag XF_NO_ALPHA à la boîte de dialogue.

Et la barre d'état apparaîtra quand-même.
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é

11

Dans KII, j'utilise une technique que m'a filé ExtendeD pour désactiver les affichages des indicateurs de la status bar qd j'utilise ngetchx (ou équivalent), ce qui correspond, je pense, au cas des boites de dlg...

En premier, tu défini ceci :
// Utilisé pour désactiver et ré-activer les indicateurs de la Status line, lorsqu'on utilise
// des fonctions de lecture du clavier à haut niveau (ngetchx, par exemple)
// NOTE : ceci ne fonctionnera que sur ROM2.0x, PAS SUR ROM1.0x !!!
// Remerciements à ExtendeD qui m'a donné ceci.
#define ST_Flags ((unsigned long*)(_rom_call_addr(443))) 


Et ensuite, tu utilises comme ceci :
if(AMS_2xx) *ST_Flags &= ~(0x100000); // Sur ROM2.0x, on cache les indicateurs de la barre de statut... sur ROM1.0x, ils resteront

Et tu réactive avant de quitter, ainsi :
if(AMS_2xx) *ST_Flags |= 0x100000; // Ce n'est pas possible sur les ROM < 2.xx => Si on avait désactivé les indicateurs de la ST, on les ré-active.

si ça marche, tu pourras remercier ExtendeD.
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

12

Ok je vais essayer wink
François BALLAND

Site Ti : http://www.balland.org

13

Aïe! Une erreur et 2 Warnings :

ERREUR : "2 undefined references to '_rom_call_addr'."

Warning :2 Fois "Cast to pointer from integer of different size"
et "implicit declaration of function '_rom_call_addr'".

J'ai placé le #define... avec les autres en début de fichier, le premier au début de la fonction main et le dernier a la fin de cette même fonction...
François BALLAND

Site Ti : http://www.balland.org

14

heu...
pr moi, ça marche nikel sous TIGCC_094_15

tu as mis l'include tigcclib.h avant le #define ?
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

squale92 : utilise la dernière routine que j'avais postée qui est plus optimisée et qui ne redéclare pas la rom call :
   unsigned char *flag;
   flag = (unsigned char*)&ST_flags;
   flag++;

//pour désactiver :
   *flag &= ~(1<<4);
//pour réactiver :
   *flag |= 1<<4;

16

C'est con que ça marche que sur AMS 2.0x sad
Mon site perso : http://www.xwing.info

17

Mais qui peut bien trainer un AMS1 sur sa calc... confus

18

Ah, ben on sait jamais grin
Mon site perso : http://www.xwing.info

19

ExtendeD> Ok, merci !

Au pire, suffit de tester si c bien une ROM2.0x avant d'aplliquer cette méthode...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

20

Aucune des deux methodes ne marche : la premiere je vous l'ai expliqué et la deuxieme voila :

je déclare :
#define ST_Flags ((unsigned long*)(_rom_call_addr(443)))

ensuite j'utilise :

unsigned char *flag;
flag = (unsigned char*)&ST_flags;
flag++;

ensuite:

*flag &= ~(1<<4);

et à la fin:

*flag &= ~(1<<4);

Le probleme c'est avec le &ST_flags (en bleu) ça ne devrait pas être &ST_Flags? (par rapport a la déclaration qui elle a une majuscule au F ?) et ensuite tigcc me dit qu'il y a un pb avec l'opérateur unaire "&"...

Bon si qqun a une idée...



François BALLAND

Site Ti : http://www.balland.org

21

D'abord télécharge la dernière version de TIGCC.

Ensuite, soit tu ne redéclares pas la rom call, et tu utilises ST_flags, mais dans ce cas tu dois ajouter un #define MIN_AMS 200 au début de ta source pour que TIGCC te permette d'accéder à cette rom call. Soit tu redéclares la rom call, tu utilises ST_Flags (pour éviter un éventuel conflit), et ça te permet de l'utiliser sans #define MIN_AMS 200, mais simplement en utilisant des tests comme squale92 a fait (if(AMS_2xx) ...).
D'ailleurs il vaut mieux créer une variable BOOL AMS2 = AMS_2xx; et faire des tests if (AMS2), ça optimise un peu en taille, la macro n'est pas placée deux fois dans le programme.