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 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 RUPTURE FOR DUMMIES (R.F.D.) SUR CRTC 1
- 11.5.1 RFD ET PARITÉ
- 11.5.2 IVM ON/OFF
- 11.5.3 R.F.D. EN BREF
- 11.5.4 R.F.D. ET AUTRES CRTCs
- 11.6 R6 ET AJUSTEMENT VERTICAL
- 11.7 AJUSTEMENT DURANT L'INTERLACE
- 11.8 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 FULLSCREEN & CENTRAGE
- 22.1 PRÉAMBULE
- 22.2 FULLSCREEN HORIZONTAL
- 22.3 FULLSCREEN VERTICAL
- 23 TRUCS ET ASTUCES
- 23.1 MISE À JOUR DE R12/R13
- 23.2 UTILISATION COMMUNE DE REGISTRE(S)
- 23.3 ATTENTE DE VSYNC
- 23.4 VALEUR 0
- 23.5 OUTI/OUTD ET REGISTRE D'ETAT
- 23.6 CODE AUTOMODIFIÉ
- 23.7 ITÉRATIONS ET CODE DÉROULÉ
- 23.8 BRANCHEMENT INCONDITIONNELS
- 23.9 TRAITEMENTS PAR PAGES
- 23.10 TRUCS EN VRAC
- 23.10.1 BOUCLES
- 23.10.2 CALCUL DU POINTEUR VIDEO
- 23.10.3 POSITIONNEMENT DES FLAGS
- 23.10.4 PLUTÔT QUE.
- 24 UNE BRÈVE HISTOIRE DE TEMPS FIXE
- 24.1 INTRODUCTION
- 24.2 METHODES
- 24.3 TEMPS FIXE ET INTERRUPTIONS
- 24.4 OUTILS COMPENSATOIRES
- 24.5 LIBÉREZ LE TEMPS FIXE !
- 24.6 DU TEMPS LIBRE AU TEMPS FIXE.
- 24.7 PERDRE DU TEMPS.
- 25 DURÉES INSTRUCTIONS Z80A SUR CPC
- 26 LD HX/LX,A/B/C/D/E/HX/LX
- 27 LD BC/DE/HL/SP,dd
- 28 LD HX/LX/HY/LY,d
- 29 SBC A, A/B/C/D/E/H/L
- 30 SBC A, HX/LX/HY/LY
- 31 SBC HL,BC/DE/HL/SP
- 32 SET x,A/B/C/D/E/H/L
- 33 OUT (C),A/B/C/D/E/H/L
- 34 POP AF/BC/DE/HL
- 35 SLL A/B/C/D/E/H/L
- 36 PUSH AF/BC/DE/HL
- 37 RES x, A/B/C/D/E/H/L
- 38 SRL A/B/C/D/E/H/L
- 39 SUB A,A/B/C/D/E/H/L
- 40 SUB A, HX/LX/HY/LY
- 41 XOR A,A/B/C/D/E/H/L
- 42 INTERRUPTIONS
- 42.1 GÉNÉRALITÉS
- 42.2 GESTION DU COMPTEUR R52
- 42.3 CONDITIONS DE DÉCLENCHEMENT
- 42.3.1 ARMEMENT SUR R52=0
- 42.3.2 ARMEMENT PENDANT LA VSYNC
- 42.3.3 Z80A ET INTERRUPTIONS
- 42.4 INTERRUPTIONS MODE 1
- 42.5 INTERRUPTIONS MODE 2
- 42.6 CRTC & INTERRUPTIONS.
- 42.6.1 GÉNÉRALITÉS
- 42.6.2 CRTC 0, 1, 2
- 42.6.3 CRTC 0, 1
- 42.6.4 CRTC 2
- 42.6.5 CRTC 3, 4
- 42.6.6 MISE EN PERSPECTIVE
- 42.7 MÉNAGE À TROIS.
- 42.7.1 TRIPOTAGE DE R52.
- 42.7.2 FIABILITE DES INTERRUPTIONS
- 43 IDENTIFICATION CRTC
- 43.1.1 VIA LE DEBORDEMENT DE C4 ET/OU C9
- 43.1.2 VIA LA GESTION VSYNC DURANT LA HSYNC
- 43.1.3 VIA LA PRISE EN COMPTE DE LA VSYNC
- 43.1.4 VIA LA LONGUEUR DE LA VSYNC
- 43.1.5 VIA LA LONGUEUR DE LA HSYNC
- 43.1.6 VIA DU BORDER, VISUELLEMENT
- 43.1.7 VIA LE MODE INTERLACE
- 43.1.8 VIA LE REGISTRE DE STATUS &BE00
- 43.1.9 VIA LE REGISTRE DE LECTURE &BF00
- 43.1.10 VIA LES REGISTRE DE STATUS R10/R11
- 44 IDENTIFICATION CPC
- 44.1 MÉTHODES D'IDENTIFICATION
- 44.1.1 ACTIVATION DES FONCTIONS ÉTENDUES
- 44.1.2 BUG PPI PORT C
- 44.1.3 BUG PPI PORT B.
|