Bonjour, je programme depuis 6 mois sur ma TI82stats.fr en basic et je voudrais passer à l'ASM(assembleur): j'ai trouver un tuto en francais("ASMGuru version française") mais je n'arrive pas à envoyer les fichiers en ***.z80 à la TI (j'ai le cable mais je n'arrive pas à convertir).

bonjour,

je pense que les fichiers en .z80 sont les fichiers sources : il faut les compiler en .83p pour que tu les envoies sur ta TI.
Deeph et Contra te donneront une meilleure réponse sous peu, mais c'est normal que tu puisse pas envoyer ton fichier.
En fait, la calto ne gère qu'un nombre de formats limités (matrices, listes...), et pour les programmes il n'y en a que deux : programme, et application.

Si je me plante pas, les programmes doivent être du .8xp ou du .83p, et les applis du .8xk pour ta calto (ça dépend des modèles)
Bref, donc ton programme écrit en .z80 est jusque là un fichier texte, il faut que tu le compile, c'est à dire le transformer en programme binaire effectif ; et ensuite que tu le convertisse au système de ta calculatrice qui est spécifique.

Tu devrais donc chercher dans ton tuto comment on compile un programme z80
Bonjour et merci pour vos réponces mais c'est justement les tutos de compilation dont je n'en trouve pas que j'arrive à suivre (je si je m'en sort pas trop mal en TI basic, je suis nul en anglais et en informatique (win xp si ça peut vous aider))
Salut,

Je suis content de voir que l'asm t'intéresse...
Si tu as des questions je me ferai un plaisir de te répondre.

Tout d'abord comme l'a dit gon33, un fichier *.z80 est un fichier sources (du texte).Il peut d'ailleurs s'appeler *.asm ou *.bidule ça ne change pas grand chose.
Tu souhaites compiler un programme pour ti82 stats.fr qui est en fait un TI83 regular.

Donc tu dois obtenir un fichier .83p.
La TI83 regular n'accepte pas les applis 8xk (car pas de flash). et 8xp est le format pour les ti83plus.
Nous c'est donc 83p et rien d'autre.

Pour commencer il faut que tu télécharges TASM qui est l'assembleur que tu utiliseras sous windows : http://www.ticalc.org/archives/files/fileinfo/15/1504.html
Mais également Obj83 : http://www.ticalc.org/archives/files/fileinfo/157/15723.html
J'ai testé ces outils et ça marche pour la calculatrice que tu as j'en suis sur.

Télécharge également le fichier header : http://www.calc.org/files/96/ti83asm.inc
Et aussi : http://www.calc.org/files/96/tokens.inc

Ce sont des fichiers textes que ton fichier source doit inclure...
Mets les fichiers dans le meme repertoire que ton fichier source.


Pour obtenir un fichier 83p valide, il faut passer par 2 étapes.
Après avoir écrit ton fichier source (le *.z80 dont tu parles), il faut le compiler comme ceci :
tasm -b -80 -i test.asm TEST.bin

Cette phase est une phase de "traduction" ou le texte du fichier *.z80 est converti au format hexadecimal lisible par une machine.
Tu devrais obtenir un fichier TEST.bin ou alors une erreur ...
Si tu obtiens une erreur essaie ce petit exemple qui marche :

; a.z80
;**OK : This code works.**


.NOLIST
#define equ .equ
#define EQU .equ
#define end .end
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
.org 9327h
call _CLRLCDFULL
ld hl,1
ret
.end END


Il se peut que la commande tasm ne soit pas reconnue, dans ce cas modifie le PATH (regarde sur le net je ne sais plus comment on fait sous windows).

Le fichier test.bin est un fichier traduit au format lisible par une architecture z80, mais lorsqu'on parle de z80 il peut s'agir de calculatrice ti83 mais aussi un zx spectrum, un CPC, ou une GBA, bref on a fichier universel mais impossible de le donner tel quel à notre ti83.

Il faut donc utiliser un utilitaire (ici Obj83) qui va permettre d'empaqueter le fichier pour qu'il soit accepté par la ti83.
Je crois qu'il s'utilise comme ça :
Obj83 TEST.BIN

Obj83 s'occupe d'ajouter une entête a ton fichier, avec au depart le magic number puis un commentaire, puis d'autres trucs... Et à la fin un checksum et une chaine de fin (END:0000:END).

Tu devrais donc obtenir un fichier TEST.83p et tu n'as plus qu'à le tester sur émulateur ou vraie calculatrice en faisant :
Send(9pgrmTEST

(send( est dans 2nd catalog)

Parmi les erreurs classiques :
- Attention ton programme ne doit pas avoir un nom qui dépasse 8 caractères !
- Pense à avoir un fichier *.bin avec un nom en majuscule (sinon le fichier ne peut être lancé sur la calc).
- Pour ti83 c'est .org 9327h et rien d'autre
- Les appels sont des call macro (pas de b_call)
- Le fichier *.inc est ti83asm.inc (pas ti83plus.inc)
- Les fichiers sources doivent être indentés avec des tabulations (pour le code entre .org inclu et .end inclu).

J'espère que tu vas t'en sortir.

Commence à faire quelques essais et dis moi ce qui te coince...
Allez courage sandro, l'asm c'est un peu chiant au départ mais ça vaut le coup.


Thibault




Merci Contra pour ton aide, grâce à ton conseil avec le PATH, au moins je n'obtient plus " 'tasm' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. "
Néanmoins, quand j'entre "C:\Documents and Settings\nom_utilisateur\Bureau\tasm -b -80 -i test.asm TEST.bin" avec l'invite de commandes , j'obtient "tasm: table file open error on tasm80.tab". (j'ai mis tous les fichiers sur le bureau



PS:j'ai créer un fichier texte avec bloc notes nommé test.asm et contennant un copier coller de l'exemple de Contra. J'ai remplacé mes anciens fichiers prevus pour l'ASM par ceux préconnisés par Contra

je joint mon fichier TAMS80.TAB
tromb Fichier joint : TASM80.TAB
Ah ça avance bien smile

Essaie de mettre un exemplaire de TASM80.TAB dans le repertoire de tasm et un autre dans le repertoire de ton fichier source.
Ca devrait résoudre cette erreur.
Le fichier TASM.TAB est le fichier de correspondance entre tes commandes (call, jp, add etc...) et leurs valeurs hexadecimal (la valeur dépend du contexte).

Autre chose, pense bien à mettre des tabulation comme ceci :

;         a.z80
;**OK : This code works.**


.NOLIST
#define equ .equ
#define EQU .equ
#define end .end
#include "ti83asm.inc"
#include "tokens.inc"
.LIST
.org 9327h
	call _CLRLCDFULL
	ld hl,1
	ret
.end
END


Tu y es presque wink

Thibault
Désolé Contra mais si la tabulation était fausse (j'avais vais un copier-coller de ta citation), tous mes fichiers étaient déjà dans le même répertoire, les *.z80 compris : le bureau.
j'ai essayé en mettant le tout dans deux dossiers différents (tout ce qui était sur le bureau et qui concernait l'ASM) : un exemplaire dans chaque ça ne m'a servi à rien.

Mercis d'avance

PS: peut être que sur le bureau ou dans des dossiers sur celui-ci n'est pas le bon emplacement, mais dans ce cas, où faut-il les mettre?
Juste un petit doute ...
Es-tu bien sur d'avoir activé l'affichage des extensions ?

tromb Fichier joint : Ctjr (extension.png)

Juste pour vérifier que le fichier tab s'appelle bien comme il devrait.
Parce que si ton fichier .tab porte le bon nom et qu'il est accessible dans le même répertoire que tasm ça devrait marcher...

Mais bon normalement si tu l'as téléchargé il ne devrait pas s'appeler Tasm80.tab.txt mais bien Tasm80.tab.
Re,

J'ai lancé un windows pour toi (c'est rare).
Tasm ne passait pas sur windows 7 64 bits alors on va essayer avec spasm (c'est pas plus mal).
Je te donne la version 32 bits (qui marche sur 64 bits d'ailleurs aussi).
Utilise les nouveaux fichiers que je te donne, je les ai adaptés pour qu'ils compilent.

tromb Fichier joint : test.z80
tromb Fichier joint : SPASM.exe
tromb Fichier joint : Obj83.exe
tromb Fichier joint : ti83asm.inc
tromb Fichier joint : tokens.inc

Voila a quoi ressemble mon dossier :
tromb Fichier joint : lIoV (rep.png)

Et la ligne de commande :
tromb Fichier joint : P0dS (cmdline.png)

Essaie ça dis moi si ça marche.

Thibault
J'ai pas trop le temps de répondre mais en gros je te conseil d'utiliser spasm plus que tasm pour compiler parce qu'il gère mieux les erreurs etc...
merci beaucoup mais désolé, j'obtient toujour une erreur : "Couldn't open input file" ( en remplaçant > par \ entre Bureau et asm ). Je supose que l'erreur vient des espaces et/ou tabulations et/ou lignes sautées ou non au début et à la fin d'un des trois fichiers texte ( test.z80 , ti83asm.inc , tokens.inc )
ne pourrait tu pas soit me les joindre sous forme de fichiers et non de texte ou alors expliciter d'aventage pour ces trois éléments ( exemple : surlignage bleu des tabulations, vert des espaces (en alternant si possible 2 tons pour pouvoir les conter et ùùùùùùùùùùùùùù pour une ligne sautée)
PS : j'ai Win xp avec les versions de programmes 97-2003
Pour compiler sous Windows c'est pas compliquer, t'ouvres le bloc note, tu tapes :

spasm truc.z80 truc.83p -T -A
pause


Et t'enregistres dans le même dossier que ton code source truc.z80 et que spasm sous le nom "compiler.bat" par exemple.

Perso je te conseil de donner l'extension .z80 à tes sources, c'est déjà plus spécifique que seulement .asm (même si c'est pas faux).

Ensuite t’exécutes le fichier batch que tu viens de créer et normalement ça compile si le code n'est pas trop crade.
La méthode que t'a donné Deeph doit marcher, mais si tu veux vraiment limiter les risques voici les fichiers dans un zip :
tromb Fichier joint : asm.zip

Tu fais un nouveau dossier à la racine de ton C:\
Tu décompresses le zip dedans.
Tu vas dans ton C:\asm\
Et tu refais la manip citée par deeph.

Parce que l'erreur que tu me donne semble être un mauvais chemin d'accès, pas une erreur de tabulation.

Allez bonne chance wink

Thibault.
merci beaucoup à vous deux , j'ai réussi à obtenir un *.83p mais horreur : le contenu ne correspond à rien (par exemple avec TI-graph link j'obtiens du "tan-1(" ). de plus j'obtiens tout un tas d'erreurs en rouge : d'un simple "test.z80:8: "tokens.inc: No such file or directory " pour test.z80 à une liste ennorme pour EFFECRAN.z80 que j'ai généré par une application tromb Fichier joint : EFFECRAN.Z80 avec "Documents and settings\nom_utilisateur\Bureau\asm\ti83asm.inc:XXX: error: Can't recognize 'equ' as an instruction or macro " (avec XXX remplacé par tous les entiers de 520 à 664 en ordre croissant ; le tout suivit de
- en rouge : " EFFECRAN.z80:11: error: "tokens.inc: No such file or directory
- en rouge : " EFFECRAN.z80:21: error: conflicting definition of 'END'
- en rouge : " EFFECRAN.z80:13: error: previous definition of 'END' was here
- en blanc :" Pass two..."
- en rouge : " EFFECRAN.z80:21: error: '_clrLCDFull' isn't a macro or label
- en blanc : " Done"
- en blanc : " Assembly time: 0.250 seconds"


les messages d'erreur (le peut que j'en comprenne) semblent soutenir l'hypothèse que les fichiers textes contiennent une erreur. Je vous envoi tous mes fichier sur l'asm :
tromb Fichier joint : token.inc
tromb Fichier joint : ti83asm.inc
tromb Fichier joint : test.z80
tromb Fichier joint : TEST.lst
tromb Fichier joint : TEST.83p
tromb Fichier joint : SPASM.exe
tromb Fichier joint : Obj83.exe
tromb Fichier joint : EFFECRAN.Z80
tromb Fichier joint : EFFECRAN.lst
tromb Fichier joint : EFFECRAN.83p
tromb Fichier joint : compiler.bat

PS : je me suis servis de compiler.bat et non de MS-DOS pour lancer la compilation
PS : je joins ici le "programme" qui m'a créé EFFECRAN.z80 à partir d'un programme de même nom en TI-basic contenant en tout et pou tout l'instruction :"EffEcr" (= ClrHome)tromb Fichier joint : basic à asm.zip
désolé Contra mais au premier abord ça marche pas par contre comme je tombe de fatigue ce n'est pas fiable je reaissayerais demain après les cours (PS : ton post je ne l'ai remarqué qu'après avoir rédiger le mien (je rédigés en même temps que je testais (ou presque))
Sandro
Je te conseil de ne travailler qu'avec ion.inc (par contre ensuite ça nécessite d'avoir le shell Ion sur ta TI, ou Venus, mais ton programme sera compatible TI 83 et 83+) :

.nolist
#include	"ion.inc"

.list

#ifdef TI83P
	.org ProgStart-2
	.db $bb,$6d
#else 
	.org ProgStart
#endif

	ret
	jr nc,Start
	.db "Test",0 ; Tu peux mettre ce que tu veux, c'est le nom affiché sous Ion

Start:
	; place ici ton code
	ret

.end
END
bonjour
désoler, je n'y arrive pas ni avec en mmétant le tout dans C:\ ni dans C;\asm\
coment fait-on pour utiliser ion ou vénus s'il vous pl'ait : j'ai un peu essayé mais pas trouver.
merci d'avance
Sandro
Venus ou Ion te seront utiles que lorsque tu auras réussi à compiler un fichier ....

Quelle est l'erreur que tu as maintenant? Toujours la même ?

Le dossier que j'ai posté (asm.zip) contient tout ce dont tu as besoin pour ta machine...
Ca devrait marcher sans problème et sans rien de plus...
Je ne comprends pas ce qui coince... sad

Les fichiers sont préformatés comme il faut et ils utilisent une syntaxe reconnue par l'assembleur 32 bit que je t'ai mis (SPASM.exe) puisque j'ai testé avec ces fichiers sur ma machine.
Allez insiste un peu ça devrait marcher... (j'espère smile )

Poste bien tout ce que te sort la ligne de commande que je sache ce qui te bloque.
Si c'est les *.inc, on peut essayer sans eux ce n'est pas génant...
Le tout c'est de cibler.

*bonne chance*



bonjour
j'ai re reaissayer voilà ce que ça me donne : "
C:\asm>spasm test.z80 TEST.83p -T -A cris clair
Pass one... blanc
C:\asm\tokens.inc:318: error: 'TGETKEY' isn't a macro or label rouge
C:\asm\tokens.inc:318: error: Equates can't have forward references rouge
il n'y a rien d'affiché sur cette ligne
Pass two... blanc
Done blanc
Assembly time: 0.016 seconds blanc
il n'y a rien d'affiché sur cette ligne
C:\asm>pause cris clair
Appuyez sur une touche pour continuer... cris clair
"

sinon je vous joins compiler.bat, placé dans le dossier asm ( à l'adresse C:\asm\ ) : sinon il contient tel quel le asm.zip de Contra ( décompréssé )
tromb Fichier joint : compiler.bat
Si tu fais SPASM.exe dans le repertoire au lieu de lancer le *.bat

Et sinon pour l'erreur supprime la ligne 318 et 319 du fichier token.inc et dis moi si ça passe smile
Nan mais les erreurs sont dues à des définitions de rom calls. En gros spasm n'aime pas token.inc ou tout les trucs où la syntaxe est douteuse (token.inc, ti83plus.inc...), préférez ion.inc (inclut dans l'archive postée plus haut) ou dwedit.inc (par contre la "compilation" met plus de temps avec j'ai l'impression).

Ça fait longtemps que j'avais pas compilé quelque chose pour TI 83, et comme moi même j'ai galéré : tromb test.zip

Tu lances compiler.bat, ça te sort un truc.83p, t'installes Ion ou Venus sur ta TI (c'est un shell), et ensuite ça te permet d’exécuter le programme (qui ne sert à rien pour le moment vu qu'il efface juste l'écran et qu'il quitte juste ensuite).
pour les propositions de Contra, si on suprime les lignes 318 et 319, on obtient pour seules différences 318 et 319 remplacées chacun par 325 et TQUEST à la place de TGETKEY.

pour lancer dirrectement SPASM.exe , ça ouvre une fenêtre qui s'ouvre et se referme immédiatement (en moins d'une demi seconde en tout cas ): je suis parvenus après une demi-heure de bricolage avec l'appareil photo à obtenir ceci:"
SPASM Z80 Assembler by Don Straney and Spencer Putt

spasm [options] <input file> <output file>

-T = Gentate code listing
-C = Code counter mode
-L = Symbol table mode
-S = Stats mode
-O = Don't w???????? to output file
-I [directory ?????? Add include directory
-A = Labels are cAse-sensitive
-D<name>[=v???????????? Create a géfine???????ame' [with 'val ?????
-N = Don't use colors for messages
-U <Expression> = Pipe expression directly into assembly
"
les ?????? remplacent des passages que je n'arrive pas à lire ( il y a quand même des fichiers sur mon bureau )
Nan mais te prend pas la tête, télécharge mon archive et normalement tout marche.

Sinon ça sert à rien de juste lancer spasm.exe sous windows, sans "pause" il va simplement se lancer et se fermer, avec la fenêtre DOS qu'il a ouvert juste avant. A la limite il faut passer par l'inviter de commande, mais le plus simple ça reste de se faire un petit fichier batch.
Tu lances sans utiliser la console ???

Un nouveau zip qui n'utilise aucun include...
Plus de probleme de token.inc ni ti83asm.inc
Le voici :

tromb Fichier joint : asm.zip


Et le resultat sur calculatrice :
tromb Fichier joint : LKZt (gifencod.gif)

Désole contra, si je n'obtient plus aucune message en rouge, j'obtient toujours exactement le même charabia une fois compilé : avec TI-GRAPH LINK 83, j'obtiens : "tanhñ(UGmean(åDMSsinhñ(" avec les ñ à remplacer par des exposant -1 et å remplacer par un triangle isocelle plein dont la base est verticale et à gauche.
avec le test.zip j'obtiens :"sinhñ(0BoxplotTDegreeFix Horiztanhñ(UGsinhñ(" (avec TI-GRAPH LINK 83 et les ñ à remplacer par des exposant -1
+Deeph , qu faut-il metre s'il te plait dans compiler.bat pour compiler aec ion ? car ça me sort du " 'tasm' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes. " alors qu'avec spasm non !
merci d'avance
Sandro
Ce que tu obtiens est bon (je reconnais les carateres il
me semble)sauf que je pense que tu n'as pas utilise obj83...

Je me trompe?!

wink

salut
j'ai utilisé le asm.zip juste en enlevant ton test.83p en code héxa ( ça j'ai reconnu la syntaxe )
j'ai juste utilisé ensuite ce .bat tromb Fichier joint : compiler.bat et obtenu le résultat posté dans mon dernier script.
Alors qu'entend tu par utiliser obj83
Sandro
Je vois ce que c'est... essaie de mettre ça dans un compiler2.bat :
spasm test.z80
Obj83 test.bin
pause

et poste le fichier qui sort... (désole je ne peux pas expliquer plus je réponds avec mon portable)
salut
voilà ce que ça me sort avec compiler2.bat tromb Fichier joint : test.bin
et ce que ça me joint avec compiler.bat tromb Fichier joint : TEST.83p et tromb Fichier joint : TEST.lst
je joins aussi compiler.bat tromb Fichier joint : compiler.bat et compiler2.bat tromb Fichier joint : compiler2.bat