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

Libreria GIOBE.ASM

Home » Programma il Computer » Tutorial Assembly

Raccolta di Procedure

  Raccolta di Procedure ASM

KEYwait 5/5 [10 di 54] 

    

bulletIn questa ultima pagina dedicata alla Procedura KEYwait cerchiamo di chiarire il suo compito: da una analisi superficiale abbiamo rilevato che, mentre essa è in esecuzione il programma è bloccato... Non succede nulla!

               

bulletLa cosa è scontata, dato che, per tutto questo tempo, rimane in attesa della pressione di un tasto, uno qualunque; ma che succede, nel frattempo?
bulletNe abbiamo già parlato in una scheda, nata per altro a supporto delle procedure Pascal della Libreria GIOBE.TPU; i concetti principali sono riassunti qui di seguito:
bulletil processore dedicato presente sulla scheda interna alla tastiera si incarica di scandire (polling) ogni tasto all'infinito, per sentire se è premuto o rilasciato; quando ciò accade spedisce al computer un numero, il codice di scansione, in pratica il numero che esprime la sua posizione nell'ambito della tastiera; per esempio ESC, il primo tasto in alto a sinistra, ha il numero 1.
bulletl'interfaccia interna al computer rileva l'arrivo di questo byte e segnala al processore una richiesta d'interruzione (IRQ1) in risposta alla quale, di norma, il processore attiva la procedura di servizio corrispondente (INT 09H).
bullettra i compiti di questa procedura c'è quello di cercare in una tabella un secondo importante numero, da affiancare al precedente: il codice ascii.
bulletla tabella nazionale disponibile per default è quella inglese, ma può essere facilmente sostituita con quella corrispondente alla nazionalità della tastiera in uso,  eseguendo il comando Dos KEYB; per esempio KEYB IT associa ai tasti i caratteri ascii tipici della tastiera italiana (nessun'altra nazione usa, per esempio, le lettere accentate...). [naturalmente quando siamo ospiti di Windows la cosa non è necessaria..]
bulletdopo questa operazione per ogni tasto premuto (o rilasciato) sono dunque resi disponibili 2 bytes; la medesima procedura di servizio (INT 09H) provvede a memorizzarli in una area di memoria ram condivisa con il sistema operativo, detta Buffer Circolare.
bulletin questo preciso istante ha termine l'effetto prodotto dalla pressione (e dal rilascio) di un tasto (e, con esso, quello della procedura INT 09H).

               

bulletSe nessuno si affretta a scaricare il Buffer Circolare l'informazione rischia di essere perduta; in fatti esso può tener memoria solo di 15 coppie di bytes, dopo di chè le successive pressioni e rilasci sovrascriveranno le precedenti, nella logica della circolarità del buffer...

               

bulletIn realtà questo rischio è assolutamente improbabile: nessun software rimane, di norma, insensibile alla pressione di un tasto; il sistema operativo stesso mostra di accorgersi della pressione di un tasto perchè provvede a far apparire il carattere corrispondente (echo a video) nella posizione di stampa corrente.
bulletIn pratica con l'operazione di echo a video provvede a scaricare il Buffer Circolare, cioè legge (= toglie) da esso la coppia di bytes, cedendoli alle procedure di stampa a video.

               

bulletLa gestione diretta del Buffer Circolare è compito delicato e complesso; dovremo attendere parecchio tempo prima di poterla affrontare con soddisfazione...
bulletPer fortuna il sistema, dopo aver provveduto a caricare (scrivere) i 2 bytes nel Buffer, mette a disposizione anche la struttura adatta a scaricarlo (leggerlo): si tratta della funzione BIOS INT 16H, in sostanza la nostra KEYwait .

               

Suggerimento Come anticipato, non appena un tasto è premuto, la KEYwait (e la funzione BIOS INT 16H) lasciano in AL il suo codice Ascii e in AH il suo codice di scansione.

    

Pagina Precedente Libreria GiobeASM Pagina Successiva KEYwait 5/5   Torna alla Home  del Capitolo3 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
10 di 54
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

    

Giobe.ASM » SET_cur | VIA_cur | RIP_cur | BIOScls| BIOSchr |BIObeep |Acapo| BIOchr1| STAsp| BIOSmsg
Byt2Asc | Wor2Asc | Asc2Byt | Asc2Wor | Byt2Dec | Wor2Dec | Dec2Byt | Dec2Wor
Delay | DelMicro | Del_2000 | Del1500 | Del_1000 | Del_100 | Del_1 | Del500Mi | Del200Mi
Del100Mi | Del010Mi | RIEMPI | KEYwait | Random | INstrin | CambiaCol | MODEtest
RAMchr | RAMcur | RAMmes | RAMcls | RAMcorn | RAMpiu | RAMrecup | RAMbyte | RAMword
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