1

Voila j'aurais voulu savoir si il était possible de lancer automatiquement un programme avant d'arreter la calculette si oui quel est la fonction ?

2

3

Cela n'est pas programmable en C ?

4

je crois que c'est l'auto int 6 qui s'occupe de verifier si t'appui sur la touche on et off (enfin dans pedrom c le cas)
NTW !!!!!

5

en posant un TSR sur le trap #4, ça doit être possible...
(le trap #4 étant celui qui s'occupe de l'extinction de la machine)
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

6

AMS lui-même ne l'appelle pas, je pense... Mais l'auto-int 6 devrait marcher ^^ (sauf si c'est un programme qui éteint la calc lui-même)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

7

Une question bete qu'est ce que l'auto int 6?? quelqu'un pourrait m'expliquer comment cela s'insere dans un programme.

8

l'auto int 6 c'est un vecteur d'interruption c'est en gros un truc qui est constamment executé et qui verifie si t'appui sur la touche on
donc ce que tu peux faire c'est la modifier pour que lorsqu'elle detecte la pression off et ba elle execute ce que tu ve et ensuite elle eteint la calc
cepandent diver probleme ce pose : ton code ne dois pas necessité de table de relocation donc pas de jsr ni de bra (enfin je crois)
... et si ca rate tu pourra plus jamais eteindre ta calc tongue ... lol t'enleve un pile et c bon

donc tu devrais prendre le code de pedrom de pphd pour ton auto int et ensuite tu insere ton code en modifiant un peu son truc
...


est ce que on a le droit de poster le code de pedrom ?

et pour le modifier, tout est ds la doc de tigcc
NTW !!!!!

9

qu'est ce que tu entends par table de relocation?

10

ba a vrai dire je suis pas sur de ce que j'avance donc deja essai de modifier l'auto int comme ca et attendons que qqun apporte des precisions supplementaires
NTW !!!!!

11

AMS lui-même ne l'appelle pas, je pense...

arf, ok sad
est ce que on a le droit de poster le code de pedrom ?

si c'est sous GPL, je pense que oui, vu que la redistribution est authorisée
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

13

l'auto int 6 c'est un vecteur d'interruption c'est en gros un truc qui est constamment executé

vecteur d'interruption, moué, si on veut

constament exécuté, par contre, non.
certains interruptions sont appelés régulièrement (AUTO_INT 1 et 5, par exemple) ; d'autres ne sont appelées qu'en cas de besoin...
Par exemple, ADDRESS_ERROR n'est levée que lorsqu'il y a un accès mémoire de plus d'un octet à une adresse impaire
Par exemple, l'AUTO_INT 7 n'est levée que lorsque tu essaye d'écrire en début de la RAM (je sais plus exactement la taille de la zone protégée ; m'enfin, ça se trouve cette info)
l'AUTO_INT_6, il me semble, n'est levée que quand on appuie sur ON (elle n'est pas forcément levée une seule fois, par contre, je crois ? )... mais certainement pas constamment
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

14

Vous avez tout faux!
* AMS appelle toujours le trap #4 pour éteindre la calculatrice.
* Intercepter l'AI6 pour ça est une mauvaise idée, il est appelé à chaque appui sur [ON], qui n'est pas forcément [2nd]+[ON] ou [DIAMOND]+[ON] (et il ne suffit pas de tester les touches avec _rowread ou _keytest, il faut aussi vérifier si l'indicateur [2nd] ou [DIAMOND] est activé), et même quand l'état des piles change, et il n'est pas appelé pour l'APD!
Bref, c'est le trap #4 qu'il faut intercepter pour ça et en aucun cas l'AI6.
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é

15

mega cross ....
dsl
dans tous les cas, pk ca marche pas ca ?
DEFINE_INT_HANDLER(testoff)
{
 asm("
     move.l %a0,-(%a7)
     lea.l	0x600018,%a0		
     btst.b	#1,2(%a0)	|teste si la touche on est pressé
     bne	fin  
     move.l 0xC8,%a0
     move.l 0x443*4(%a0),%a0 |rom call st_flag
     moveq.l #1,%d0
     and.l (%a0),%d0 |on teste si 2nd a été pressé
     beq fin
     trap #4            
     fin:
     move.l (%a7)+,%a0");
}


void _main(void)
{
SetIntVec (AUTO_INT_6, testoff);
}

NTW !!!!!

16

euh en fait si après vérification AMS appelle le trap 4, désolé embarrassed

EDIT : cross avec Kevin

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

17

matthieu
: dans tous les cas, pk ca marche pas ca ?

Parce que:
1. Ton assembleur inline n'est pas valide. Tu ne peux pas utiliser asm de cette sorte. Un code comme le suivant:
void fonction_C(void)
{
asm("...");
}

n'est pratiquement jamais correct (même si dans ce cas-ci, ça pourrait encore passer). Écris le handler d'interruption entier en ASM, sans le DEFINE_INT_HANDLER(testoff).
2. Tu remplaces complètement l'AI6 de AMS, ce qui n'est pas bon, il ne fait pas que ça.
3. Tu ne peux pas installer un TSR comme ça. Il faut copier le code du TSR dans un bloc mémoire (handle) verrouillé (locké). Tout handler qui se trouve dans le programme lui-même doit être désinstallé quand le programme quitte, parce qu'il peut changer d'adresse à tout moment quand le programme n'est pas en train d'être exécuté.
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é

18

comment tu fais en asm pour ecrire un handler d'interruption ? je met juste un rte a la fin ?
NTW !!!!!

19

Oui.
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é

20

tu utilises tsrlib (dommage qu'elle soit pas sortie grin)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

21

Kevin Kofler :
Bref, c'est le trap #4 qu'il faut intercepter pour ça et en aucun cas l'AI6.


Comment on le fait en C parce que j'ai pas compris le code asm de matthieu.
Est que quelque peut m'aider ?

Merci.

22

Je pense pas que ce soit une bonne idée d'intercepter une exception si on ne sait pas comment cela est réalisé.

23

Ok alors y a t'il un autre moyen si on ne sait pas intercepter une exception?

24

et ben tu telecharge le tsr configurable de greg dietsche et tu le modifie de tel sorte qu'il intercepte le message eventid CM_OFF et qu'il execute ta fonction

si tu ve comprendre tous ca, plonge toi dans la doc de tigcc sur les event
NTW !!!!!

25

avec ça, t'auras pas toutes les extinctions de la calc. Vaut mieux intercepter le trap #4, c'est plus sûr
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

26

Flanker :
avec ça, t'auras pas toutes les extinctions de la calc. Vaut mieux intercepter le trap #4, c'est plus sûr


Intercper le trap #4 c'est decrit dans la doc?

27

j'en sais rien, j'ai pas lu toute la doc, loin de là
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

28

matthieu :
mega cross ....
dsl
dans tous les cas, pk ca marche pas ca ?
DEFINE_INT_HANDLER(testoff)
{
 asm("
     move.l %a0,-(%a7)
     lea.l	0x600018,%a0		
     btst.b	#1,2(%a0)	|teste si la touche on est pressé
     bne	fin  
     move.l 0xC8,%a0
     move.l 0x443*4(%a0),%a0 |rom call st_flag
     moveq.l #1,%d0
     and.l (%a0),%d0 |on teste si 2nd a été pressé
     beq fin
     trap #4            
     fin:
     move.l (%a7)+,%a0");
}


void _main(void)
{
SetIntVec (AUTO_INT_6, testoff);
}


matthieu :
comment tu fais en asm pour ecrire un handler d'interruption ? je met juste un rte a la fin ?



Je ne comprend rien à l'assembleur est ce qu'il aurait moyen de "traduire" la source en C ?

29

Je ne comprend rien à l'assembleur est ce qu'il aurait moyen de "traduire" la source en C ?
Non.
L'assembleur te donne le contrôle total de ce que tu fais avec le processeur et la mémoire. Ce n'est pas le cas du C. Et pour ce style d'utlisations (interruptions) un contrôle total est indispensable.

30

Dans ce cas il faut que je mette a l'assembleur aussi. Tu pourrai pas m'aider à terminer le code parce qu'il parle de mettre un rte à la fin du code pour faire un handler d'interuption stp?

Merci d'avance.