Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : Assembleur - caractéristiques et utilisation de l'ECS
(Article écrit par Roméo Rapido et extrait d'A-News (Amiga News) - mai 1990)
|
|
Comme vous le savez peut-être déjà, le nouveau jeu de puces (ECS) se compose essentiellement de Super Agnus et
Super Denise. La première caractéristique de ces nouveaux circuits est de permettre d'avoir 1 Mo de
mémoire Chip (mémoire vidéo entre autres). Bien entendu, à cause de ces nouvelles possibilités, il a fallu
modifier certains registres de la machine pour étendre leurs possibilités et même créer de nouveaux registres,
le tout en gardant bien évidemment la compatibilité avec les anciens circuits. Cette compatibilité est
ascendante ce qui veut dire que ce qui marchera avec les nouveaux circuits ne marchera pas forcément avec
les anciens, à vous de choisir, compatibilité ou nouvelles possibilités.
Nouvelles possibilités
Tout d'abord, les nouvelles possibilités de ces circuits en vrac :
- Blits de 32000x32000 pixels au lieu de 1024x1024.
- Nouveau mode Super Hi-Res en 1280x512 et deux plans de bits.
- Mode Productivity 640x480 en deux plans de bits non entralacés.
Ce dernier mode nécessite un moniteur multisynchro et est semblable au mode "VGA 3 standard 8514/A"
pour ceux à qui ce doux nom évoque quelque chose.
En ce qui concerne le Kickstart 1.4, il sera utilisable par les Amiga 1000 qui ne peuvent pas recevoir
l'ECS et par les Amiga 500 et 2000, même s'ils ne sont pas complètement équipés, l'équipement se constituant
de Super Agnus, Super Denise et d'un moniteur multisynchro ou bisynchro.
De plus, il existe un "device" qui permet de travailler en niveaux de gris avec un moniteur A2024
et ceci jusqu'à des résolutions de 1008x1024. Ce dernier mode est réalisé logiciellement
côté Amiga et matériellement côté moniteur. Il ne nécessite donc pas l'ECS. Par contre,
il faut les bibliothèques du Kickstart 1.4. Il sera donc utilisable par les millistes moyennant
l'achat d'un moniteur A2024. En fait, il s'agit de la juxtaposition de quatre écrans haute
résolution entrelacée qui est réalisée par le moniteur.
Un dernier détail : il est bien évident que tous ces modes ne peuvent pas coexister comme les modes
d'affichage actuels, impossible d'avoir deux écrans dont un en mode Productivity car il faudrait
deux fréquences de balayage interchangeables en plein milieu d'écran et cela instantanément,
ce qui est loin d'être le cas sur un moniteur. Ceci est aussi valable pour le moniteur A2024.
Dernière nouveauté de ces circuits, des possibilités d'incrustation de l'image sur des couleurs
autres que la couleur 0, pour le plus grand bonheur de nos amis vidéastes.
En ce qui concerne Agnus, il a "le pouvoir" de réaliser des blits de 32768 pixels par 32768 lignes.
Petit rappel pour ceux qui l'ignoreraient encore, la taille d'un blit est indiquée dans le registre
BLTSIZE et c'est l'écriture de sa valeur qui lance le DMA. Les bits 0 à 5 indiquent le nombre de
mots à transférer, ce qui représente un maximum de 1024 pixels, quant au 10 bits restants ils permettent
de coder le nombre de lignes entre 0 et 1023.
L'initiation de ce registre se fait en général de la façon suivante :
hauteur_du_blit << 6 + largeur_du_blit >> 4
...avec hauteur et largeur en pixels.
Il est donc impossible de réaliser des blits de taille supérieure à 1024x1024 avec l'ancien Agnus ;
c'est pour cela qu'il a été créé deux nouveaux registres, BLTSIZV et BLTSVH. Le premier possède
15 bits significatifs qui permettent de demander 32768 lignes au maximum et le deuxième 10 bits ce
qui permet de demander un blit de 2048 mots de 16 bits soit bien 32768 pixels. Il faut d'abord initialiser
BLTSIZV puis c'est l'initialisation de BLTSLZH qui lance le DMA.
BLTSIZE
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
V9 V8 V7 V6 V5 V4 V3 V2 V1 V0 H5 H4 H3 H2 H1 H0
BLTSIZV
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 V14 V13 V12 V11 V10 V9 V8 V7 V6 V5 V4 V3 V2 V1 VO
BLTSIZH
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0 0 0 0 0 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1 H0
Dernier détail : les adresses de ces deux nouveaux registres : BLTSIZV $05C et BLTSIZV $05E, ceci étant
bien sûr leur position relative à l'adresse de base des puces spécialisées.
Utilisation
Pour utiliser ces nouvelles possibilités en gardant la compatibilité, il vous faut savoir à quel circuit
vous avez affaire. Il suffit pour cela de tester le registre VPOSR ($004).
VPOSR
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
LOF 16 15 14 13 12 11 10 LOL -- -- -- -- V10 V09 V08
Les bits 10 à 16 indiquent de quel circuit il s'agit :
- 10 - NTSC Agnus 8361 ou 8370.
- 00 - PAL Agnus 8367 ou 8371.
- 20 - Super Agnus 8368 ou 8372 programmé en PAL.
- 30 - Super Agnus 8368 ou 8372 programmé en NTSC.
De même, en $07C se trouve le registre "DENISEID" qui contient $FC dans ces 8 bits de poids
faible, attention tout de même car ce registre n'existe que sur Super Denise (8373) et
pas sur la Denise originale (8362).
Toujours dans Denise, vous pouvez utiliser le mode Super HiRes qui permet d'avoir une résolution
horizontale de 1280 pixels sans moniteur multisynchro. En basse résolution, nous avons 6 plans de bits
(64 couleurs) avec des pixels à 140 ns, en haute à 70ns nous n'avons plus que 4 plans de bits (16 couleurs)
mais la palette est divisée par deux à cause du DMA qui ne peut pas suivre. Et bien avec le mode Super Hires,
pixels à 35 ns, nous disposons de 2 plans de bits (4 couleurs).
A noter qu'ici la palette ne fait pas 4096 couleurs mais seulement 64. Je vous expliquerai, quand
j'aurai une Super Denise à tester, la gestion de la palette car apparemment ce n'est pas de la
tarte. Bien entendu, vous pouvez utiliser le mode entrelacé, ce qui permet d'avoir un écran de 1280x512,
qui peut être intéressant pour la PAO. A titre indicatif, voici les modifications apportées à BPLCON0 :
- 15 - HIRES (mettre à zéro si mode Super HiRes).
- 14 - BPU2.
- 13 - BPU1 (nombre de plans de bits 1 ou 2 pour ce mode).
- 12 - BPU0.
- 11 - HAM (incompatible dans ce mode).
- 10 - DBLPF (compatible avec le mode Super Hires).
- 09 - COLOR (couleur ou monochrome, toujours à 1).
- 08 - GAUD (genlock audio).
- 07 - x (inutilisé).
- 06 - SHRES (mode Super HiRes).
- 05 - x.
- 04 - x.
- 03 - LPEN (crayon optique).
- 02 - LACE (entrelacement compatible avec le mode Super HiRes).
- 01 - ERSY (synchronisation externe).
- 00 - x.
Vous avez bien sûr tous entendu parler du fameux mode Productivity. Et bien, en fait, il s'agit d'un
mode 640x480 en non entrelacé en 4 couleurs parmi 64 (tiens cela me rappelle quelque chose !) mais
il nécessite de posséder un moniteur multisynchro donc je ne m'étendrai pas davantage sur ce
mode particulier.
Ces deux modes disposent de sprites en 70 ns (haute résolution) contrairement aux sprites classiques
qui sont en 140 ns (basse résolution). Bien entendu, les registres SPRxPOS et SPRxCTL ont été modifiés
pour prendre en compte ces nouvelles possibilités. De même, il a été créé une trentaine de nouveaux
registres (aussi bien dans Denise que Agnus) pour pouvoir exploiter les nouvelles possibilités de
l'ECS. Les anciens registres qui ont été modifiées gardent tout de même la compatibilité avec les anciens
composants bien sûr.
Bon, maintenant voyons ce qu'il en est du côté de la bibliothèque graphique. Agréable surprise, toutes
les anciennes fonctions ont été modifiées et tiennent compte de la présence ou non de l'ESC et permettent,
ou ne permettent pas, l'utilisation des nouveaux modes d'affichage. Pour l'utilisation du mode Productivity,
il a été ajouté deux fonctions, OpenMonitor et CloseMonitor qui permettent de doubler la fréquence du
balayage vidéo, moniteur multi ou bisynchro obligatoire. Quant à Intuition, elle a été mise au goût
du jour et doit permettre d'utiliser les nouveaux modes de la même façon que les modes standard.
Voilà, ce sera tout pour cette fois, les plus chanceux d'entre vous, ceux qui possèdent déjà un Super
Agnus, pourront déjà s'initier au joies des blits de 32000x32000 pixels en attendant la
commercialisation de Super Denise.
|