[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 608.   Utilizzo dello schermo VGA a caratteri

Per poter scrivere un programma che utilizzi autonomamente le risorse hardware, senza avvalersi di un sistema operativo, la prima cosa di cui ci si deve prendere cura è la visualizzazione di messaggi sullo schermo. Di norma si parte dal presupposto che un elaboratore x86-32 disponga di uno schermo controllato da un adattatore VGA, sul quale è possibile visualizzare del testo puro e semplice, senza dover affrontare troppe complicazioni.

608.1   Memoria dello schermo a caratteri

Per visualizzare un messaggio su uno schermo VGA, quando non è possibile usare le funzioni del BIOS, perché si sta lavorando in modalità protetta, è necessario scrivere in una porzione di memoria che parte dall'indirizzo B800016, utilizzando una sequenza a 16 bit, dove gli otto bit più significativi costituiscono un codice che descrive i colori da usare per il carattere e il suo sfondo, mentre il secondo contiene il carattere da visualizzare.

Figura 608.1. Organizzazione dei 16 bit con i quali si rappresenta un carattere sullo schermo.

colori

La figura mostra come va costruito il carattere da visualizzare sullo schermo. Per esempio, un colore indicato come 2816 genera un testo di colore bianco, a intensità normale, su sfondo verde, mentre A016 genera un testo lampeggiante nero su sfondo verde.

608.2   Cursore

Per visualizzare del testo sullo schermo, è sufficiente assemblare i caratteri nel modo descritto nella sezione precedente, collocandoli im memoria a partire dall'indirizzo B800016, sapendo che presumibilmente lo schermo è organizzato a righe da 80 colonne (pertanto ogni riga utilizza 160 byte e una schermata normale da 25 righe occupa complessivamente 4 000 byte). Ma la visualizzazione del testo è indipendente dalla gestione del cursore e per collocarlo da qualche parte sullo schermo, occorre comunicare con l'adattatore VGA attraverso dei registri specifici.

Prima di comunicare con l'adattatore VGA per collocare il cursore, occorre definire le coordinate del cursore. Per questo occorre contare i caratteri, contando da zero. Per esempio, ammesso di voler collocare il cursore in corrispondenza della seconda colonna della ventesima riga, su uno schermo da 80 colonne per 25 righe, la posizione che si vuole raggiungere è 19×80+2-1 = 1 521. Questo numero corrisponde a 05F116.

Con l'ausilio della funzione outb() descritta in un altro capitolo, si comunica con l'adattatore VGA la posizione del cursore nel modo seguente:

...
    outb (0x3D4, 14);   // Prima parte.
    outb (0x3D5, 0x05);
    
    outb (0x3D4, 15);   // Seconda parte.
    outb (0x3D5, 0xF1);
...

Come si vede, l'indirizzo del cursore va dato in due fasi, dividendolo in due byte.

608.3   Riferimenti


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome utilizzo_dello_schermo_vga_a_caratteri.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory