|
 |
Programmazione |
VIDEO 31/59
[51 di 79] |
 |
Gestione BIOS del Video -
INT 10H
- Funzione 11H-
SottoFunz.
00H
|
INT
10H |
Funzione 11H/00H |
Carica il Font di caratteri creato dall'utente |
|
 | 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; è
tipica dei
Modi Testo. |
 | La
SottoFunzione 10H
della Funzione
11H di
INT 10H
assicura lo stesso servizio, ma
permette anche la gestione dell'altezza
dei caratteri visualizzati. |
 | 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 00H 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). |
 | 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 |
▀ |
 | Poichè come detto la
SottoFunzione 10H è funzionalmente più completa della
SottoFunzione
00H, il consueto programma applicativo risulta
inutile. |
 | Ci riferiremo dunque all'eseguibile
B10_1110.COM, che
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
|