Posté le 06/10/2007 à 17:50 Membre depuis le 06/10/2007, 7 messages
Bonjour, je suis débutant en assembleur pour z80, et cette fonction ne fonctionne pas, alors qu'elle est mentionnée sur des tutos :
#define B_CALL(xxxx) rst 28h \ .dw xxxx
Cela renvoie les erreurs suivantes :
clrscreen.z80 line 0009: Label not found: (rst)
clrscreen.z80 line 0009: label value misalligned. (rst)
clrscreen.z80 line 0009: unrecognized directive. (rst)

Alors que la fonction
#define B_JUMP(xxxx) call 50h \ .dw xxxx
fonctionne parfaitement.

Que se pase-t-il ?
Merci pour vos réponses.
Posté le 06/10/2007 à 19:01 Membre depuis le 15/03/2005, 3470 messages
Mouais déjà met ton code source en entier pour voir.
Posté le 06/10/2007 à 20:38 Membre depuis le 06/10/2007, 7 messages
#define B_CALL(xxxx) rst 18h \ .dw xxxx
#define B_JUMP(xxxx) call 50h \ .dw xxxx
_clrlcdfull =4540h
_homeup =4558h
.org 9D95h
B_CALL(_homeup)
B_CALL(_clrlcdfull)
ret
.end
END

Un simple programme pour effacer l'écran.
Posté le 06/10/2007 à 20:52 Membre depuis le 15/03/2005, 3470 messages
Essaye plutôt ça :

.nolist
#include "ion.inc"						; Il te faut 'ion.inc' même si c'est pour le lancer avec 'Asm(prgmTRUC'
#define bcall(xxxx)	rst 28h \ .dw xxxx
.list								; \
.org progstart-2						; | Header d'Ion
.db $BB,$6D							; /

start:
.org 9D95h
	bcall(_homeUp)
	bcall(_clrLCDFull)
	ret
.end
END
Posté le 06/10/2007 à 22:31 Membre depuis le 06/10/2007, 7 messages
Merci pour ta réponse, mais quel est le fichier ion.inc ?
Et les fonctions avec Ion ?
Posté le 06/10/2007 à 23:16 Membre depuis le 15/03/2005, 3470 messages
Le fichier 'ion.inc' est l'include du shell Ion, ça te permet d'avoir une compatibilité TI 83/83+ et d'avoir plus de fonctions.
Posté le 07/10/2007 à 17:13 Membre depuis le 06/10/2007, 7 messages
OK ça marche, mais faudrait que je trouve autre chose, parce que le fichier au final pèse 27 Ko.
Quelqu'un aurait-t-il une solution pour ce fameux "rst" qui fait tout planter ?
Pourtant dans les tutos ils utilisent bien la commande
#define B_CALL(xxxx) rst 28h \ .dw xxxx
qui devrait fonctionner chez moi ?
Même en faisant un copier-coller, cela ne marche pas.
voir
http://www.ticalc.org/archives/news/articles/3/30/30482.html

Merci !
Posté le 07/10/2007 à 17:24 Membre depuis le 15/03/2005, 3470 messages
Ton fichier fait 27ko après la compilation ? Si c'est le cas c'est pas normal, et si c'est la source c'est pas grâve, ça peut dépendre du nombre de commentaire.
Posté le 14/10/2007 à 15:54 Membre depuis le 06/10/2007, 7 messages
Oui, le fichier est aussi lourd, à cause de ion.inc je crois
Posté le 14/10/2007 à 19:26 Membre depuis le 15/03/2005, 3470 messages
Bah 'ion.inc' définit juste les noms de rom calls et des Saferam plus quelques autres trucs, mais c'est juste pour le compilo, ça ne devrait pas se voir dans le fichier créé.
Posté le 16/10/2007 à 19:37 Membre depuis le 06/10/2007, 7 messages
Je ne sais pas ce qui se passe alors.
Aurais-tu une solution à mon problème sans passer par le fichier ion.inc ?
Merci pour tes réponses !
Posté le 16/10/2007 à 19:47 Membre depuis le 15/03/2005, 3470 messages
Bah il vaut mieu que tu codes sous le shell Ion au départ, ça sera plus simple (à mon avis c'est le meilleur shell et ses routines sont très utiles). Donc télécharge Ion et 'Ion Guru' pour te renseigner et ensuite essaye de compiler ça :

.nolist
#include "ion.inc"

.list
	.org ProgStart-2
	.db $bb,$6d
	ret
	jr nc,Start

.db "Met le nom de ton programme en pas trop long ici",0

Start:
	bcall(_homeUp)
	bcall(_clrLCDFull)
	bcall(_getKey)		; Permet d'attendre qu'une touche soit préssée avant de continuer
	ret

.end 
END


Après installe le shell (Ion) sur ta TI et ton programme et lance le programme nommé 'A'. Ensuite une fois dans Ion fait 'ENTER' pour lancer ton programme.
Posté le 18/10/2007 à 17:38 Membre depuis le 06/10/2007, 7 messages
D'accord, merci beaucoup pour ton aide !
Bonne continuation...