|
 |
Raccolta di Procedure ASM |
BIOSchr
[11 di 54] |
 | Stampa un
carattere nella posizione di stampa corrente,
ma
non è possibile cambiarne il colore: il carattere
eredita l'attributo di quello che andrà a sostituire. |
 |
Dopo la messa a video del
carattere provvede ad aggiornare la posizione del cursore, in modo da fargli
puntare il posto in cui verrà collocato il successivo carattere;
ogni volta che esso si trova in alla fine di una riga si
produce il ritorno a capolinea. |
 | La Procedura
si chiama in questo modo: |
 | In
ingresso bisogna predisporre:
 | AL
con il codice Ascii del carattere
da stampare |
|
 | La seguente Area di Testo
mostra il Modulo bios04 utilizzato per
inserire la Procedura
nella Libreria
Giobe.ASM/LIB: |
|
BIOSchr / bios04 |
NB: se il testo contenuto nell'Area
ti
sembra strano (cioè se contiene
caratteri inconsueti) non hai ancora
installato il font
Giobe.TTF
:
clicca qui!! |
 | L'analisi del codice mette in evidenza le sue
caratteristiche: |
 | stampa il carattere predisposto, prima della chiamata,
nel registro AL, con l'aiuto della
Funzione 0EH
di
INT 10H
|
 | il carattere verrà stampato con i colori di default del DOS (di solito
bianco su nero) e non sarà possibile modificarli |
 | il carattere verrà collocato nella
posizione di stampa
corrente, cioè nel punto esatto in cui sta lampeggiando (nel momento della
chiamata) il cursore hardware del video (il famoso trattino lampeggiante) |
 | dopo la stampa (in uscita dalla chiamata) la
posizione
del cursore viene aggiornata automaticamente; in altre parole il cursore si
sposta a destra di una posizione e, se già si trova a fine riga, viene
spostato a capo della riga successiva |
 | le schede dedicate a queste Funzioni BIOS affrontano in
modo dettagliato ogni altro particolare relativo ai rispettivi compiti
è predisposta per lavorare in pagina0, dato che il registro
BH è predisposto
al valore 00H |
 | Oltre a predisporre in AL il codice Ascii
del carattere che si desidera stampare può essere necessario fissare anche le
coordinate della posizione di stampa (con
M_CURSOR), anche se questa
informazione
non è strettamente necessaria: se non si specificano le
coordinate la Procedura
collocherà il carattere nella
posizione di stampa corrente (là dove lampeggia il cursore) |
 | Questa Procedura
tratta alcuni tra i
primi 32 caratteri Ascii
non per mettere a video la loro
matrice di punti (quella prevista dal
Set coinvolto, come fa la
BIOchr1) ma per esercitare l'azione di controllo
ad essi associata; i caratteri Ascii di
controllo trattati in modo funzionale sono:
 | il codice Ascii 07H
(=BELL=campanello)
costringe il PC ad emettere un beep
(invece di stampare •) |
 | il codice Ascii 08H
(=BK=BackSpace)
sposta il cursore indietro di una posizione (invece di stampare
◘) |
 | il codice Ascii 0AH
(=LF=LineFeed)
sposta il cursore in avanti di una riga (invece di stampare
◙) |
 | il codice Ascii 0DH
(=CR=CarriageReturn
) sposta il cursore nella prima posizione di stampa a sinistra (invece di
stampare
♪) |
|
 | In effetti si potrebbe pensare che altri codici Ascii
di controllo
possano essere interpretati da
questa Procedura: 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 dalla
Funzione 0EH
di
INT 10H,
alla base della BIOSchr.
(Di fatto devo questa
precisazione
alla segnalazione puntuale a
Trigon
[consulta la sua Scheda]). |
 | In definitiva la Procedura
BIOSchr
(come la
Funzione 0EH
di
INT 10H,
da cui trae origine) 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)
|
 | Sulla base di questa caratteristica essa è coinvolta per
definire altre 2 Procedure
di questa libreria:
 | la
Acapo chiamata
a "stampare" la coppia 0D/0AH:
l'effetto della sua esecuzione è quello di forzare il cursore a capo linea,
come quando viene premuto il tasto Invio |
 | la
BIObeep chiamata
a "stampare" il carattere Ascii 07H:
l'effetto della sua esecuzione è quello di
costringere il PC ad emettere un beep |
|
 | L'aggiornamento automatico del cursore
produce il ritorno 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). |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|