Suite à mon article sur les cartes Chat Mauve sur Apple II, Grouik/FT et moi avons fait des tests sur nos Apple II respectifs afin de coincer les émulateurs qui ne gèreraient pas correctement certains modes.
Du coup, j’ai fait de nouveau des recherches notamment en relisant l’excellent Understanding the Apple IIe de Jim Sather.
Ce bouquin contient absolument tout, et notamment sur la génération du signal vidéo il y a des dizaines de détails lâchés au gré des pages qui, une fois compris, permettent de comprendre les timings des différents signaux. C’est par exemple en partie grâce à ce qu’on a trouvé dans ce livre que Grouik a pu réaliser les démos Mad Effect, Mad Effect #2 ou Mad Effect #3.
Voici les quelques petites choses amusantes qu’on a pu retrouver dans ce livre. La plupart ne sont pas nouvelles, mais finalement très peu connues.
Mixer texte en 80 colonnes et GR/HGR
Normalement, le texte en 80 colonnes n’est sensé fonctionner que lorsque la double résolution est active, ce qui active les modes DGR ou DHGR.
Enfin c’est ce que je croyais, mais en réalité il n’en est rien, la double résolution texte est séparée de la double résolution graphique. Cependant si on active uniquement la double résolution texte, l’accès à la mémoire AUX n’est pas actif et donc seule une colonne sur deux est utilisée.
LDA $C050 !TEXT LDA $C053 MIXED LDA $C056 !HR LDA $C05F AN3 (single-res graphics timing) STA $C00D 80COL (double-res text)
À noter qu’il est (apparemment ?) possible de mixer du GR et du texte 80 colonnes, en tout cas la disquette de démonstration Video-7 semble activer un mode semblable.
Le mode GR chelou
En basse définition GR, lorsqu’on désactive le softswitch AN3, un délai est introduit dans le décodage vidéo ce qui génère des blocs de pixels de taille différente en fonction de leur valeur. Le nombre de couleurs est également réduit.
LDA $C05E !AN3
Les features cachées du HGR
Le même softswitch AN3 permet de changer l’interprétation du HGR.
Par défaut AN3 est activé et les couleurs sont interprétées normalement.
En désactivant AN3 lorsqu’on est en HGR, le rendu va être différent en fonction de la configuration de l’Apple II.
En composite : l’interprétation du bit 7 passe à 1. Comme c’est le bit qui définit le groupe de couleurs des 7 bits restants, cela inverse tous les groupes de couleurs sur l’écran.
En RGB : le mode HGR passe en 280×192 monochrome.
LDA $C05E !AN3
Cette astuce a été utilisée dans Digidream, ce qui permet d’avoir 4 couleurs différentes de logo sur Apple IIe juste avec deux versions de la même image (en HGR1 et HGR2 + activation régulière du switch AN3).
Les modes DHGR des cartes RGB Apple Video-7 & Chat Mauve EVE/Féline/IIc
On ne trouve pour ainsi dire quasiment aucune documentation sur la façon d’activer correctement les modes DHGR des cartes RGB Video-7, EVE, Féline et IIc.
Là aussi j’ai longtemps cru que seul un ou deux modes étaient disponibles, mais en réalité il existe trois modes : noir et blanc, couleur et mixte.
Ces modes existent aussi sur les cartes RGB Apple vendues aux USA (donc la carte Video-7 dont il existe une disquette de démonstration, très pratique pour tester plein de modes alternatifs). Les rares bribes de documentation que l’on trouve ne sont pas très explicites sur la façon de les activer.
Si j’ai bien compris, autant pour la carte EVE il est possible de la programmer directement via des registres intégrés à la carte, autant pour les autres cela n’était pas possible car elles n’ont pas de registre propre.
Il existe cependant une routine dans l’API Arlequin (du Chat Mauve) qui permet de programmer correctement tous les modes DHGR – y compris sur la EVE, pour les modes supportés. (trouvé sur le site de Deckard) :
En déroulant le code pour les cartes Féline et IIc, on se rend compte qu’ils utilisent le soft-switch AN3 et 80COL pour programmer le mode de la carte. Ces cartes ont un registre sur 2 bits qui se met à jour en fonction de la valeur de 80COL qu’on envoie grâce au softswitch AN3.
Comme je pense qu’il s’agit d’un registre qui se remplit en FIFO, ça veut dire qu’il faut systématiquement programmer correctement les 2 bits dans le bon ordre. Il est peut être possible de simplifier la programmation mais dans mes tests ça ne marchait plus systématiquement ensuite.
La routine ci-dessus est générale (et très bonne), mais voici une version compactée pour les 3 modes DHGR, utilisée dans le slideshow du logiciel EXTASIE. Tout fonctionne également sous AppleWin en mode monochrome et semble compatible Apple RGB.
DHGR BW560 (560×192 monochrome)
LDA $C050 !TEXT LDA $C057 HR LDA $C052 !MIXED STA $C00C Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C00C Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C05E Activation DHGR STA $C00D Activation 80COL
DHGR COL140 (140×192 couleur)
LDA $C050 !TEXT LDA $C057 HR LDA $C052 !MIXED STA $C00D Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C00D Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C05E Activation DHGR STA $C00D Activation 80COL (inutile en réalité)
DHGR COL140 mixed (140×192 couleur et 560×192 monochrome)
LDA $C050 !TEXT LDA $C057 HR LDA $C052 !MIXED STA $C00C Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C00D Choix d'une valeur pour 80COL STA $C05E STA $C05F Enregistrement de /80COL STA $C05E Activation DHGR STA $C00D Activation 80COL (inutile en réalité)
Les modes de la carte EVE
Quasiment tous les modes de la carte EVE (décrits ici) ne sont pas documentés.
Le Chat Mauve proposait en effet une API qui permettait de les configurer indirectement. Malheureusement je n’ai ni Apple IIe ni EVE pour faire des tests, donc peut-être un jour ?
I modified a BMP viewer from Arnaud some time ago to add support to the DHGR mode and added the capability of displaying the monochrome mode of 560×192 based on the BMP resolution. The solution ended up being similar to yours. https://github.com/cybernesto/VBMP