|
 |
Programmazione |
VIDEO 02/59
[22 di 79] |
 |
Gestione BIOS del Video -
INT 10H
- Funzione 00H
|
INT
10H |
Funzione 00H |
Gestione del Modo Video |
|
 | Cambia il
Modo Video corrente
in quello desiderato, scelto tra quelli supportati dalla propria scheda video. |
 | Come effetto collaterale
produce l'effetto ClearScreen (lo schermo viene cancellato)
e il cambiamento (nei Modi Testo)
delle dimensioni del
Cursore (Nei Modi Grafici il cursore non è visibile). |
 | In
ingresso:
 | AH è posto
a 00H |
 | AL
indica il codice del Modo Video desiderato |
|
 | In uscita lascia:
 | nulla. |
|
 | La Funzione
si chiama in questo modo: |
 | Va sottolineato che quando si cambia il
Modo Video viene
riconfigurato e reinizializzato
tutto l'ambiente Video; il
Controller CRT
dell'Adattatore
Video viene
riprogrammato e molte variabili di sistema (a cominciare dalla
0000:0449H che contiene
proprio il Modo Video corrente) vengono caricate con i nuovi nuovi valori. |
 | Nei Modi Testo l'effetto più concreto di questa reinizializzazione è il
fatto che nella memoria del video (RamVideo)
vengono collocate in sequenza sedicimila coppie
di bytes 20H/07H; il primo byte rappresenta il codice ASCII
dello spazio e il secondo l'attributo di
colore di default, bianco su nero.
|
 | Dunque vengono cancellate tutte
le possibili Pagine Video, non solo della
Pagina0; quando si lavora direttamente in
RamVideo la chiamata di questa Funzione
è
perciò da evitare, per non perdere le informazioni predisposte nelle pagine
alternative. |
 | Nonostante questa caratteristica non
è opportuno usare questa Funzione
per produrre un
CLS perchè impiega un
po' più di tempo rispetto a quelle che si
usano normalmente per questo servizio (cioè le
Funzioni 06H o
07H
di
INT 10H). |
 | Per evitare di cancellare lo schermo
nei
Modi standard IBM basta porre a 1 il
bit7 di
AL. |
 | La scelta del
Modo Video desiderato viene operata a partire
dalla Tabella
dei Modi Standard e da quelle specifiche
della scheda video, fornite dal costruttore. |
 | A questo proposito va sottolineato che anche le moderne schede Super VGA hanno
cura di emulare anche i precedenti adattatori (CGA,
EGA, VGA),
per cui i Modi Video Standard (da
00H a 13H)
saranno disponibili sui prodotti di tutti i costruttori; la Tabella seguente ne mostra i dettagli: |
|
Modo |
Tipo |
Risoluzione
Testo |
Risoluzione
Grafica |
Colore |
Numero
Pagine |
Indirizzo
RamVideo |
Scheda
SVGA |
|
00H |
Testo |
40x25 |
8x8 |
320x200 |
16 |
8 |
B800H |
CGA |
|
8x14 |
320x350 |
EGA |
|
9x16 |
360x400 |
VGA |
|
01H |
Testo |
40x25 |
8x8 |
320x200 |
16 |
8 |
B800H |
CGA |
|
8x14 |
320x350 |
EGA |
|
9x16 |
360x400 |
VGA |
|
02H |
Testo |
80x25 |
8x8 |
640x200 |
16 |
4 |
B800H |
CGA |
|
8x14 |
640x350 |
8 |
EGA |
|
9x16 |
720x400 |
VGA |
|
03H |
Testo |
80x25 |
8x8 |
640x200 |
16 |
4 |
B800H |
CGA |
|
8x14 |
640x350 |
8 |
EGA |
|
9x14 |
720x350 |
|
9x16 |
720x400 |
VGA |
|
04H |
Grafico |
40x25 |
8x8 |
320x200 |
4 |
1 |
B800H |
CGA |
|
05H |
Grafico |
40x25 |
8x8 |
320x200 |
4 |
1 |
B800H |
CGA |
|
06H |
Grafico |
80x25 |
8x8 |
640x200 |
B/N |
1 |
B800H |
CGA |
|
07H |
Testo |
80x25 |
9x14 |
720x350 |
mono |
1 |
B000H |
MDA |
|
08H |
Grafico |
20x25 |
8x8 |
160x200 |
16 |
1 |
B000H |
PCjr |
|
09H |
Grafico |
40x25 |
8x8 |
320x200 |
16 |
1 |
B000H |
PCjr |
|
0AH |
Grafico |
80x25 |
8x8 |
640x200 |
4 |
1 |
B000H |
PCjr |
|
0BH |
Riservato, uso interno EGA |
|
0CH |
Riservato, uso interno EGA |
|
0DH |
Grafico |
40x25 |
8x8 |
320x200 |
16 |
8 |
A000H |
EGA |
|
0EH |
Grafico |
80x25 |
8x8 |
640x200 |
16 |
4 |
A000H |
EGA |
|
0FH |
Grafico |
80x25 |
8x14 |
640x350 |
mono |
2 |
A000H |
EGA |
|
10H |
Grafico |
80x25 |
8x14 |
640x350 |
4 o 16 |
2 |
A000H |
EGA |
|
11H |
Grafico |
80x30 |
8x16 |
640x480 |
mono |
1 |
A000H |
VGA |
|
12H |
Grafico |
80x30 |
8x16 |
640x480 |
16 |
1 |
A000H |
VGA |
|
13H |
Grafico |
40x25 |
8x8 |
320x200 |
256 |
1 |
A000H |
VGA |
 | Naturalmente ciascuna scheda grafica rende disponibili, in
aggiunta a quelli
Standard, una discreta quantità
di Modi Estesi SVGA; ognuno di essi può
essere collaudato semplicemente ponendo in AL
il corrispondente numero (ammesso che sia disponibile) e chiamando questa
Funzione. |
 | Sebbene l'esigenza di ridurre i costi all'osso renda la
cosa sempre meno frequente, quando si acquista una scheda Video è talvolta
possibile disporre di un prezioso manualetto, l'User
manual dell'adattatore grafico che, oltre a fornire preziose
informazioni sui segreti della scheda, rende disponibile la
Tabella dei Modi Estesi da essa supportati. |
 | Sfortunatamente ogni costruttore offre
modalità Estese SVGA
non vincolate ad accordi di portabilità, associando cioè a ciascun
Modo video
i numeri più imprevedibili. |
 | Per questa ragione non è assolutamente
consigliabile creare
programmi che chiamino questa Funzione
con
Modi
diversi da quelli
Standard: difficilmente sarebbero in grado di
funzionare su computer diversi da quello in cui si è fatto il collaudo. |
 | La letteratura specifica offre talvolta
Tabelle simili a quella precedente, con un
tentativo di raccogliere e documentare le specifiche
di ciascun nuovo
Modo; scorrendole è facile
constatare che, quasi sempre, a parità di numero
di
Modo, produttori diversi offrono
servizi diversi, per risoluzione e tipologia. |
 | Sembra dunque tempo perso insistere su questo argomento; a
solo titolo di curiosità allego 2 tabelle, estratte dagli
User
manual di 2 schede video SVGA, una piuttosto anziana e
l'altra genericamente SVGA compatibile: |
|
Scheda Trident TVGA 8900 |
|
Modo |
Tipo |
Risoluzione
Testo |
Risoluzione
Grafica |
Colore |
Numero
Pagine |
Indirizzo
RamVideo |
|
50H |
Testo |
80x30 |
8x16 |
640x480 |
16 |
8 |
B800H |
|
51H |
Testo |
80x43 |
8x11 |
640x473 |
16 |
8 |
B800H |
|
52H |
Testo |
80x60 |
8x8 |
640x480 |
16 |
8 |
B800H |
|
53H |
Testo |
132x25 |
9x14 |
1056x350 |
16 |
8 |
B800H |
|
54H |
Testo |
132x30 |
8x16 |
1056x480 |
16 |
8 |
B800H |
|
55H |
Testo |
132x43 |
8x11 |
1056x473 |
16 |
8 |
B800H |
|
56H |
Testo |
132x60 |
8x8 |
1056x480 |
16 |
8 |
B800H |
|
57H |
Testo |
132x25 |
9x14 |
1188x350 |
16 |
8 |
B800H |
|
58H |
Testo |
132x30 |
9x16 |
1188x480 |
16 |
8 |
B800H |
|
59H |
Testo |
132x43 |
9x11 |
1188x473 |
16 |
8 |
B800H |
|
5AH |
Testo |
132x60 |
9x8 |
1188x480 |
16 |
8 |
B800H |
|
5BH |
Grafico |
100x75 |
8x16 |
800x600 |
16 |
8 |
A000H |
|
5CH |
Grafico |
80x25 |
8x16 |
640x400 |
256 |
8 |
A000H |
|
5DH |
Grafico |
80x30 |
8x8 |
800x600 |
256 |
8 |
A000H |
|
5EH |
Grafico |
100x75 |
8x8 |
800x600 |
256 |
8 |
A000H |
|
5FH |
Grafico |
128x48 |
8x14 |
1024x768 |
16 |
2 |
A000H |
|
60H |
Grafico |
128x48 |
8x14 |
1024x768 |
4 |
2 |
A000H |
|
61H |
Grafico |
96x64 |
8x16 |
768x1024 |
16 |
2 |
A000H |
|
62H |
Grafico |
128x48 |
8x16 |
1024x768 |
256 |
2 |
A000H |
|
Scheda SVGA compatibile |
|
Modo |
Tipo |
Risoluzione
Testo |
Risoluzione
Grafica |
Colore |
Numero
Pagine |
Indirizzo
RamVideo |
|
4EH |
Testo |
80x60 |
8x8 |
640x480 |
16 |
|
B800H |
|
4FH |
Testo |
132x60 |
8x8 |
1056x480 |
16 |
|
B800H |
|
50H |
Testo |
132x25 |
8x14 |
1056x350 |
16 |
|
B800H |
|
51H |
Testo |
132x43 |
8x8 |
1056x344 |
16 |
|
B800H |
|
52H |
Grafico |
100x37 |
8x16 |
800x600 |
16 |
|
A000H |
|
53H |
Grafico |
80x30 |
8x16 |
640x480 |
256 |
|
A000H |
|
54H |
Grafico |
100x37 |
8x16 |
800x600 |
256 |
|
A000H |
|
55H |
Grafico |
128x48 |
8x16 |
1024x768 |
4 |
|
A000H |
|
56H |
Grafico |
128x48 |
8x16 |
1024x768 |
16 |
|
A000H |
|
57H |
Grafico |
96x64 |
8x16 |
768x1024 |
16 |
|
A000H |
|
58H |
Grafico |
160x64 |
8x16 |
1280x1024 |
16 |
|
A000H |
|
59H |
Grafico |
128x48 |
8x16 |
1024x768 |
256 |
|
A000H |
 | Osservando e confrontando i
Modi Video con il
medesimo numero di Modo,
le incongruenze anticipate sono piuttosto
evidenti; in generale possiamo comunque sottolineare alcuni dati di fatto:
 | la classica configurazione a 25
o 30 righe da 80 colonne
(80x25 o 80x30)
è spesso integrata con soluzioni a 132 colonne
(132x25
o 132x30),
mentre sono sempre più frequenti modi in grado di porre a video una quantità
di carattere notevolmente più numerosa, a 43
(80x43
o 132x43)
o 60 (80x60
o 132x60)
o più righe ... |
 | la risoluzione grafica è sempre più spinta: le gloriose
CGA (320x200 o 640x200) EGA
(640x350) o standard VGA (640x480) sono un remoto ricordo; lo standard è
oggi 800x600 o 1024x768
e, con la disponibilità di monitor più grandi sempre più economici, anche
1280x1024 o maggiori. |
|
 | L'eseguibile
B10_00__.COM mostra l’effetto
della Funzione
00H dell'INT 10H. |
 | Il sorgente è documentato nella sezione ASM
(clicca sull'icona ,
nel menu a sinistra). |
 |
La Libreria
Giobe.LIB impone il
Modo Testo Standard (03H) con la procedura
BIOScls, assicurando in
modo improprio anche il ClearScreen del Monitor. |
 | Quando la Funzione
imposta una modalità Grafica
può capitare,
specialmente in fase di collaudo, di tornare al
prompt
del DOS con il
Modo Grafico ancora attivo;
in questo caso, nella peggiore delle ipotesi il Monitor potrebbe anche essere
tutto nero.. |
 |
NB: un
buon programma di
Grafica deve prevedere, al suo termine (prima di restituire il
controllo al DOS), il ripristino del Modo Testo
standard, 03H. |
 | Naturalmente
non è il caso di perdersi
d’animo: bisogna almeno tentare di digitare (anche
al buio) il comando DOS
MODE CO80: nella gran parte dei casi il problema si risolve e ci è
consentito di tornare a lavorare; altrimenti non ci rimane altro che chiudere la
sessione DOS e ricominciare da capo, cercando di correggere l’errore che ha
prodotto il pasticcio. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|