30

bon je m'attaque maintenant a ngetchx(),
quelqun a t'il deja reussi a comprendre ngetchx, j'arrive vraiment pas a capter son fonctionnement...

euh...

31

roll Va vite être lassé.

32

Regarde les sources de PedroM. Tu comprendras peut etre mieux et plus rapidement avant de t'attaquer a AMS.

33

c'est incroyable !! merci pphd

donc pour lire une touche, si j'ai bien compris on commence par tester avec $600018 nul et si une touche est pressé, on reteste pour chaque ligne ?!!!!!
est ce qu'on a vraiment le temps ?
euh...

34

>donc pour lire une touche, si j'ai bien compris on commence par tester avec $600018 nul et si une touche est pressé, on reteste pour chaque ligne ?!!!!!
Avec un systeme pour gerer correctement la repetition des touches.

> est ce qu'on a vraiment le temps ?
Oui.

35

alors pourquoi il marche PAS ce code :
destiné a recuperer, lorsquel'on appuie sur une touche , sa colonne et sa ligne
unsigned char good(unsigned char *row asm("a0"))
{
asm("
  movem.l %d1-%d2,-(%a7)
 
  moveq.l #0,%d0
  moveq.l #0,%d2

boucle0:
 move.w   #0,(0x600018)   |on teste toutes les touches 
  
 nop
  nop
  nop
  nop
move.b   (0x60001B),%d0
  not.b %d0                |tant qu'une touche n'a pas été pressé on teste
  beq boucle0

  
  move.l #0b11111110111111,%d1 |le masque
boucle1:
  move.w %d1,%d2
  and.w #0b000000001111111,%d2 |on a maintenant dans d2 le masque de la ligne 
  move.w %d2,(0x600018)         |que l'on teste
  
  nop
  nop
  nop
  nop
  nop
  nop
  nop
nop
  nop
  nop
  nop
  
   
  move.b   (0x60001B),%d2  |
  not.b %d2                |si une touche a été pressé dans cette ligne on met le masque dans row 
  beq zero
  and.b #0b01111111,%d1
  move.b %d1,(%a0)
  movem.l (%a7)+,%d1-%d2   |et on par
  bra fin1
  
zero:                      |sinon
 lsr.l #1,%d1              |on decale notre masque
 
 cmp.b #255,%d1            |si on fait nos 7 masque  (plus de 0 dans le premier octet de d1
 bne boucle1               |on se casse
 
fin0:
 move.b #255,(%a0)
 movem.l (%a7)+,%d1-%d2
fin1: 
");

}


edit: ajout des commentaire pour comprendre a quoi sert ce code
euh...

36

Une question comme ça... Tu essaies de faire quoi au juste ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

37

ah j'avais oublié d'enlever l'auto int 1
... dsl
euh...

38

Kevin Kofler :
Et d'ailleurs, c'est très sale de trafiquer la table des handles directement, les ROM_CALLs Heap* sont là pour ça!

mais parfois on n'a pas le choix
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

39

Vaut mieux quand même éviter tout ce traffic, les maj d'HW/OS posent de plus en plus de problèmes.

40

[troll] Sauf en programmation kernel [/troll]
/34: Pas assez de nop deja.

41

mufumfumufufuf ca marche du tonerre !!

mais je ne comprends vraiment pas l'utilité des nop, pourquoi la reponse n'est pas immediate ?
euh...

42

c'et à cause des temps de latence du matériel je crois
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

43

bon c'est pas grave...
ExtendeD :
roll Va vite être lassé.

n'importe quoa....


alors nouvelle question sur l'os de la ti, comment ca marche le multi-tache ?
en fait , qu'est ce qu'il se passe exactement lorsqu'on lance une tache, c'est quoi ces histoires de tables de relogement et cpgnie ? j'ai rien compris a la doc system.h
euh...

44

Il n'y a pas de multi-tâche avec l'OS de la TI.
Le relogement, c'est la correction des adresses mémoires utilisées par le programme. En effet, certaines ne sont pas connues au moment de la compilation (adresses des romcalls, des fonctions de libs externes, du BSS, etc) et doivent être calculées au moment du lancement du programme.

Et la réponse à mon #35 ?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

45

ah oui :
Ximoon :
Une question comme ça... Tu essaies de faire quoi au juste ?

et ben c'est un ngetchx() qui renvoie le code de la touche comme le ngetchx() normal sauf que celui la et ben il utilise la lecture a bas niveau => 100000000 fois plus rapide

donc si j'ai bien compris, pour pouvoir gerer n programmes simultanement il faut copier la table de relogement et retenir l'adresse exact où l'on a quitté le prgm n fois ?

et ouelé la table de relogement ?
euh...

46

Pour le relogement, lis la doc de tigcc, la doc et les sources de pedrom et de preos, et tous les autres documents sur le thème, ça ira plus vite.

Pour le multitâche, c'est beaucoup plus compliqué, et ça n'a pas grand chose à voir avec le relogement: il faut sauvegarder les registres de données, d'adresse et de status, préserver des piles spécifiques aux programmes, etc, etc, en gros c'est pas trivial.

Ma question ne concernait pas ngetchx en particulier, mais ce que tu veux faire exactement en posant toutes ces questions sur les romcalls & cie. Tu veux faire ton propore OS?
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

47

le multitache ?
faut faire mumuse avec les interruptions, et savoir comment passer d'une tache à l'autre à la fin de chaque interruption
apres le reste est facile (par contre faire un truc protégé, avec un partage des peripheriques, là ca doit être une autre paire de manche)
avatar

48

nu>> tu pourrais m'en dire un peu plus ???

ximoon >>pour le moment rien de precis chew
euh...

49

Kevin Kofler a fait un Task Switcher, tu dois pouvoir le trouver quelque part en cherchant un peu.
Ça te donnera une idée des choses à prendre en compte pour passer d'une tâche à une autre.
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. »

50

oui mais c'est quoi l'extension "bz2" ??
euh...

51

52

bidoo
: ah j'avais oublié d'enlever l'auto int 1

N'oublie pas que le 5 dérange aussi!
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é

53

bidoo > quand une interruption est declenchée elle empile dans la pile superviseur le pc de l'instruction qui devait être exectuée quand l'instruction a été declenchée, donc en gros c'est l'adresse de retour de l'interrupt et aussi le sr
donc pour basculer d'une trache à une autre il faut que tu ais une interruption qui modifie le pc dans la pile superviseur (a7) pour le faire pointer vers l'instruction en cours de la tache suivante
apres il faut bien sur sauver le contexte de chaque tache : registres, pile, vecteurs d'interuptions, etc...

je pense que c'est exactement le même principe que le taskswitcher de KK, sauf que pour un vrai multitache, le basculement de tache se fait à intervales réguliers
(enfin un "vrai" multitache... un truc hyper basique, sans partage et tout et tout)
avatar

54

Si tu veux j'ai aussi une lib qui fait du multitâche (préemption par autoint 6). Ca date. A ma connaissance, ça marche avec HW1 AMS 2.03 et..... doorsos gni.
Si ça t'intéresse je peux uploader les sources.

Au départ j'avais fait ça pour pouvoir "sauvegarder" les parties en cours, jusqu'à dix progs en mode kernel lancés (pas de nostub). Et évidemment, hors de question de revenit à l'ams avant d'avoir dermé les dix progs.

55

Mon Task Switcher fait aussi de la préemption par AI6. Si on branche le scheduler sur un timer (AI1 ou AI5), ça devient du vrai multitâches, mais il faudra pour cela gérer écran et clavier centralement.
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é

56

Ué, et surtout développer des progs pour lesquels ça soit utile. Parce que je maitrise pas le tetris+tunnel en simultané grin