|
 |
Programmazione |
VIDEO 36/59
[56 di 79] |
 |
Gestione BIOS del Video -
INT 10H
- Funzione 11H-
SottoFunz.
10H
|
INT
10H |
Funzione 11H/10H |
Carica il Font di caratteri creato dall'utente e riprogramma
il CRT |
|
 | Copia in una specifica Tabella RAM (block) del
Generatore di Caratteri Hardware la
Tabella User (predisposta dall'utente) con la
definizione di uno o più Caratteri e
permette anche la gestione dell'altezza
dei caratteri visualizzati, riprogrammando il
Controller CRT; è
tipica dei
Modi Testo. |
 | La
SottoFunzione 00H
della Funzione
11H di
INT 10H
assicura lo stesso servizio, ma
non permette la gestione dell'altezza
dei caratteri. |
 | Quando si desidera ridefinire uno o più caratteri da usare al posto di altri
(normalmente qualche Ascii Esteso di scarso impiego) c’è la possibilità di
scegliere tra le
SottoFunzionI 00H e
10H: se non ci sono particolari
controindicazioni conviene quindi usare la seconda, funzionalmente più completa. |
 | In
ingresso:
 | AH è posto
a 11H |
 | AL
è posto
a 10H e indica la SottoFunzione |
 | BH
specifica il numero di bytes previsti per la
definizione di ciascun carattere (in pratica l'altezza della matrice di
punti) |
 | CX
indica il numero dei caratteri
definiti in Tabella, non necessariamente
256 |
 | ES:BP
punta la Tabella (TabFont,
predisposta dal programma chiamante) con la sequenza dei
BH*CX
bytes necessari per definire i
CX
caratteri |
 | DX
indica il valore numerico del codice ASCII del primo carattere incluso
nella Tabella
TabFont |
 | BL
indica il numero della Tabella
RAM del
Generatore di Caratteri Hardware in
cui caricare il FONT (00H÷03H) |
|
 | In uscita lascia:
 | nulla |
|
 | La
SottoFunzione
si chiama in questo modo: |
 | Con questa
SottoFunzione
è possibile cambiare
l'aspetto di uno o più caratteri
del Set standard (nei
Modi Testo) sostituendolo con altri
progettati dal programmatore; per renderla esecutiva bisogna
stabilire l'altezza desiderata per i nuovi caratteri, cioè il numero di bytes
necessari per definire la sua matrice di punti, per esempio
16 (per 8
pixel, uno per bit). |
 | La sequenza di questi bytes (nell'esempio un pacchetto da
16 per ogni nuova definizione) deve essere predisposta in una
Tabella (TabFont). |
 | La
SottoFunzione 10H, rispetto alla
00H, riprogramma il
Controller CRT assicurando così anche la
regolazione automatica dell'altezza
dei caratteri e, in stretto accordo con le modifiche imposte sui
Registri del
Controller, l'aggiornamento delle corrispondenti variabili di sistema :
 |
0000:044CH, dimensione della
Pagina Video, cioè il numero di bytes usati per allestire una Pagina (Buffer
Video) |
 |
0000:0460H, linea di scansione del Cursore (finale e iniziale) |
 |
0000:0484H, numero di righe sul display meno 1, nel Modo
Video Corrente |
 |
0000:0485H, altezza dei caratteri in Pixel,
numero di bytes (=righe di pixel) necessari per creare un carattere nel Modo
Video Corrente |
|
 | Per evitare risultati imprevedibili la SottoFunzione:
 | va chiamata subito dopo aver fissato il
Modo Testo desiderato |
 | da per scontato che la Pagina Video attiva sia la Pagina0 |
|
 | Quando viene chiamata esegue in sostanza una
selezione di modo, modificando i
parametri di stato del
video, senza per altro cancellare il buffer del
Display (cioè evitando l'effetto ClearScreen). |
|
2BH |
Byte |
Tabella (primaria) usata dal Generatore HARDWARE |
|
2CH |
Byte |
Tabella (secondaria) usata dal Generatore HARDWARE |
 | La tecnica relativa alla creazione
dei caratteri da parte del
Generatore Hardware è descritta con
ogni dettaglio in questa pagina; è certamente utile consultarne il contenuto,
anche per approfondire alcuni importanti aspetti
collaterali... |
 | Come il fatto che, nei moderni
adattatori VGA, viene proposta a video una matrice di punti
9*16 (cioè risoluzione 40x25, 360x400 o 80x25, 720x400), anche se
la nostra Tabella TabFont
ha definito i nuovi caratteri ciascuno con 16 bytes, cioè con matrici 8*16:
 | il nono bit (non
presente e non definibile nella nostra TabFont
sorgente) viene aggiunto
automaticamente alla destra dei normali 8 Pixel di ogni linea di
scansione, con l'attributo dello sfondo (praticamente una colonna invisibile) per tutti i caratteri,
esclusi quelli (estesi)
da
C0H
(=192="└") a DFH (=223="▀"), per i quali
viene duplicato l'ottavo Pixel |
 | la cosa sembra di poco conto quando è necessario creare
un solo particolare carattere, ma diventa critica se si crea una sequenza di
caratteri che devono essere proposti uno dietro l'altro, magari per creare un
logo... |
 | in questo caso i caratteri, da sostituire con la nostra
creazione,
devono essere scelti tra quelli del
seguente elenco, per evitare di veder stampato il logo "a segmenti", cioè con
ciascun carattere separato da una fastidiosa breve
strisciolina vuota (il famoso nono bit
lasciato spento): |
|
|
192 |
C0H |
└ |
|
200 |
C8H |
╚ |
|
208 |
D0H |
╨ |
|
216 |
D8H |
╪ |
|
193 |
C1H |
┴ |
|
201 |
C9H |
╔ |
|
209 |
D1H |
╤ |
|
217 |
D9H |
┘ |
|
194 |
C2H |
┬ |
|
202 |
CAH |
╩ |
|
210 |
D2H |
╥ |
|
218 |
DAH |
┌ |
|
195 |
C3H |
├ |
|
203 |
CBH |
╦ |
|
211 |
D3H |
╙ |
|
219 |
DBH |
█ |
|
196 |
C4H |
─ |
|
204 |
CCH |
╠ |
|
212 |
D4H |
╘ |
|
220 |
DCH |
▄ |
|
197 |
C5H |
┼ |
|
205 |
CDH |
═ |
|
213 |
D5H |
╒ |
|
221 |
DDH |
▌ |
|
198 |
C6H |
╞ |
|
206 |
CEH |
╬ |
|
214 |
D6H |
╓ |
|
222 |
DEH |
▐ |
|
199 |
C7H |
╟ |
|
207 |
CFH |
╧ |
|
215 |
D7H |
╫ |
|
223 |
DFH |
▀ |
 | L'eseguibile
B10_1110.COM offre una
pregiata applicazione della SottoFunzione
10H della Funzione
11H dell'INT 10H:
in pratica
ridefinisce 5
caratteri Ascii estesi e li colloca nella Prima Tabella gestita
dal
Generatore di Caratteri Hardware. |
 | 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
|