|
 |
Programmazione |
VIDEO 24/59
[44 di 79] |
 |
Gestione BIOS del Video -
INT 10H
- Funzione 10H-
SottoFunz.
13H
|
INT
10H |
Funzione 10H/13H |
Imposta la Pagina di colore DAC attiva e/o il loro numero |
|
 | Seleziona
la
Pagina
dei Colori da utilizzare nei
Modi Video che ne ammettono l'uso, per testi o pixel. |
 | In
ingresso:
 | AH è posto
a 10H |
 | AL
è posto
a 13H e indica la SottoFunzione
|
 | BL = 00H
stabilisce il numero di
Pagine di Colori
da usare come sorgente per l'hardware di decodifica
 |
BL=00H
divide i Registri DAC in
4
Pagine da 64
Registri
ciascuna (00H÷3FH,40H÷7FH,80H÷BFH e
C0H÷FFH) |
 |
BL=01H
divide i Registri DAC in
16
Pagine da 16
Registri
ciascuna
(Tavolozze EGA,
00H÷0FH,
10H÷1FH, ..,
F0H÷FFH)
|
|
 | BL =
01H stabilisce con
quale tra le possibili Pagine di Colore si desidera lavorare;
 | BH
indica il numero della Pagina selezionata, tra 00H÷03H
se il Set dei Registri DAC è stato
diviso in 4 Pagine da 64 Registri ciascuna |
 | BH
indica il numero della Pagina selezionata, tra 00H÷0FH
se il Set dei Registri DAC è stato
diviso in 16 Pagine da 16 Registri ciascuna
|
|
|
 | In uscita lascia:
 | nulla |
|
 | La
SottoFunzione
si chiama in questo modo:
|
 | Per quasi tutti i
Modi è dunque possibile scegliere
gruppi di gradazioni
del Colore alternative; fa
eccezione il Modo Grafico 13H
(320x200, 256 colori,VGA) per il quale la Funzione
non è valida. |
 | Per apprezzare la potenza di questa SottoFunzione
è
opportuno leggere con attenzione la premessa
descritta con dettaglio in questa pagina, nella quale si spiega che:
 | il colore dei pixel
posti a video dipende dal contenuto di un gruppo
di Registri DAC |
 | l'indirizzo del Registro DAC
desiderato dipende dal contenuto Registri
di Tavolozza, 00H÷0FH
e di Selezione Colore, 14H |
 | l'organizzazione e la
dimensione dei
gruppi di Registri DAC dipende dal bit7 del
Registro di Controllo di Modo, 10H |
|
 | In pratica questa SottoFunzione
consente di operare a livello Bios le
medesime scelte: se chiamata con
BL=00H,
forza il suddetto bit7 allo stesso valore
del bit0 di
BH,
predisponendo così il modo con cui verranno usati i Registri per stabilire
l'effettivo Colore utilizzato:
 | con BH=00H
(bit7=0)
il set di 256 Registri DAC
viene diviso in 4 Pagine
da 64 Registri ciascuna (00H÷3FH,40H÷7FH,80H÷BFH e
C0H÷FFH): i 6 bit
(bit5÷bit0) dei
Registri di Tavolozza sono usati per localizzare i 64 colori dentro ciascun gruppo,
mentre 2 bit (bit3÷bit2) del
Registro di Selezione
sono usati per stabilire a
quale delle 4 Pagine si vuole accedere. |
 | con BH=01H
(bit7=1)
il set di 256 Registri DAC viene diviso in
16 Pagine
da 16 Registri
ciascuna (00H÷0FH,
10H÷1FH, ..,
F0H÷FFH): 4
dei 6 bit (bit3÷bit0) dei
Registri di Tavolozza sono ancora usati per localizzare i
16 colori dentro ciascun gruppo, mentre 4 bit (bit3÷bit0) del
Registro di Selezione stabiliscono a quale delle
16 Pagine si vuole accedere. |
|
 | In una fase successiva questa SottoFunzione,
chiamata ora con
BL=01H,
si stabilisce il numero (passato in
BH)
della Pagina di Colore con cui si desidera
lavorare, tra 00H÷03H
(con 4 Pagine da 64 Registri) o tra 00H÷0FH
(con 16 Pagine da
16 Registri) |
 | Se necessario è resa così possibile la
veloce commutazione tra una Pagina e l'altra
del gruppo selezionato. |
 | L'eseguibile
B10_1013.COM mostra
l’effetto della
SottoFunzione
13H della
Funzione
10H dell'INT
10H. |
 | Il programma è molto prezioso: contiene una tabella di
terne di codici sostanzialmente identica a quella
memorizzata nei Registri DAC dal Modo
Grafico 13H a 256 colori |
 | Per ragioni di opportunità è stata modificata solo
la prima
terna di ogni gruppo di 16, forzata a 00H, 00H, 00H:
 | i valori originali infatti (mantenuti comunque come commento), puntati come è noto dal
Registro di
Tavolozza 00H (a sua volta attivato dal nibble 0000 dell'Attributo), oltre a
influenzare il colore di Primo Piano serve anche per lo
Sfondo dei caratteri
posti a Video |
 | se la prima cosa può essere gradevole e opportuna, la seconda
disturba molto l'effetto degli altri colori che, pertanto, si preferiscono
presentati su
Sfondo Nero. |
|
 | L'utilità del programma consiste nel fatto che può costituire una
valida base di
partenza per creare un proprio set di 16 Pagine di Colori, facilmente
commutabili tra di loro; l'esperienza sottolineata poco fa insegna che,
comunque, conviene rinunciare al primo Registro di Colore DAC di ogni gruppo per
garantire la disponibilità dello Sfondo Nero. |
 | Dopo che la scelta è stata fatta
la Pagina di 16 Colori selezionata rimarrà attiva fino alla successiva eventuale
modifica (anche al rientro al DOS). |
 | Da notare che la scrittura della lunga Tabella
TabCol poteva essere evitata, ma
è stata volutamente lasciata per dare la possibilità al lettore di intervenire
sul sorgente al fine di provare le proprie scelte con una modifica diretta dei
singolo valori |
 | Comunque, per evitare la scrittura della Tabella si può seguire
la tecnica suggerita dal programma
B10g1017.COM, nel quale
prima si riserva lo spazio ad essa necessario e poi la si carica con la
SottoFunzione 17H, leggendo le terne
direttamente da tutti i
256 Registri di
Colore del DAC, subito dopo che il BIOS gli ha caricati per effetto della
richiesta esplicita di lavorare in Modo
Grafico 13H; lo stralcio del
codice che ci interessa è il seguente:
TabCol DB 256*3 dup
(00H) ;256=64*4
Terne, Componenti RVB, Rosso-Verde-Blu |
 | Il sorgente è documentato nella sezione ASM
(clicca sull'icona ,
nel menu a sinistra). |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|