Il file Xconfig "Table of Video Modes" contiene righe di numeri, essendo ogni riga una completa specificazione di una modalità di operazione X-server. I campi sono raggruppati in quattro sezioni, la sezione del nome, la sezione della frequenza di clock, la sezione orizzontale, e la sezione verticale.
La sezione del nome contiene un campo, il nome della modalità video specificata nel resto della riga. Questo nome è riferito nella riga "Modes" della sezione Graphics Driver Setup nel file Xconfig. Il campo nome può essere omesso se il nome di una riga precedente è lo stesso.
La sezione della frequenza di clock contiene solo il campo della frequenza (che noi abbiamo chiamato DCF) della riga modalità video. Il valore di questo campo specifica quale dot clock è stato usato per generare i numeri delle sezioni seguenti.
La sezione orizzontale consiste di quattro campi che specificano come ciascuna linea orizzontale deve essere generata. Il primo campo della sezione contiene il numero di punti per linea che saranno accesi per formare l'immagine (da noi chiamati HR). Il secondo campo (SH1) indica in quale punto partirà l'impulso di sincronismo orizzontale. Il terzo campo (SH2) indica a quale punto finirà l'impulso di sincronismo orizzontale. Il quarto campo specifica la larghezza totale del quadro (HFL).
Anche la sezione verticale contiene quattro campi. Il primo campo contiene il numero di linee visibili che appariranno sullo schermo (VR). Il secondo campo (SV1) indica a quale linea partirà l'impulso di sincronismo verticale. Il terzo campo (SV2) specifica a quale linea finirà l'impulso verticale di sincronismo. Il quarto campo contiene il totale dell'altezza del quadro (VFL).
Esempio:
#Nome Mod. clock temporiz. oriz. temporiz. vert. "752x564" 40 752 784 944 1088 564 567 569 611 44.5 752 792 976 1240 564 567 570 600 |
(Nota: X11R5 non supporta i dot clocks frazionari.)
Per Xconfig, tutti i numeri che abbiamo appena menzionato - il numero dei punti accesi sulla riga, il numero dei punti che separano i punti accesi dall'inizio dell'impulso di sincronismo, il numero dei punti che rappresentano la durata dell'impulso, e il numero di punti dopo la fine dell'impulso di sincronismo - sono sommati per produrre il numero di punti per riga. Il numero di punti orizzontali deve sempre essere divisibile per otto.
Esempio di numeri orizzontali: 800 864 1024 1088
Questa linea d'esempio ha il numero di punti accesi (800) seguito dal numero del punto da dove parte l'impulso di sincronismo (864), seguito dal numero del punto quando lo stesso impulso termina (1024), seguito dal numero dell'ultimo punto sulla riga (1088).
Notate di nuovo che tutti i valori dei numeri orizzontali (800, 864, 1024, e 1088) sono divisibili per otto! Ciò non è richiesto per i valori verticali.
Il numero di righe dall'alto in basso formano il quadro. Il segnale di temporizzazione base per un quadro è la riga. Un certo numero di righe formeranno l'immagine. Dopo che l'ultima riga accesa è stata disegnata, ci sarà un ritardo di un certo numero di righe prima che sia generato l'impulso di sincronismo verticale. Quindi l'impulso di sincronismo durerà per un po' di righe, e finalmente saranno generate le ultime righe del quadro, cioè il ritardo necessario dopo l'impulso. I valori che specificano questa modalità d'operazione sono immessi in una maniera simile al seguente esempio.
Esempio di valori verticali: 600 603 609 630
Questo esempio mostra che ci sono 600 righe visibili sullo schermo, che l'impulso di sincronismo verticale parte alla 603esima riga e termina alla 609esima, e che sono usate un totale di 630 righe.
Notate che i valori verticali non devono essere divisibili per otto!
Torniamo all'esempio dove stavamo lavorando. Secondo quanto detto prima, tutto quello che dobbiamo fare da adesso in poi è di scrivere i nostri risultati in Xconfig in questo modo:
<name> DCF HR SH1 SH2 HFL VR SV1 SV2 VFL |
dove SH1 è il punto di partenza dell'impulso di sincronismo orizzontale e SH2 è l'ultimo; similmente, SV1 è il punto di partenza dell'impulso di sincronismo verticale e SV2 è l'ultimo.
Per inserire questi, ricordate il discorso sulla magia nera e gli impulsi di sincronismo che è stato fatto precedentemente. SH1 è il punto dove inizia l'impulso di sincronismo orizzontale; quindi, SH1 = HR + HGT1. SH2 è l'estremo opposto; quindi, SH2 = SH1 + HSP. Similarmente, SV1 = VR + VGT (ma VGT di solito è zero) e SV2 = SV1 + VSP.
#nome clock temporiz. oriz. temporiz. vert. flag 936x702 65 936 968 1200 1232 702 702 710 737 |
Non è necessario alcun flag; questa non è una modalità interlacciata. Ora siamo proprio a posto.