cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La...

6
MS-DOS a cura di Pierluigi Panunz; Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece l'altro tipo di cursore usuale ha accese a lampeggianti solo le linee di scansione 6 e 7. Ora, se vogliamo alterare la forma del cursore dobbiamo fornire alla routine in esame i due valori rappresentati dalla linea di scansione iniziale (nel registro CH) e dalla linea di scansione finale (nel Si tratta di tre routine relative alla ,dorma» del cursore (la prima) ed alla sua posizione sullo schermo video (le altre due). Iniziamo dalla prima. Nella tabella (pagina successiva) ve- diamo che tale routine viene attivata ponendo il valore 1 nel registro AH: in particolare tale routine serve a fissare di quante linee di scansione è formato il cursore. In generale sappiamo che di solito il cursore è visibile sullo schermo in due forme differenti: o un rettangolino pie- no lampeggiante oppure un «undersco- re» un po' più spesso, sempre lampeg- giante; il rettangoli no in particolare è formato accendendo tutte le 8 linee che formano la matrice di un carattere, con- siderate, quella più in alto, come linea n. O e quella più in basso come linea numero 7, come possiamo vedere nella rappresentazione schematica seguente: Proseguiamo in questa puntata l'argomento iniziato nella scorsa e riguardante la gestione del video da parte di un programma in linguaggio Assembler, grazie all'istruzione INT 10H preceduta dall'opportuno settaggio dei registri interni della CPU. Sappiamo innanzitutto che il valore posto in AH serve a determinare quale particolare routine desideriamo attivare, mentre viceversa a seconda della routine prescelta varieranno i registri da settare come pure quelli che la routine fornirà come output. Per ogni chiamata di routine differente abbiamo sintetizzato il tutto con una tabellina dove, oltre al nome della funzione desiderata ed al valore da porre conseguentemente in AH, vengono indicati quali registri sono usati in input (abbiamo messo una «I» nella colonna «I/O») e cioè forniti dal programmatore e quali invece vengono restituiti in output (abbiamo messo una «O» nella colonna «I/O») dalla routine stessa 208 ,••tt.,* .-- linea 0 t ••••••• '*":U:tt 'Utt'l*' "., .... **""*' t**t •••• t."",* --- 1 i neil 7 --- linea. 0 •••••••• • ,.".,. -- linea ~ cursors tIpi eno" cursore del l • MS-DOS registro CL), stando attenti ad inserire valori compresi tra ° e 7 mentre possia- mo fornire valori «di inizio» maggiori di quelli «di fine»: vediamone subito due applicazioni. Supponiamo di volere un cursore rap- presentato da un trattino posto al cen- tro della matrice del carattere (un «-» un po' più lungo): dobbiamo perciò por- re in CH ed in CL il valore 3. appunto la terza linea di scansione che deve esse- re accesa: --- linea 0 t •••• t._ --- linea 3 ---- l i ne •. ~ 7 Viceversa se vogliamo avere come cursore esattamente il «contrario» del precedente,e cioè un cursore «pieno» al quale manca la quarta linea di scan- sione, dovremo porre il valore 4 nel registro CH ed il valore 2 nel registro CL, appunto per indicare che il cursore inizia alla riga 4. fa una sorta di «wrap around», ricomincia dalla linea 0, e ter- mina alla linea 2: in termini grafici ab- biamo: '*',.," --- linea 0 *UU*U t""'" *U*UU uuuu *tuun *"'"" --- linea 7 Aggiungiamo inoltre che se nel regi- stro CH settiamo il bit 5, otterremo la totale scomparsa del cursore stesso, cosa che può servire in alcuni casi nei modi testo, mentre viceversa il cursore nei modi grafici non appare e non ci MCmicrocomputer n. 72 - marzo 1988

Transcript of cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La...

Page 1: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece

MS-DOSa cura di Pierluigi Panunz;

Le routine relative all'INT 10HLa gestione del video

seconda parte

Routine di gestione del cursore

Ecco che invece l'altro tipo di cursoreusuale ha accese a lampeggianti solo lelinee di scansione 6 e 7.

Ora, se vogliamo alterare la forma delcursore dobbiamo fornire alla routine inesame i due valori rappresentati dallalinea di scansione iniziale (nel registroCH) e dalla linea di scansione finale (nel

Si tratta di tre routine relative alla,dorma» del cursore (la prima) ed allasua posizione sullo schermo video (lealtre due). Iniziamo dalla prima.

Nella tabella (pagina successiva) ve-diamo che tale routine viene attivataponendo il valore 1 nel registro AH: inparticolare tale routine serve a fissare diquante linee di scansione è formato ilcursore.

In generale sappiamo che di solito ilcursore è visibile sullo schermo in dueforme differenti: o un rettangolino pie-no lampeggiante oppure un «undersco-re» un po' più spesso, sempre lampeg-giante; il rettangoli no in particolare èformato accendendo tutte le 8 linee cheformano la matrice di un carattere, con-siderate, quella più in alto, come linea n.O e quella più in basso come lineanumero 7, come possiamo vedere nellarappresentazione schematica seguente:

Proseguiamo in questapuntata l'argomento iniziatonella scorsa e riguardante lagestione del video da parte diun programma in linguaggioAssembler, grazieall'istruzione INT 10Hpreceduta dall'opportunosettaggio dei registri internidella CPU.Sappiamo innanzitutto che ilvalore posto in AH serve adeterminare quale particolareroutine desideriamo attivare,mentre viceversa a secondadella routine presceltavarieranno i registri da settarecome pure quelli che laroutine fornirà come output.Per ogni chiamata di routinedifferente abbiamosintetizzato il tutto con unatabellina dove, oltre al nomedella funzione desiderata ed alvalore da porreconseguentemente in AH,vengono indicati quali registrisono usati in input (abbiamomesso una «I» nella colonna«I/O») e cioè forniti dalprogrammatore e quali invecevengono restituiti in output(abbiamo messo una «O»nella colonna «I/O») dallaroutine stessa

208

, •• tt.,* . -- linea 0t •••••••'*":U:tt'Utt'l*'"., ....**""*'t**t ••••t."",* --- 1 i neil 7

--- linea. 0

••••••••• ,.".,. -- linea ~

cursors tIpi eno"

cursore del l •MS-DOS

registro CL), stando attenti ad inserirevalori compresi tra ° e 7 mentre possia-mo fornire valori «di inizio» maggiori diquelli «di fine»: vediamone subito dueapplicazioni.

Supponiamo di volere un cursore rap-presentato da un trattino posto al cen-tro della matrice del carattere (un «-»un po' più lungo): dobbiamo perciò por-re in CH ed in CL il valore 3. appunto laterza linea di scansione che deve esse-re accesa:

--- linea 0

t •••• t._ --- linea 3

---- l ine•.~ 7

Viceversa se vogliamo avere comecursore esattamente il «contrario» delprecedente,e cioè un cursore «pieno»al quale manca la quarta linea di scan-sione, dovremo porre il valore 4 nelregistro CH ed il valore 2 nel registroCL, appunto per indicare che il cursoreinizia alla riga 4. fa una sorta di «wraparound», ricomincia dalla linea 0, e ter-mina alla linea 2: in termini grafici ab-biamo:

'*',.," --- linea 0*UU*U

t""'"*U*UUuuuu*tuun*"'"" --- linea 7

Aggiungiamo inoltre che se nel regi-stro CH settiamo il bit 5, otterremo latotale scomparsa del cursore stesso,cosa che può servire in alcuni casi neimodi testo, mentre viceversa il cursorenei modi grafici non appare e non ci

MCmicrocomputer n. 72 - marzo 1988

Page 2: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece

rCDC5PA J

, IL PiÙ VASTOASSORTIMENTO

DIADD-ON CARDSPER PCIXTI AT

MODEMCARD- Hayes compatibile- CCITT V.21, V.22- 300-1200 Bps

Cod. 11.9600

AT -PARALLEL/SERIAL- 1 x Parallel Port- 1 x Serial Port

Cod. 12.0300

AT-128K RAM CARO- Provvede ad espandere

la memoria RAMda 512K a 640KCod. 12.0895

INDUSTRIAL I/O- 16 x Relay output- 16 x Photo couple input

Cod. 11.8700

• 8.S.C. CARO• RS-422• 4/8 SERIALI

PER XENIX

• AD-DA DM-P005(uso industriale)

• AD-DA 14(uso industriale)

• AD-DA FPC-010(uso didattico)

• AD CONVERTER(alta velocità)

• MULTI-DA(alta velocità)

ICTESTSCHEDA PARLANTE

• PAL WRITER(standard Jedec)

• 8. PROM WRITER• E. PRO M WRITER

2716-27512(da 1 a 10 textool)

• 8748-8749 WRITER

AMPIA VARIETÀ DI I ~\~\* DATA SWICHES ~~e~~~p.p..?~\\e'~~. A9* SWITCH BOX 9;\~ C S\~f\* CONVERTITORI DI PROTOCOLLO 'òo\O~f\~o~s\~"* BUFFER 16/64/256 e 1MB Ò ~f::>,* PENNE OTTICHE ~~ .* CAVI STAMPANTI PARALL., SERIALI, ECC.* ACCESSORISTICA PER CAVI SERIALI* GRUPPI DI CONTINUITÀ

I TELEFONATECI, NON POSSIAMO ELENCARVI TUnO! I

RICHIEDETECI IL CATALOGO - SCONTI AI SIG.RI RIVENDITORIC.D.C. SpA v. T. Romagnola, 63 - 56012 - FORNACETTE (Pisa) Tel. 0587/422.022

BAR CODE READER• Legge tutti i codici a barre• Emula la tastiera del PC/XT / AT* Semplice da installare

Page 3: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece

MS-DOS

Routine di gestione globaledello schermo

Si tratta in questo caso di altre treroutine, che rispettivamente permetto-

sono possibilità di farlo comparire. Laseconda utility relativa al cursore è quel-la che serve a posizionare il cursoreall'interno dello schermo video, fornen-do alla routine stessa le «coordinate»del cursore ed attivandola ponendo ilvalore 2 in AH.

In particolare si ha che la posizionedello schermo in alto a sinistra ha percoordinate (0,0) ed in funzione del mo-do video desiderato si potrà arrivare allalocazione in basso a destra di coordina-te (24,79) oppure (24,39) a secondacioè, se si abbia un modo video a 80oppure a 40 colonne.

Il valore della «riga» deve essere po-sto in OH, mentre il valore della «colon-na» va posto in OL: valori al di fuori deirange permessi in genere fanno si che ilcursore diventi invisibile (ma pure quelloche vogliamo scrivere!).

Inoltre nel registro BH dobbiamo por-re il numero della pagina video attiva(che è la O per i modi grafici). ma per idettagli rimandiamo al prossimo para-grafo, quando descriveremo la routineche setta una pagina attiva.

La terza routine infine è in un certosenso la «complementare della som-ma» delle precedenti due, in quanto, apartire dal valore 3 posto in AH e dalnumero di pagina video attiva posto inBH, fornisce in CH e CL le linee inizialee finale di scansione del cursore (diquella pagina video). nonché in OH e OLle coordinate stesse del cursore espres-se ancora una volta come numero diriga e di colonna.

un 1011.

.iNl "1011.

Tabella 6Questa routine è lacomplementare della precedentein quanto effettua lo scroll versoil basso di una finestra all'Internodel video.

Tabella 5Routlne che effettua lo scrollverso l'alto di una finestraall'Interno del video (anche tuttala pagina completa. ovviamente).oppure la cancellazione del suocontenuto.

Tabella 4La routine permette di cambiarela pagina Video. senza perdere laposiZione del cursore nel caso diritorno alla precedente

dono 40 colonne (per 25 righe). consen-tono la bellezza di 8 pagine video, nu-merate tra O e 7, mentre i modi ad 80colonne (escluso il modo 7, monocro-matico). consentono quattro pagine vi-deo, i cui valori vanno da Oa 3. Succededunque che in genere viene utilizzata lapagina O come pagina corrente di utiliz-zazione, mentre ad esempio si può usa-re la pagina 1 (o qualsiasi altra) perl' «help» o per la memorizzazione tem-poranea di messaggi: per mezzo dellachiamata che stiamo analizzando si ha ilpassaggio «istantaneo» da una paginaall'altra .

Ribadiamo il concetto dell'istantaneitàdel passaggio tra pagine: infatti la routi-ne Assembler che implementa appuntolo switch tra pagine non fa altro chemodificare l'indirizzo iniziale della zonadi memoria da visualizzare all'internodel processare video (che ricordiamoessere un 6845). senza andare minima-mente a toccare la memoria relativa allapagina che si abbandona.

Si tratta cioè, in un certo senso, diun passaggio tramite 1'«hardware» enon a mezzo di routine software: taleroutine inoltre garantisce la correttamemorizzazione della posizione del cur-sore, come dire che, passando adun'altra pagina e poi ritornando alla pre-cedente, la posizione del cursore nonsarà stata modificata e potremo conti-nuare tranquillamente ciò che stavamofacendo.

Un altro fatto notevole è che si puòovviamente scrivere su di una pagina«non attiva» in quel momento, mentremagari si sta visualizzandonè un'altra edè in questo senso che poi il passaggiotra le due pagine avverrà istantanea-mente.

veC' ••o 11 oaS50

~SC("Oll UO)

lsc("oll oown)

\set actlVe oaqeJAI1=:J

AH=l

S.lqll.lIlcat.a

Slçnll1cat.o

oaglna at.t.1ViJ

llnee 01 sc("olllnç ve("so 1 aÌt.oat.tl~lPUt.Ol"'lQa suoe("lo~"'ecolonl1a. a 61n16t.("a('lQa lnieC'lo("eco lonna il oest.l"'a

11nee 01 5c("0111nQat.t.l~lDUt.OC'lQa suoe"''''lo("ecolol1na a Sln15t.("a("19a lnleC'loC'ecolonna a oest.ra

lNT 1UH.

.l.r1l] lUH.

iN f 1UH. At1=o

AL

ALeHCI1CLOHOL

ALeHeHCLOHOL

llll ,

ll

.110 I l"eq

I l ,

11101 ("eç

,+---+------+---------------------------------------------.

+===+======~=======a=====================================~

I+---~------+---------------------------------------------~

+---+------~---------------------------------------------~

11/01 ("eQ SlQnlilcat.o I+---~------.---------------------------------------------..===.======.=============================================~

Tabella 2Questa routine indirizza ilcursore (è la stessa del BASICAquando usiamo l'istruzioneLQCATE. del Turbo Pascalquando si usa la procedura"gotoxyO").

Tabella 1La routine ((1" consente disettare la dimensione delcursore. secondo i nostri gusti.

Tabella 3Questa routine permette diconoscere la posizione correntedel cursore. oltre che il suo((aspetton,

no di settare la pagina video attiva e dieffettuare lo scroll del video nelle duedirezioni e cioè verso l'alto e verso ilbasso: iniziamo dalla prima. La routineche setta la pagina video attiva (vedasila tab. 4) viene eseguita ponendo innan-zitutto nel registro AH il valore 5 e poi inAL il numero della pagina video daattivare.

Per quanto riguarda il valore da porrein AL, vediamo ora alcune considera-zioni.

Nei soli modi di testo all'interno dellaCGA (Colar Graphic Adapter). e cioè imodi video tra O e 3, è possibile gestirepiù di una pagina di testo (grazie allaRAM disponibile sulla scheda) anche senormalmente si fa sempre riferimentoalla prima di esse e cioè la «pagina O».

In particolare i modi video che preve-

\ e~ CUCSOC C1menS10nJ

AH=4:

AH=3

AI1=l

51qn111ca(.0

5 U;Jn l I lCat.

S19nlf1cat.o

oaçll.na att.ival'1çò

colonna

oaqlna at.t.lva

O['lma. i1nea cursoceult1ma 11nea cucsocel"lqa

aClma linea cucscceUltima linea cucsore

11'41 10H.

CHCLOHOL

eHcL

BHOHOL

BHIl/O I l"eq

l l/O I C'eQ

i 1 I

, O II O II O II O I

I l i

l i I

I l I

11/0 I reg

I l I

i 1 I

210 MCmicrocomputer n. 72 - marzo 1988

Page 4: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece

AVETE MAI PENSATO CHE•.. 'CDC rLA C.D.C. importa direttamente dai costruttori di INiERFACCE, MAIN BOARD,

TASTIERE, CASES, ecc. solo le parti staccate per garantire il meglio della 5'C""J /'1produzione orientale ed inoltre ASSEMBLA in proprio effetuando un TEST ~ ' ,., JPRELIMINARE DI FUNZIONAMENTO. • ••

LA C.D.C. inserisce sui propri PC/XT/AT* da SEMPRE solo ed esclusivamente i DRIVECHINON che sono sinonimo di qualità, silenziosità, ed affidabilità.

LA C.D.C. è organizzata in modo da avere SEMPRE pronto a magazzino quanto Vioccorre e può effettuare spedizioni ANCHE IN GIORNATA (SERVIZIORAPIDO PER LE ISOLE 24 ORE IN PREPAGATO).

LA C.D.c. GARANTISCE i propri prodotti con la sostituzione immediata o riparazio-ne ANCHE DOPO IL PERIODO DI GARANZIA (servizio HALF COST)o

LA C.D.C. ha tutti i pezzi di ricambio a magazzino degli articoli di propria importa-zione che vengono conservati per minimo 5 ANNI.

SPESSO È MEGLIO SPENDERE QUALCOSA IN PiÙ PER SPENDERE MENO ...

••• PENSATECI .•.!!!NUOVA

SEDE

DISTRIBUTORE

• PC / XT / AT COMPATIBILI• PC / XT PORTATILI

TORINO

H2S s.r.l.Via Assisi, 80

Tel. 06/7883697

AGENZIE:ROMA

C.S.M. SISTEM s.r.l.Via Valsolda, 21Tel. 02/8435685

. MILANO

R.M. PROFESSIONALVia Accademia Albertina, 35/C

Tel. 011/510173

TELETEX s.r.l. - Via Emilia, 51Anzola Emilia (80) - Tel. 051/734485

DEPOSITI:~

• MODE M• STAMPANTI• FLOPPY DISK DRIVE• HARD DISK• STREAMER• MONITOR

• INTERFACCE X APPLE/lBM • DISKETIE

C.D.C. SpA V. T. Romagnola, 63 - 56012 • FORNACETTE (Pisa) Tel. 0587/422.022RICHIEDETECI IL CATALOGO E PREVENTIVI OGGI STESSO!!

Page 5: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece

MS-DOS

1'"---+------+------------------------- ---T

1'"---1'"------+---------------- ---1'"

.•.= = = 1'" === == = 1'" == == === = = = = = = = = = == === === ==== == = = == === = === === = 1'"

La seconda routine (tab. 8) consentedi scrivere una o più repliche di un certocarattere ASCII a partire dalla posizionecorrente del cursore.

Attivata con un valore pari ad 8 in AH,dobbiamo mettere in AL il codice ASCIIdel carattere da rappresentare, in BL ilsuo attributo video, in BH il numero dipagina video attiva ed infine in CX ilnumero di volte che tale carattere deveessere eventualmente ripetuto: ponen-do 1 in CX allora si potrà scrivere uncarattere solo, mentre (attenzione ...) unvalore nullo in CX farà sì che venganovisualizzati la bellezza di 65536 caratteriuguali, equivalenti ad una trentina dipagine piene di caratteri (se in modo ad80 colonne). che diventano più di 60 sesi lavora con 40 colonne Il

Unico svantaggio di questa routine èche il cursore, una volta scritto il carat-tere, non avanza .

Nel caso di modi grafici si ha che ilvalore posto nel registro BL rappresentail colore del carattere stesso (il cosid-detto «foreground colar»). mentre a se-conda del valore assunto dal bit piùsignificativo si avrà un comportamentodifferente della visualizzazione.

In particolare se tale bit è posto a «O»allora il carattere prescelto e con il colo-re desiderato andrà a sovrascrivere, pi-xel dopo pixel, il colore precedente deipixel eventualmente già accesi, mentrese tale bit è posto ad «1» allora i coloridei pixel già accesi e dei pixel da accen-dere verranno posti in XOR (or esclusi-vo) attenendosi in tal modo sempre uncarattere che «spicca» rispetto allosfondo e non ne viene viceversa «soffo-cato» come nel caso precedente, a tut-to vantaggio della leggibilità.

Infine la terza routine (tabella 9) con-sente di scrivere un carattere nella posi-zione corrente del cursore, senza peròpoter alterare il colore dello schermonel punto in cui si scriverà il caratterestesso: in un certo senso è una versio-ne ridotta della routine precedente.

Ecco che ora in AH metteremo ilvalore 10, in AL il valore corrispondenteal carattere da rappresentare, in BH ilnumero della pagina attiva ed in CX ilnumero di volte che si vuole ripeteretale carattere.

In più per i modi grafici si deve porrein BL l'attributo di colore del carattereda scrivere, e valgono anche in questocaso le possibilità legate allo stato delbit più significativo, viste per la routineprecedente.

Con questo abbiamo terminato lapuntata e rimandia,mo alla prossima peril proseguimento dell'analisi delle rima-nenti routine di gestione del video.

Me

Tabella 8Questa routine permette discrivere un carattere (o piùrepliche) con attributo video,nella posizione corrente delcursore all'interno della paginaattiva.

Tabella 9Effettua un'operazione analogaalta routine ((911, ma non puòsettare l'attributo del carattereda visualizzare.

Tabella 7Consente di leggere il carattere(e l'attributo) posto nellaposizione corrente del cursore,all'interno di una qualsiasi paginavideo e perciò nonnecessariamente quella attiva.

e cioè saranno valori compresi tra 1 e40, se si sceglie di rappresentare iltesto in 25 righe di 40 caratteri, mentreovviamente tra 1 ed 80 nel caso in cuilo schermo visualizzi 25 linee di 80caratteri (che è in genere il modo piùusato).

Routine di gestionedei singoli caratteri

Si tratta di altre tre routine, i cuiregistri usati sono riportati nelle tabelle7, 8 e 9.

In particolare la prima si riferisce allapossibilità di leggere il carattere (e l'attri-buto) posto in una certa posizione delloschermo e non necessariamente all'in-terno della pagina attiva: anzi, con taleroutine possiamo andare a leggere velo-cemente quale carattere è posto nellaposizione corrente del cursore in unaqualunque delle possibili pagine video.

In più questa routine lavora anche nelcaso dei modi grafici e saprà riconosce-re per confronto se la configurazione dipixel posta in corrispondenza del curso-re è o meno un carattere (eventualmen-te definito dall'utente): in questo casola pagina sarà per default quella O.

Dunque per attivare questa routine sipone in AH il valore .8, mentre in BH sipone il numero della pagina su cui sivuole avere l'informazione; in output laroutine fornirà in AH il codice ASCII delcarattere letto, mentre in AL l'attributodel carattere stesso (per i particolari sirimanda alla puntata precedente).

Nei modi grafici inoltre, se il caratterenon coincide con nessun «pattern» dipixel conosciuto al computer, allora siavrà un valore di ritorno nullo in AH.

S1.çJn111cat.o

s1gn1i1caco

numeI'O oaq1.nacoloI'e 1n mooo QI'af1.conUme1"O caC'at.t.eI'l

caI'a~~eC'e

Il/O. ("eg I

j l I AL l

l l l eH II 1 I 8L lI 1 I c... I

11/0 t reg l

~===.======~======================z======================~INT 10H. AH=OAH ~W~1.t.e cna~ac~eI'J

lNT 10h. AH=b \("eac cna("act.e(" ano atC("1Dut.el

+ = = = = = = = = = = = = = = = = = = = = = = = = =:or= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ~

11/0 I C'eQ I SlQnl f l.cato l~---.------+---------------------------------------------~

lNT 1UH. AH=~ \WC'lt.e cnaC'acteC' ano att.C'lout.e) I

I O I AH I caC'at",eC'el U l AL l actl~lOUt.O l+---+------+---------------------------------------------+

~---~------~---------------------------------------------~

1'"===+======+=============================================1'"+=~======================================================+

l l I AL l ca~a~~e~el l j f:lH •• numeI'O oaqlnal l l BL I a~~~lOu~O• l l eX I nUme1"O C';l.l~at.t.eI'1. I+---+------~---------------------------------------------~

Le successive due routine servonoinvece, come detto, ad effettuare loscroll verso l'alto o verso il basso, ri-spettivamente ponendo in AH il valore 6oppure il valore 7.

Le analizziamo contemporaneamentein quanto quello che cambia sarà evi-

dente volta per volta (si vedano le tabel-le 5 e 6).

In particolare con tali routine si posso-no definire delle finestre di testo, che sipossono far scorrere verso l'alto o ver-so il basso o addirittura cancellare: ilvalore posto in AL infatti definisce diquante linee il testo debba scrollare ese tale valore è O oppure maggiore delnumero di linee che effettivamente for-mano la finestra (si vedrà tra breve ...)allora si avrà la cancellazione della fine-stra. Ciò è alquanto oVVIO in quanto loscrolling non fa altro che inserire unalinea vuota in fondo alla finestra (nelcaso di scroll verso l'alto) oppure all'ini-zio della finestra (scroll verso il basso).andando ad eliminare una linea di testorispettivamente all'inizio e alla fine deltesto: se il numero di linee da far scor-rere è maggiore della dimensione dellafinestra, ecco che le linee vuote inseritepian piano andranno a cancellare com-pletamente la finestra.

Abbiamo parlato che si può setta re ladimensione della finestra: ciò si effet-tua ponendo in CH e DH rispettivamen-te i numeri delle linee superiore edinferiore della finestra (compresi ovvia-mente tra 1 e 25). mentre in CL e DLrispettivamente il numero delle colonneposte all'estrema sinistra e all'estremadestra, questa volta con valori che di-penderanno dal modo di testo prescelto

212 MCmicrocomputer n. 72 - marzo 1988

Page 6: cura di Pierluigi Panunz; Le routine relative all'INT 10H ... · Le routine relative all'INT 10H La gestione del video seconda parte Routine di gestione del cursore Ecco che invece