Programmer des interruptions en C 68k

5 sujets de 1 à 5 (sur un total de 5)

  • Anonyme

      #244410

      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 ?

      henes

        #244424

        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é…

        zzd10h

          #244428

          Et sur ce wiki ?

          http://wiki.amigaos.net/wiki/Exec_Interrupts

          Edit : quoique non, désolé, il y a des bouts d’ASM dedans…

          Anonyme

            #244432

            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.htm

            Effectivement, 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 🙂

            Anonyme

              #245275

              ça à l’air interessant ça aussi : AddTOF()
              http://amigadev.elowar.com/read/ADCD_2.1/Includes_and_Autodocs_3._guide/node001C.html

              bien 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

            Amiga Impact