C/C++ FAQ

Jak przesuwać kursor tekstowy w PMODE

flabra
void move_csr(int x,int y,int screenwidth=80){
 y*=screenwidth;
 y+=x;
 outportb(0x3D4, 14);
 outportb(0x3D5, y >> 8);
 outportb(0x3D4, 15);
 outportb(0x3D5, y & 0xff);
}

Dla trybów tekstowych (40y,80y, 132y, ...) bufor ekranu tekstowego jest zorganizowany liniowo, tzn. bajt za bajtem, linia za linia. Pozycje kursora w tych trybach to nic innego jak numer pozycji na ekranie. To zas jest numerem linii (y)szerokośc ekranu w znakach (screenwidth)+numer kolumny (x)

Wartości x i y podaje sie od 0.

Ta wersja funkcji domyslnie ma ustawiona szerokosc ekranu na 80 znaków:

move_csr(0,0) - ustawia kursor w lewym gornym rogu niezaleznie od szerokosci ekranu
move_csr(79,24) - dla 80x25 prawy dolny róg
move_csr(131,24,132) - dla trybow VESA prawa kolumna ,25 linia.

move_csr(80,0) = move_csr(0,1) dla trybu 80 znakowego

FAQ

0 komentarzy