La source est ici: http://homepage2.nifty.com/stear/fx890p/fxlcdc.htm
Le FX890P/Z1 utilise un HD66108T pour gérer l'écran. Pour afficher quelque chose, on doit piloter le HD66108. La gestion est un vrai beanz, il faut envoyer des ordres au HD66108T, puis les données, etc.
Le principe: On accède à celui ci à travers l'adresse 0A000:00000. On écrit les ordres et les données à cette adresse. A noter que l'on peut écrire dans tous les octets pairs de cette zone, ça fait la même chose.
Evidement (ça serait trop simple), la VRAM n'est pas lineaire. Du coup, il est compliqué de jongler avec le LCD, on peut partir sur un truc plus simple.
On suppose que l'on a un buffer video qui lui, est lineaire. Les pixels sont stockés bit à bit, regroupés en octets, oeuf corse.
Code : Tout sélectionner
SCREEN DB 800 DUP(?)
Code : Tout sélectionner
;-- PRINT SCREEN --
PRINT:
CLD
MOV AX,0A000H ; Segment du proc LCD
MOV ES,AX ; dans ES
XOR DI,DI ; DI à 0
MOV AL,23H ; Première étape de la configuration du LCD
STOSB ; [ES:DI]<=23H
MOV AL,0B5H ; Deuxième étape
STOSB ;INC=1,WLS=0: c'est les registres du LCD que l'on configure
MOV SI,OFFSET SCREEN
MOV DL,0 ;Y=0
MOV DH,32 ;Hauteur de l'écran
PRLP1:
CALL PRSUB ;Partie gauche de l'écran
DEC SI
ADD DL,32
CALL PRSUB ;Partie droite
SUB DL,31 ;DL+32-31=DL+1
DEC DH
JNZ PRLP1
MOV AL,23H ; ne pas oublier de remettre le
STOSB ; HD66108T
MOV AL,75H ; dans l'etat ou on l'a trouvé
STOSB ;INC=0,WLS=1
MOV AL,20H
STOSB ;DRAM
RET
PRSUB:
MOV AL,21H
STOSB ; On va lui donner les coordonnées X
MOV AL,4
STOSB ;X ADDRESS = 4
MOV AL,22H
STOSB ; puis Y
MOV AL,DL
STOSB ;Y ADDRESS = DL
MOV AL,20H
STOSB ;on va écrire dans le HD66108T
MOV CX,13 ; 13h octets
PRSLP1:
MOVSB ;[ES:DI++]<=[DS:SI++]
PUSH AX ; il faut attendre qu'il ait digéré
PUSH AX
POP AX
POP AX ;WAIT
INC DI ; on écrira l'octet suivant dans [0A000:+2]
LOOP PRSLP1
INC DI
RET
Code : Tout sélectionner
ORG 2000H
JMP MAIN:
SCREEN DB 800 DUP(?)
MAIN:
CALL PRINT
IRET
PRINT:
...
...
... le code de ci dessus
...
Code : Tout sélectionner
10 CLS
20 FOR I=0 TO 20:POKE &H2003+I,85:NEXT I
30 CALL &H2000
Exercice: à partir de ça, écrire l'équivalent de l'instruction GPRINT des Sharps, dans le buffer.
Je cherche à savoir comment on lit dans le HD66108T pour sauvegarder l'écran.




