Come Funziona
Area Comunicaz. Bios |
||
Cursore |
|
Programmazione |
PROCEDURE DOS [14 di 42] |
|
Il controllo del Cursore non è supportato da nessuna delle Funzioni a livello DOS, tipiche delle procedure del sistema operativo (INT 21H). |
|
La gestione del cursore e del colore non è una prerogativa del DOS, che presenta i suoi messaggi rigorosamente con i colori di default, bianco su nero, esclusivamente a capo riga. |
|
Fa eccezione il Comando DOS CLS, che, pulendo lo schermo, posizione il cursore in alto a sinistra (riga 0, colonna 0), subito dopo il Prompt. | |
L'unico modo per porre a video frasi colorate in un punto diverso, direttamente dal Prompt del DOS (per tentare di personalizzare l’esecuzione dei suoi comandi) è quella di disporre di un intermediario: il Driver ANSI.SYS. |
|
Un tempo esso era disponibile tra i files del DOS, proprio per consentire queste azioni, ma i moderni SysOp non lo forniscono più. | |
Per fortuna il vostro cercatore di fiducia ha scovato l'eseguibile Ansi.com, Copyright (C) 1988, Ziff Communications Co., un'eccellente alternativa shareware al driver omonimo originale DOS. |
|
Dopo averlo lanciato lascia una parte di esso rimane residente in memoria, consentendoci il controllo del cursore con gli stessi comandi di prima; è sufficiente inserire le seguenti stringhe di controllo in quelle classiche con cui si esercita il comando DOS: |
|
Comando ANSI | Significato del Comando ANSI |
<ESC>[<#>;<#>H | Sposta il cursore alla riga <r>, colonna <c> |
<ESC>[<#>A | Sposta il Cursore in alto di <#> posizioni |
<ESC>[<#>B | Sposta il Cursore in basso di <#> posizioni |
<ESC>[<#>C | Sposta il Cursore a destra di <#> posizioni |
<ESC>[<#>D | Sposta il Cursore a sinistra di <#> posizioni |
<ESC>[s | Memorizza la posizione attuale del cursore |
<ESC>[6n | Legge la posizione corrente |
<ESC>[u | Recupera la posizione pre-memorizzata |
|
Ricordiamo che <ESC> rappresenta la pressione del tasto ESC e che <#> rappresenta la pressione di uno o più tasti numerici, per esempio 4 o 37. |
|
Questi preziosi Comandi ANSI possono servire per personalizzare il Prompt del Sistema Operativo; a ciò provvede l’omonimo Comando DOS PROMPT, di solito inserito nei files di tipo batch (come il noto Autoexec.bat o il nostro Macro.bat), ma anche direttamente digitabile sulla riga di comando. |
se sei un frequentatore del mio Ambiente Assembler conosci già l'effetto di queste potenti stringhe; con esse abbiamo costruito il nostro esclusivo prompt colorato personalizzato: |
|
Puoi vederne l'effetto cliccando sull'icona a
sinistra: verrà aperta una
finestra DOS
all'interno della quale
verrà proposto il
prompt
Scegli il pulsante di opzione "Aprire il file" o "Esegui l'applicazione" e conferma con OK. NB: alcuni gestori di protezione (per esempio SP2 di WinXP) non ti consentono questa operazione: in questo caso scrivi c:\arch-lab\bin\sys\assembler.pif direttamente nel campo indirizzo del Browser |
|
|
|
Bisogna però risolvere un problema: se proviamo a digitare una stringa di PROMPT contenente stringhe Ansi, alla pressione del tasto ESC il DOS cancella il contenuto della parte già digitata sulla riga e quindi sembra impossibile continuare l’esperimento! | |
Per ovviare a questo ed a altri inconvenienti simili la sintassi del Comando DOS PROMPT prevede che il carattere $ possa essere usato per fare assumere valenza funzionale al carattere scritto subito dopo di esso; tra le diverse possibilità la sequenza $e serve proprio per simulare la pressione di ESC. | |
In altre parole le stringhe proposte in precedenza suggeriscono la sequenza dei caratteri da digitare ma devono essere scritte in modo diverso, in funzione dell'ambiente chiamato ad interpretarle; vediamo alcuni esempi: |
|
Comando ANSI |
al Prompt del DOS |
Dentro un sorgente ASM | Significato del Comando ANSI |
<ESC>[<#>;<#>H | $e[10;55H | ←[10;55H | Sposta il cursore alla riga 10, colonna 55 |
<ESC>[<#>A | $e[5A | ←[5A | Sposta il Cursore in alto di 5posizioni |
<ESC>[<#>B | $e[3B | ←[3B | Sposta il Cursore in basso di 3 posizioni |
<ESC>[<#>C | $e[58C | ←[58C | Sposta il Cursore a destra di 58 posizioni |
<ESC>[<#>D | $e[25D | ←[25D | Sposta il Cursore a sinistra di 25 posizioni |
<ESC>[s | $e[s | ←[s | Memorizza la posizione attuale del cursore |
<ESC>[6n | $e[6n | ←[6n | Legge la posizione corrente |
<ESC>[u | $e[u | ←[u | Recupera la posizione pre-memorizzata |
|
Per il collaudo di queste (e altri..) stringhe (sempre se il Driver ANSI.SYS o ANSI.COM è regolarmente installato in memoria) sono disponibili 3 programmi: 2 di essi mostrano altrettanti modi di gestione dei Comandi ANSI direttamente dal Prompt del DOS:
|
|
In aggiunta ho realizzato anche il programma AnsiTest.COM, in grado di mostrare (se ce ne fosse ancora bisogno...) la forza di queste stringhe; il sorgente è documentato nella sezione ASM del Tutorial Assembly. | |
Da notare che, per le priorità tipiche del DOS, la presenza contemporanea nella stessa cartella dei files (AnsiTest) .BAT e .COM mette in esecuzione questo ultimo, per cui bisogna prendere provvedimenti.. |
|
Ricordo infine che la riprogrammazione della posizione e delle dimensioni del Cursore, come qualunque altra modifica imposta al controller del VIDEO, può essere facilmente annullata con il Comando DOS MODE (per esempio CO80), che reinizializza tutte le variabili ai valori di default. |
|
Cursore Video | PROCEDURE DOS | |||||||
14 di 42 |
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|