Espace TI: Forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

Ecrire dans un programme

2 participants

Aller en bas

Ecrire dans un programme Empty Ecrire dans un programme

Message par Cyxo Dim 19 Avr - 8:03

Bonjour à tous,

Je me demandais comment, en ASM z80 (pour TI-82 stats si possible,  mais au pire donnez moi juste les noms des roms call quand il y en a et j'ai la la lib ti83-ultimate.inc), on pourrait gérer les programmes présents sur la calculatrice :
- En créer
- Ecrire dedans
- Lire son contenu (mais pas besoins de l'afficher)
- Définir son mode (éditable ou non) (je n'ai pas besoin de le changer en cours de route, juste de le définir à sa création)
- Et enfin en supprimer

J'espère que vous le savez, même si je me doute bien qu'il doit falloir un bon niveau en ASM pour maîtriser ça.
Merci d'avance
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par p'Ti rageur Dim 19 Avr - 13:30

Salut cyxo !

Pour créer un programme, il faut utiliser la romcall _createprog qui prend en paramètre dans HL le nombre d'octet que va faire ton programme. Après pour mettre des chose dans ton programme, tu dois faire des ldir. ATTENTION : ne copie pas plus que le nombre d'octets de ton prog'. Sinon c'est RAM CLEARED assuré.

Pour écrire dedans tu as ta réponse : via LDIR. Pour chercher un programme, il faut utiliser _Chkfindsym qui prend comme paramètre dans OP1 le nom de ton programme. Il retourne alors l'adresse du début de ton programme dans DE. ATTENTION : les deux premier octets de ton programme son réservés pour sa taille. Donc n'oublie pas de faire deux INC DE avec de copier.

Pour lire, tu as juste à te déplacer à l'intérieur avec des inc et des add. Juste une précision, le programme est composé de tokens, donc ne t'attend pas à avoir "ClrHome" dans un registre et l'afficher tel quel juste après.

Pour définir son mode, tu as aussi le possibilité de créer un programme protégé en utilisant _createProtProg qui marche exactement pareil que _createProg. Sinon, si tu veux changer en cours de route, ces deux romcalls retournent dans HL l'adresse du programme dans la table des variables. Il suffit alors de changer un 05 en 06 pour le protéger et vis-versa (n'hésite pas à demander plus de précisions).

Pour le supprimer, rien de plus simple : la commande _delvar fera l'affaire. Pour l'utiliser, tu dois faire la commande _ChkFindSym juste avant, et ensuite faire la commande _delvar : c'est par sécurité, pour vérifier que le programme existe bien. Du coup je te conseil de faire après le ChkFindSym un "RET c" pour éviter les bugs (à part si t'es sûr de toi).

Si tu veux de l'aide pour ton programme, je serais ravi de t'aider ;)
PS : fais attention, les noms des romcalls peuvent un petit peu varier vu que je n'ai pas la même include que toi.
PPS : Fais aussi un ChkFindSym avant la création de ton programme pour ne pas créer 2 programmes avec le même nom (je crois que c'est possible oui ^^)
PPPS : Rassure toi, tout ce que je t'ai dit ici est valable pour ta calculatrice : j'ai la même que toi
PPPPS : Ça commence à faire beaucoup de PS
PPPPPS : Je crois qu'il y a une romcall pour transformer un nombre dans un registre en token si tu veux faire un éditeur de code. Je vais vérifier...
p'Ti rageur
p'Ti rageur
Argent 4
Argent 4

Sexe : Masculin
Age : 24
Messages : 58
Date d'inscription : 05/01/2014
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - xLib
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-83+
  • - Casio Collège

TI-82 Stats.fr


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Dim 19 Avr - 17:00

Bon en fait ce que je veux faire n'est pas tout à fait un éditeur, comme laisseraient présumer mes questions. Mais au niveau du principe ça s'en rapproche un peu. En réalité mon programme vise à lire le contenu d'un programme pas à pas, créer un nouveau programme et écrire dedans en fonctions du contenu du premier.

Déjà je n'ai pas _createProtProg. Tu peux me dire l'equ hexa ?

Après y a des trucs que j'ai pas trop compris pour ces différents romcalls :
- Pour le _create(Prot)Prog, il prend HL comme taille en octet... Mais où on choisit le nom ?
- Si j'ai bien compris, ChkFindSym retourne l'adresse de mon programme dans c ? Et c'est quoi le OP1 ? Comment on le met dans un registre ? (si c'en ai pas déjà un)
- Pour le _delvar, dans quel registre il faut mettre l'adresse du programme ? On le laisse dans c ?

Merci (pour m'aider pour mon programme il te suffit de répondre à ce topic et aux éventuels autres ^^).
PS : En effet les noms des romcalls changent un peu mais c'est pas cata. Juste que j'ai pas le _createProtProg comme je l'ai dit auparavant.
PPS : En effet, ça cause d'ailleur de gros troubles à la calculatrice. C'est réalisable très facilement avec Axe : si ton programme source a le même nom que ce qu'il y a après le "." au début du programme (nom du programme compilé), ça va avoir lieu, et ça déstabilise la calculette.
PPPS : Je m'inquiète pas, puisque je reconnais les noms des romcalls Content
PPPPS : En effet ^^
PPPPPS : Pas de PPPPPS.
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par p'Ti rageur Dim 19 Avr - 17:17

Oups quel étourdi je fais, le nom de ton programme doit être dans OP1 pour createprog. Quant à createprotprog, il n'existe peut être que sur ti-83+. Donc je te conseille de faire avec la technique du 05 transformé en 06 dans la table des variables.

En fait  quand je parle de "C" dans ChkFindSym je parle du flag Carry. Ce n'est pas le registre C. C'est juste que si le programme n'existe pas, il met le flag carry à 1. ChkFindSym retourne l'adresse de ton programme dans DE (attention toujours aux deux premiers octets), et dans HL, l'adresse du programme dans la table des variables (c'est comme une sorte d'index des variables, avec leur adresse, leur type, etc)

Delvar se fait après un ChkFindSym, donc a besoin dans OP1 du nom du programme. Mais il est préférable de faire ChkFindSym tout de même avant.

Voilà, cette fois pas de PS Langue
p'Ti rageur
p'Ti rageur
Argent 4
Argent 4

Sexe : Masculin
Age : 24
Messages : 58
Date d'inscription : 05/01/2014
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - xLib
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-83+
  • - Casio Collège

TI-82 Stats.fr


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Dim 19 Avr - 17:37

Je n'ai jamais entendu parler de OP1. Comment on stocke une chaîne de caractère (puisque j'imagine qu'une chaîne de caractère est le nom de mon programme) ?

EDIT: OP1 = 8039h, merci
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par p'Ti rageur Dim 19 Avr - 19:24

OP1 est une variable spéciale. Pour stocker des choses à l'interieur, soit tu fais un LDIR, soit tu fais octet par octet en faisant des trucs du genre :
Code:
ld hl,$45
ld (OP1),hl
ld hl,$5A
ld (OP1+1),hl
etc...
en hexa bien entendu.
Du coup, tu dois utiliser les tokens pour écrire le nom du prog : 'A' étant égal à 41h (je crois) tu as juste à compter pour avoir avoir le token correspondant ;)
p'Ti rageur
p'Ti rageur
Argent 4
Argent 4

Sexe : Masculin
Age : 24
Messages : 58
Date d'inscription : 05/01/2014
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - xLib
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-83+
  • - Casio Collège

TI-82 Stats.fr


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Lun 20 Avr - 7:48

Ok. En effet, A = 41h, je connaissais déjà les chaînes de caractères en hexa, je savais juste pas comment utiliser OP1. Merci bcp pour toute tes réponses.
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par p'Ti rageur Lun 20 Avr - 9:20

De rien et bonne chance pour ton programme ;)
Tu es en train de faire quoi ? Un interpréteur de programme ?
p'Ti rageur
p'Ti rageur
Argent 4
Argent 4

Sexe : Masculin
Age : 24
Messages : 58
Date d'inscription : 05/01/2014
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - ASM TI-82 Stats / TI-83
  • - xLib
Calculatrices :
  • - TI-82 Stats.fr
  • - TI-83+
  • - Casio Collège

TI-82 Stats.fr


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Invité Mar 21 Avr - 13:51

Peut-être un debugger Langue (lecture pas à pas Clin Oeil)
Anonymous
Invité
Invité


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Mar 21 Avr - 17:58

Tu chauffe (je sais ce qu'est un debugger Clin Oeil ) mais c'est encore plus ambitieux (oui je suis un fou)
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Invité Mer 22 Avr - 18:44

J'ai trouvé Langue, c'est pas pour créer un compilateur?

Cyxo a écrit:(je sais ce qu'est un debugger Clin Oeil )
Je donnais juste la fonction qui m'avait mis la puce à l'oreille Clin Oeil
Anonymous
Invité
Invité


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Jeu 23 Avr - 8:21

Il n'empêche que ta puce se trompe
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Invité Jeu 23 Avr - 10:13

Ouais bon ça va hein, c'est pas une z80 non plus :P
Anonymous
Invité
Invité


Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Cyxo Jeu 23 Avr - 19:00

X). Après c'est pas le projet principal sur lequel je bosse. Je suis en train de faire un de ces logiciels, du pur bonheur. J'en parlerai bientôt sur le forum.
Cyxo
Cyxo
Argent 1
Argent 1

Sexe : Masculin
Age : 25
Messages : 18
Date d'inscription : 11/04/2015
Etudes : 1ère S-SI
Points Forum : 5
Points Concours : 0
Langages :
  • - TI-Basic Z80
  • - Axe Parser
Calculatrices :
  • - TI-82

TI-82 Stats.fr


http://3rdhalf.tk

Revenir en haut Aller en bas

Ecrire dans un programme Empty Re: Ecrire dans un programme

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum