andoh_wilfried
: 190 -> Vertel + For du Basic
C'est archi-lent ça, faut tester avec des listes sinon le bench ne signifie pas grand chose![]()
tout est fait avec des Indirections Internes . Que ce soit dans MyLib ou Vertel.
C'est un MAP 5*5 de Picture 16*16
j'affiche le MAP avec le code suivant :
"pict", "#piclist" , "#Listx","->","#Listy"
Listy ne change pas.
Mais pour déplacer le MAP horizontalement, faut :
Pour Vertel
recalculer Listx.
j'utilise "sequ" de Vertel car les Test avec 'seq(' et 'mid(' du basic sont plus lent.
Pour MyLib
Il y a juste à faire
"addi",1,16,%,"ofst",OffSetX="#" ,OffSetY=0
pour décaler les coordonnées des fonctions Graphiques de 16 pour les X à chaque boucle et 0 pour les Y
________________________________________________________________________
Je viens j'ajouter la table des fonctions et des erreurs
//Functions Table
char *tbl_func[]={
(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 *)"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 *)"fonc", // OK VarNum, VarNum, VarNum
(char *)"test", // OK EXPR1, EXPR2,{0 ==, 1 != , 2 < , 3 >},{0 And , 1 Or , 2 Index}
(char *)"etyp", // OK EXPR Retourne le Type {0 NUM, 1 STR, 2 LIST, 3 MAT}
(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{0 à NBR_GOTO} Définit un Label
(char *)"goto", // OK NUM{0 à NBR_GOTO} Provoque un Branchement au Label équivalent
(char *)"prog", // OK NUM{0 à NBR_PROG} Définit le début d'un Prog
(char *)"endp", // OK NUM{0 à NBR_PROG} Définit la fin d'un prog
(char *)"runp", // OK NUM{0 à NBR_PROG} Execute le Prog
(char *)"exit", // OK NUM{0 à NBR_PROG} Quitte le prog
(char *)"name", // OK Pas d'arguments : Basucle entre les Mode chaine/numéro pour appeler les fonctions
(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_POS converti un entier en chaîne
(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 *)"wkey", // OK {0,1} Attends l'appui d'une touche
(char *)"gkey", // OK Pas d'arguments ! Comme Getkey du Basic
(char *)"tkey", // OK NUMrow,NUMcol Lecture de touches multiples
(char *)"wrcl", // OK VarStruct{0 à 9} Rappel la Structure dans la Pile
(char *)"wdel", // OK VarStruct{0 à 9} Libère la mémoire oqp par la structure
(char *)"wsav", // OK VarStruct{0 à 9}, EXPR Sauve EXPR dans la Structure
(char *)"stop", // OK VarNme, x0, y0, x1, y1 Sauve un image dans la VAT
(char *)"stor", // OK Varname, EXPR Sauve une EXPR dans la VAT
(char *)"make", // OK Varname, Size Crée une Entrée dans la VAT
(char *)"writ", // OK ListScre, Dest, Start, Len Copy Len Bytes de Scre dans Dest à partir de Start
(char *)"read", // OK ListDest, Srce, Start, Len Lit Len Bytes de Scre à partir de Start dans Dest
(char *)"kill", // OK Varname Supprime la variable
(char *)"size", // OK Varname Taille de la variable
(char *)"type", // OK Varname Type de la variable
(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 *)"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 *)"dpix", // OK X0, Y0, Mode{0,1,2} Dessine un pixel
(char *)"gpix", // OK X0, Y0 Retourne 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
(char *)"purg"};// OK Pas d'Arguments Vide la pile interne
//Error Message
char *tbl_err[]={
(char *)":Bad Function Name or Index !",
(char *)":Bad Argument Type !",
(char *)":Not Enough Memory !",
(char *)":Nothing on ESTACK !",
(char *)":Too Many Arguments !",
(char *)":Invalid PIC Name!",
(char *)":Separator in LIST or MAT !",
(char *)":Undefined Structure !",
(char *)":Unable to Free Timer !",
(char *)":Index Out of Range !",
(char *)":Missing Start or End of Block !",
(char *)":Imbricated Prog Block !",
(char *)":Too Much String !",
(char *)":Too Much Integer !",
(char *)":Too Much Prog Called at Once ",
(char *)":Break !",
(char *)":Quit !",
(char *)":Invalid TiOS VarName !",
(char *)":Can't Delete Var !"};
___________________________________________________________________________