Jak przesuwać kursor tekstowy w PMODE
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, 132*y, ...) 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