+--------------------------+
| Programování v textmodu. |
+--------------------------+
Textmod... co to vlastně je? Nedělejte si ze mně prdel, že to
nevíte. Tak se mrkněte na tenhle text. Je to mód, kde sou jednotlivý
znaky seřazený za sebou, každej znak má na obrazovce stejný místo.
Znaky jsou tady (většinou) uložený na adrese segmentu 0B800h. Každá
řádka v textmodu má (taky většinou - jestli nepoužíváte svga
textmody) 80 znaku. Jesli chcete, můžete si to zpočítat. Na tý
adrese jsou znaky uloženy linearně (za sebou) a každej znak zabere
dva byte. Proč 2? Na prvním je hodnote znaku (v pascalu ord('X')).
Na tom druhym jsou atributy. To znamena 0-3 bit = barva popředí
(právě teď je šedá (7)),bity 4-7 = barva pozadí (teď je černá (0)).
Z toho vyplývá, že jedna řádka zabírá v paměti 2*80 znaků. Logicky
je druhá řádka v paměti o 160 byte dál, třetí o 320... Takže
jednoduchá procedura na zapsání znaku na obrazovku v textmodu by
mohla vypadat tahle:
procedure WriteXY(X,Y:byte;Character:char;ForG,BackG:byte);
begin
mem[B800:2*X+160*Y]:=Ord(Character);
mem[B800:2*X+160*Y+1]:=ForG+16*BackG;
end;
Takže základ bychom měli, to by pro dnešek mohlo stačit. Tohle je
jenom úvod k textmodu, abyste věděli, jak to fachčí dřív, než
začnete číst vo plynulý textmyši. Podrobnější informace si můžete
najít sami třeba v Norton Guide atd.
KubaS
výheň