Programmer des interruptions en C 68k
5 sujets de 1 à 5 (sur un total de 5)
-
Hello,
je passe pas mal de mon temps libre à programmer de petites démos sur Amiga Classic, intégralement en C.
Je ne me tourne pas vers l’ASM parce que si le C est encore utilisé professionnellement, l’ASM 68k à lui complétement disparu.
Et tant qu’à passer du temps sur des trucs Amiga, je préfère que ça reste un peu utile (je peux mettre sur mon CV que je fais du C, mais pas de l’ASM 68K…)
Cela dit, j’ai quelques notions d’ASM, je sais reconnaitre un move d’un jsr, etc :))Bref, le contexte étant ainsi posé, j’en viens à ma question :
Quelqu’un saurait-il m’expliquer brièvement (ou me pointer vers un tuto ou site) comment programmer des interruptions 68000 en C ?
Je sais que le registre « custom.intena » permet d’activer ou de désactiver les interruptions, mais :
– une fonction C classique peut elle être appelée à une fréquence donnée par une interruption 68000 ? Si oui, comment ? comment mettre ce mécanisme en place, quel passage de paramètre ?
– comment désactiver les interruptions propres à l’OS de l’Amiga, genre la souris, par exemple ?
– est-ce que mes 2 questions ci-dessus ont un sens ou suis-je complétement à côté de la plaque ?Oui, il est possible de faire ça 100% en C. As-tu déjà regardé exec.library/AddIntServer() ?
Ensuite, il faudra que tu trouves comment instrumenter le code pour ton compilateur. Pour SAS/C, regarde comment utiliser __interrupt. Pour VBCC, je crois que c’est __amigainterrupt…
Désolé, je n’ai pas trouvé d’exemple tout fait mais ça doit bien exister dans quelque projet opensource sur Aminet, dans le DevCD etc…
Sinon, tu peux aussi réfléchir à utiliser un simple process de haute priorité…
Et sur ce wiki ?
http://wiki.amigaos.net/wiki/Exec_Interrupts
Edit : quoique non, désolé, il y a des bouts d’ASM dedans…
Ah, genial, merci, ça me fait de la lecture et déjà deux pistes à explorer :
http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node01DA.html
http://www.verycomputer.com/2_7807c3a4c13648ec_1.htmEffectivement, j’avais pensé à un process séparé, mais je me suis heurté aux pointeurs BCPL qui semblent nécessaires lorsqu’on crée un process AmigaOS.
Bon, je vais déja regarder comment utiliser AddIntServer().
Merci encore 🙂ça à l’air interessant ça aussi : AddTOF()
http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node001C.htmlbien qu’un peu plus ciblé, non ?
5 sujets de 1 à 5 (sur un total de 5)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Programmer des interruptions en C 68k