Come Funziona
Area Comunicaz. Bios |
||
Video |
Programmazione |
PROCEDURE BIOS 13/59 [35 di 84] |
|
|
Aggiornato 31 agosto 2008 |
Gestione BIOS del Video -
INT 10H
- Funzione 0EH
|
|
Scrive un carattere nella posizione di stampa e nella pagina video corrente e aggiorna la posizione del cursore. |
|
In
ingresso:
|
|
In uscita lascia:
|
|
La Funzione si chiama in questo modo: |
|
|
Nei Modi Testo che supportano più pagine video il carattere può essere scritto in una qualunque di esse senza influenzare quella correntemente visualizzata. |
|
Il Driver di Console di default del MS-DOS (CON:) usa questa Funzione per scrivere sullo schermo. |
|
La caratteristica importante di questa Funzione è quella di trattare alcuni per i primi 32 caratteri Ascii non per mettere a video la loro matrice di punti (quella prevista dal Set coinvolto, come fanno le consorelle Funzioni 09H e 0AH di INT 10H) ma per esercitare l'azione di controllo ad essi associata. | |||||||||
Essa
si comporta in modo analogo a quello in uso nelle
nelle vecchie telescriventi;
per questo la sua tecnica di stampa è detta TTY
(TeleTYpe); i caratteri Ascii di
controllo trattati in modo funzionale sono:
| |||||||||
I più ricorrenti tra essi sono la coppia 0D/0AH, solitamente aggiunta automaticamente dagli editor al termine di ciascuna riga digitata e corrisponde alla pressione del tasto Invio; tutti i rimanenti codici Ascii sono semplicemente posti a video nella loro forma consueta. |
|
In effetti si potrebbe pensare che altri codici Ascii di controllo possano essere interpretati da questa Funzione: tra questi il più comune è il codice Ascii 09H (=TAB=Tabulate) in presenza del quale, di norma, gli applicativi spostano il cursore a destra di 8 spazi; nella stesura originale di questa pagina esso era erroneamente incluso nell'elenco precedente, sebbene non risultasse tra quelli documentati ufficialmente. |
In realtà la Funzione 0EH di INT 10H tratta dunque in modo diretto solo i codici Ascii BELL (07H), BK (08H), LF (0AH) e CR (0DH), lasciando al programmatore il compito di assicurare un degno servizio per gli altri; in particolare il codice Ascii TAB (09H), per altro utilizzato raramente in un programma assembly, nel quale la necessità di fissare delle colonne di riferimento è quasi sempre affidata al posizionamento diretto del cursore, controllando eventualmente che le stringhe ad essa precedenti non superino questo limite. In mancanza di servizio dedicato il codice Ascii 09H sarà posto a video con il carattere ○. | |
Di norma il servizio TAB è utilizzato dagli editors, spesso in modo programmabile, lasciando cioè all'utente la possibilità di stabilire il numero di spazi da inserire tra una colonna TAB e la successiva. | |
Tra l'altro è facile capire che si tratta di una caratteristica tutt'altro che banale, dovendo il programma inserire un numero di spazi comunque dipendente dai caratteri già inseriti tra un TAB e il successivo, indipendentemente dalla sua quantità massima (tipica della distanza tra un TAB e il successivo in assenza di caratteri tra di essi) |
|
Una seconda importante caratteristica della Funzione è quella di assicurare l'aggiornamento automatico della posizione del cursore, carattere dopo carattere, occupandosi nel contempo di aggiornare la corrispondente variabile di sistema a partire da quella (tra le otto previste, riservate alla posizione del cursore) posta a 0000:0450H. | |
Anche in questo si distingue dalle Funzioni 09H e 0AH di INT 10H, che non aggiornano il cursore. | |
L'aggiornamento del cursore produce il ritorno automatico a capolinea ogni volta che esso si trova in alla fine di una riga; questo fatto creare problemi quando si trova, in basso a destra, nell'ultima posizione possibile, in riga 24, colonna 79. | |
La stampa del carattere successivo provoca anch'essa il ritorno automatico a capolinea ma, contemporaneamente, sposta verso l'alto di una riga (scrolling) tutto il contenuto dello schermo, inserendo in basso un'intera riga di spazi che nei Modi Testo sono colorati con l'attributo dell'ultimo carattere scritto sulla riga precedente! (nei Modi Grafici l'effetto è meno evidente dato che l'attributo di colore usato per riempire la riga è il nero). |
|
L'ultima caratteristica
della Funzione
è quella di non consentire di colorare
i caratteri posti a video:
| |||||||
Il fatto di non consentire la gestione del colore rende questa Funzione simile alla 0AH; la dove la cosa sia necessaria entrambe devono essere sostituite dalla Funzioni 09H (che per altro non aggiorna il cursore). |
|
|
La Libreria Giobe.LIB utilizza questa Funzione per la stampa di un carattere normale, resa disponibile con la procedura BIOSchr; le procedure Acapo e BIObeep utilizzano a loro volta la procedura BIOSchr per mandare a capo il cursore e per emettere un beep. |
|
Le procedure di Libreria potranno essere chiamate con efficienza anche nei modi nei Modi Grafici, anche se in esse il cursore non è visibile. |
|
Gli eseguibili B10_0E__.COM (nei Modi Testo) e B10_0Egr.COM (nei Modi Grafici) mostrano l’effetto della Funzione 0EH dell'INT 10H. | |
I sorgenti sono documentati nella sezione ASM (clicca sull'icona, nel menu a sinistra). |
|
Video01 | PROCEDURE BIOS 13/59 | |||||||
35 di 84 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|