
char *tbl_func[]={
(char *)"proj", // OK NbrProg, ProgEstack, NbrGoto, NbrVarNum
(char *)"vers", // OK Retourne la Version de MyLib
(char *)"temp", // OK Pas d'Arguments (dés)active le répertoire Temporaire
(char *)"pars", // OK Varname, "Ti-Basic Expr" Tokeneise Expr dans Varname
(char *)"expr", // OK Varname Execute l'Expression contenu dans Varname
(char *)"runs", // OK ExterneFileName
(char *)"outs", // OK Pas d'Arguments
(char *)"seti", // OK VarNum, NUM, PUSH Définit la valeur du compteur
(char *)"movi", // OK VarNum, VarNum, PUSH Copie la valeur du compteur
(char *)"addi", // OK VarNum, NUM, PUSH Ajoute NUM au Compteur
(char *)"mult", // OK VarNum, NUM, PUSH
(char *)"madd", // OK VarNum, MULT, ADD
(char *)"divd", // OK VarNum, NUM, PUSH
(char *)"modo", // OK VarNum, NUM, PUSH
(char *)"rand", // OK VarNum, NUM, PUSH
(char *)"valu", // OK VarNum Retourne la valeur du copmteur
(char *)"into", // OK VarNum, MIN, MAX, MODE{0,1}
(char *)"last", // OK Count, Step
(char *)"unit", // OK VarNum, OffSet, Factor
(char *)"mini", // OK EXPR, First, Len
(char *)"maxi", // OK EXPR, First, Len
(char *)"summ", // OK EXPR, First, Len
(char *)"prod", // OK EXPR, First, Len
(char *)"test", // OK EXPR1, EXPR2,{==, !=, <, >},{And, Or, Index, Valu}, Count, StrLen
(char *)"etyp", // OK EXPR Retourne le Type {0 NUM, 1 STR, 2 LIST, 3 MAT}
(char *)"revl", // OK EXPR Inverse l'ordre des élément d'une LISTE/MATRIX
(char *)"diml", // OK EXPR Retourne la dimension d'une LISTE/MATRIX
(char *)"subl", // OK EXPR, First, Len Retourne l'élément d'une LISTE/MATRIX
(char *)"augl", // OK EXPR, EXPR Retourne l'élément d'une LISTE/MATRIX
(char *)"jump", // OK BOOLEAN, OffSet Saute OffSet instructions (offset peut être négatif)
(char *)"when", // OK BOOLEAN, EXPR1, EXPR2 Si BOOLEAN==0 retourne EXPR2, sinon EXPR1
(char *)"dupn", // OK EXPR, Count Duplique n fois EXPR dans la pile interne
(char *)"labl", // OK NUM_GOTO Définit un Label
(char *)"goto", // OK NUM_GOTO Provoque un Branchement au Label équivalent
(char *)"prog", // OK NUM_PROG Définit le début d'un Prog
(char *)"endp", // OK NUM_PROG Définit la fin d'un prog
(char *)"runp", // OK NUM_PROG,NBR_LBL,NBR_INT Execute le Prog en lui allouant des Ressources
(char *)"outp", // OK NUM_PROG Quitte le prog
(char *)"ikey", // OK NUM{0 à 395} default=336 Règle la vitesse du PAD
(char *)"rkey", // OK NUM{0 à 395} default=48 Règle la vitesse du PAD
(char *)"gray", // OK NUM{0 OFF,1 LIGHT,2 DARK} Active les niveau de gris
(char *)"stri", // OK NUM [, Len, FillChar] Converti un entier en chaîne
(char *)"scat", // OK Str [, InsString] Concatène des chaînes
(char *)"mid$", // OK Str [, Start, Len] extrait une sous chaine
(char *)"arch", // OK Varname (Dés)archive une Variable
(char *)"apdt", // OK NUM_POS Règle le temps de mis sous tension de la TI
(char *)"wait", // OK NUM_POS Attend une durée de temps sans rien faire
(char *)"dbug", // OK NUM_POS Mode déboguage dans la ligne d'Etat
(char *)"time", // OK NUM_POS Règle le compteur pour le Chronomètre
(char *)"srce", // OK VarName Indique le Début d'une source Externe de Code qui sera sauver dans une Liste
(char *)"ends", // OK Pas d'arguments ! Marque la Fin d'une source de Code Externe
(char *)"answ", // OK Pas d'arguments ! (Dés)active la suppression des arguments utilisé par les fonctions
(char *)"brek", // OK Pas d'arguments ! C'est pour sortir de la Lib en Cas de BUG
(char *)"offp", // OK Pas d'arguments ! Etteind la TI
(char *)"quit", // OK Pas d'arguments ! Quit la Lib
(char *)"virt", // OK Pas d'arguments ! (Dés)active l'écran virtuelle
(char *)"clrv", // OK Pas d'arguments ! Libère la mémoire de l'écran virtuelle à chaque appel
(char *)"clrs", // OK Pas d'arguments ! Efface l'écran
(char *)"list", // OK Pas d'arguments ! (dés)active la récupération des réponses dans une Liste
(char *)"null", // OK Pas d'arguments ! fonction interne à ne pas utiliser : BUG assuré
(char *)"paus", // OK Pas d'arguments ! Attends l'appui d'une touche
(char *)"wkey", // OK {0,1,2,3} Lit une touche en pause
(char *)"gkey", // OK {0,1,2,3} Lit une touche sans pause
(char *)"tkey", // OK "Row1col1Row2col2..." Lecture de touches multiples
(char *)"stop", // OK PicName, x0, y0, x1, y1 Sauve un image dans la VAT
(char *)"stor", // OK Varname, EXPR, Mode Sauve une EXPR dans la VAT
(char *)"make", // OK Varname, Size, Resize{0,1} Crée une Entrée dans la VAT
(char *)"writ", // OK Dest, Scre , Start, Len, Mode Copie Len Bytes de Scre dans Dest à partir de Start
(char *)"copy", // OK Dest, Start1, Srce, Start2, Len Copie Len Bytes de Scre à partir de Start2 dans Dest à partir de Start1
(char *)"find", // OK Dest, Start1, Srce, Start2, Len, Mode Cherche Len Bytes de Dest à partir de Start1 dans Srce à partir de Start2
(char *)"read", // OK Srce, Start, Len, Mode Lit Len Bytes de Scre à partir de Start
(char *)"delt", // OK Varname, Type Supprime la variable
(char *)"stat", // OK Varname, Type Etat de la variable
(char *)"hide", // OK Varname, Type, Mode (dé)cache la variable
(char *)"lock", // OK Varname, Type, Mode (dé)vérouille la variable
(char *)"chek", // OK Varname, Type, Mode (dé)sélectionne la variable
(char *)"size", // OK Varname Taille de la variable
(char *)"type", // OK Varname, Mode{0,1} Type de la variable
(char *)"fold", // OK Varname, Mode{0,1}, Filtre Liste des Dossiers/Fichiers
(char *)"help", // OK STR Affiche un msg dans le Status Line
(char *)"info", // OK Title, STR, BT_1, BT_2 Affiche un msg dans une Boite de Dialogue
(char *)"text", // OK STR, X, Y, Font, Mode{0 à 4}
(char *)"pict", // OK PictName, X, Y, Mode{0 à 6}
(char *)"sprt", // OK PictName, X, Y, Mode{0 à 2}, Height, Sprite{0 à 2}
(char *)"mape", // OK MapeName, X, Y, Mode{0 à 2}, Top, Left affiche un MAP
(char *)"wdth", // OK STR, Font{0,1,2} Calcule La longueur de la Chaine
(char *)"clip", // OK X0, Y0, X1, Y1 Définit la zone d'affichage graphique
(char *)"line", // OK X0, Y0, X1, Y1, Mode{0 à 7}
(char *)"crcl", // OK X0, Y0, R1, R2, Mode{},Type{0=vide, 1=Plein}
(char *)"rect", // OK X0, Y0, X1, X2, Mode{},Type{0=vide, 1=Plein}
(char *)"ofst", // OK OffsetX, OffsetY
(char *)"sequ", // OK Init, Step, Count Génère un liste
(char *)"pixl", // OK X0, Y0, Mode{-1,0,1,2} Dessine ou Lit l'état d'un pixel
(char *)"2lst", // OK MUTLI_EXPR Créer une liste à partir de la pile interne
(char *)"2arg", // OK MUTLI_EXPR Supprime les accolages de liste
(char *)"push"};// OK MUTLI_EXPR Ajoute des EXPR dans la pile interne
Mais il me semble qu'il a dit interpreteur "basic" et pas "ti-basic", donc ça peut être un truc à la gfa basic (un peu moins contraignant
et un peu plus "basic" si possible)
For I=0 To 500 For J=0 To 500 Goto Label Next J Label: Next I
Goto Label: For I=0 To 500 Label: Next I
geogeo
:Mais il me semble qu'il a dit interpreteur "basic" et pas "ti-basic", donc ça peut être un truc à la gfa basic (un peu moins contraignantComment ça contraignant? Car il manque un IDE?
et un peu plus "basic" si possible)
andoh_wilfried:
Si tu réalises la structure FOR, je te conseil de la réaliser de façon statique (c'est-à-dire avec sauvegarde des paramètres de ta boucle dans une pile genre incrémentation si Step, valeur de condition) tu auras ainsi une boucle très rapide (tout dépend de ta gestion aussi) mais qui possèdera les inconvénients suivants:
Les codes suivants seront invalides (sauf si tu les gères bien sûr): ...
Autrement tu peux la faire un peu de la même façon que ton While et ainsi avoir des boucles FOR dynamiques.
Euh, je crois que tu t'enflammes un peu, c'était pas du tout une critique de gfa basic et compagnie, je pense qu'il voulait simplement dire que faire un langage autre que le ti-basic donnait plus de liberté (moins de contraintes)
Ben ça, il suffit de garder en mémoire un offset qui dit combien d'octets ont été alloués sur la pile, et quand on fait un goto, on ajuste la pile pour que l'offset corresponde à celui de la destination du goto
Mais de toute façon c'est un peu inutile comme optimisation dans le cadre d'un interpréteur et non d'un compilateur, je pense... (accéder à une variable de la pile avec un offset ne fera pas perdre plus d'une dizaine de cycles par rapport à un accès en haut de pile, c'est complètement négligeable par rapport à tous les autres coûts ^^)
Euh, je ne vois pas en quoi ta technique ne pourrait pas s'appliquer à un While aussi ?
Ben on aime ou on aime pas, je trouve juste dommage qu'un langage interpreté soit typé, limité à des nombres de 4 octets, etc... Après c'est sûr ça le rend plus rapide, mais c'est absolument pas souple pour de l'interpreté amha (autant faire un truc en C et compiler, y'a que la gestion des erreurs qui saute). L'avantage du basic Ti c'est de pouvoir faire n'imp, déclarer un peu tout et n'importe quoi à la volée, et ça marche ^^
*A="Ma chaîne" !Le 'Flottant' devient 'une chaîne de caractère'!
geogeo
:Euh, je crois que tu t'enflammes un peu, c'était pas du tout une critique de gfa basic et compagnie, je pense qu'il voulait simplement dire que faire un langage autre que le ti-basic donnait plus de liberté (moins de contraintes)
Non je ne m'enflamme pas, je veux juste comprendre pour mieux faire. Mais je ne comprend pas ce que tu veux dire par liberté car on peut faire tout ce que l'on veut en GFA-Basic, accéder à des zones mémoires, allouer de la mémoire, utiliser des pointeurs... <blablabla>