π
<-

[OLD] [asm] En vrac

Assembleur, Axe, C/C++, ICE...

[OLD] [asm] En vrac

Unread postby tama » 20 Feb 2010, 00:48

Tiens, je viens à l'instant de faire un tour sur mon forum et j'y ai découvert un programme que j'avais fait il y a très longtemps, en Décembre 2007 plus précisément ^^

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 :
    Image

    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 :
    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 nuls :)

    1. Créer un nouveau programme
    2. Sur la première ligne, mettre AsmPrgm (cette instruction se trouve dans le catalogue)
    3. La suite, c'est une chaine héxadécimale
    Scroller une partie de l'écran à droite :
    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 lignes
    1. Multiplier n par 12
    2. Convertir le résultat en héxadécimal
    3. Inverser l'ordre des octets : par exemple 02F416 (75610) devient F402
    Prenons un exemple, pour 50 lignes :
    1. 50*12=600
    2. 60010 = 025816
    3. Résultat final pour yyyy : 5802
    Le code pour scroller 50 lignes est donc :
    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)
    Image

    Ah oui, et aussi si vous préférez avoir un "vrai" programme ASM, et non une chaine héxa, utilisez "AsmComp(in,out)"
    • In - programme contenant la chaine héxa
    • Out - nom du programme ASM
    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+.
    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
    Avec 2nd
    [table border=1]49482E5A44450AB431322C2D3509B6B7B9BB84BD8B858683C195969782BF929394818A8F9091808E8D8C05[/table]gauche : 02h
    haut : 03h
    droite : 01h
    bas : 04h
    [tableborder=1]304B573B4A400B413A33392F380937B8BABCB5BE98ECEDEFC2F9FAFB87C0F6F7F8880CF3F4F5363EEEC50D[/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 ;))
    `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

    Return to Langages alternatifs

    Who is online

    Users browsing this forum: ClaudeBot [spider] and 9 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.
    1080 utilisateurs:
    >1058 invités
    >17 membres
    >5 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)