10-15-5 Les dialogues
Avant d’afficher un message blanc sur fond vert, on affiche un rectangle vert entouré de blanc. Ceci permet de donner une meilleure présentation aux textes. Cependant, cette boite possède ici une taille et un emplacement fixe à l’écran, mais il n’en faudrait pas beaucoup plus pour paramétrer cette taille et sa position. Le rectangle n’est pas créé par interruption, mais avec l’aide du tableau des adresses de ligne écran. HL commence le pointage de la ligne 87 dans le tableau de ligne (octet LIGNES + 174). Le compteur C permet ensuite de dessiner 11 lignes de la manière suivante :
2 |
1 |
1 |
1 |
1 x &78 |
1 |
1 |
1 |
1 |
33 x &F0 |
1 |
1 |
1 |
2 |
1 x &E1 |
Pour compléter le tout, on dessine
ensuite une ligne blanche au-dessus et en-dessous.
BOITE PUSH AF
; Sauvegarde des registres généraux
PUSH BC
PUSH DE
PUSH HL
LD HL,LIGNES + 174 ; HL pointe la
ligne 87
LD BC,&210B
BOITE1 PUSH HL
LD E,(HL)
INC HL
LD D,(HL) ; DE =
adresse écran de la ligne
LD HL,22 ;
colonne texte 11
ADD HL,DE
LD (HL),&78 ; Blanc
à gauche de la boite
INC HL
BOITE2 LD (HL),&F0 ;
Remplissage de vert
INC HL
DJNZ BOITE2
LD (HL),&E1 ; Blanc
à droite de la boite
LD B,&21
POP HL
INC HL
INC HL
DEC C
JR NZ,BOITE1
LD HL,&F336 ; HL =
ligne 86, octet 11
LD DE,&CBD6 ; DE =
ligne 97, octet 11
LD B,&23
LD A,&0F
BOITE3 LD (HL),A ;
ligne blanche / fond vert en 86
LD (DE),A ;
ligne blanche / fond vert en 97
INC HL
INC DE
DJNZ BOITE3
POP HL
; Restauration des registres
POP DE
POP BC
POP AF
RET
Pour finir, l’affichage des textes
se fait avec la fameuse fonction étudiée depuis la partie 7. On initialise
quand même les couleurs d’encre et de papier.
PRINTF PUSH AF ; sauvegarde de AF et HL
PUSH HL
LD A,2 ; PEN 2
(blanc)
CALL &BB90
LD A,1 ; PAPER 1 (vert)
CALL &BB96
POP HL ; HL pointe le texte à écrire
PRINT1 LD A,(HL) ; A <-
caractère pointé pas HL.
OR A ; A <- A OU A (détection de 0)
JR Z,PRINT2 ; Si A=0 =>
PRINT2
CALL &BB5A ; vecteur
d'affichage d'un caractère
INC HL ; HL pointe le caractère suivant
JP PRINT1 ; revient à
PRINT1
PRINT2 POP AF ; AF
restitué
RET ; Retour de sous-programme
TEXTE1 DB "GAGNE !",0 ; Textes de
fin de partie
TEXTE2 DB "MEILLEUR TEMPS !",0
TEXTE3 DB "PERDU !",0
TEXTE4 DB "A BIENTOT !",0