1

Bonjour!
J'ai besoin de coder moi même la fonction ipoint, sauf que j'ai un problème d'utilisation du port $11: j'arrive parfaitement à écrire avec, mais pas à lire les octets affichés à l'écran... cheeky
Exemple:
start:
        bcall _clrlcdfull
        di
        ld a,$30
        out ($10),a
        call Ralentir
        ld a,$80
        out ($10),a
        call Ralentir
        ld a,$EF
        out ($11),a
        call Ralentir

        ld a,$30
        out ($10),a
        call Ralentir
        ld a,$80
        out ($10),a
        call Ralentir
        ld a,$FF
        in a,($11)
        ld h,0
        ld l,a
        bcall _disphl
        jp _getkey

Ralentir:
         push bc
         ld bc,$FF
AZERTY2:
         push bc
         ld bc,$FF
AZERTY:
         djnz AZERTY
         pop bc
         djnz AZERTY2
         pop bc
         ret

Ce code devrait d'après ce que j'ai compris m'afficher 239 à l'écran, mais ça affiche 0... quelqu'un pourrait m'expliquer pourquoi?
Merci d'avance! smile

2

Ça ne plante pas ? On ne peux pas sauter à un bcall... ou ton logiciel est pour le 82 stats.fr ? Dans tout cas, si tu veux lire un octet après avoir changé les coordonnées de l'écran, il faut faire d'abord un "dummy read" parce que les coordonnées ne seront pas mise à jour jusqu'après le premier "in" :
start: 
        bcall(_clrlcdfull)
        di

        ld a,$80
        out ($10),a
        call $000B
        ld a,$20
        out ($10),a
        call $000B
        ld a,$EF
        out ($11),a
        call $000B


        ld a,$80
        out ($10),a
        call $000B
        ld a,$20
        out ($10),a
        call $000B
        in a,($11)
        call $000B
        in a,($11)
        ld h,0
        ld l,a
        bcall(_disphl)
        bcall(_getkey)
        ret
call $000B fera un petit délai pour toi, il attendra jusqu'à ce que le LCD sera prêt pour la prochaine action.

3

_ipoint travaille avec le graph buffer, pas directement avec l'écran, tu devrais faire pareil.

J'ai pas trop le temps de me pencher sur le problème, mais si tu tiens vraiment à utiliser ça, ton problème viens sûrement du fait que tu utilise mal le port (cf par exemple http://www.mworld.fr/html/projects/calc/ti-82/tutoriel/progasm/guide/lesson16.html ).

Tiens d'ailleurs ça me fait penser qu'au lieu de faire "call Ralentir", tu devrais utiliser _lcdbusy.

edit : cross.

Tiens je ne savais pas pour le "call $000B"...

4

Merci ça marche!
Par contre, il y a un truc qui m'a surpris: les quelques cours que j'ai déniché sur le port $11 disaient qu'il fallait commencer les colonnes à $20, mais pour moi, ça ne commence qu'à $30 cheeky
Encore merci! smile

PS: c'est bien pour une ti 82stats, alors vu que c'est juste pour un test, j'ai pris un raccourcis wink

EDIT: J'ai fais quelques test... il semblerait que les colonnes commencent à $20 ET à $30, ça revient au même cheeky

REEDIT:
Avec call $000B, ça ne marche pas, mais c'est bon avec call Ralentir.
Tu es vraiment sur que $000B est fait pour ça? Parce que il y a juste un "bit 0,(iy+7)" puis un "ret" qui y sont effectués cheeky ça me parait pas beaucoup...
Par contre, avec lcdbusy, ça marche! smile

5

Ah bon pour les 83+ au moins ça marchera, peut-être la 82stats/83 sont différentes. Sur la 83+ on peut lire la porte $10 (in a,($10)) et si le bit 7 et armé (fais un rla) l'écran est prêt:
attendre_lcd:
	in a,($10)
	rla
	jr nc,attendre_lcd
	ret

Je crois que l'on peut tester un bit du port $02 (c'est ce que la routine de TI fait, l'appel à $000B), mais je ne me souviens pas du bit à tester. Je crois que la méthode là-dessus est plus petite/rapide de toute façon parce que l'on peut utiliser rla, mais en général il y aura quelque chose plus utile que tu pourras faire en lieu d'attendre et ne rien faire wink