120

Je vois déjà ça:
if(!(cptr=malloc(plen)))
...
if(cptr!=fptr) free(cptr);

Si tu veux pouvoir lancer des programmes pour kernel, ça ne va pas aller.

Voilà ce qu'il y a dans ttstart.c:
        // NOTE: we don't use malloc, but the low level routines
        //       otherwise compressed kernel-dependent progs will crash
        if (!(uncomp_h=HeapAllocHigh(length))) {
            if (h) HeapUnlock(h);
            fatal("out of memory")
        }

        dest = HeapDeref(uncomp_h);

...
if (src!=dest) HeapFree(uncomp_h);

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é

121

Arf, ton erreur est toute bête: tu utilises:
if(HeapGetLock(h))
sans avoir initialisé h!
Et le pire est que si tu déclarais h comme variable locale (comme il faut faire si on programme proprement!), GCC t'aurait donné un warning pour ça!
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é

122

Remplace:
if (!SymPtr) fatal("program not found")
par :
if(!SymPtr || !(h=SymPtr->handle)) fatal("program not found")
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é

123

Encore une erreur de nul sick, désolé de t'avoir fais chercher, merci et bonne nuit
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

124

et pendant que tu es là, peut on faire un define sur plusieurs lignes, je m'explique:

si je fais :

#define bla(arg) {......................fdsbg...............fbff..........(arg)........................;}

existe il une une commande pour l'écrire sur plrs lignes:

#define bla(arg) {............???
........gddgd...
........(arg)....;}

car quand c'est trop long, v'est ilisible.

Et encore merci.
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

125

#define bla(arg) ({............
........gddgd...
........(arg)....;})

Et il vaut mieux mettre ({...}) plutôt que juste {...} pour que des trucs de style:
if (toto) bla(arg); else ...
passent. (Si tu ne veux pas utiliser d'extensions GNU, tu peux aussi mettre do {...} while(0) à la place de ({...}).)
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é

126

T'es sûr que {}; ne passe pas ?
doom
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

127

Oui, le } termine déjà l'instruction, donc }; la termine 2 fois et le else ne passe plus!
Et c'est écrit dans la documentation de TIGCC.
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é

128

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é

129

J'avais pas fait gaffe à la structure picol
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

130

SymFindFirst/SymFindNext renvoit un pointeur vers la structure SYM_ENTRY d'un fichier.
Est ce que l'handle du fichier pointé est dans a0 après avoir appellé SymFindFirst/Next ou bien il faut ajouter une valeur au contenu de a0?
Car je n'arrive pas utiliser le contenu de a0 comme handle.

Ou bien j'ai rien compris du tout?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

131

[edit] oups, j'avais pas bien lu la question.

Il faut rajouter 10 octets, je crois, à partir de l'adresse dans a0, et tu auras ton handle (un word).

132

Dans a0, tu as un SYM_ENTRY *.
Ce que tu veux faire est lire a0->handle.
Donc avant tout, il faut tester si a0 est non nul:
 move.l a0,d0 ;plus court et plus rapide que cmp.l #0,a0, et on détruit d0 par la suite de toute façon
 beq probleme ;Si a0==NULL, le fichier n'existe probablement pas.

Ensuite, tu lis le champ handle. Son offset est 12 (il suffit de regarder la définition de la structure), donc:
move.w 12(a0),d0
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é

133

jackiechan a écrit :
[edit] oups, j'avais pas bien lu la question.
Il faut rajouter 10 octets, je crois, à partir de l'adresse dans a0, et tu auras ton handle (un word).

Non, 12.
10, c'est sur TI-92/92II.
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é

134

merci bcp kevin, je retourne a mon programme.
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

135

Kevin Kofler a écrit :
 move.l a0,d0 ;plus court et plus rapide que cmp.l #0,a0, et on détruit d0 par la suite de toute façon
 beq probleme ;Si a0==NULL, le fichier n'existe probablement pas.


Un autre truc qui n'est toujours pas très clair pour moi:
lorsue tu fais:

move.l a0,d0
beq pb

beq test l'égalité entre quoi et quoi ?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

136

Entre a0 et 0 (NULL).
move.l ...,dn met les flags CPU en fonction des données déplacées, donc ici en fonction de a0.
Vu qu'on ne peut pas faire tst.l a0 et que cmp.l #0,a0 est lourd (en taille comme en temps d'exécution), c'est la meilleure manière de tester un registre d'adresse.
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é