Probleme avec l’utilisation de la PTreplay et de ses includes en C

15 sujets de 1 à 15 (sur un total de 20)

  • 1
  • 2
  • Sharynn

      #385376

      Salut,

      Tout est dans le titre !!!
      Je n’arrive plus a faire fonctionner la ptreplay.library sous OS3 et en C !!
      Je n’arrive pas à trouver les bon include non plus.
      Quelqu’un aurait cela sous le coude ? Ceux que je trouve sur Aminet plante à la compilation à cause du fichier Pragmas. Si je ne l’inclus pas, mon IDE me dit qu’il ne trouve pas de lien avec la commande PTLoadModule() par exemple.

      S’il vous plait aidez-moi !! Si quelqu’un à un package include qui fonctionne et peut-^^etre un exemple d’utilisation ?

      Merci les amis

      Amos un jour, Amos Toujours
      -----------------------------------
      AmOS4 - Library Amos sous C (Os3-Os4)

      Admin

      bigdan

        #385377

        Quel compilateur C ?

        Tu as regardé là : ptreplay V7 by Scarab ?

        Sharynn

          #385378

          Je suis sur Hisoft_C.
          Oui les includes que j’ai, sont identique à ceux de la V7 by Scarab

          Pfff je déprime…

          Amos un jour, Amos Toujours
          -----------------------------------
          AmOS4 - Library Amos sous C (Os3-Os4)

          Admin

          bigdan

            #385427

            Tu as bien le fichier ptreplay_pragmas.h dans include\pragmas ?

            Je n’ai pas le hisoft c donc je ne peux vérifier rapidement. D’autres programmeurs avec de meilleures pistes ?

            Je commencerais par convertir les .fd en pragmas compatibles avec le Hisoft C++ via l’outil fd2pragma

            https://aminet.net/package/dev/misc/fd2pragma

            Sharynn

              #385461

              Bonne idée !!! Merci Bigdan

              OK plus de message d’erreur, la compilation va jusqu’au bout mais les commandes ne fonctionnent pas.

              Je continue ma recherche… peut-être que quelqu’un aura une solution complémentaire.

              Amos un jour, Amos Toujours
              -----------------------------------
              AmOS4 - Library Amos sous C (Os3-Os4)

              Admin

              bigdan

                #385485

                Balance ton code C et on essaie de regarder ?

                Admin

                BatteMan

                  #385536

                  Si besoin, mon fils (oui, et j’en suis fier !) a fait ce samedi une petite démo en C avec Cyrille (monsieur JanoEditor) qui utilise la PTreplay.library : https://aminet.net/package/demo/misc/Rouflaquette

                  Le code source est filé, si jamais.

                  (aussi dispo sur son Github : https://github.com/Robin-70/Rouflaquette)


                  /me espère que ça pourra aider.

                  Only Amiga makes it possible !

                  Sharynn

                    #385538

                    Mega Sympa !! La relève est assurée….

                    J’ai avancé sur mon sujet. Il semble que j’ai une variable qui ne fonctionne pas.

                    La routine tourne autour de plusieurs commandes de mon Amos4.
                    Tout fonctionne sous OS4 mais sur OS3 ça bug.

                    Ma variable:struct Module* Tracker[17]; pose problème quand elle est en tableau dès que je repasse en struct Module* Tracker, tout fonctionne.

                    Et je ne sais pas pourquoi… Mon soucis est que je dois stocké 16 module différents dans une variable ou autre.

                    Amos un jour, Amos Toujours
                    -----------------------------------
                    AmOS4 - Library Amos sous C (Os3-Os4)

                    Souldream

                      #385539

                      probablement un souci d’alloc.

                      Tu dois initialiser l’alloc pour chaque tableau …

                      Tracker[0] = malloc(sizeof(struct Module));

                      #include <stdio.h>
                      #include <stdlib.h>
                      #include <string.h>

                      #define NB_MODULES 16

                      struct Module {
                      char nom[50];
                      int id;
                      };

                      int main() {
                      struct Module* Tracker[NB_MODULES];

                      for (int i = 0; i < NB_MODULES; i++) {
                      Tracker = malloc(sizeof(struct Module));
                      if (Tracker == NULL) {
                      perror(« malloc »);
                      return 1;
                      }

                      sprintf(Tracker->nom, « Module %d », i);
                      Tracker->id = i;
                      }

                      // Affichage pour test
                      for (int i = 0; i < NB_MODULES; i++) {
                      printf(« Nom: %s, ID: %d\n », Tracker->nom, Tracker->id);
                      }

                      // Libération mémoire
                      for (int i = 0; i < NB_MODULES; i++) {
                      free(Tracker);
                      }

                      return 0;
                      }

                      ...::: Mist - Mister FPGA - FPGA Arcade 060 - ZxUno :::...
                      ...::: A500- A600/Gothek - Amiga 1230 Gotek CF 16GB - A3000 - A4000/30/64Mb/Vlab1.3/Oktagon :::...
                      ...::: Vampire V4 SA :::...
                      ...::: Zx 48/128+2/128+3/QL - Dragon32 - Atari 520STF/1040 :::...
                      ...::: C64 + 1541 / C64 :::...

                      Sharynn

                        #385555

                        Hello,
                        L’idée est pas mal mais « Tracker[0] = malloc(sizeof(struct Module)); » ne se compile pas.
                        Message erreur: « type has undefined size »
                        … lol …

                        Amos un jour, Amos Toujours
                        -----------------------------------
                        AmOS4 - Library Amos sous C (Os3-Os4)

                        Souldream

                          #385584

                          Car le compilo est incapable de calculer la taille.

                          struct Module {
                          …..
                          };

                          Comment est défini ta structure Module ?

                          ...::: Mist - Mister FPGA - FPGA Arcade 060 - ZxUno :::...
                          ...::: A500- A600/Gothek - Amiga 1230 Gotek CF 16GB - A3000 - A4000/30/64Mb/Vlab1.3/Oktagon :::...
                          ...::: Vampire V4 SA :::...
                          ...::: Zx 48/128+2/128+3/QL - Dragon32 - Atari 520STF/1040 :::...
                          ...::: C64 + 1541 / C64 :::...

                          Anonyme

                            #385585

                            Question bête mais tu sais qu’il existe des IA qui peuvent aider dans le generation/debug de code.
                            Mois ça m’aide bien pour pister et comprendre des soucis sans sortir des bouquins.

                            Wojciech

                              #389819

                              D’autres programmeurs avec de meilleures pistes ?

                              skysmotor.co.uk vend les produits suivants en ligne : servomoteur à courant alternatif, moteur BLDC, pilotes de moteur pas à pas, réducteur planétaire et peuvent être achetés en ligne si nécessaire.

                              piark

                                #389822

                                16 modules, tous ça en chipram ?

                                Pour la structure Module, vu que la taille est constante et l’allocation aussi, pourquoi se casser la tête avec du malloc, faites un tableau de taille fixe, même pas besoin de pointeurs à gérer.

                                Faites simple au début sans malloc sans rien, pour tester la replay routine, après si ça marche, rajouter les allocs , si ça à du sens.

                                Idéalement si vous ne voulez pas de taille limite, faites de la liste chainée double, plus simple à gérer pour trier les éléments, insérer supprimer etc etc….

                                J’aurais bien donné un avis sur le sizeof, mais j’ai fait trop de C++, du coup j’aurais fait un typedef struct et la sur le typedef le sizeof aurait fonctionné.

                                piark

                                  #389823

                                  Pour les headers, le plus simple à mes yeux c’est d’inclure la replay routine en assembleur directement dans le projet C / C-Amos, et de déclarer les fonctions soi-même.

                                  Pour l’intégration de la lib externe, si c’est pour l’embarquer dans le projet :

                                  Vous pouvez produire une librairie, et la charger dans amos en utilisant le chargement de librairie et les assignations des arguments Dx et Ax puis appel à l’offset de la fonction (avec areg et dreg avant appel a l’offset de la lib), je déconseille l’inclusion de code binaire directement compilé car le code n’est pas relogé).

                                  Et en C/ASM il suffit de faire un xdef sur le nom de la fonction avec un underscore à rajouter dans le nom de fonction (en doublon éventuellement, genre toto et toto_ en début de fonction), et un extern void toto() coté header C, ou void toto( __REGD0(int arg1)) si signature fonction void toto(int) par exemple coté asm.

                                15 sujets de 1 à 15 (sur un total de 20)

                                • 1
                                • 2
                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Probleme avec l’utilisation de la PTreplay et de ses includes en C

                                Amiga Impact