240

!kick Ximoon
--- Kick : Ximoon kické(e) par Kevin Kofler

!kick Billy Charvet
--- Kick : Billy Charvet kické(e) par Kevin Kofler

!kick vince
--- Kick : vince kické(e) par Kevin Kofler

Vous avez bientôt fini de flooder mon topic???
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é

241

Encore une fois ... tu écoutes plus et tu kickes, apres, tu dis que tu ferais un bon modo ? eek
On comprend pkoi le forum tict est comme il est ...

242

Kevin toi qui n'aime pas trop qu'on utilise les "features" des forums, évite de kicker les moderateurs stp...

!invite Ximoon
--- Invite : Ximoon peut de nouveau poster
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

243

Vertyos>la différence est minime.
avatar
Membre fondateur de la Ligue Anti-MacIntoc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Un expert est quelqu'un qui en sait de plus en plus sur de moins en moins
de choses, jusqu'à ce qu'il connaisse absolument tout à propos de rien.

244

nEUrOO, je les kicke parce que la discussion qu'ils sont en train de lancer est hors sujet.
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é

245

Ximoon ne faisait que répondre à ./233 et vince à ./238, et je ne pense pas qu'ils attendaient de réponse à leurs posts...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

246

Bon d'accord:
!invite vince
--- Invite : vince peut de nouveau poster


Quant à monsieur Snow-Tiger, il devra s'expliquer s'il veut être invité, parce que le hors-sujet dans mon topic, j'en ai marre...
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é

247

(00:39) Billy Charvet: Oki, je flooderai plus.

!invite Billy Charvet
--- Invite : Billy Charvet peut de nouveau poster

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

248

Merci. Juste une question: dans les sources du linker, je n'arrive
pas à toruver où les symboles sont analysés (par exemple, où la variable Fargo est définie,
j'aimerais utiliser le même processus avec par exemple un symbole ld_export_tib ou qqch comme ça,
mais malgré tous mes efforts je n'ai pas toruvé la source où c'est)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

249

Hmmm, tu n'as pas cherché très bien à mon avis. smile

$ grep -i fargo `find . -name \*.c`
./export/exp_farg.c:/* exp_farg.c: Routines to export to a Fargo file
./export/exp_farg.c:#ifdef FARGO_SUPPORT
./export/exp_farg.c:// Fargo TI-BASIC fork
./export/exp_farg.c:const I1 FARGO_TIBASIC_FORK[] = {
./export/exp_farg.c:// Get the file size needed to export the program into a Fargo file.
./export/exp_farg.c:SIZE GetFargoFileSize (const PROGRAM *Program)
./export/exp_farg.c:    return (MainSection->Size + sizeof (FARGO_TIBASIC_FORK));
./export/exp_farg.c:// Export the internal data structures into a Fargo file.
./export/exp_farg.c:BOOLEAN ExportFargoFile (const PROGRAM *Program, EXP_FILE *File, SIZE FileSize ATTRIBUTE_UNUSED, ProgramCalcs DestCalc ATTRIBUTE_UNUSED)
./export/exp_farg.c:    ExportWrite (File, FARGO_TIBASIC_FORK, sizeof (FARGO_TIBASIC_FORK), 1);
./export/exp_farg.c:                            FailWithError (SectionFileName, "Fargo does not support AMS relocs.");
./export/exp_farg.c:            FailWithError (SectionFileName, "Fargo does not support ROM calls. Use `tios__0000' and so on.");
./export/exp_farg.c:            FailWithError (SectionFileName, "Fargo does not support RAM calls. Use `kernel__0000' and so on.");
./export/exp_farg.c:#endif /* FARGO_SUPPORT */
./export/export.c:#ifdef FARGO_SUPPORT
./export/export.c:#endif /* FARGO_SUPPORT */
./export/export.c:#ifdef FARGO_SUPPORT
./export/export.c:                      if (Program->Type == PT_FARGO)
./export/export.c:                              GetFileSize = GetFargoFileSize;
./export/export.c:                              ExportFile = ExportFargoFile;
./export/export.c:#endif /* FARGO_SUPPORT */

Voilà un endroit. (Traduction PT_FARGO -> ExportFargoFile.)

./insert/comprrlc.c:#ifdef FARGO_SUPPORT
./insert/comprrlc.c:// Append BSS relocation entries in the format required by Fargo 0.2.1. Append
./insert/comprrlc.c:BOOLEAN InsertFargo021SectionRefs (SECTION *Section, SECTION *TargetSection, SECTION *MergedSection, const LOCATION *Reference)
./insert/comprrlc.c:            // Apply the format documented in _fargo021_program_header.s.
./insert/comprrlc.c:// Append library calls in the format required by Fargo 0.2.1.
./insert/comprrlc.c:BOOLEAN InsertFargo021Libraries (SECTION *Section, SECTION *MergedSection, const LOCATION *Reference)
./insert/comprrlc.c:#define AppendI1(i1) ({if (!AppendI1ToSection (Section, (i1))) { Result = FALSE; goto Fargo021LibsOutOfMem; } })
./insert/comprrlc.c:#define AppendI2(i2) ({if (!AppendI2ToSection (Section, (i2))) { Result = FALSE; goto Fargo021LibsOutOfMem; } })
./insert/comprrlc.c:                            // Apply the format documented in _fargo021_program_header.s.
./insert/comprrlc.c:                                                           goto Fargo021LibsOutOfMem;
./insert/comprrlc.c:                                                           goto Fargo021LibsOutOfMem;
./insert/comprrlc.c:Fargo021LibsOutOfMem:
./insert/comprrlc.c:#endif /* FARGO_SUPPORT */
./insert/kernel.c:#ifdef FARGO_SUPPORT
./insert/kernel.c:// Append library calls in the format required by Fargo v0.2.0.
./insert/kernel.c:BOOLEAN InsertFargo020Libraries (SECTION *Section)
./insert/kernel.c:                                      // Apply the format documented in _fargo_program_header.s.
./insert/kernel.c:#endif /* FARGO_SUPPORT */
./insert/kernel.c:// TrailingZeroBytes is FALSE, use the Fargo v0.2.x format without
./main.c:       if (Fargo)      
./main.c:#ifdef FARGO_SUPPORT
./main.c:               Program.Type = PT_FARGO;

Voilà un deuxième. (Traduction switch --fargo ou option Fargo dans l'IDE -> PT_FARGO.)

./main.c:               Warning (NULL, "Fargo support in TIGCC is experimental.");
./main.c:#else /* !FARGO_SUPPORT */
./main.c:               Error (NULL, "Fargo support is not compiled in.");
./main.c:#endif /* !FARGO_SUPPORT */
./main.c:#ifdef FARGO_SUPPORT
./main.c:                                               // Fargo programs use the location in front
./main.c:                                               if (Program.Type == PT_FARGO)
./main.c:#endif /* FARGO_SUPPORT */
./special.c:#ifdef FARGO_SUPPORT
./special.c:            else if (SymbolNameMatches ("fargo"))
./special.c:                    Program->Type = PT_FARGO;

Et voilà le troisième. (Traduction symbole _fargo -> PT_FARGO.)

./special.c:#endif /* FARGO_SUPPORT */
./special.c:#ifdef FARGO_SUPPORT
./special.c:                    // Under Fargo, _library is a normal symbol as well.
./special.c:                    if (Program->Type == PT_FARGO)
./special.c:#endif /* FARGO_SUPPORT */
./special.c:#ifdef FARGO_SUPPORT
./special.c:    else if (Program->Type == PT_FARGO)
./special.c:                    Result = Result && AddGlobalImport (Program, "__fargo_library_header");
./special.c:                    Result = Result && AddGlobalImport (Program, "__fargo_program_header");
./special.c:#endif /* FARGO_SUPPORT */
./special.c:             || (!(strcmp (SymbolName, SYMPF_BUILTIN_INSERT "fargo021_relocs")))
./special.c:#ifdef FARGO_SUPPORT
./special.c:    // Fargo-specific formats.
./special.c:    else if (NameMatches ("fargo_exports"))
./special.c:    else if (NameMatches ("fargo020_bss_refs"))
./special.c:    else if (NameMatches ("fargo020_libs"))
./special.c:            return InsertFargo020Libraries (Section);
./special.c:#endif /* FARGO_SUPPORT */
./special.c:#ifdef FARGO_SUPPORT
./special.c:                            // Fargo-specific formats.
./special.c:                            if (NameMatches ("fargo021_relocs"))
./special.c:                            else if (NameMatches ("fargo021_bss_refs"))
./special.c:                                    return InsertFargo021SectionRefs (Section, Program->BSSSection, MergedSection, &Reference);
./special.c:                            else if (NameMatches ("fargo021_libs"))
./special.c:                                    return InsertFargo021Libraries (Section, MergedSection, &Reference);
./special.c:#endif /* FARGO_SUPPORT */


Comme tu vois, ça se fait en 2 étapes. D'abord, on met le type du programme en fonction des switches (dans main.c) et/ou des exports à noms réservés (dans special.c), puis on met le type d'exportation en fonction du type du programme (dans export/export.c).
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é

250

Perso je pense que vous pourriez enlever tous les directives de compilation conditionnelles, qui ne servent qu'a gagner 10Ko sur une distribution de 3Mo et a allourdir la lecture du code.

251

OK, j'avait déjà vu les codes d'export (et j'ai fait celui pour le tib) mais ce que je trouvais pas c'était l'endroit
où l'analyse des symboles du fichier objet et la reconnaissance des switchs étaient faites.
Bon, donc c'est special.h. Ca devrait plus prendre longtemps.
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

252

Euh au fait, il ne devrait pas y avoir de relogement quand on exporte en tib non ?
Je devrais sortir une erreur s'il y a des relogements à faire ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

253

Et zut. L'énum FileFormat est définie mais pas utilisée ?
Des contrôles sont établis pour que le programme ne dépasse pas 64 Ko.
Mais il n'y a donc pas de définition d'une variable CurrentFileFormat valant FF_TIOS par défaut ?
(Ce qui me permettrait de faire un test et en cas de définition de _tib, mettre CurrentFileFormat = FF_TIB; )
Bon, en attendant la réponse, je vais intégrer ça dans la structure PROGRAM.
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

254

PpHd
: Perso je pense que vous pourriez enlever tous les directives de compilation conditionnelles, qui ne servent qu'a gagner 10Ko sur une distribution de 3Mo et a allourdir la lecture du code.

Sebastian veut que le linker soit réutilisable pour autre chose que TIGCC.
Billy Charvet :
Euh au fait, il ne devrait pas y avoir de relogement quand on exporte en tib non ? Je devrais sortir une erreur s'il y a des relogements à faire ?

Non, tu devrais reloger le tout en temps de linking. Tu connais l'adresse de départ, tu l'utilises. smile
Billy Charvet :
Et zut. L'énum FileFormat est définie mais pas utilisée ?
Des contrôles sont établis pour que le programme ne dépasse pas 64 Ko.
Mais il n'y a donc pas de définition d'une variable CurrentFileFormat valant FF_TIOS par défaut ?
(Ce qui me permettrait de faire un test et en cas de définition de _tib, mettre CurrentFileFormat = FF_TIB; ) Bon, en attendant la réponse, je vais intégrer ça dans la structure PROGRAM.

À mon avis, la valeur de FileFormat doit être choisie au même endroit que FileType qui va avec: par ExportProgram dans export.c en fonction du type du programme. Regarde comment est choisi FileType et choisis FileFormat de la même manière. Il n'y a pas besoin de plus d'informations dans la structure Program que PT_TIB. Le test if (Size > MAX_TIOS_FILE_SIZE) se trouve en dessous, et donc tu devrais déjà savoir que le format est FF_TIB à cet endroit, et donc pouvoir tester:
if (Size > (FileFormat==FF_TIB?MAX_TIB_FILE_SIZE:MAX_TIOS_FILE_SIZE)) à la place. Mais on n'a pas du tout besoin d'avoir le format du fichier dans la structure Program.
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é

255

Euh, oué, j'ai vu que si la cible n'était pas TARGET_EMBEDDED,
c'est défini dans la structure INT_EXP_FILE...
Je n'arrive pas à trouver l'instance d'INT_EXP_FILE (malgré grep, je dois oublier une option...)
Est-elle définie lors de l'exécution des fonctions de export.c ? Dans ce cas il ne me reste plus qu'un test à faire,
mais je en trouve pas le nom de cette structure.
De plus, comment l'extension du fichier est-elle déterminée ? (Pour avoir .tib et non autre chose)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

256

C'est bon, j'ai trouvé un autre moyen et pour l'extension c'est réglé aussi.
Le linker marche pour les fichiers normaux et sort des tib quand le symbole _tib est défini.
Je vais maintenant vérifier la validité à l'éditeur hexa.
(Comparer avec a68k + maketib pour obtenir la même sortie)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

257

Billy Charvet :
Euh, oué, j'ai vu que si la cible n'était pas TARGET_EMBEDDED, c'est défini dans la structure INT_EXP_FILE...

Oui, et si TARGET_EMBEDDED, tu es censé passer un stream d'octets déjà relogé et tout à l'IDE ou tigcc.exe qui s'occupent d'écrire ton fichier. À toi de décider ce que tu fais dans le linker et ce que tu laisse à l'IDE ou tigcc.exe.
Je n'arrive pas à trouver l'instance d'INT_EXP_FILE (malgré grep, je dois oublier une option...). Est-elle définie lors de l'exécution des fonctions de export.c ?

typedef struct {
	INT_EXP_FILE File;  // Internal part of the export file.
	OFFSET CurPos;      // Current writing position inside the file
} EXP_FILE;

et une EXP_FILE est allouée localement dans ExportProgram (export.c).

Pour ton grep, ne lui passe pas *, mais `find . -type f`
De plus, comment l'extension du fichier est-elle déterminée ? (Pour avoir .tib et non autre chose)

Dans le cas TARGET_EMBEDDED, par IDE.exe/tigcc.exe. Dans le cas !TARGET_EMBEDDED, par GetOutputFile dans export.c.
Billy Charvet
: C'est bon, j'ai trouvé un autre moyen et pour l'extension c'est réglé aussi.

Quel "autre moyen"? Parce que j'ai peur que ce soit un hack...
Le linker marche pour les fichiers normaux et sort des tib quand le symbole _tib est défini.

Tu gères aussi les relogements? Parce que dans ton OS, tu as intérêt à ne pas utiliser RORG (pour sauter la zone réservée aux certificats, tu dois pouvoir utiliser un ORG relatif au début du programme à la place, ou au pire du remplissage avec des ds.b), mais faire ça proprement dans le linker, pour que tu puisses profiter des optimisations du linker (qui ne travaillent que sur des relogements). (Elles ne sont pas aussi importantes sans relogements, mais tu peux quand-même gagner 2 octets si une référence absolue peut être rendue PC-relative, et même 4 octets si un saut peut être converti en un bra.s.)
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é

258

Ou alors, solution encore plus propre: il y a visiblement 2 sections distinctes dans la ROM, donc tu devrais aussi travailler avec 2 sections distinctes dans le linker...
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é

259

*Oui, et si TARGET_EMBEDDED, tu es censé passer un stream d'octets déjà relogé et tout à l'IDE ou tigcc.exe qui s'occupent d'écrire ton fichier. À toi de décider ce que tu fais dans le linker et ce que tu laisse à l'IDE ou tigcc.exe.*
Euh, je verrai ça ensuite. Je travaille avec la version exécutable pour l'instant.

EXP_FILE > OK.

*Quel "autre moyen"? Parce que j'ai peur que ce soit un hack...*
Non, justement je suis tombé sur GetOutputFile... grin
J'ai ajouté au switch le case FF_TIB.

A propos des relogements:
J'ai essayé d'assembler un fichier assez simple
(en fait une version modifiée et absolument pas fonctionnelle du boot de PedRom)
et le linker me bombarde de 'Unresolved references'.
C'est quoi, j'ai négligé qqch à propos des relogements ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

260

Difficile de dire si c'est une erreur dans tes changements au linker ou simplement dû au fait que tu as copié une partie de PedroM qui n'est pas autonome et contient des références vers ailleurs. Maile-moi le dump (ld-tigcc --dump ... >dump.out) et je pourrai t'en dire plus.
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é

261

J'ai ça là. Mais j'ai peut-être pigé.
Le dump dit que j'ai une section .text.
Alors que ce code devrait plutôt aller dans la section absolue non ?
Comment ça se note sous as ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

262

Non, c'est normal que ce soit dans .text.
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é

263

tu vas pas me croire : la beta 6 m'a encore buggé un programme grin
et pourtant j'avais le switch -d, le tout sans label local
enfin, maintenant que je suis repassé à la 0.94 ça marche nickel
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

264

Tu peux me mailer la source (ou me donner un lien si elle est publiquement téléchargeable)?
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é

265

Je vais la mettre sur le site de Free...
Mais j'aimerais bien régler le problème tout seul. Je n'ai traité nulle part les relogements
(alors que c'est au code du répertoire export de le faire...)
Ca se fait comment ? Si c'est exécuté en Flash, je devrais ajouter à chaque emplacement non relogé
la constante ROM_BASE dépendante de la calc spécifiée non ?
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

266

oui

267

Merci, je vais m'y mettre
(Faut aussi que je revoie une protection, le linking serait sensé planter si aucune calc n'a été spécifié, et là ça devient important donc...)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

268

Quoique c'est un peu plus complique.
C'est ROM_BASE + une constante (cf PedroM.asm).

269

Et m****, si je comprends bien le code est coupé en 2,
une partie relogée à ROM_BASE + $012088, et l'autre relogée à ROM_BASE + $1A000
(plus ensuite les données alignées sur une frontière de mot long) ?

A tous >
Comment devrais-je faire ça ? Le problème n'est pas trop de le faire, mais quelle interface voudriez-vous ?
Il va peut-être falloir deux sections je pense... euh, à moins que le linker mesure la longueur du code et
reloge selon que la fin de la première base est atteinte (dans ce cas, ROM_BASE + $1A000) ou non (alors, ROM_BASE+$012088)
Je suis tel la fleur du lotus.
Bien que naissant de la boue,
aucune boue n'y adhère.

270

Attention !!!!!!!!!!!!!!!!!!!!!
La sequence de boot et le systeme d'acces a la flash doivent IMPERATIVEMENT etre dans la premiere partie!
Tout comme les acces aux ports HW2.
Et si tu veux que ca fonctionne sous VTi, il faut rajouter des Hacks triso