Fonctions du line-A

Les fonctions du line-A regroupent des fonctions de base pour le graphisme. De base implique qu'il n'y a pas toutes les fonctions que l'on peut retrouver dans le VDI, et ne remplace donc pas le VDI. Cependant, les fonctions du Line-A sont bien plus rapides.

Pourquoi Fonction Line-A

Au niveau du 68000, il n'existe pas d'opcode associé sur la ligne A (de même pour la ligne F). C'est à dire qu'il n'existe aucune instruction de type $Axxx en langage machine (x sur 4 bits pouvant prendre ici une valeur entre 0 et F en hexa).

L'utilisation d'une telle commande devrait donc afficher des bombes pour dire "instructions illégales". Mais ce n'est pas le cas, car le vecteur d'exception associé est en effet dérouté sur du code permettant de gérer des fonctions graphiques. Avantage, pas besoin de faire de JSR ou BSR à une fonction, vous codez l'appel à la fonction désirée directement dans l'opcode d'où moins de place occupée en mémoire. Lors du déclenchement du vecteur d'exception sur l'opcode, celui-ci va vérifier l'opcode passé et déclencher la fonction correspondante.

Ces fonctions sont codées sur 16 bits. Les 4 bits les "plus fort" doivent donc être égaux à A. pour déclencher une exception n° 10 Line-A (vecteur 28). Les quatre bits suivants sont à 0. La partie basse sur 8 bits correspondant à la fonction à déclencher. La routine du vecteur pourra ainsi déclencher le code correspondant à la fonction.

Il y a en tous 16 fonctions disponibles:
0 = Initialization: Permet de récupérer des adresses pour les fonctions Line A
1 = Put pixel: Affiche ou efface un point à l'écran
2 = Get pixel: Récupère l'index de couleur utilisé pour un point
3 = Line: Dessine une ligne à l'écran
4 = Horizontal line: Dessine une ligne horizontale à l'écran
5 = Filled rectangle: Dessine un rectangle rempli
6 = Line-by-line filled polygon: Dessine une ligne d'un polygone rempli
7 = BitBlt: Transfert d'un bloc de bits
8 = TextBlt: Affichage d'un texte
9 = Show mouse: Affiche le curseur de la souris
A = Hide mouse: Désactive le curseur de la souris
B = Transform mouse: Change le dessin du curseur de la souris
C = Undraw sprite: Efface un sprite de l'écran
D = Draw sprite: Dessine un sprite à l'écran
E = Copy raster form
F = Contour FILL

Cliquez sur ce lien pour le détail des fonctions

Pour utiliser ces fonctions, il faut bien évidemment pouvoir passer des paramètres. Voici donc un tableau récapitulant toutes les variables utilisées par ces fonctions:

Ce tableau représente le tableau retourné par le line-A lors de son initialisation (Fonction $A000). La colonne "position" est donc la position de l'élément dans le tableau qui contient l'adresse des variables utilisées par le line-A.

Position (hexa)
Nom
Taille
Libellé
00
V_planes
Mot
Nombre de niveau de couleurs
02
V_lin_wr
Mot
Nombre d'octets par ligne
04
CONTRL
Mot Long
Adresse du tableau CONTRL
08
INTIN
Mot Long
Adresse du tableau INTIN
0C
PTSIN
Mot Long
Adresse du tableau PTSIN
10
INTOUT
Mot Long
Adresse du tableau INTOUT
14
PTSOUT
Mot Long
Adresse du tableau PTSOUT
18
_FG_BP_1
Mot
Bit 0 de l'index de couleur
1A
_FG_BP_2
Mot
Bit 1 de l'index de couleur
1C
_FG_BP_3
Mot
Bit 2 de l'index de couleur
1E
_FG_BP_4
Mot
Bit 3 de l'index de couleur
20
_LSTLIN
Mot
-1
22
_LN_MASK
Mot
Motif de la ligne (Voir Line A fonction 3)
24
_WRT_MODE
Mot
Mode affichage VDI
26
_X1
Mot
Coordonnée X1
28
_Y1
Mot
Coordonnée Y1
2A
_X2
Mot
Coordonnée X2
2C
_Y2
Mot
Coordonnée Y2
2E
_patptr
Mot Long
Adresse du motif de remplissage (Voir fonction 4 du line A)
32
_patmsk
Mot Long
Adresse du masque de remplissage (Voir fonction 4 du line A)
34
_multifill
Mot
Flag motifs de remplissage Polychrome:
=0 pour un motif monochrome
=1 pour un motif polychrome
36
_CLIP
Mot
Flag pour activation/désactivation du clipping
0 pour clipping actif
1 pour clipping désactivé
38
_XMN_CLIP
Mot
Coordonnée x du coin supérieur gauche de la fenêtre de clipping
3A
_YMN_CLIP
Mot
Coordonnée y du coin supérieur gauche de la fenêtre de clipping
3C
_XMX_CLIP
Mot
Coordonnée x du coin supérieur droit de la fenêtre de clipping
3E
_YMX_CLIP
Mot
Coordonnée y du coin supérieur droit de la fenêtre de clipping
40
_XACC_DDA
Mot
= 8000 pour la foncion 8 du line A
42
_DDA_INC
Mot
Facteur d'agrandissement/Réduction
FFFF pour l'agrandissement
44
_T_SCLSTS
Mot
= 1 : agrandissement
= 0 : réduction
46
_MONO
Mot
= 0 pour une police de caractères proportionnels ou largeur des caractères qui
 se modifie pour une écriture italique/gras
= 1 pas de proportionnalité
48
_sourceX
Mot
Valeur de l'offset horizontal pour les caractères
4A
_sourceY
Mot
= 0 (coordonnées de la source pour les fonctions raster)
4C
_destX
Mot
Coordonnée X du caractère
4E
_destY
Mot
Coordonnée Y du caractère
50
_DELX
Mot
Largeur du caractère
52
_DELY
Mot
Hauteur du caractère
54
_FBASE
Mot Long
Adresse des doonées sur les fontes
58
_FWIDTH
Mot
Largeur du rectangle utilisé pour les caractères
5A
_STYLE
Mot
Style VDI
5C
_LITEMASK
Mot
Masque pour les différences d'intensité
5E
_SKEWMASK
Mot
Masque pour écriture italique
60
_WEIGHT
Mot
Valeur de décalage pour écriture large
62
_R_OFF
Mot
Offset pour écriture italique
64
_L_OFF
Mot
Offset pour écriture italique
66
_SCALE
Mot
Agrandissement (0 => pas d'agrandissement)
68
_CHUP
Mot
Angle de rotation des caractères en 1/10 de degré
6A
_TEXT_FG
Mot
Couleur actuelle du texte
6C
_scrtchp
Mot Long
Adresse du tampon de texte pour les effets
70
_scrpt2
Mot
Offset sur le tampon d'agrandissement
72
_TEXT_BG
Mot
Couleur arrière plan du texte
74
_COPYTRAN
Mot
 
       

...