1

tout est dit : je veux savoir comment recuperer une liste passée en argument à la TI ?

ça va faire 2 mois que j'ai commencé le C.

J'ai lu le tuto de Squale et j'ai vu comment créer une liste:

on envoit sur la pile END_TAG suivi des éléments de la liste et on finit par LST_TAG

Ce que je veux c'est recupérer sur la pile ,une liste entre autres arguments.

Il faut donc que je cherche le LST_TAG qui indique le début de la liste et ensuite le END_TAG qui indique la fin de la liste.

Il me semble aussi avoir vu dans la doc de TIGCC un truc "va_lst" je crois pour pointer sur une variable de type liste mais j'ai rien pigé.

si vous en savez plus sur le sujet votre aide est la bienvenue !

2

Bah pour récuperer une liste passée en argument, tu procède exactement de la même façon que pour une autre variable : en cherchant les arguments tu vas tomber sur le LIST_TAG, soit tu le lit tel quel (tu te décale encore d'un octet pour tomber sur le 1er element de la liste), soit tu veux la copier et dans ce cas là tu fais un next_expression_index pour pointer sur l'argument suivant, et donc connaitre la taille de la liste.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3

Vertyos->
LIST_TAG c'est pour le début de la liste et END_TAG c'est pour la fin ou est-ce LIST_END_TAG ?
j'ai pas très bien compris pour recuperer la taille de la liste.

je vais relire estack.h pour voir (que c'est diffficile l'anglais)

------------------------------------------------------------
Peut-on pointer directement sur une liste contenu dans une variable dans la VAT sans la copier sur la pile et recuperer les éléments.
Si ce n'est pas le cas peut-on en C envoyer une liste basic sur la pile connaissant son nom; pour ensuite recuperer les éléments.

4

andoh_wilfried :
Vertyos-> LIST_TAG c'est pour le début de la liste et END_TAG c'est pour la fin ou est-ce LIST_END_TAG ?

END_TAG
Peut-on pointer directement sur une liste contenu dans une variable dans la VAT sans la copier sur la pile et recuperer les éléments.

Bien sûr, tu l'ouvre comme n'importe quelle variable classique, tu place le pointeur à la fin du fichier, sur l'octet LIST_TAG, puis tu lis les elements de la même façon.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

Merci Vertyos.

Pour la taille si j'ai bien compris elle est déposée sur la pile après le LIST_TAG.
La pile TI fonctionne comme toute le pile.
Il fut un temps j'avais une HP 48 GX et tout se faisait par la pile un dans ce même style.

------------------------------

une autre question HS vertyos.

Si je veux envoyer une chaine sur la pile je doit faire push_ANSI_string(var_string).
Cela ne fonctionne qu'avec une chaine littérale définie par :
const char *var_string[]="ma_chaîne".

alors que moi je veux utiliser une variable non littérale définie par :
char *var_string[]="ma_chaîne".

je suppose qu'il est possible de faire un cast du genre :

(const)var_string



je vais up la dernière bétâ de TIGCC pour essayer ce soir

6

andoh_wilfried
: Pour la taille si j'ai bien compris elle est déposée sur la pile après le LIST_TAG.

Non, je disais juste qu'avec un next_expression_index, le pointeur passe à l'argument suivant. En faisant une soustraction entre ce nouveau pointeur, et celui vers la liste, tu as sa taille. Sinon quand tu travailles sur une variable elle se trouve au début (2 premiers octets), comme toujours.
une autre question HS vertyos.

Si je veux envoyer une chaine sur la pile je doit faire push_ANSI_string(var_string).
Cela ne fonctionne qu'avec une chaine littérale définie par :
const char *var_string[]="ma_chaîne".

alors que moi je veux utiliser une variable non littérale définie par :
char *var_string[]="ma_chaîne".

je suppose qu'il est possible de faire un cast du genre :
(const)var_string

Non neutral
On ne caste pas n'importe quoi pour que ça colle avec les paramètres grin Tu peux utiliser tout simplement push_ANSI_string avec une variable que tu auras déclarée comme ça :

char *str = "ta_chaine" // *str et non pas *str[]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

va_lst, c'est pour les fonctions C à nombre de paramètres variable, style printf, ça n'a donc aucun rapport avec ton truc.

Et Vertyos, push_ANSI_string est un alias obsolète pour push_zstr. (On a repris le nom de la fonction AMS 2, mais notre implémentation marche toujours sur AMS >=1.01.)
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é

8

Oui merci je sais lire la doc neutral
C'est pas à moi qu'il faut dire ça...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Oui, bon je me suis un peu trompé mais je ne comprends toujours pas pourquoi l'aide de TIGCC ne fonctionne pas sur mon vieux PC avec Windows 95.
ça m'éviterai surement de poser des questions unitile et surtout d'enregistrer toute les pages du Manuel en ligne de TIGCC; c'est chiant à la fin.


je me disais aussi hier soir que c'était bizarre que push_ANSI_string ne fonctionnait qu'avec MIN_AMS 101

----------------------------------------------------------------------------------------------------------------------------

y a-t-il un moyen d'utiliser une fonction qui retourne une valeur dans une expression basic ?
j'ai tout essayé ; marche pas. Il faut stocker le résultat à chaque fois.

il me semble avoir lu quelque part que c'est impossible et pourtant un prog comme 'fastlist' de Samuel Stearley le fait bien (je crois qu'il est en ASM)

10

andoh_wilfried
: Oui, bon je me suis un peu trompé mais je ne comprends toujours pas pourquoi l'aide de TIGCC ne fonctionne pas sur mon vieux PC avec Windows 95.

Il faut télécharger le HTML Help. C'est inclus dans Windows 98 et supérieures, mais c'est un téléchargement à part pour 95.
je me disais aussi hier soir que c'était bizarre que push_ANSI_string ne fonctionnait qu'avec MIN_AMS 101

AMS 1.00 pour TI-92+ (celui de la TI-89 est un 1.01 en fait, les programmes en MIN_AMS==101 marchent sur TI-89 AMS 1.00) n'exporte pas grand chose, il manque en particulier pas mal de fonctions estack.
y a-t-il un moyen d'utiliser une fonction qui retourne une valeur dans une expression basic ? j'ai tout essayé ; marche pas. Il faut stocker le résultat à chaque fois.

#define RETURN_VALUE
Et pour utiliser la fonction dans une expression, il faut installer IPR, KerNO ou un kernel.
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é

11

Oui mais j'ai preos (c'est bien the Kernel)

j'arrive à retourner une valeur dans home ou dans une variable mais j'arrive pas à faire ça par exemple :
seq( TIGCC_prog(arg1,..) , i , 1, 5)

12

Et bien il me semble que c'est tout à fait normal car c'est impossible pour l'instant

13

t'a déjà utilisé 'fastlist' de Samuel Stearley ?
Eh ben, il fait cela !
c'est programmé en ASM ; dommage mourn j'y connais rien

14

ha ... encore un vieux souvenir erroné alors

15

Ben, c'est censé marcher avec RETURN_VALUE!
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é

16

C'est surement moi qui ai du laisser trainer quelque chose dans la pile ; je vais voir ça en affichant tout ce qui reste sur la pile au fur et à mésure

17

18

C'est une protection d'AMS, une valeur retournée par un programme ASM ne peut pas être utilisée dans une expression mathématique, c'est con mais c'est comme ça. Pour la faire sauter, y'a plusieurs méthodes, par exemple installer PreOS.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

19