Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Funzioni BIOS

Home » Programma il Computer » Tutorial Assembly

Tutorial Assembly - Funzioni BIOS

  Programmazione

CURSORE 2/5 [17 di 79] 

 

bullet Gestione BIOS del cursore Hardware - INT 10H - Funzione 01H

 

INT 10H

Funzione 01H Controllo della dimensione del Cursore

 

bulletFissa la dimensione del cursore lampeggiante, prodotto dall'hardware della scheda video tracciando una o più linee di Pixel nello spazio riservato al carattere che sta per essere scritto.
bulletIn ogni caso il cursore lampeggiante è visibile solo nei Modi Testo; nei Modi Grafici viene spento automaticamente, pur mantenendo la completa gestibilità della posizione di stampa in ognuna delle pagine video previste dall'adattatore disponibile e dal Modo Video.

 

bulletIn ingresso:
bullet AH è posto a 01H
bulletCL consente di specificare la linea di pixel finale, posta nella parte bassa:
bulletai 5 bit meno significativi (bit4÷bit0) è affidato il compito di esprimere il numero della linea di scansione finale, con valori che vanno da 0 (00000) a 15 (01111)
bulleti 3 bit più significativi (bit7÷bit5) di CL non sono significativi, per cui possono essere assunti tutti a 0:

  

CL   7 6 5 4 3 2 1 0
0 0 0 F F F F F

  

bulletCH consente di specificare la linea di pixel di partenza, posta nella parte alta:
bulletai 5 bit meno significativi (bit4÷bit0) è affidato il compito di esprimere il numero della linea di scansione iniziale, con valori che vanno da 0 (00000) a 15 (01111)
bulletdelle possibili 8 combinazioni dei rimanenti 3 bit più significativi (bit7÷bit5) producono effetto (su schede EGA/VGA)  solo i valori 000 e 001; la prima (bit5=0) assicura la normale presenza fisica del Cursore, mentre la seconda (bit5=1) consente la possibilità di far sparire (nasconde) il Cursore

  

CH   7 6 5 4 3 2 1 0
0 0 I I I I I

  

bulletla funzionalità di questi 3 bit di CH non è per altro documentata con sicurezza e questa tecnica potrebbe non funzionare su tutti i computer.
bulletIn particolare alcuni cloni affidano alla coppia bit6,bit5 una particolare attività, purtroppo difficilmente riscontrabile: le prime combinazioni ribadiscono il controllo sulla visibilità appena descritto (bit6,bit5 = 00, Cursore Normale, bit6,bit5 = 01, Cursore Invisibile); le rimanenti combinazioni agiscono sulla velocità di lampeggio (bit6,bit5 = 10, Cursore Lento, bit6,bit5 = 11, Cursore Veloce)
bulletil  valore massimo per CH (=inizio) e CL (=fine) dipende dal tipo di scheda grafica, in funzione del numero massimo di linee di scansione previste:
bullet07 per la CGA (n° massimo di linee previste = 08, da 0 a 7)
bullet13 per la MDA e l'EGA (n° massimo di linee previste = 14, da 0 a 13)
bullet15 per la MCGA e la VGA (n° massimo di linee previste = 16, da 0 a 15)
bulletla dimensione di default del cursore è prefissata dalla ROM BIOS in fase di inizializzazione; i valori di default sono, di norma:
bulletCH=06/CL=07, adatti alla matrice 8*8 della CGA
bulletper effetto della cosiddetta emulazione del Cursore, la ROM BIOS modifica (rimappa) automaticamente tali valori per adattarli alle dimensioni del carattere realmente disponibile:
bulletCH=11/CL=12 per MDA e  EGA
bulletCH=13/CL=14 per MCGA e VGA
bulletse l'emulazione è attiva (cosa che si verifica per default) il programmatore non deve preoccuparsi del problema e continuerà a specificare i valori CGA, CH=06/CL=07

  

bulletIn uscita lascia:
bulletnella variabile di sistema posta a 0000:0460H, il valore predisposto in CX, riservata appunto alle dimensioni del Cursore.
bulletLa Funzione si chiama dunque in questo modo:

               

  

Suggerimento Il cursore può dunque essere eliminato dal video fissando i valori CH=20H/CL=00H.

  

bulletCome detto all'inizio il lampeggio del cursore è generato dall'hardware della scheda video e non può essere spento da hardware.
bulletIn alternativa è possibile nascondere il Cursore anche fissandolo in una posizione di stampa non appartenente alla pagina video corrente, per esempio forzandolo sulla ipotetica riga 25, cioè sulla prima riga all'inizio della pagina video successiva, con l'aiuto della Funzione 02H di INT 10H.

       

bulletLa Funzione 12H dell'INT 10H offre una SottoFunzione 34H che consente il controllo di questa opportunità, abilitando o meno l'emulazione del Cursore alfanumerico; essa controlla e riflette il valore del bit0 della variabile di sistema posta a 0000:0487H; all'accensione l'emulazione del Cursore è abilitata (bit0 = 0).

  

bulletSe si desidera impostare le linee di partenza e di arrivo del Cursore ad un qualunque valore compreso tra 0 e il numero massimo di linee previsto dalla risoluzione corrente meno uno (15 per la VGA) è necessario forzare a 1 il bit0 della variabile di sistema posta a 0000:0487H o chiamare opportunamente la su citata SottoFunzione 34H della Funzione 12H di INT 10H, prima di modificare le dimensioni con la Funzione 01H che sto descrivendo.

  

bulletVediamo l'aspetto del cursore con diverse coppie di valori per CH (=inizio) e CL (=fine):

  

CH=0 00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15















CL=15
 






CH=7
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
  






■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
■■■■■■■■
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15















CL=15
 














CH=15
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
  













 

■■■■■■■■
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15















CL=15

  

bulletL'eseguibile B10_01__.COM mostra l’effetto della manipolazione diretta della dimensione del cursore con la Funzione 01H di INT 10H: facendo crescere e decrescere i valori di  CH e CL: come preannunciato emerge una piccola delusione..., ci sono errori inaspettati..
bulletGuarda la differenza cliccando sull'eseguibile B10_1234.COM ... basato invece sulla SottoFunzione 34H della Funzione 12H di INT 10H, che discuteremo tra non molto: ogni difetto è sparito!
bulletI sorgenti sono documentati nella sezione ASM (clicca sull'iconaApplicazioni Software, nel menu a sinistra).

  

Suggerimento La Libreria Giobe.LIB gestisce (ovviamente nei Modi Testo) la scomparsa del cursore con la procedura Via_cur e ne riattiva il lampeggio con la procedura Rip_cur.

    

Pagina Precedente Funzioni BIOS Pagina Successiva CURSORE 2/5   Torna alla Home della Sezione Assembler - DownLoad Torna al Menu di "Programma il Computer"
17 di 79
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

    

Funzioni BIOS » Elenco Progressivo | Seriale | Parallela | Stampanti | Video | Cursore
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati