Libreria delle ProcedureGestione Mouse

Entra nella Libreria GIOBE.TPU

 CambiaCur2 

CODICE SORGENTE [3 di 4]  

    
bulletLa procedura è parzialmente scritta in linguaggio Assembly. E' probabile che il lettore, in questo momento, non sia in possesso delle conoscenze di base della programmazione a basso livello, per cui questa pagina può risultare incomprensibile; desidero fornirtela comunque, come stimolo per approfondire questa potente tecnica di programmazione (vedi Sezione Tutorial Assembly).
    
bulletLa procedura opera un profondo cambiamento sul carattere coperto dal Cursore del Mouse con l’aiuto della Funzione 0AH della libreria INT 33H, caricata in memoria dal driver del Mouse direttamente da Windows o manualmente dal prompt del Dos
bulletEssa produce l'effetto desiderato intervenendo direttamente in RAM video in modo testo [per saperne di più consulta la Scheda nella Sezione Dentro il Computer] cioè modifica da software sia il codice ASCII che l'attributo di colore di ciascun carattere coperto dal mouse
bulletIl codice proposto è in realtà molto meno potente di quanto potrebbe essere: infatti CambiaCur2 si limita a manipolare il colore, lasciando inalterato il codice Ascii del carattere trovato.
    
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE CambiaCur2(sfondo,colore:word);
BEGIN
  IF (
sfondo<16)and(colore<16) THEN
  begin
   asm
     PUSH   AX
     PUSH   BX 
     PUSH   CX
     PUSH   DX 
     MOV    CL,8      ;Sposta il byte del
colore di primo
     MOV    AX,
colore ;piano da AL a AH, lasciando AL=00H
     SAL    AX,CL     ;

     MOV    CL,12     ;Sposta il byte  di
attributo da DL
     MOV    DX,
sfondo ;a DH, lasciando DL=00H e DH  nella
     SAL    DX,CL     ;forma SSSS 0000 con SSSS bit
sfondo

     ADD    DX,AX     ;Prepara le 
maschera da  applicare
     MOV    CX,00FFH 
;lasciando in DH il codice di atti-
                      ;
buto  e  DL=00H,  CH=00H  e CL=FFH
     MOV    BX,0000H
     MOV    AX,
000AH
    
INT   33H
     POP    DX
     POP    CX
     POP    BX
     POP    AX
   end;
  end;
END;
    
bulletLa descrizione del codice Assembly è senza dubbio piuttosto complessa, non tanto per la sequenza di istruzioni ma per quello che il codice non dice [per saperne di più consulta la Scheda dedicata al Mouse nella Sezione Dentro il Compute].
bulletL'uso della Funzione 0AH della libreria INT 33H da per scontata la sua conoscenza dettagliata, senza la quale non è possibile capire in che modo produrrà il suo effetto. In particolare possiamo sottolineare che:
bullet il codice ASCII del carattere viene sottoposto prima a AND con il valore di CL e poi a XOR con DL
bullet il codice ASCII del carattere viene sottoposto prima a AND con il valore di CL e poi a XOR con DL
bullet il byte d'attributo del carattere viene sottoposto prima a AND con il valore di CH e poi a XOR con DH
bullet I valori forniti in CX costituiscono la "maschera dello schermo" e concorrono a definire il nuovo carattere imposto sul video al posto di quello coperto dal cursore del Mouse.
bullet I valori forniti in DX costituiscono la "maschera del cursore" e concorrono a definire il nuovo colore del carattere coperto dal cursore del Mouse.
bulletLa struttura del codice suggerito dall'Autore impone DL=CH=00, CL=FF e DH=attributo di colore, per cui l'effetto prodotto sul carattere sottostante è il seguente:
bulletcodice Ascii inalterato: sia la AND con che la XOR con DL=00 non producono modifiche
bulletcolore dato da "colore","sfondo": l'attributo originale viene infatti sottoposto alla AND con CH e ne azzera il valore, e poi alla XOR con DH=nuovo attributo che praticamente diventa il colore effettivo
    
Suggerimento Il lettore esperto (o coraggioso) può prendere spunto da queste note per creare altre procedure CambiaCur catturando e modificando il codice proposto: per esempio:
con CL=DF e DL=00 si rendono naiuscoli i caratteri su cui passa il mouse
con CL=FF e DL=00 si lasciano inalterati
con CH=FF e DH=77 si produce sull'attributo corrente un effetto di Inverse Video
con
con CH=FF e DH=00 si lascia l'attributo inalterato
    
Pagina Precedente Mouse Pagina Successiva   CambiaCur2 Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Mouse"
Esempio Sorgente Mostra
22 di 23

    

PASCAL  »

Libreria Giobe | Librerie Standard | Allegati | Applicazioni | Info | Download
PROCEDURE  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
Box | Cornici | Cursore | Aree a Riga Intera | Aree a Schermo Totale
FUNZIONI  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
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