1

Salut a tous,
(et surtout a toi Kevin), J'aurais besoin de programmé un tsr sur ti92 j'ai vu que tu avais fais un soft déja mais peu tu me donné des précision sur le moyen que tu as utilisé pour rediriger les interruptions et pour locker le handle?
Merci

2

[nosmile]
calculator (./1) :
Salut a tous, (et surtout a toi Kevin), J'aurais besoin de programmé un tsr sur ti92 j'ai vu que tu avais fais un soft déja mais peu tu me donné des précision sur le moyen que tu as utilisé pour rediriger les interruptions

Je n'utilise pas les interruptions, mais tios::EV_handler. Cela dit, EV_handler n'est pas vraiment prévu pour cette utilisation, par exemple ça fait déconner la liaison avec une autre calculatrice, c'est pour ça que j'ai laissé tomber XtraKeys92. Sur TI-92+, j'utilise EV_hook, mais ça n'existe pas sur TI-92.
et pour locker le handle?

Pourquoi ne regardes-tu pas les sources? C'est assez simple en fait:
tios::DEREF d0,a0 ;get ("dereference") the address 
bset.b #7,-2(a0) ;lock the handle

C'est tout ce que HeapLock fait sur TI-92+.
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é

3

oki merci donc ca c'est bon j'ai reussi a blocker le handle maintenant il faut que je redirige l'interruption vers le handle du programme a executer (qui a pour handle celui tout juste locker).
Alors ma question est la suivante ce qu'on appel handler c'est bien la gestion de toute les interruptions?
C'est ce qui est contenue au début de la Ram ?
Si j'ai bon dois je modifier le début de la ram ou bien créer mon propre handler?

4

Euh qu'est-ce que tu veux faire précisément ?
Un handler d'interruption est un morceau de code quelconque terminé par un rte et qui ne détruit aucun registre.
Tu peux rediriger les interruptions vectorisées vers ton handler maison, pour que celui-ci fasse ce que tu souhaites.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

En fait je veux exécuté du code quand une certaine séquence de touche es frappée.
Donc jai juste a changée l'adresse a l'adresse du vecteur de l'interruption (en prenant soin d'autoriser l'écriture en ram au préalable dans ce secteur)
mais la ou ca ce complique c'est que je voudrait a la fin de mon code réutilisé le handler d'origine.
Si je comprend bien j'ai juste a faire un branchement (et non un saut ) au bon endroit et tous se passera bien?

6

calculator (./3) :
Alors ma question est la suivante ce qu'on appel handler c'est bien la gestion de toute les interruptions?

Euh... tu n'as pas les idées claires sur ce point il me semble. smile


Un handler, comme dit Sasume, c'est un bout de code terminé (ordinairement) par l'instruction 'rte'.
Un vecteur, c'est l'adresse du handler, c'est donc l'adresse du premier octet de la routine éxécutée lorsqu'elle doit l'être.

Les vecteurs sont enregistrés dans la table des vecteurs qui commence à 0x00000000 et se termine vers 0x00000100 (on fait on s'en fout de la fin sur 89/92+, les vecteurs sont pas utilisés).
Donc il n'y a aucune "gestion de toutes les interruptions". En cas d'évènement donné, ou à un intervalle de temps donné, le hardware va lire un vecteur à l'adresse qui lui est attribuée et exécute la routine sur lequel il pointe. A cette routine après de rendre la main à l'OS ou au programme en cours comme il convient.
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

7

calculator (./5) :
En fait je veux exécuté du code quand une certaine séquence de touche es frappée.

Je ne sais dans quel cas tu te situes, mais je ne sais pas si cette méthode est la meilleure
calculator (./5) :
mais la ou ca ce complique c'est que je voudrait a la fin de mon code réutilisé le handler d'origine.

On est donc dans un cas où tu n'as pas de 'rte', mais un jmp x.l à la fin de ton code.


Mais que veux-tu faire au juste ?
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

8

calculator (./5) :
Si je comprend bien j'ai juste a faire un branchement (et non un saut ) au bon endroit et tous se passera bien?
Oui.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

9

En fait jai modifier la calc (pour un projet dans mes études):
j'ai ajouté dans la coque un voyant .
Celui-ci est connecté a la calc via un mcp23008 (Un expander 8bit i2c)
Et le but de mon programme c'est que lorsque l'on appuye sur MAJ le voyant s'allume (enfin lorsque l'indicateur est allumé)...
J'ai fais une librairie pour commander l'expander ca ca marche niquel...
Mais le voyant c'est que le début du projet.

10

Autre questionnement :
pour exécuter le code j'ai fais un programme et dans la table de vecteur j'ai remplacé l'adresse par celle du handle du programme préalablement locké.
Es ce que l'erreur que j'obtiens (illegal instruction) peut venir de la?

11

Le handle n'est qu'un numéro de bloc de mémoire. Tu as bien mis l'adresse du bloc mémoire en question donc ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

12

oui oui j'ai bien mis l'adresse du handle.
Mais j'ai pas fait appel a kernel::exec, je redirige l'interruption sur un fichier existant mais c'est pas cela qu'il faut faire.
Il faut que mon handle contenant le tsr contienne que le code a exécuté et pas le programme envoyé a la calc...
Je pense que mon erreur viens de la qu'en pensez vous?

13

Il faut que, à l'endroit qui va bien dans la table des vecteurs (en fonction de l'interruption que tu veux intercepter), tu mettes l'adresse de ton bout de code.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

14

ouais je sais ca donc comme l'a c'est l'auto int 2 je met a l'adresse $68 l'aldresse de mon bout de code.
Mais comment jfais si c'est pas un bout de code mais un programme a lancer?
J'ai presque reussi mais des que dans mon bout de code j'appel une librairie ........... ba ca marche plus...

15

Ah, les TSR kernel c'est un peu plus compliqué, il faudrait que Flanker t'aide
!call Flanker
--- Call : Flanker appelé(e) sur ce topic ...

Bon, tout dépend comment tu procèdes, mais il faut que tu fasses en sorte que le bout de code (ou programme, c'est pareil) qui sera exécuté à chaque interruption de l'auto int 2 puisse s'éxécuter sans problèmes, c'est-à-dire qu'il ne comporte pas de relogements non relogés ou autre connerie du genre.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

16

ah oui, tiens, les joies des TSR kernels \o/
En fait, c'était même beaucoup plus compliqué de les faire en kernel, et d'ailleurs il a fallu faire quelques modifs à PreOS pour permettre ça (PreOS nettoyait toute la ram après l'installation du TSR, et notamment effaçait le TSR... )

Ça fait un bail que je n'ai pas touché à ça, mais si je me souviens bien, j'avais fait une librairie pour simplifier l'écriture de TSR (elle s'occupait de l'installation et de la suppression)
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

17

Tiens, un lien sur ti-fr

Y a un exemple qui change l'autoInt 5 pour faire clignoter un pixel...
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

18

Pour ceux basés sur EV_Hook simplement ?

calculator :
tu peux exécuter ton programme, mais tu dois le charger avec kernel::exec effectivement.

ceci-dit, si j'étais toi, j'exporterais le point d'entrée en monprog@0000, et je ferais un kernel::LibsExec(monprog,0) dessus. Ca évite de rechercher son handle, et ça marchera où que soit ton programme. Mais fais gaffe, ça peut devenir très vite lourd pour le kernel et la calc sur une auto-int grin (consommation de cpu astronomique pour la recherche, le relogement et la fermeture de ton programme, même si c'est évitable avec du code pic codé sans relogement (love))

Sinon, vas voir du côté de kernel::RegisterVector, sinon PreOS va remettre le vecteur d'origine à la fin de l'installation de ton TSR, et vas voir aussi du côté de kernel::KeepHd, pour qu'il foute la paix à ton handle locké qui devrait contenir le code de l'appel vers ton programme. smile
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

19

Merci a tous mais le problème c'est que je suis sur Ti92 alors y a pas mal de truc qui vont pas etre compatible...
Je vais essayé ca je vous tiens au courant

20

C'est un TSR sur TI-92, Fargo n'a pas toutes ces protections de PreOs (libération automatique des handles, restauration des vecteurs etc.) qui cassent les TSRs, donc c'est essentiellement comme les TSRs en _nostub.
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é

21

Erf, oublié de coup de 92 ^^
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

22

Bon voici quelques images de ma réalisation:
vi1TX6m3
O5qwKQfJ
Désolé pour la qualité ca été fait avec une webcam...



23

Donc concrètement, ça fait quoi ? Ca s'allume quand tu appuies sur shift?
avatar
Mon journal de bord <flux rss manuel> asTI68k : WIP </flux>

Le modernisme ne diffère guère de la libre pensée absolue que par sa prétention de demeurer catholique.

24

Bah pour l'instant j'ai pas encore résolu le problème du TSR, mais des que ca marchera les leds serviront d'indicateur shift alpha et <> je compte rajouter une led rouge pour les erreurs et une autre pour la batterie (surement orange) Il restera alors 3 port libre en entrée ou sortit pour fair n'importe quoi...

25

Et c'est un projet pour tes études ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

26

en gros t'as cablé un port d'e/s supplémentaire, quoi hehe bravo!

27

Ouai c'est pour mes études, jsui en école d'ingénieur électronique.
Euh Squalyl, c'est just de l'i2c encore et toujours, comme bocoup j'ai mis en standby le projet sur le port d'extension ... Il n'ya vraiment pas assez de doc.
Pour mon projet j'ai modifiée les lib i2c, elles sont plus stables et bientot 100% compatible avec 2 modes différents (low et fast)
J'ai déja commencé a programmer des librairies pour différents composants j'aimerai maintenant écrire un soft pour généralisér l'utilisation des composants I2C.
Un autre projet aussi en cours (et en parallele) c'est la progrmmation d'un PIC capable de maniere autonome de transférer un backup sur la ti.
Vous allez me demandez l'utilité de ca pisquil ya la mémoire flash.... Je reste avec ma vieille TI92 ....
Bon voila peut etre bientot une interface i2c avec tout plein de composants et de possibilités ...

28

ok.

oui le bus direct c'est chiant, partiellement a cause du décodage d'adresses;

c'est bien si t'as amélioré la lib i2c smile

29

J'ai encore quelques modifs a apportés et ensuite je la publierai, je pense la semaine prochaine
oui le bus direct c'est chiant, partiellement a cause du décodage d'adresses;

Euh moi ce qui ma surtout arrété c'est le manque de documentation 100% fiable ainsi que les risques encourrus....
J'ai rajouté les photos du cable que j'ai fabriqué pour le port d'extension:
topics/107603-ti-92/5#122

Quelqu'un a t-il une idée sur comment procéder pour appelé une librairie sans provoquée d'erreur?

Es ce que ca suffirait de locker le handle de la librairie appelée?

30

Ben c'est le kernel qui fait ce boulot d'habitude. Regarde comment il fait...
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »