Ekrani Silmek
Gordunuz bile! Ekrani silmek, iki yoldan olabilir. Birincisi, ekranin
modunu degistirmek. Degistirdiginiz mod, su anki mod bile olsa, yine
de ekran silinir. Yegane dezavantaj, Compaq tipi makinelerde bu islem
uzun zaman alir. Dolayisi ile, bu isi dogru yapmamiz gerekir:
EKRANSIL.C:
===============================================
#include <dos.h>
void ekransil() /* bu rutin, ekrani siler */
{
union REGS gir;
gir.h.ah = 6; /* ekrani yukari kaydir: servis no su 6
ekrani asagi kaydir: servis no 7 dir. */
gir.h.al = 0; /* kac satir scroll edecegi 'donecegi'
sifir olunca, butun ekrani siler */
gir.h.ch = 0; /* sol ust kosenin satir no su */
gir.h.cl = 0; /* sol ust kosenin kolon no su */
gir.h.dh = 23; /* sag alt kosenin satir no su */
gir.h.dl = 79; /* sag alt kosenin kolon no su */
gir.h.bh = 7; /* yeni yaratilacak satirlar icin renk degeri */
int86(16,&gir,&gir);
}
==============================================
Altinci BIOS servisi sayesinde, ekrani yukari kaydirma metodu ile
silmekteyiz. Ayni servis sayesinde, CX ve DX de gordugunuz degerleri
degistirerek, ekranin sadece bir parcasini 'scroll' etmek yani
kaydirmak mumkundur. Kaydirma yonunu servis numarasini 6 yada 7
yaparak degistirebilirsiniz. Burada gordugunu gir.h.bh deki deger ise,
yeni acilacak satirlarin 'attribute' yani, rengi ve ozellikleri
(parlak, yanip sonen, vs.) dir. Ayrica, yukaridaki ornekte,
gir.h.ch = 0;
gir.h.cl = 0;
yerine, sadece
gir.x.cx = 0;
diyebilirdik.
|