Le document s'adresse à des programmeurs déjà expérimentés et/ou des développeurs d'émulateur confrontés à l'indigence des documentations techniques des sociétés qui ont produit ces circuits.Il contient également de nombreux chapitres beaucoup moins techniques pour permettre à tous d'accéder à des informations pertinentes qui dépassent le cadre des circuits du CPC. SOMMAIRE:
- 1 PRÉAMBULE
- 2 HISTORIQUE
- 3 GÉNÉRALITÉS
- 3.1 TERMINOLOGIE
- 3.2 SIGLES
- 4 CRTC & CPC
- 4.1 GÉNÉRALITÉS
- 4.2 NUMÉROTATION DES CRTC
- 4.3 VUE GENERALE DES REGISTRES
- 4.4 ACCÈS AU CRTC
- 4.4.1 GÉNÉRALITÉS
- 4.4.2 INSTRUCTIONS Z80A
- 4.4.3 DELAIS D'ACCES
- 4.4.4 DISSECTION DE OUTs
- 5 LES AUTRES CIRCUITS
- 5.1 ACCÈS
- 5.2 CPC + / GX 4000
- 6 CONSTRUCTION D'UN FRAME
- 6.1 LOGIQUE GENERALE .
- 6.1.1 COMPTAGE DES CARACTERES
- 6.1.2 SYNCHRONISATIONS
- 6.1.3 AFFICHAGE DES CARACTERES
- 6.1.4 POINTEUR VIDEO
- 6.1.5 REPRÉSENTATION SCHÉMATIQUE
- 7 SYNCHRONISATION
- 7.1 PRINCIPES
- 7.2 SYNCHRONISATION VSYNC
- 7.3 FAKE VSYNC
- 8 AFFICHAGE, Z80A & GATE ARRAY
- 8.1 INSTRUCTION LD(HL),reg8 (2 µsec)
- 8.2 INSTRUCTION LD (aaaa),HL (5 µsec)
- 8.3 INSTRUCTION PUSH reg16 (4 µsec)
- 9 GATE ARRAY
- 9.1 PIXELISATION
- 9.2 INKERISATION
- 9.2.1 BORDER ET MODE 2
- 9.2.2 VITESSE DE PRISE EN COMPTE
- 9.3 MODE GRAPHIQUE
- 9.3.1 GÉNÉRALITÉS
- 9.3.2 CRTC 0, 1, 2
- 9.3.3 CRTC 3, 4
- 9.3.4 MODE SPLITTING
- 10 COMPTAGES : REGISTRE R9
- 10.1 GÉNÉRALITÉS
- 10.2 DELAIS DE PRISE EN COMPTE
- 10.3 REGLES DE COMPTAGE
- 10.3.1 CRTC 0
- 10.3.2 CRTC 1
- 10.3.3 CRTC 2
- 10.3.4 CRTC 3, 4
- 11 COMPTAGES : REGISTRE R5
- 11.1 GÉNÉRALITÉS
- 11.2 COMPTAGE EN AJUSTEMENT VERTICAL
- 11.2.1 GÉNÉRALITÉS
- 11.2.2 CRTC 0
- 11.2.3 CRTC 1, 2
- 11.2.4 CRTC 1
- 11.2.5 CRTC 2
- 11.2.6 CRTC 3, 4
- 11.3 MISE À JOUR DE R5 DURANT UN AJUSTEMENT
- 11.3.1 CRTC 0, 2
- 11.3.2 CRTC 1
- 11.3.3 CRTC 3, 4
- 11.4 MISE À JOUR DE R5 AVANT UN AJUSTEMENT
- 11.4.1 CRTC 1, 2, 3, 4
- 11.4.2 CRTC 0
- 11.5 VSYNC EN AJUSTEMENT VERTICAL .
- 11.5.1 CRTC 0, 1, 2
- 11.5.2 CRTC 0
- 11.5.3 CRTC 2
- 11.5.4 CRTC 3, 4
- 11.6 RUPTURE FOR DUMMIES (R.F.D.) SUR CRTC 1 .
- 11.6.1 RFD ET PARITÉ
- 11.6.2 IVM ON/OFF
- 11.6.3 R.F.D. EN BREF
- 11.6.4 R.F.D. ET AUTRES CRTCs
- 11.7 R6 ET AJUSTEMENT VERTICAL
- 11.8 AJUSTEMENT DURANT L'INTERLACE
- 11.9 LIGNE D'AJUSTEMENT INTERLACE
- 12 COMPTAGES : REGISTRE R4
- 12.1 GÉNÉRALITÉS
- 12.2 CRTC 0
- 12.2.1 CAS PRATIQUE : RUPTURE LIGNE À LIGNE (R.L.A.L.)
- 12.3 CRTC 1
- 12.4 CRTC 2
- 12.4.1 CONCEPT DE DERNIÈRE LIGNE
- 12.4.2 CAS PRATIQUE : RUPTURE LIGNE À LIGNE (R.L.A.L.)
- 12.5 CRTC 3, 4
- 13 COMPTAGES : REGISTRE R0
- 13.1 GÉNÉRALITÉS
- 13.2 CRTC 0
- 13.2.1 LES 3 PREMIERES MICROSECONDES
- 13.2.2 GEL DE VSYNC
- 13.2.3 GEL DE LIGNE ADDITIONNELLE
- 13.2.4 GEL DE C9
- 13.2.5 CAS PRATIQUE : R0=1
- 13.2.6 CAS PRATIQUE : R0=0
- 13.2.7 CAS PRATIQUE : RUPTURE VERTICALE LAST LINE (R.V.L.L.)
- 13.3 CRTC 1
- 13.3.1 CAS PRATIQUE : RUPTURE VERTICALE INVISIBLE (R.V.I.)
- 13.4 CRTC 2
- 13.4.1 CAS PRATIQUE : RUPTURE VERTICALE LAST LINE (R.V.L.L.)
- 13.5 CRTC 3, 4
- 13.6 MISE À JOUR DE R0
- 13.6.1 CRTC 0, 2 : CHRONOGRAMME
- 13.6.2 CRTC 1 : CHRONOGRAMME
- 13.6.3 CRTC 3, 4 : CHRONOGRAMME
- 13.7 CAS PARTICULIERS
- 13.7.1 CRTC 1
- 13.7.2 CRTC 0
- 13.8 OFFSET SELON C0 .
- 13.8.1 ECRANS de 4 µsec (R0=3)
- 13.8.2 ECRANS de 2 µsec (R0=1)
- 13.8.3 ECRANS de 1 µsec (R0=0)
- 14 SYNCHROS : REGISTRE R3
- 14.1 GÉNÉRALITÉS
- 14.2 LONGUEUR VSYNC
- 14.3 HSYNC : GATE ARRAY VERSUS CRTC
- 14.4 HSYNC ET POSITION ECRAN
- 14.5 MISE À JOUR DE R3 DURANT LA HSYNC
- 14.5.1 CRTC 0, 2
- 14.5.2 CRTC 1
- 14.5.3 CRTC 3, 4
- 14.5.4 ZOOM SUR R3.JIT
- 14.6 ABSENCE DE HSYNC
- 14.7 DEMARRAGE HSYNC
- 14.7.1 CRTC 0, 1, 2
- 14.7.2 CRTC 3, 4
- 14.8 HSYNC ET INTERRUPTIONS
- 14.9 SCHÉMATIQUES HSYNC
- 15 SYNCHROS : REGISTRE R2
- 15.1 GÉNÉRALITÉS
- 15.2 HSYNC LORSQUE R2 EST PRÉDÉFINI .
- 15.2.1 CRTC 0, 1, 2
- 15.2.2 CRTC 3, 4
- 15.3 MISE À JOUR DE R2 DURANT LA HSYNC
- 15.3.1 GÉNÉRALITÉS
- 15.3.2 HSYNC INFINIE
- 15.3.3 CRTC 0
- 15.3.4 CRTC 1, 2
- 15.3.5 CRTC 3, 4
- 15.4 PRISE EN COMPTE VSYNC DURANT LA HSYNC
- 15.4.1 GÉNÉRALITÉS
- 15.4.2 CRTC 0, 1
- 15.4.3 CRTC 3, 4
- 15.4.4 CRTC 2
- 15.5 DISPEN ET HSYNC
- 15.5.1 CRTC 0, 1, 3, 4
- 15.5.2 CRTC 2
- 15.6 CRTC 2 ET HSYNC
- 15.7 LE BON MOMENT
- 15.7.1 PASSER DE R2=46 À R2=50 SUR DES LIGNES DE 64 µSEC
- 15.7.2 PASSER de R2=50 À R2=46 SUR DES LIGNES DE 64 µSEC
- 16 SYNCHROS : REGISTRE R7
- 16.1 GÉNÉRALITÉS
- 16.2 VSYNC-CRTC VERSUS VSYNC-GATE ARRAY
- 16.2.1 AFFICHAGE DE LA ZONE VSYNC
- 16.2.2 SIGNAL C-SYNC MONITEUR
- 16.2.3 GESTION DE C-SYNC
- 16.2.4 TOLÉRANCES
- 16.2.5 INTÉRACTIONS ENTRE CRTC ET GATE ARRAY
- 16.3 PROTECTION DE VSYNC
- 16.4 CONDITIONS DE PRISE EN COMPTE
- 16.4.1 CRTC 0
- 16.4.2 CRTC 1
- 16.4.3 CRTC 2
- 16.4.4 CRTC 3, 4
- 16.5 VSYNC DIFFÉRÉE .
- 16.5.1 CRTC 0
- 16.5.2 CRTC 1
- 16.5.3 CRTC 2
- 16.5.4 CRTC 3 & 4
- 16.6 VSYNC SANS LIMITES !
- 16.7 LE BON MOMENT
- 17 AFFICHAGE : REGISTRE R1
- 17.1 GÉNÉRALITÉS
- 17.2 AFFICHAGES SELON R1
- 17.2.1 AFFICHAGE AVEC R1 <= R0
- 17.2.2 AFFFICHAGE AVEC R1 > R0
- 17.3 MISE JOUR DYNAMIQUE DE R1
- 17.4 VMA'/VMA LORSQUE C4=0
- 17.4.1 CRTC 0, 3, 4
- 17.4.2 CRTC 1
- 17.4.3 CRTC 2
- 17.5 PRISE EN COMPTE R1=0 .
- 17.5.1 CRTC 0, 1, 2
- 17.5.2 CRTC 3, 4
- 17.6 BORDER INTERLIGNE
- 17.6.1 R1=R0 ET C0=R0
- 17.6.2 R1>R0 ET C0=R0
- 18 AFFICHAGE : REGISTRE R6
- 18.1 GÉNÉRALITÉS
- 18.2 DÉLAIS ET PRIORITÉS DE BORDER R6
- 18.2.1 GÉNÉRALITÉS
- 18.2.2 CRTC 0, 2
- 18.2.3 CRTC 1
- 18.2.4 CRTC 3, 4
- 18.3 CONFLITS R6
- 18.3.1 GÉNÉRALITÉS
- 18.3.2 CRTC 0, 2
- 18.3.3 CRTC 1
- 18.3.4 CRTC 3, 4
- 19 AFFICHAGE : REGISTRE R8
- 19.1 GÉNÉRALITÉS
- 19.2 FONCTIONS « SKEW-DISPTMG »
- 19.2.1 BORDER ON
- 19.2.2 BORDER OFF
- 19.2.3 BORDER DELAI +1 / +2
- 19.2.4 ABSENCE DE CONDITION C0=R1
- 19.2.5 DÉSINTÉGRATION DU BORDER SUR CRTC 0
- 19.3 FONCTIONS INTERLACE
- 19.3.1 GÉNÉRALITÉS
- 19.3.2 LES DEUX MODES INTERLACE
- 19.3.3 RESTRICTIONS
- 19.3.4 FONCTION MAL AIMÉE
- 19.4 PROGRAMMATION VERTICALE EN INTERLACE
- 19.4.1 CRTC 0
- 19.4.2 CRTC 1
- 19.4.3 CRTC 2
- 19.4.4 CRTC 3 & 4
- 19.5 PARITÉ
- 19.5.1 GÉNÉRALITÉS
- 19.5.2 CRTC 0
- 19.5.3 CRTC 1
- 19.5.4 CRTC 2
- 19.5.5 CRTC 3 & 4
- 19.6 LIGNE ADDITIONNELLE INTERLACE
- 19.6.1 CRTC 0
- 19.6.2 CRTC 1
- 19.6.3 CRTC 2
- 19.6.4 CRTC 3 & 4
- 19.7 MID-VSYNC
- 19.7.1 GÉNÉRALITÉS
- 19.7.2 CRTC 0, 1, 2
- 19.7.3 CRTC 3, 4
- 19.8 COMPTAGES EN INTERLACE VIDEOMODE
- 19.8.1 CRTC 0
- 19.8.2 CRTC 1
- 19.8.3 CRTC 2
- 19.8.4 CRTC 3, 4
- 20 POINTEUR VIDEO:REGISTRES R12/R13
- 20.1 GÉNÉRALITÉS
- 20.2 CALCUL DU POINTEUR VIDÉO
- 20.3 CONDITIONS DE MISE À JOUR
- 20.3.1 CRTC 0
- 20.3.2 CRTC 1
- 20.3.3 CRTC 2
- 20.3.4 CRTC 3 & 4
- 20.4 DELAIS DE PRISE EN COMPTE
- 20.5 OVERSCAN-BITS
- 21 REGISTRES EN LECTURE.
- 21.1 GÉNÉRALITÉS
- 21.2 LECTURE DU CONTENU DES REGISTRES
- 21.2.1 CRTC 0
- 21.2.2 CRTC 1, 2
- 21.2.3 CRTC 3, 4
- 21.3 LECTURE DES STATUS
- 21.3.1 GÉNÉRALITÉS
- 21.3.2 CRTC 0, 2
- 21.3.3 CRTC 1
- 21.3.4 CRTC 3, 4
- 21.4 DUMMY REGISTER
- 22 AUTRES REGISTRES CRTC
- 23 FULLSCREEN & CENTRAGE
- 23.1 PRÉAMBULE
- 23.2 FULLSCREEN HORIZONTAL
- 23.3 FULLSCREEN VERTICAL
- 24 TRUCS ET ASTUCES
- 24.1 MISE À JOUR DE R12/R13
- 24.2 UTILISATION COMMUNE DE REGISTRE(S)
- 24.3 ATTENTE DE VSYNC
- 24.4 VALEUR 0
- 24.5 OUTI/OUTD ET REGISTRE D'ETAT
- 24.6 CODE AUTOMODIFIÉ
- 24.7 ITÉRATIONS ET CODE DÉROULÉ
- 24.8 BRANCHEMENT INCONDITIONNELS
- 24.9 TRAITEMENTS PAR PAGES
- 24.10 TRUCS EN VRAC
- 24.10.1 BOUCLES
- 24.10.2 CALCUL DU POINTEUR VIDEO
- 24.10.3 POSITIONNEMENT DES FLAGS
- 24.10.4 PLUTÔT QUE
- 25 UNE BRÈVE HISTOIRE DE TEMPS FIXE
- 25.1 INTRODUCTION
- 25.2 METHODES
- 25.3 TEMPS FIXE ET INTERRUPTIONS
- 25.4 OUTILS COMPENSATOIRES
- 25.5 LIBÉREZ LE TEMPS FIXE !
- 25.6 DU TEMPS LIBRE AU TEMPS FIXE
- 25.7 PERDRE DU TEMPS
- 26 DURÉES INSTRUCTIONS Z80A SUR CPC
- 27 INTERRUPTIONS
- 27.1 GÉNÉRALITÉS
- 27.2 GESTION DU COMPTEUR R52
- 27.3 CONDITIONS DE DÉCLENCHEMENT
- 27.3.1 ARMEMENT LORSQUE R52 REBOUCLE A 0
- 27.3.2 ARMEMENT PENDANT LA VSYNC
- 27.3.3 Z80A ET INTERRUPTIONS
- 27.4 INTERRUPTIONS MODE 1
- 27.5 INTERRUPTIONS MODE 2
- 27.6 CRTC & INTERRUPTIONS
- 27.6.1 GÉNÉRALITÉS
- 27.6.2 CRTC 0, 1, 2
- 27.6.3 CRTC 0, 1
- 27.6.4 CRTC 2
- 27.6.5 CRTC 3, 4
- 27.6.6 MISE EN PERSPECTIVE
- 27.7 MÉNAGE À TROIS
- 27.7.1 TRIPOTAGE DE R52
- 27.7.2 FIABILITE DES INTERRUPTIONS
- 28 IDENTIFICATION CRTC
- 28.1.1 VIA LE DEBORDEMENT DE C4 ET/OU C9
- 28.1.2 VIA LA GESTION VSYNC DURANT LA HSYNC
- 28.1.3 VIA LA PRISE EN COMPTE DE LA VSYNC
- 28.1.4 VIA LA LONGUEUR DE LA VSYNC
- 28.1.5 VIA LA LONGUEUR DE LA HSYNC
- 28.1.6 VIA DU BORDER, VISUELLEMENT
- 28.1.7 VIA LE MODE INTERLACE
- 28.1.8 VIA LE REGISTRE DE STATUS &BE00
- 28.1.9 VIA LE REGISTRE DE LECTURE &BF00
- 28.1.10 VIA LES REGISTRE DE STATUS R10/R11
- 29 IDENTIFICATION CPC
- 29.1 MÉTHODES D'IDENTIFICATION
- 29.1.1 ACTIVATION DES FONCTIONS ÉTENDUES
- 29.1.2 BUG PPI PORT C
- 29.1.3 BUG PPI PORT B
|