Posté le 06/10/2006 à 15:47Edité par deeph le 06/10/2006 à 16:18 Membre depuis le 15/03/2005, 3470 messages
Bah comme ça fesait longtemps que j'avais pas toucher à l'asm (aussi, vu mon niveau, voilà cheeky ), je m'y suis un peu remis.
En gros j'ai fait un programme pour afficher une image en greyscale (niveau de gris). Le programme marche mais je peu pas le quitter... Voilà la source (c'est pas non plus optimier...) :
;Programmé par Deeph 2006

.nolist
#include ion.inc
#define kClear 09h
#define var 8267h
.list

#ifdef TI83P
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
ret
jr nc,Start
.db "TITEXT - Deeph",0

Start:

bcall(_clrlcdfull)
bcall(4570h)
bcall(_homeUp)
ld hl,Str1
bcall(_puts)
bcall(_getkey)
bcall(_clrlcdfull)

Affichage:
ld hl,Sprite1
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld hl,Sprite2
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
jp Affichage

Str1:
.db " GreyScale ! "
.db " "
.db " Programmer par "
.db " Deeph ",0

Sprite1:
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$81,$FF,$FF,$FF,$C0,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$3C,$FF,$FF,$FF,$98,$C1,$FF,$CF,$FF,$F3,$FF,$FE,$7F,$C0,$C1
.db $33,$3C,$9C,$E1,$CE,$0F,$F3,$FF,$FC,$FF,$C4,$9C,$33,$3F,$3C,$E4
.db $CC,$E7,$E7,$FF,$FC,$FF,$E7,$3C,$93,$3F,$3F,$FC,$C9,$E7,$E7,$FF
.db $FC,$C0,$E7,$3C,$87,$9F,$3F,$E0,$C9,$E7,$E7,$FF,$FC,$F8,$67,$01
.db $C7,$C7,$3F,$CC,$C8,$0F,$E7,$FF,$FC,$F9,$E7,$3F,$CF,$F3,$3C,$CC
.db $C9,$FF,$E7,$FF,$FC,$F9,$E7,$39,$CF,$39,$99,$CC,$C9,$CF,$FF,$FF
.db $FE,$71,$FF,$83,$9F,$39,$C3,$E0,$CC,$1F,$E7,$FF,$FF,$01,$FF,$FF
.db $9F,$03,$FF,$FC,$CF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

Sprite2:
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

.end END


Vous pouvez tester, il marche parfaitement (et quand on appui sur ON pendant l'affichage ça fait des trucs marrant cheeky ). Pour quitter j'avais fait :
bcall(_getkey),var
ld a,var
cp kClear
jp z,Fin
jp nz,Affichage

Fin:
bcall(_clrlcdful) ret


(J'avais bien entendu definit la variable "var" avant...). Le problème viens du fait que le programme attend que l'utilisateur appui sur une touche avant d'afficher l'image... Y'aurai pas une fonction qui attend l'appui d'une touche, mais qui en même temps, peut faire d'autre choses ? Merci de m'aider parce que je suis obliger d'enlever les piles pour quitter ='(
Posté le 06/10/2006 à 16:15 Membre depuis le 19/12/2002, 480 messages
bcall(_getkey),var


Je n'ai jamais vu un truc pareil... Mais enfin j'imagine que c'est un raccourci pour nous faire comprendre que la variable var contient le résultat d'un getkay top

Autre chose : "programmer par", c'est pas vraiment français... ("programmé par" l'est plus)

A part cela, une solution à ton problème serait d'utiliser _getcsc à la place de _getkey.
Posté le 06/10/2006 à 16:20 Membre depuis le 15/03/2005, 3470 messages
cheeky Vu mon niveau, faut pas s'attendre à un truc super méga bien fait... D'ailleur j'voulai savoir un truc, la valeur que renvoi la fonction "_getcsc" est stocker dans la variable "a" (l'accumulateur) ou pas ? Parce que moi je stocker la valeur renvoyer par "_getkey" dans la variable "var" puis je la re-stocker dans l'accumulateur...
Posté le 06/10/2006 à 16:21 Membre depuis le 19/12/2002, 480 messages
Cette syntaxe remplace avantageusement "getkey", ça évite en plus les tentatives d'extinction de la calculatrice pendant un getkey qui sont génératrices de crashs.

waitkey2:
 ei				;Autorise les interruptions (pour ressortir de l'état de veille imposé par HALT).
WKA_loop2:
 HALT
	bcall(_getcsc)		;destroy af, hl
 or a
 jr z,WKA_loop2    ;Si a vaut zéro, cela signifie qu'aucune touche n'a été pressée.
 ret
Posté le 06/10/2006 à 16:21 Membre depuis le 19/12/2002, 480 messages
oui, elle est stockée dans a
Posté le 06/10/2006 à 16:33 Membre depuis le 15/03/2005, 3470 messages
Merci ! J'ai finalement réussis à regler ce petit problème, maintenant c'est bon, j'ai fait comme ça :
;Programmer par Deeph 2006

.nolist
#include ion.inc
KClear .equ 191
.list

#ifdef TI83P
.org progstart-2
.db $BB,$6D
#else
.org progstart
#endif
ret
jr nc,Start
.db "GreyScale - Deeph",0

Start:

bcall(_clrlcdfull)
bcall(4570h)
bcall(_homeUp)
ld hl,Str1
bcall(_puts)
bcall(_getkey)
bcall(_clrlcdfull)

Affichage:
ld hl,Sprite1
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld hl,Sprite2
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld a,0ffh
out (1),a
ld a,0fdh
out (1),a
in a,(1)
cp kClear
jp z,Fin
jp nz,Affichage

Fin:
bcall(_clrlcdfull)
ret

Str1:
.db " GreyScale ! "
.db " "
.db " Programme par "
.db " Deeph ",0

Sprite1:
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$81,$FF,$FF,$FF,$C0,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$3C,$FF,$FF,$FF,$98,$C1,$FF,$CF,$FF,$F3,$FF,$FE,$7F,$C0,$C1
.db $33,$3C,$9C,$E1,$CE,$0F,$F3,$FF,$FC,$FF,$C4,$9C,$33,$3F,$3C,$E4
.db $CC,$E7,$E7,$FF,$FC,$FF,$E7,$3C,$93,$3F,$3F,$FC,$C9,$E7,$E7,$FF
.db $FC,$C0,$E7,$3C,$87,$9F,$3F,$E0,$C9,$E7,$E7,$FF,$FC,$F8,$67,$01
.db $C7,$C7,$3F,$CC,$C8,$0F,$E7,$FF,$FC,$F9,$E7,$3F,$CF,$F3,$3C,$CC
.db $C9,$FF,$E7,$FF,$FC,$F9,$E7,$39,$CF,$39,$99,$CC,$C9,$CF,$FF,$FF
.db $FE,$71,$FF,$83,$9F,$39,$C3,$E0,$CC,$1F,$E7,$FF,$FF,$01,$FF,$FF
.db $9F,$03,$FF,$FC,$CF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$3F,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

Sprite2:
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
.db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF

.end END


Et ça marche impec', merci Joe14 happy
Posté le 07/10/2006 à 10:42 Membre depuis le 15/03/2005, 3470 messages
Bah voilà, j'ai un autre problème... Enfaite maintenant j'ai transformer le programme pour qu'il soit capable d'afficher des images en niveaux de gris dans les programmes Basic. Pour l'instant ça marche, la syntax en Basic c'est : "1->X:Asm(prgmLIB" Avec 1 compris entre 1 et 3 (pour l'instant).

Si on entre 1 dans X, le programme doit effacer l'écran (clrLCDFull) et si on entre 2 dans X il affiche une première image en niveau de gris (3 niveaux) et pour finir, si on entre 3 dans X, il affiche une dernière image en niveau de gris... Mon problème c'est qu'a chaque fois que j'entre une valeur dans X, le programme m'affiche seulement la dernière Image en niveau de gris (valeur 3 dans X, normalement)...

Voilà la source :
.nolist
#include "ion.inc"
kEnter .equ 254
.list
.org progstart-2
.db $BB,$6D

start:
bcall(4EE8h)
bcall($4276)
cp 1h
jp z,ClrDraw
cp 2h
jp z,Grey1
cp 3h
jp z,Grey2
ret

ClrDraw:
bcall(_clrlcdfull)
ret

Grey1:
ld hl,Sprite1
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld hl,Sprite2
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld hl,Sprite3
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld a,0ffh
out (1),a
ld a,0fdh
out (1),a
in a,(1)
cp kEnter
jp z,ClrDraw
jp nz,Grey1

Grey2:
ld hl,Sprite4
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld hl,Sprite5
ld de,PLOTSSCREEN
ld bc,768
ldir
bcall(_grbufcpy)
ld a,0ffh
out (1),a
ld a,0fdh
out (1),a
in a,(1)
cp kEnter
jp z,ClrDraw
jp nz,Grey2

[Sprites]
.end


Merci de m'aider parce que là j'ai tout essayer...
Posté le 08/10/2006 à 22:45 Membre depuis le 15/03/2005, 3470 messages
Personne n'a de réponse à ma question ? Et je voudrai savoir quel Flag permet d'arreter l'affichage de la flèche en haut à gauche de l'écran quand on appui sur "2nd".
Posté le 09/10/2006 à 13:46 Membre depuis le 19/12/2002, 480 messages
Et je voudrai savoir quel Flag permet d'arreter l'affichage de la flèche en haut à gauche de l'écran quand on appui sur "2nd".


Je ne sais plus, mais c'est probablement trouvable sur internet.

Pour ta question, je jetterai un coup d'oeil ce soir si j'y pense... smile
Posté le 09/10/2006 à 17:43 Membre depuis le 15/03/2005, 3470 messages
D'accord, je vais essayer de trouver la réponse pour le Flag, sinon c'est sympa de m'aider pour mes premiers programmes en ASM, parce que finalement je commence à comprendre pas mal de trucs mais il y a toujours quelques petits problèmes...
Posté le 09/10/2006 à 22:33 Membre depuis le 19/12/2002, 480 messages
Euh, je connais deux trois trucs en assembleur, mais pas les adresses des ROM_CALLS...
bcall(4EE8h) bcall($4276)


Peux-tu m'en dire un peu plus là dessus ?
Posté le 09/10/2006 à 22:39 Membre depuis le 15/03/2005, 3470 messages
Tu peut remplacer bcall(4EE8h) par bcall(_rclx), et bcall($4276) par bcall(_convop1), j'ai juste fait ça parce que mon compilo prennai ces ROM_CALLS pour des labels cheeky
Posté le 10/10/2006 à 07:51 Membre depuis le 19/12/2002, 480 messages
rclx, ça met le contenu de x dans a, c'est ça ?

Mais as-tu vérifié que convop1 ne détruisait pas le contenu de a ? (à moins que rclx ne mette le contenu de x dans op1 et convop1 le contenu de op1 dans a, auquel cas je n'ai rien dit smile)
Posté le 10/10/2006 à 17:05 Membre depuis le 15/03/2005, 3470 messages
Heu, enfaite je croit que rclx met x dans l'accumulateur et convop1 met a dans op1 sans le détruire... (du moin c'est ce que je pense). Sinon il faudrai que je fasse comment ?
Posté le 11/10/2006 à 07:53 Membre depuis le 19/12/2002, 480 messages
Je vais me renseigner sur ces ROM_CALLS...
Posté le 11/10/2006 à 13:01 Membre depuis le 15/03/2005, 3470 messages
Ok, perso j'ai tester sans convop1 (puisque de toute façons ça n'a pas l'aire de servir à quelque chose, du fait que cp compare seulement avec l'accumulateur), mais ça marche pas non plus sad
Posté le 11/10/2006 à 13:47 Membre depuis le 19/12/2002, 480 messages
mais pourquoi l'avais-tu mis alors ?

as-tu vérifié ce que faisait rclx ? (perso, j'ai pas encore regardé) ?
Posté le 11/10/2006 à 14:31 Membre depuis le 15/03/2005, 3470 messages
Heu j'ai mis convop1 pour tester, puisque même sans, ça marche pas cheeky Sinon rclx j'ai pas tester mais c'est censé mettre la valeur de la variable X dans l'accumulateur.
Posté le 11/10/2006 à 15:18 Membre depuis le 19/12/2002, 480 messages
Justement, après quelques recherches (dans 83psysroutines.pdf), j'ai conbstaté que rclx mettait la valeur de X dans OP1 et non dans a, donc il n'est pas illogique que tu mettes une Rom_call en relation avec op1... Reste à savoir ce que fait précisément convop1... A tout de suite wink
Posté le 11/10/2006 à 15:20 Membre depuis le 19/12/2002, 480 messages
Je crois que j'ai la solution ! Convop1 met le contenu de op1, dans le registre de, et non dans a, c'est pourquoi ça ne marche pas. Ca devrait marcher en mettant e dans a. (ld a,e)
Posté le 11/10/2006 à 15:20 Membre depuis le 15/03/2005, 3470 messages
Ah bah je commence à comprendre pourquoi ça marcher pas... Bon bah y'a plus qu'a trouve le moyen de mettre OP1 dans a (enfin je croit que convop1 le fait, mais je suis pas sur...).
Posté le 11/10/2006 à 15:21 Membre depuis le 19/12/2002, 480 messages
Oups, boulette ! En fait, je me suis trompé, enfin pas complétement, mais bon, je viens de voir que convop1 charge le LSB dans a, donc ce n'est pas là le problème... sad
Posté le 11/10/2006 à 15:24 Membre depuis le 15/03/2005, 3470 messages
C'est quoi ça, le LSB ?
Posté le 11/10/2006 à 15:29 Membre depuis le 19/12/2002, 480 messages
Au fait, pourquoi n'écris-tu pas "rclx" et "convop1" pour être sûr qu'il ne s'agit pas d'une erreur d'adresse ?
Posté le 11/10/2006 à 15:30 Membre depuis le 15/03/2005, 3470 messages
Bah c'est mon compilo qui croit que c'est un label que je veux appeler, donc je remplace les noms des ROM_CALLS par leurs adresses, et maintenant ça marche.
Posté le 11/10/2006 à 15:32 Membre depuis le 19/12/2002, 480 messages
Le LSB, c'est le "Low Significant Byte", soit l'octet le plus faiblement pondéré, donc, dans un nombre de 16 boits, écrit en hexadécimal, genre $BBAA, c'est $AA, les deux caractères de droite donc.
Posté le 11/10/2006 à 15:34 Membre depuis le 15/03/2005, 3470 messages
Ah d'accord. Mais sinon,
ld hl,OP1 ld a,hl


ne marcherai pas ?
Posté le 11/10/2006 à 15:38 Membre depuis le 19/12/2002, 480 messages
Non, pour deux raisons : d'abord, dna scette configuration là, il faudrait au moins mettre des parenthèses autour de hl, car sinon, tu copies l'adresse d'op1 dans hl et non son contenu. Ensuite, il faut savoir que dans op1, les nombres sont stockés sous forme de nombres décimaux à virgule flottante (sur 11 octets je crois) et ne peuvent donc tenir dans un registre, fût-il de 16 bits, sans être convertis dans un format plus classique. C'est pourquoi il faut passer par des Rom_Calls (ou écrire la fonction, mais c'est sans intérêt dans ce cas).
Posté le 11/10/2006 à 15:41 Membre depuis le 15/03/2005, 3470 messages
Bon bah si tu as la solution à ce problème, ce serai sympa parce que là je vois pas comment faire cheeky
Posté le 11/10/2006 à 15:43 Membre depuis le 19/12/2002, 480 messages
remplace déjà les adresse en hexa par les noms des roms_calls