π
<-

Astuces

Re: Astuces

Messagede Syfo » 19 Juil 2006, 15:50

en basic pour z80 ?
etendu?
t'en est ou?
Avatar de l’utilisateur
Syfo
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 29.4%
 
Messages: 2561
Inscription: 21 Fév 2006, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: prepa integree polytech (L2)

Re: Astuces

Messagede tama » 01 Nov 2006, 18:59

un petit truc
au lieu de faire {1-LABCDE on peut tout simplement faire {1-ABCDE ça peut sembler quasi inutile mais c'est utile en cas d'utilisation multiple de la même liste dans un même programme
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede tama » 21 Mai 2007, 18:25

Trouvé un truc hier soir pour optimiser le code
Code: Tout sélectionner
0-K
Repeat K
getkey-K
End
If K=41
"A-Str1
If K=42
"B-Str1
...
If K=93
"Z-Str1


ça donne
Code: Tout sélectionner
"ABCDEFGHIJKLMNOPQRSTUVWXYZ-Str0
...
0-K
Repeat K
GetKey-K
End
(K=51)(K=93)(fPart(K/10)=.5)(5int(K/10)-22+K-10int(K/10))+(K=41)(K=43)(K-10int(K/10
sub(Str0,Ans,1-Str1
...


bon un peu compliqué mais grâce à ça j'ai réduit la taille de mon pendu de 30% (739-518)

(bien sûr = c'est inférieur ou égal et = supérieur ou égal)
voilà ^^
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede Adriweb » 09 Juin 2007, 07:57

Une petite astuce (très simple) qui peut faire gagner du temps :
plus particulièrement quand vous êtes dans une boucle, essayez de réduire au maximum les commandes données et de faire les calculs "simples" vous même.
Exemple :
Code: Tout sélectionner
:9²→X
:3→A
:XA→X
devient
:243→X

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
My calculator programs
Mes programmes pour calculatrices
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 82.2%
 
Messages: 14887
Images: 1211
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Astuces

Messagede tama » 10 Juin 2007, 15:42

cf premier post ^^
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede tama » 26 Juin 2007, 10:07

(héhé je me mets à l'ASM z80 syfo fais gaffe :D: )

Bon j'ai trouvé un truc assez intéressant pour ceux qui veulent des trucs avancés dans leurs programmes et qui ne peuvent pas ou ne veulent pas télécharger de programmes ASM

C'est l'équivalent des chaines Exec pour les 68k :

Allez commençons :

2 façons :
Utiliser la commande ExecAsm de Omnicalc ([PRGM] 2 fois) puis rentrer la chaine

ou

-Créer un nouveau programme
-Mettre ASMPrgm sur la première ligne (c'est dans le Catalog : [2nd]+[0])
-Taper les chiffres/lettres à la suite
-Ne pas oublier d'ajouter C9 à la fin du programme sinon ça bug
-Pour appeler : Asm(nomduprogramme

Ah oui aussi pour les fonctions sur l'écran il faut ajouter :
EF6A48 à la fin pour rafraichir l'écran.

Bon on commence :
  • Scroller l'écran à droite : 2140930E40060CB7CB1E2310FB0D20F5
  • Scroller l'écran à gauche : 213F960E40060CB7CB162B10FB0D20F5
  • Scroller l'écran en haut : 214C9311409301F402EDB0EB010C00EF304C
  • Scroller l'écran en bas : 213396113F9601F402EDB823010C00EF304C
  • Augmenter le contraste : 2147847EC604FE28D077C6D8CD0B00D310
  • Diminuer le contraste : 2147847ED604D877C6D8CD0B00D310
  • Mettre le contraste contenu dans X : EFE04AEFEF4AC6C0CD0B00D310
  • Graph tout noir : 2140930100033EFFEF334C
  • Effacer graph : EFD04B
  • Inverser l'écran Home : FDCB05DEEF7945FDCB059E
  • Inverser graph : 2140930100037E2F77230B78B120F7
  • Inverser tous les écrans :
    F33E20CD0B00D3103E80CD0B00D310060EC5063F2E7FCD0B00DB112C
    CD0B00DB112FF57DCD0B00D311CD0B00DB11F1CD0B00D31110E5C110D8
  • Cercles rapides : FDCB3CE6
  • Ecran on/off: DB10CB6F20053E03D310C93E02D310
  • Alpha lock : FDCB12E6FDCB12F6
  • Permettre les minuscules : 21148A3E08AE77
  • Enlever done: FDCB00AE
  • Texte inversé ou non : 21F5893E08AE77
  • APD : 210101224884FDCB08DEFB76
  • Mettre l'APD à X (X=variable X) : EFE04AEFEF4AEB214884732372
  • Eteindre la TI : 3E01D30376FDCB09A6
  • "Powerdown" : EF0850
  • Etat des batteries (dans Ans) : EFBF41EFB3502803EF9B41EFBF4A
  • RAM libre : EFE542EF9247EF5641EFBF4A
  • Version de l'OS : EF6F4CF578EF8C47EF6742EF6742F1EF8F47F7EFBF4A
  • Version de l'Hardware : EFBA80EF8C47EFBF4A
  • Getkey: EF7045FB76EF4447B728F8EF5641EFD14A
Il faut être prudent en utilisant ces chaines, comme pour les chaines Exec un seul chiffre faux et tout devient différent (crash voire pire ?)

Voilà c'était l'astuce du jour =)

le lien : http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm

Sinon j'en ai des petites :
  • pour savoir facilement si on est sur TI82 ou TI83+, utiliser abs : sur TI82 abs -1+1 donne 2 (considère comme abs(-1)+1), sur TI83(+) abs(-1+1 donne 0
  • les erreurs :
Pour que l'utilisateur connaisse ce qu'il a oublié (par exemple pour un sous-programme), on peut faire :

Code: Tout sélectionner
PROGRAM:FIRST
...
...
Output(1,1,"ERR:prgmSUB manquant
prgmSUB
...
...


et dans le prgmSUB :
Code: Tout sélectionner
PROGRAM:SUB
Output(1,1,"                              " (16 espaces)
...
...
...


Après l'ERR:UNDEFINED l'utilisateur pourra voir ce qu'il manque


voilà c'est tout pour aujourd'hui !


http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede tama » 29 Juin 2007, 18:39

tama a écrit:Je propose de poster ici toutes les astuces que vous connaissez pour la programmation sur TI z80 ou sur TI z80 tout court

= Pour optimiser un programme :

Exemple :

prgmTEST


code non optimisé
Code: Tout sélectionner
0-A:0-B:0-C:0-D
Lbl 0
A+1-A
(A+B)x(C+D)-E
Disp E
If A1000
Then
Goto 0
Else
Goto 1
End
Lbl 1
Stop


Nombre total d'octets :
13+54=77 octets

1.Enlever les parenthèses
Code: Tout sélectionner
(A+B)x(C+D)-E


devient :
Code: Tout sélectionner
(A+B)x(C+D-E


Gain == 1 octet

2.Utiliser For( et End au lieu des goto (l'instruction Goto cherche le lbl correspondant et cela peut prendre du temps)

Code: Tout sélectionner
Lbl 0
A+1-A
(A+B)x(C+D)-E
Disp E
If A1000
Then
Goto 0
Else
Goto 1
End


devient :
Code: Tout sélectionner
For(A,1,1000
(A+B)x(C+D-E
Disp E
End


Gain == 12 octets
Gain total === 13 octets

3.Utiliser DelVar var au lieu de 0-var
Avantage : DelVar A et 0-A prennent autant de place mais on peut enchainer les DelVar (les coller)

Code: Tout sélectionner
0-A:0-B:0-C:0-D


devient :
Code: Tout sélectionner
DelVar BDelVar CDelVar D

(DelVar A est inutile puisque A sera utilisé pour faire une boucle)

Gain : 6 octets
Gain total : 19 octets

4.Mettre un "stop" en fin de programme ne sert à rien

Code: Tout sélectionner
Lbl 1
Stop


devient :
Code: Tout sélectionner
Lbl 1


Ou dans le cas actuel (suppression des labels et des goto) :
Code: Tout sélectionner
...
Disp E
End
(plus rien après mais attention à ne pas oublier le End sinon la boucle ne marche plus)


Gain : 1 octet
Gain total : 20 octets

5.Utiliser vos connaissances en maths et en programmation :D:

Code: Tout sélectionner
(A+B)x(C+D-E


devient

Code: Tout sélectionner
(A+B)(C+D-E


ou :
Code: Tout sélectionner
AC+AD+BC+BD-E


Gain : 1 octet
Gain total : 21 octets

6 (facultatif) : Installer Omnicalc ==http://www.ticalc.org/archives/files/fileinfo/226/22626.html


voilà :)

Bilan final :
+ Le programme a 21 octets de moins et la vitesse en plus correspondante :D:
- euh...


code final après optimisation :

Code: Tout sélectionner
DelVar BDelVar CDelVar D
For(A,1,1000
(A+C)(B+D-E
Disp E
End

13+43 = 56 octets

N'hésitez pas à poster vos astuces !!! :D:

P.S : Attention pour les connaissances en programmation : le programme peut devenir plus complexe
Attention aussi aux gros gros programmes, il faut avoir le cerveau correspondant :;):


tiens je viens de trouver une nouvelle optimisation :
au lieu d'utiliser E, utiliser Ans ici c'est plus avantageux :

donc ça donne :
Code: Tout sélectionner
DelVar BDelVar CDelVar D
For(A,1,1000
(A+C)(B+D
Disp Ans
End


J'ai gagné 2 octets :):
donc taille finale = 13+41=54 octets (ce qui fait une optimisation de 43% =))
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede kindermoumoute » 19 Oct 2009, 13:04

tama a écrit:(héhé je me mets à l'ASM z80 syfo fais gaffe :D: )

Bon j'ai trouvé un truc assez intéressant pour ceux qui veulent des trucs avancés dans leurs programmes et qui ne peuvent pas ou ne veulent pas télécharger de programmes ASM

C'est l'équivalent des chaines Exec pour les 68k :

Allez commençons :

2 façons :
Utiliser la commande ExecAsm de Omnicalc ([PRGM] 2 fois) puis rentrer la chaine

ou

-Créer un nouveau programme
-Mettre ASMPrgm sur la première ligne (c'est dans le Catalog : [2nd]+[0])
-Taper les chiffres/lettres à la suite
-Ne pas oublier d'ajouter C9 à la fin du programme sinon ça bug
-Pour appeler : Asm(nomduprogramme

Ah oui aussi pour les fonctions sur l'écran il faut ajouter :
EF6A48 à la fin pour rafraichir l'écran.

Bon on commence :
  • Scroller l'écran à droite : 2140930E40060CB7CB1E2310FB0D20F5
  • Scroller l'écran à gauche : 213F960E40060CB7CB162B10FB0D20F5
  • Scroller l'écran en haut : 214C9311409301F402EDB0EB010C00EF304C
  • Scroller l'écran en bas : 213396113F9601F402EDB823010C00EF304C
  • Augmenter le contraste : 2147847EC604FE28D077C6D8CD0B00D310
  • Diminuer le contraste : 2147847ED604D877C6D8CD0B00D310
  • Mettre le contraste contenu dans X : EFE04AEFEF4AC6C0CD0B00D310
  • Graph tout noir : 2140930100033EFFEF334C
  • Effacer graph : EFD04B
  • Inverser l'écran Home : FDCB05DEEF7945FDCB059E
  • Inverser graph : 2140930100037E2F77230B78B120F7
  • Inverser tous les écrans :
    F33E20CD0B00D3103E80CD0B00D310060EC5063F2E7FCD0B00DB112C
    CD0B00DB112FF57DCD0B00D311CD0B00DB11F1CD0B00D31110E5C110D8
  • Cercles rapides : FDCB3CE6
  • Ecran on/off: DB10CB6F20053E03D310C93E02D310
  • Alpha lock : FDCB12E6FDCB12F6
  • Permettre les minuscules : 21148A3E08AE77
  • Enlever done: FDCB00AE
  • Texte inversé ou non : 21F5893E08AE77
  • APD : 210101224884FDCB08DEFB76
  • Mettre l'APD à X (X=variable X) : EFE04AEFEF4AEB214884732372
  • Eteindre la TI : 3E01D30376FDCB09A6
  • "Powerdown" : EF0850
  • Etat des batteries (dans Ans) : EFBF41EFB3502803EF9B41EFBF4A
  • RAM libre : EFE542EF9247EF5641EFBF4A
  • Version de l'OS : EF6F4CF578EF8C47EF6742EF6742F1EF8F47F7EFBF4A
  • Version de l'Hardware : EFBA80EF8C47EFBF4A
  • Getkey: EF7045FB76EF4447B728F8EF5641EFD14A
Il faut être prudent en utilisant ces chaines, comme pour les chaines Exec un seul chiffre faux et tout devient différent (crash voire pire ?)

Voilà c'était l'astuce du jour =)

le lien : http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm

http://wikiti.denglend.net/index.php?title=83Plus:Basic:Tricks_ExecAsm


Dit moi avec le execAsm de omnicalc on peut marquer directement dans un programme:
Code: Tout sélectionner
:If X=1:ExecAsm(3E01D30376FDCB09A6  //éteindre TI

par exemple?

EDIT : Je viens d'essayer mais sans succès "ERR:SYNTAX"
Tutoriel sur l'axe parser, un langage de programmation pour z80 ultra rapide et beaucoup plus facile que l'ASM !
Avatar de l’utilisateur
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 2.6%
 
Messages: 849
Inscription: 30 Sep 2009, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Ecole d'ingénieur informatique et industriel

Re: Astuces

Messagede tama » 19 Oct 2009, 22:10

c'est real(33,"chaine" si je me souviens bien, appuie 2 fois sur [PRGM] pour voir le menu avec les trucs spéciaux
`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`

Pas de support par MP, merci.
Avatar de l’utilisateur
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 40.9%
 
Messages: 10995
Inscription: 19 Déc 2005, 00:00
Localisation: /dev/null mais je survis :)
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Astuces

Messagede Bisam » 20 Oct 2009, 15:15

Tama a écrit:tiens je viens de trouver une nouvelle optimisation :
au lieu d'utiliser E, utiliser Ans ici c'est plus avantageux :

donc ça donne :
Code: Tout sélectionner
DelVar BDelVar CDelVar D
For(A,1,1000
(A+C)(B+D
Disp Ans
End


J'ai gagné 2 octets
donc taille finale = 13+41=54 octets (ce qui fait une optimisation de 43% =))

Allez, soyons fou et optimisons encore !!
Code: Tout sélectionner
DelVar BDelVar CDelVar D
For(A,1,1000
Disp (A+C)(B+D
End

et puisque B, C et D valent 0, ils ne servent à rien et donc le programme devient :
Code: Tout sélectionner
For(A,1,1000
Disp 0
End


Là, c'est vraiment optimal ! (Mais le programme ne sert vraiment à rien...) :#gni#:
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers TI-Basic

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
5249 utilisateurs:
>5226 invités
>16 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)