<+B><:#520,9025><+!><:f440,2Times New Roman CE,>RunTime Error at 00:05<:f><-!>
<+B><:#520,9025><+!><:f440,2Times New Roman CE,>aneb
<+B><:#520,9025><+!><:f440,2Times New Roman CE,>FONTOV<\A>N<\M>
<+B><:#520,9025><+!><:f440,2Times New Roman CE,>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#1280,9025><:f240,2Times New Roman CE,> Tak jsem tady op<\l>t zde se zaj<\m>mav<\}>mi informacemi. Vzal jsem si k srdci rady Marka a tak jsem sesmolil dal</Z><\m> d<\m>l m<\i>ho obl<\m>ben<\i>ho RTE<\h>ka Je v podstat<\l> rozd<\l>len na dv<\l>
<\h><\a>sti. V prvn<\m> se zab<\}>v<\a>m p<\x><\m>stupem k aktivn<\m>mu fontu a v druh<\i> je n<\a>vod, jak pou</^><\m>vat v textov<\i>m re</^>imu najednou dva fonty.
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#400,9025><+!><:f320,2Times New Roman CE,>P<\x><\m>stup k font<\y>m<-!><:f><:f>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#1600,9025><:f240,2Times New Roman CE,> V SWCInfu, v <\h><\m>sle 4/97, se objevil
<\h>l<\a>nek Tom<\a></Z>e Dvo<\x><\a>ka, kde se zab<\}>v<\a> vytvo<\x>en<\m>m kurz<\m>vy z fontu, kter<\}> je napevno nastaven v biosu (nebo n<\l>kde v pam<\l>ti, samoz<\x>ejm<\l>,
</^>e j<\a> ji tam nem<\a>m, tak</^>e mi to blbne). Jeliko</^> u n<\a>s v
<+!>no!future<-!> m<\a>me </Z></]>ourala foxe, v<\m>m, jak se d<\a> zjistit aktivn<\m> font. Tak</^>e fox mi p<\x>edal sv<\i> know-how a j<\a> jsem to pro v<\a>s p<\x>epsal do publikovateln<\i> podoby.
<+C><:#3200,9025><:f240,2Times New Roman CE,> Z<\a>kladem je hran<\m> si s p<\x><\m>stupem na porty k videokart<\l> a k sekvenc<\i>ru. Pokud na port
<+!>3c4<-!>h a <+!>3ce<-!><:f><:f240,2Times New Roman CE,>h jak<\i>si hodnoty, u kter<\}>ch ani nev<\m>m, co znamenaj<\m> (to se snad ned<\a> zjistit ani ze sysmana, proto</^>e ten popis nech<\a>pu :-))), ale zase v<\m>m co d<\l>laji. P<\x>ep<\m>naj<\m> p<\x>
<\m>stup k fontu a k obrazovce. Tud<\m></^> kdy</^> se p<\x>epnu na p<\x><\m>stup k fontu, od adresy
<+!>0a000<-!>h je font, kter<\}> m<\a> d<\i>lku 8192 bytes. Pozor, a zde je jedna z<\a>ludnost. V tomto form<\a>tu je ka</^>d<\i>mu p<\m>smenu vyhrazen prostor 32 bytes, ale standartn<\m> form<\a>t je dlouh<\}> 4096 bytes (pro ka</^>d<\i> p<\m>smeno pouze 1
6 bytes), tak</^>e znak 0 m<\a> definici na prvn<\m>ch 16ti bajtech, dal</Z><\m>ch 16 bajt<\y> jsou nesmysly, znak 1 je na dal</Z><\m>ch 16ti bajtech a po<\x><\a>d takhle d<\a>l. Tzn: lich<\}>ch 16 bajt<\y> obsahuje definici p<\m>smena a sud<\}>ch 16 bajt<\y>
definici nesmyslu. (Pokud tomu nerozum<\m>te, pod<\m>vejte se na zdroj<\a>k progr<\a>mku vykradni (je v pascalu).
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#320,9025><:f240,2Times New Roman CE,>pro p<\x><\m>stup k font<\y>m zavol<\a>me tuto proced<\y>rku:<:f>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<:#300,9025><:f,QCourier New CE,>seqonx dw 402h,704h
<:#300,9025><:f,QCourier New CE,>gdcon dw 005h,406h,204h
<:#300,9025><:f,QCourier New CE,>
<:#300,9025><:f,QCourier New CE,>facces proc near
<:#300,9025><:f,QCourier New CE,> mov si,offset seqonx
<:#300,9025><:f,QCourier New CE,> mov dx,3c4h
<:#300,9025><:f,QCourier New CE,> outsw
<:#300,9025><:f,QCourier New CE,> outsw
<:#300,9025><:f,QCourier New CE,> mov dl,0ceh
<:#300,9025><:f,QCourier New CE,> outsw
<:#300,9025><:f,QCourier New CE,> outsw
<:#300,9025><:f,QCourier New CE,> outsw
<:#300,9025><:f,QCourier New CE,> ret
<:#300,9025><:f,QCourier New CE,>facces endp
<:#300,9025><:f><:f,QCourier New CE,>
<+C><:#320,9025><:f240,2Times New Roman CE,>a pro n<\a>vrat k norm<\a>ln<\m>mu stavu (p<\x><\m>stup k obrazu) tuto proced<\y>rku:
<+C><:f240,2Times New Roman CE,> Bohu</^>el, nemohu to bl<\m></^>e vysv<\l>tlit, s<\a>m jsem m<\l>l probl<\i>my v</Z>e rozchodit, ale napsal jsem vykrada<\h> fontu, kter<\}> se spou</Z>t<\m> z p<\x><\m>kazov<\i>ho
<\x><\a>dku. Napsal jsem ho v asembleru, proto</^>e mi to v built-in asembleru pascalu nefungovalo. Vykrada<\h> ale funguje a vykr<\a>d<\a> cel<\}>ch 8192 bajt<\y> fontu, tak</^>e se mus<\m> prohnat programem vykradni, aby jsme dostali spr<\a>vn<\}> fontov<\}>
soubor o d<\i>lce 4096 bajt<\y>. Jmenuje se <+!>grabfnt.asm<-!> a po komplilaci vytvo<\x>te exe soubor!<+!><-!>
<+C><:#960,9025><:f240,2Times New Roman CE,> Zrovna te<\o> m<\l> napadlo, </^>e by se s t<\m>m daly d<\l>lat p<\l>kn<\i> v<\l>ci, jako t<\x>eba nastavov<\a>n<\m> fontu: m<\l>l bych soubor dlouh<\}> 8192 bajt<\y> s fontem, p<\x>epnul bych se do m<\s>du p<\x><\m>stupu na fon
t, nahr<\a>l bych ho na adresu 0a000h a p<\x>epnul bych se zp<\l>t do m<\s>du p<\x><\m>stupu k obrazovce.
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#400,9025><:f320,2Times New Roman CE,><+!>2FONTS<-!>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#1280,9025><:f240,2Times New Roman CE,> Dva fonty v textov<\i>m re</^>imu jsou docela frajersk<\a> v<\l>c, lidi jenom z<\m>raj<\m>, jak je to mo</^>n<\i>. A p<\x>itom to je tak jednoduch<\i>. Sta<\h><\m> p<\x>epnout p<\x>es porty videokartu, aby p<\x>i ni</^></Z><\m>
intenzit<\l> p<\m>sma pou</^><\m>vala nult<\}> (prim<\a>rn<\m>) blok fontu a p<\x>i vy</Z></Z><\m> intenzit<\l> prvn<\m> (sekund<\a>rn<\m>) blok fontu. To se za<\x><\m>d<\m> takto:
<:#300,9025><:f,QCourier New CE,>asm<:f>
<:#300,9025><:f,QCourier New CE,> mov dx,3c4h
<:#300,9025><:f,QCourier New CE,> mov al,3
<:#300,9025><:f,QCourier New CE,> mov ah,4
<:#300,9025><:f,QCourier New CE,> out dx,ax
<:#300,9025><:f,QCourier New CE,>end;<:f>
<+C><:#320,9025><:f240,2Times New Roman CE,>
<+C><:#640,9025><:f240,2Times New Roman CE,>N<\a>vrat k norm<\a>ln<\m>mu stylu pr<\a>ce (ob<\l> intenzity pro prim<\a>rn<\m> blok font<\y>) se provede t<\l>mito instrukcemi:
<:f,QCourier New CE,>asm
<:#300,9025><:f,QCourier New CE,> mov dx,3c4h
<:#300,9025><:f,QCourier New CE,> mov al,3
<:#300,9025><:f,QCourier New CE,> mov ah,0
<:#300,9025><:f,QCourier New CE,> out dx,ax
<+C><:#300,9025><:f240,QCourier New CE,>end;<:f>
<+C><:#300,9025><:f240,QCourier New CE,>
<+C><:f240,2Times New Roman CE,>Dal</Z><\m> d<\y>le</^>itou <\h>innost<\m> je nahr<\a>n<\m> font<\y> do p<\x><\m>slu</Z>n<\}>ch blok<\y> pam<\l>ti. To se provede pomoc<\m> standartn<\m> funkce
<+!>1100<-!>h p<\x>eru</Z>en<\m> <+!>10<-!>h. Pouze do ni</^></Z><\m>ho bytu registru bx mus<\m>me zadat
<\h><\m>slo bloku, do kter<\i>ho se m<\a> font nahr<\a>t. To znamen<\a>,
</^>e pokud chceme nahr<\a>t font do prim<\a>rn<\m>ho bloku, zad<\a>me do
<+!>bl<-!> hodnotu 0 a pokud do sekund<\a>rn<\m>ho, zad<\a>me hodnotu 1.
<+C><:f240,2Times New Roman CE,> V</Z>e je docela p<\x>ehledn<\l> :-)) naps<\a>no ve zdroj<\a>ku se jm<\i>nem
<+!>2fonts.pas<-!>, tak</^>e nem<\a> smysl rozepisovat se o vol<\a>n<\m> int 10h tak podrobn<\l>.
<+C><:f240,2Times New Roman CE,>
<+C><:f240,2Times New Roman CE,> To by m<\l>lo b<\}>t v</Z>e, douf<\a>m,
</^>e je to pro v<\a>s n<\l>co nov<\i>ho a</^>e je Marek spokojen.