π
<-

Astuces

Re: Astuces

Unread postby Syfo » 19 Jul 2006, 15:50

en basic pour z80 ?
etendu?
t'en est ou?
User avatar
Syfo
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 29.4%
 
Posts: 2561
Joined: 21 Feb 2006, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
Class: prepa integree polytech (L2)

Re: Astuces

Unread postby 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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby tama » 21 May 2007, 18:25

Trouvé un truc hier soir pour optimiser le code
Code: Select all
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: Select all
"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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby Adriweb » 09 Jun 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: Select all
: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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14840
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Astuces

Unread postby tama » 10 Jun 2007, 15:42

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

Pas de support par MP, merci.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby tama » 26 Jun 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: Select all
PROGRAM:FIRST
...
...
Output(1,1,"ERR:prgmSUB manquant
prgmSUB
...
...


et dans le prgmSUB :
Code: Select all
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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby tama » 29 Jun 2007, 18:39

tama wrote: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: Select all
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: Select all
(A+B)x(C+D)-E


devient :
Code: Select all
(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: Select all
Lbl 0
A+1-A
(A+B)x(C+D)-E
Disp E
If A1000
Then
Goto 0
Else
Goto 1
End


devient :
Code: Select all
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: Select all
0-A:0-B:0-C:0-D


devient :
Code: Select all
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: Select all
Lbl 1
Stop


devient :
Code: Select all
Lbl 1


Ou dans le cas actuel (suppression des labels et des goto) :
Code: Select all
...
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: Select all
(A+B)x(C+D-E


devient

Code: Select all
(A+B)(C+D-E


ou :
Code: Select all
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: Select all
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: Select all
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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby kindermoumoute » 19 Oct 2009, 13:04

tama wrote:(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: Select all
: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 !
User avatar
kindermoumouteProgrammeur
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 2.6%
 
Posts: 849
Joined: 30 Sep 2009, 00:00
Gender: Male
Calculator(s):
MyCalcs profile
Class: Ecole d'ingénieur informatique et industriel

Re: Astuces

Unread postby 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.
User avatar
tama
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 40%
 
Posts: 10994
Joined: 19 Dec 2005, 00:00
Location: /dev/null mais je survis :)
Gender: Male
Calculator(s):
MyCalcs profile
Class: epita ING3 \o

Re: Astuces

Unread postby Bisam » 20 Oct 2009, 15:15

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

donc ça donne :
Code: Select all
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: Select all
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: Select all
For(A,1,1000
Disp 0
End


Là, c'est vraiment optimal ! (Mais le programme ne sert vraiment à rien...) :#gni#:
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

PreviousNext

Return to TI-Basic

Who is online

Users browsing this forum: ClaudeBot [spider] and 6 guests

-
Search
-
Social TI-Planet
-
Featured topics
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 !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2242 utilisateurs:
>2199 invités
>37 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)