Newsgroup: it.comp.lang.pascal
Titolo: clrscr

Come faccio a fare la pulitura dello schermo senza usare clrscr e quindi la
unit crt ?
Avevo pensato di fare una procedura con una serie di writeln  , ma poi a
schermo pulito sorge il problema di posizionare il prompt in alto a sinistra
...... in assembler l'operazione č molto facile , ma in pascal senza usare
nessuna unit e senza inserire codice assembler , non saprei come fare .
Spero in un vostro consiglio .
--
Keiichi

unit crt ?
L'operazione di pulizia dello schermo e' non portabile per eccellenza.
Risposta : non si puo'.

mm......
potresti andare a scrivere direttamente in memoria video (mappata $0b800)
....
altrementi penso che senza asm non ce puoi fare niente
--
-----------------------------------------------------
s...@gem.it
kin...@geocities.com
IRCNet:KiNg[G]hZ »»» #
mp3.it

Con l'assembly è sufficiente usara il seguente codice
...
ASM
            Mov Ah,06h
            Xor Al,Al (* numero di righe da cancellare
                                impostandolo a zero,
                                come in questo caso verrà
                                pulito l'intero schermo, *)
                            (* ha lo stesso effetto di impostare 25d *)
            Mov Bh, colore_dello_sfondo
            Xor Cx,Cx  (* azzero CL e CH per iniziare
                                     dalla colonna 0 riga 0 * )
            (* in questo caso coincidono con il numero
                di righe e colonne, altrimenti
                sono la posizione fin dove viene cancellato *)
            (* es: se imposto CL = 10d, CH = 10d,
                DL = 20d e DH = 20d,
                verà ripulito il quadrato avente coordinate
                angolo in alto a sinistra coordinate 11,11 (in TP)
                e angolo basso a destra coordinate 21, 21 (in TP ) *)
            Mov Dh,18h (*numero di rige da cancellare
                                    18h = 24 decimale, le righe
                                    partono da 0 quindi da 0 a 24 *)
            Mov Dl,4Fh (*numero di colonne da cancellare 4Fh = 79
                                    decimale, le colonne partono da 0
                                    quindi da 0 a 79 *)
            Int 10h
            (* Codice corrispondente al GotoXY del TP *)
            Mov Ah,02h
            Xor Bx,Bx
            Xor Dx, Dx (* azzero Dx per spostare il cursore in altro a
                                    sinistra ( 1,1 di coordinate in TP )
oppure
                                    modificando come segue *)
                                (* Mov DH, riga
                                    Mov DL, colonna * )
            Int 10h
END;
...
Bye Dav

Con l'assembly è sufficiente usara il seguente codice
Chiedo scusa, ma perche' non rispondete in modo *preciso* alle domande
?
L'autore della domanda non ha chiesto come farlo in assembly, ma
*senza* utilizzare l'assembly.

 
puoi scrivere le stesse copse che scriveresti in ASM, "tradotte"
in pascal.
Puoi scrivere nella memoria video tanti $0 (solo in DOS, ovviamente),
ma non capisco bene qual e' l'utilita'...
bye!
-- 
Emanuele Cesena                 
http://www.penguinpowered.com/~ecesena
ece...@penguinpowered.com
                 Attenti all'antispam NOSPAM
"Lavare la macchina per far piovere non funziona", legge dell'Inapplicabilita'

Hai perfettamente ragione, non mi ero accorto, ero un po' stanco, come puoi
vedere dall'ora del messaggio.
Scusa bye.

 
per il nostro amico... tutto questo lo puoi tradurre in
Pascal (credo Turbo Pascal, per la precisione).
Includi la Unit Dos, e puoi utilizzare delle variabili di
tipo register, con le quali gestisci i registri esattamente
come in ASM... (ti rimando all'help del Turbo Pascal,
per i dettagli... non lo ho sotto mano).
Pero' continuo a non capirne la logica... e' esattamente come
usare l'ASM :-)
-- 
Emanuele Cesena                 
http://www.penguinpowered.com/~ecesena
ece...@penguinpowered.com
                 Attenti all'antispam NOSPAM
"In casi di crisi che obbligano la gente a scegliere tra varie linee di
condotta, la maggioranza scegliera' la peggiore possibile", legge di Rudin