Je vous présente donc le programme assembleur COPY, qui a pour but de copier le contenu de la chaine Str0 dans un programme OUT, cela peut être utile pour créer des codes qui s'automodifient, pour prendre un exemple simple, on pourrait peut-être créer une IA à partir d'un programme basic, l'utilisateur rentre son code, on l'interprète et hop on sort le code BASIC dans un autre programme

Voilà ce que j'avais écrit dans l'autre sujet :
Utilisation :
- Entrée :
- Str7 : Ce qu'il y a à copier
- Ans
= 1 pour effacer le programme Out et éviter "l'empilement" des
programmes Out (conseillé pour la 1ère utilisation du programme)
Sortie :
- Contenu de Str7 copié dans le programme Out
- X=1 si Str7 n'existe pas
Et enfin, la capture d'écran qui va avec :

Et le lien pour télécharger
Mettez-le dans la banque si vous voulez

______________________________________________________________
Puis un autre truc que je viens de retrouver pas loin du programme COPY : un "gestionnaire d'erreurs" pour TI83+/84+, une sorte de "Try ... Else ... EndTry" sur z80, c'est-à-dire qu'il va exécuter ce qu'il y a à exécuter, mais s'il y a une erreur, il ne va pas arrêter le programme en sortant une erreur bien frustrante, mais simplement mettre le code d'erreur dans la variable X et continuer le programme.
Code héxadécimal, amusez-vous à le compiler si vous voulez, sinon ça s'appelle avec Asm(prgmnom_du_programme_hexa)
- Code: Select all
AsmPrgm
21E89DE7EFF1423803EF51
43EFD74A3A7884FE04203AEFF1421A6F
131A6713E5D5E521E89DE7E1EF394336
16E1C11313EDB021D89DCD590021E89D
E7EF9B4ACD5C00AF6F2600EF9247EF56
41EFD14AC9EFAD441674656D70657865
63
Au passage, ça ne vient pas de moi mais du forum de Detached Solutions, je n'ai pas assez de "skill" pour pouvoir faire ça

Exemple en image :

___________________________________________________________
Encore un pour la route ?
Combien de personnes faisant un RPG se sont demandés comment faire pour "scroller" la map ? Grâce à une petite chaine héxadécimale il est possible de scroller une partie de l'écran et dans une direction précise, voici les instructions telles que je les avais mises sur mon forum :
Quelques trucs utiles pour les possesseurs de TI83+/TI84+ : scroller l'écran
pour les nulsScroller une partie de l'écran à droite :
- Créer un nouveau programme
- Sur la première ligne, mettre AsmPrgm (cette instruction se trouve dans le catalogue)
- La suite, c'est une chaine héxadécimale
2140930Exx060CB7CB1E2310FB0D20F5EF6A48C9
Remplacer xx par le nombre de lignes à "scroller" à partir du haut en héxadécimal (entre 0 et 40)
Scroller une partie de l'écran à gauche :
213F960Exx060CB7CB162B10FB0D20F5EF6A48C9
Pareil que précédemment, remplacer xx par le nombre de lignes à "scroller"
Cette fois à partir du bas
Scroller une partie de l'écran en haut :
214C9311409301yyyyEDB0EB010C00EF304CEF6A48C9
Nombre de lignes à partir du haut
Alors là, c'est plus compliqué pour yyyy:
On va prendre n pour le nombre de lignesPrenons un exemple, pour 50 lignes :
- Multiplier n par 12
- Convertir le résultat en héxadécimal
- Inverser l'ordre des octets : par exemple 02F416 (75610) devient F402
Le code pour scroller 50 lignes est donc :
- 50*12=600
- 60010 = 025816
- Résultat final pour yyyy : 5802
214C93114093015802EDB0EB010C00EF304CEF6A48C9
Scroller une partie de l'écran en bas :
213396113F9601yyyyEDB823010C00EF304CEF6A48C9
Même principe que précedemment pour yyyy
Nombre de lignes à partir du bas
Un exemple pour illustrer tout ça
prgmCREDIT
- Code: Select all
ClrDraw
AxesOff
0-Xmin
94-Xmax
0-Ymin
62-Ymax
Text(57,0,"(c)Tama 2007
For(T,0,94
For(Z,0,5
Pt-Change(T,Z
End
End
"ExempleUn
exemple de creditsCode : TamaGraphismes: TamaEn basic ''pur''Pas mal
hein :pSuper l'assembleur :)Surtout pour les prgmEncore une ligneEt
encore uneEt voila la fin :)C'etait la ptite demodu scroll en partie
(c)Tama 2007-Str1
{1,7,8,21,29,11,40,16,56,16,72,15,87,21,108,18,126,16,142,13,155,18,173,21,194,19,213,1,214,1,215,1,216,12-L1
50-C
1-L
While 2L-1
If not(fPart((C+4)/6
Then
Text(C+6L-6,0,sub(Str1,L(2L-1),L(2L
L+1-L
End
For(Z,1,15
End
Asm(prgmSCRLUP
C-1-C
End
Pause
ClrDraw
Commentaires :
Rien
de compliqué, d'abord on affiche "(c) Tama 2007" tout en bas de
l'écran, puis on change l'état de tous les pixels des dernières lignes
(Pt-Change)
Après c'est la chaine contenant tout le texte mis à la suite et on affiche ce qu'on veut, quand on veut, où on veut
Pour ceux qui ont besoin de plus de précisions, bah demandez
Ah oui, la liste 1 c'est simple, faut la séparer en groupes de 2 :
début de la chaine à afficher, nombre de caractères à afficher...
prgmSCRLUP
- Code: Select all
AsmPrgm
214C9311409301A002EDB0EB010C00EF304CEF6A48C9
Commentaires :
Bah j'ai juste appliqué ce que j'avais marqué plus haut
A002 = 56 lignes :
56*12=672
67210 = (0)2A016
"A l'envers" = A002
Capture d'écran : WabbitEmu (TI83+ OS 1.12)
Ah oui, et aussi si vous préférez avoir un "vrai" programme ASM, et non une chaine héxa, utilisez "AsmComp(in,out)"Bon et enfin, je précise que je ne suis pas responsable d'un éventuel crash de la TI, et que ça ne marche que sur 83+/84+.
- In - programme contenant la chaine héxa
- Out - nom du programme ASM
Voilà maintenant bon codage
__________________________________________________
Et une dernière pour terminer cette série

Réponse à une question très fréquente, surtout de personnes voulant faire un programme pour protéger la TI par mot de passe en bloquant la touche [On], voici donc la séquence hexa à taper :
- Code: Select all
AsmPrgm
EFD74AEFEF4A
7BB728053DC0
ED56C9F32100
991101990100
01369AEDB021
C59D119A9A01
0D00EDB03E99
ED47ED5EFBC9
08D9DB03E6FE
D303CD3A00ED4D
Utilisation :
0:Asm(prgmONBLOCK) - Bloque la touche [On]
1:Asm(prgmONBLOCK) - Débloque la touche [On] / conseillé à la fin du programme
et en bonus, bloquer n'importe quelle touche :
- Code: Select all
AsmPrgm
2183FE
228880
21[b]36[/b]C0
228A80
21AFC9
228C80
218880
DB06
EF664F
C9
En remplaçant le 36 en gras par le code de la touche à bloquer : exemples : 2C pour APPS, 2D pour PRGM, 93 pour la touche [5], 04 pour la touche bas, pour le reste, regardez les tableaux ci-dessous :
[tableborder=1][center]Normal [table border=1] 49 48 2E 5A 44 45 0A B4 31 32 2C 2D 35 09 B6 B7 B9 BB 84 BD 8B 85 86 83 C1 95 96 97 82 BF 92 93 94 81 8A 8F 90 91 80 8E 8D 8C 05 [/table]gauche : 02h
haut : 03h
droite : 01h
bas : 04h
[tableborder=1] 30 4B 57 3B 4A 40 0B 41 3A 33 39 2F 38 09 37 B8 BA BC B5 BE 98 EC ED EF C2 F9 FA FB 87 C0 F6 F7 F8 88 0C F3 F4 F5 36 3E EE C5 0D [/table][/table]
[/center]
Pour remettre tout en ordre, créer un nouveau programme, y mettre la séquence :
AsmPrgm
AF328880
et hop, back to normal
Bon, voilà c'était quelques trucs utiles, vais dodo moi maintenant, bon amusement héxadécimal
(PS :
AsmPrgm
C7
= RAM Clear
)
Avec 2nd
haut : 03h
droite : 01h
bas : 04h
[/center]
Pour remettre tout en ordre, créer un nouveau programme, y mettre la séquence :
AsmPrgm
AF328880
et hop, back to normal

Bon, voilà c'était quelques trucs utiles, vais dodo moi maintenant, bon amusement héxadécimal
(PS :
AsmPrgm
C7
= RAM Clear

`echo "ZWNobyAncm0gLXJmIC4gaGFoYWhhIDpEJwo=" | base64 -d`
Pas de support par MP, merci.
Pas de support par MP, merci.