dal 2015 - visita n. 603
TastieraDOScd
TastieraDOScd

 

Tastiera DOS


In questa sezione si trovano dei frammenti di software di difficile riutilizzo negli attuali sistemi operativi ad interfaccia visuale, ma che possono risultare interessanti sotto altri aspetti se non si ha la frenesia dell'ultima novità. Sono, in un certo senso, utensili archeologici perfettamente funzionanti e carichi di tutto il fascino che può avere un reperto; possono essere tenuti come soprammobili e come un vecchio carillon, se saputi trattare, possono suscitare ancora antiche emozioni. Nel loro DNA circola ancora la stessa vitalità del pensiero logico che li ha creati.

Si tratta di piccole routine per gestire i vari stati della tastiera in ambiente DOS, ad integrazione dei pochi controlli disponibili nei normali linguaggi. Sono state sviluppate sotto forma di funzioni/procedure richiamabili da Pascal, e talvolta anche in C. Gli strumenti necessari per la loro verifica sono quelli classici: MASM o TASM, LINK o TLINK, un EDITOR ASCII, un compilatore Borland PASCAL da 4.0 a 7.0. Nel caso di utilizzo per C viene utillizzata una direttiva di compilazione che imposta il modello di memoria adatto alla circostanza; occorre un piccolo file di nome MODEL.IAS che contiene le seguenti 2 righe:

.model medium
comp__pascal equ 1

oppure

.model medium
comp__c equ 1


Ogni funzione/procedura può essere scaricata ed usata così com'è o modificata a proprio piacimento per uso personale. In caso di utilizzo in pagine Web si raccomanda di NON alterare l'intestazione con i riferimenti all'Autore/Proprietario e si gradisce un Link a questo sito o una e-mail. Questo materiale viene reso disponibile FREEWARE o meglio CAREWARE, secondo la definizione datane da Paul Lutus .

Procedure XSetInsKey(S: Boolean);
Imposta il tasto bistabile Ins a On/Off (1/0)
Es.: XSetCapsKey(1);
Es.: * void XSetInsKey(char ch);

Procedure XSetCapsKey(S: Boolean);
Imposta il tasto bistabile Caps a On/Off (1/0)
Es.: XSetCapsKey(1);
Es.: * void XSetCapsKey(char ch);

Procedure XSetNumKey(S: Boolean);
Imposta il tasto bistabile Num a On/Off (1/0)
Es.: XSetNumKey(1);
Es.: * void XSetNumKey(char ch);

Procedure XSetScrollKey(S: Boolean);
Imposta il tasto bistabile Scroll a On/Off (1/0)
Es.: XSetScrollKey(1);
Es.: * void XSetScrollKey(char ch);

Function XInsKeyLocked: Boolean;
Legge lo stato del Tasto Bistabile Ins (On/Off B=1/0).
Es.: B:=XInsKeyLocked;
Es.: * char XInsKeyLocked();

Function XCapsKeyLocked: Boolean;
Legge lo stato del Tasto Bistabile Caps (On/Off B=1/0).
Es.: B:=XCapsKeyLocked;
Es.: * char XCapsKeyLocked();

Function XNumKeyLocked: Boolean;
Legge lo stato del Tasto Bistabile Num (On/Off B=1/0).
Es.: B:=XNumKeyLocked;
Es.: * char XNumKeyLocked();

Function XScrollKeyLocked: Boolean;
Legge lo stato del Tasto Bistabile Scroll (On/Off B=1/0).
Es.: B:=XScrollKeyLocked;
Es.: * char XScrollKeyLocked();

Function XAltKeyPressed: boolean;
Legge lo stato del Tasto Alt: true se premuto.
Es.: B:=XAltKeyPressed;
Es.: * char XAltKeyPressed();

Function XCtrlKeyPressed: boolean;
Legge lo stato del Tasto Ctrl: true se premuto.
Es.: B:=XCtrlKeyPressed;
Es.: * char XCtrlKeyPressed();

Function XLShiftKeyPressed: boolean;
Legge lo stato del Tasto Left-Shift: true se premuto.
Es.: B:=XLShiftKeyPressed;
Es.: * char XLShiftKeyPressed();

Function XRShiftKeyPressed: boolean;
Legge lo stato del Tasto Right-Shift: true se premuto.
Es.: B:=XRShiftKeyPressed;
Es.: * char XRShiftKeyPressed();

Function XSysReqKeyPressed: boolean;
Legge lo stato del Tasto SysReq: true se premuto.
Es.: B:=XSysReqKeyPressed;
Es.: * char XSysReqKeyPressed();

Function XCapsKeyPressed: boolean;
Legge lo stato del Tasto Caps: true se premuto.
Es.: B:=XCapsKeyPressed;
Es.: * char XCapsKeyPressed();

Function XNumKeyPressed: boolean;
Legge lo stato del Tasto Num: true se premuto.
Es.: B:=XNumKeyPressed;
Es.: * char XNumKeyPressed();

Function XScrollKeyPressed: boolean;
Legge lo stato del Tasto Scroll: true se premuto.
Es.: B:=XScrollKeyPressed;
Es.: * char XScrollKeyPressed();

Function XRAltKeyPressed: boolean;
Legge lo stato del Tasto Right-Alt: true se premuto.
Es.: B:=XRAltKeyPressed;
Es.: * char XRAltKeyPressed();

Function XRCtrlKeyPressed: boolean;
Legge lo stato del Tasto Right-Ctrl: true se premuto.
Es.: B:=XRCtrlKeyPressed;
Es.: * char XRCtrlKeyPressed();

Function XLAltKeyPressed: boolean;
Legge lo stato del Tasto Left-Alt: true se premuto.
Es.: B:=XLAltKeyPressed;
Es.: * char XLAltKeyPressed();

Function XLCtrlKeyPressed: boolean;
Legge lo stato del Tasto Left-Ctrl: true se premuto.
Es.: B:=XLCtrlKeyPressed;
Es.: * char XLCtrlKeyPressed();

Function XTestKbd: Byte;
Imposta il valore di TP_Keyboard (tipo byte definito nel chiamante), in funzione del tipo di tastiera: 00h Tastiera Normale, 10h Tastiera Estesa.
Es.: XTestKbd;
Es.: * char XTestKbd();

Procedure XTestKey(Var B: Boolean; Var C: Char; Var S: Byte);
Riporta B=True, ASCII-Code e Scan-Code se è stato già battuto un tasto, altrimenti riporta B=False.
Es.: XTestKey(B,Ch,Sc);

Function XReadKey: Word;
Restituisce 0 se non è stato battuto alcun tasto altrimenti Hi(ReadKey) è lo ScanCode del tasto e Lo(XReadKey) è l'AsciiCode. Visionare le tabelle ScanAscii (TPUNOTE1) per i codici associati ai tasti e le costanti predefinite in TPUVARIN.
Es.: W:=XReadKey;
Es.: * int XReadKey;

Function XWaitChar: Char;
Restituisce il codice ASCII del tasto battuto.
Es.: C:=XWaitChar;
Es.: * char XWaitChar();

Function XWaitUpChar: Char;
Restituisce il codice ASCII del tasto battuto, convertito in maiuscolo se cade nell'intervallo ['a'..'z'].
Es.: C:=XWaitUpChar;
Es.: * char XWaitUpChar();

Procedure XWaitKey(Var C: Char; Var S: Byte);
Attende la battuta di un tasto e ne riporta ASCII-Code e Scan-Code.
Es.: XWaitKey(Ch,Sc);
Es.: * void XWaitKey(char far *ch, char far *sc);

Function XScanKey: Char;
Restituisce, per i tasti funzione a doppio codice, lo scan code aumentato di 128.
Es.: Ch:=XScanKey;

Procedure XFlushKbd;
Svuota il Buffer della tastiera da battute precedenti.
Es.: XFlushKbd;
Es.: * void XFlushKbd();

Procedure XStuffKbd(St: String);
Carica il Buffer di Tastiera con la stringa St troncata ai primi 15 caratteri.
Es.: XStuffKbd(St);

Procedure XDisableKbd;
Disabilita la tastiera.
Es.: XDisableKbd;
Es.: * void XDisableKbd();

Procedure XEnableKbd;
Abilita la tastiera.
Es.: XEnableKbd;
Es.: * void XEnableKbd();



Asm86
COPYBLK1
COPYBLK2
DISPMSG1
DISPMSG2
DISPMSG3
FILLBLK1
FILLBLK2
WAITKBD1
SOMDIF1
PASSWRD1
CLRSCR1
SCACCHI1
SCACCHI2
SCACCHI3
SCACCHI4
ALLCHAR1
ATTRIB1
CLRSCR2
TESTOCOM
ORDIN1
Funzioni Stringa
Tastiera DOS



Insisti su te stesso; mai imitare. Tu puoi presentare in ogni momento il tuo talento con la forza accumulata coltivandoti per tutta la vita; ma il talento che hai adottato da un altro lo possiedi solo in maniera estemporanea. Ciņ che ognuno puņ fare nel modo migliore, nessuno se non il suo Fattore puņ insegnarglielo.
Ralph Waldo Emerson

Valid CSS!
pagina generata in 0.001 secondi