|
Программа-переключатель кодировки
N na?iai ia?aea nouan?aiaaiey IBM nia?an?e?uo ei?iu??adia an?aea
idiaea?a auaiaa ia uedai e aaiaa n eeaaea?odu ne?aieia eedeeeeou. ?ieuei ia?eiay
n aadnee MS DOS 6.0 iiyaeeanu iiaaad?ea iaoeiiaeuiie 866 n?daieou. Ai iiyaeaiey
aadnee MS DOS 6.0 idiaea?o daoaee ?ae iacuaaa?ua idiada??u doneoeea?idu. U?e
idiada??u ca?auaee ne?aieu aiiieie?aeuiiai eiaiaiai iaaida. Aaeaeinu u?i io?a?
iian?aiiaee odeo?a idioe?iai a ICO aeaaiaaai?ada naie?. U?e idiada??u auee
idae?e?anee ia ea?ai? ei?iu??ada. Na?u?e ecaan?iu?e ec ieo yaeyeenu ENHFONT,
KEYRUSS, LMSCR&LMKEY, KYRILLIC. Aue aua iaei niinia daoe?u idiaea?o
doneoeeaoee - iadaidiada??ediaa?u ICO aeaaiaaai?ada, ii ii ia iaoae aieuoiai
ide?aiaiey. Iineieueo aaiiay idiada??a i?iine?uny e
?eio idiada??, ei?idua ?aiy?? odeo? caado?a?ueeny ec ICO aeaaiaaai?ada, ?i
nia?aea iia i?eduaaa? oaee iaoiayueeny a u?i? ?a ea?aeiaa a ei?idi? iaoiae?uny
odeo? 8o16. Iinea u?iai idiada??a ?e?aa? 4096 aae? e ii?auaa? eo a aooad. Ca?a?
caado?a??ny iieo?aiiua aaiiua a aeaaiaooad, adoae?e neiaa?e ?aiya?ny ?aeouee
odeo? ia iiaue. Neaao?uee oaa idiada??u u?i iieo?aiea, niodaiaiea e on?aiiaea
naieo iadaai??eeia 10h e 09h idaduaaiee. Iinea aaiiuo iiadaoee idiada??a
caaadoaa? daai?o e in?aa?ny daceaai?iie eniieucoy 27h idaduaaiea, ide?a? a
daaen?da DX iaoiae?ny iadaue aae? ia?y?e iinea daceaai?iie ?an?e idiada??u. Den. 1.1 Iadaai?ea 09h idiada??ie idaan?aaeaia ia
den. 1.3 e 1.4 Iadaai?ea 10h idiada??ie
idaan?aaeaia ia den. 1.5 Aaiiay idiada??a
e?aa? neaao?uea iaain?a?ee: Ai ada?y daai?u
idiada??u oaee ni odeo?i? aie?ai iaoiae?uny a ?i? ?a ea?aeiaa, aaa iaoiae?ny
doneoeea?id Iainiide?ia
ain?iein?ai idiada??u - caie?aa?ia ?an?i daceaai?i? a ia?y?e. .STARTUP FLAGS record inRussian:1,shiftPressed:1,keyPressed:1,reserved:6 Hook09 proc
far ;iapaaiea int 09h mov ds,ax ; aaiiua a naa?ai?a eiaa test al,80h ; aadoiee daaen?d test [iFlags], MASK inRussian ; auaaeya?
oeaa donneiai iaaida mov es,ax ; es = naa?ai? aaiiuo BIOS sub al,2Ch ; idiaadea ia ne?aieuiay sub
al,1Eh ; ee u?i sub al,10h ; eiiao aeiea, al
= n?auaiea a ?aaeeoa mov ah,es:[17h] ; a ia ia?a? ee o ian shift add al,32 ; oaaee?eaaa?
n?auaiea a ?aae. ne?aieia cmp cx,60 ;
aieiaa ia oain?a ? cmp cx,bx ; aieiaa e oain? iioi?e ? insSymb: mov al,[di] ; al =
ne?aie jne nextStep mov
es:[1Ch],bx ; idaaaa? aai cia?aiea a iiei?aiiia ?an?i or [iFlags], MASK shiftPressed ; acaiae? oeaa
ia?a?ey shift and al,7Fh ; oaepaa? ae? i?ioneaiey
eeaaeoe jnz throwShift ; anee ia?e?aee
eeaaeoo - napanuaaa? shift and [iFlags], NOT MASK inRussian ; a ?o? ia
aiaeeeneee and [iFlags], NOT MASK
shiftPressed ; napanuaaa? ipeciae OldHandler09 dd ? ; jump xxxx:yyyy or
al,80h ; eeaaea?oda aeieediaaia ? mov al,20h ; dacdaoaiea iadaai?ee
aiiada?iuo idaduaaiee cmp ah,00h ;
ooieoey n?aia aeaaipa?e?a je @@myHook ; aa -
iadaaa?uaaa? push ax mov al,0 ;on?aiiaee aey call LoadFont ; caapo?aa? naie
oii? db 09Ah ; far
call ; iapacu ne?aieia. Eniieucoy iip?u, ; CH - pac?ap ne?aiea push cx mov es,di ;aoaa? aadaniaa?uny ?adac naa?ai? aii.
aaiiuo mov ds,si ; aey aadanaoee aaiiuo on?aiaaeeaaa? DS xor ch,ch add
di,20h pop ax WRITE_OFF
db 2,3 ; Iada?a?du caaadoaiey SetMode
proc mov cl,3 mov al,es:[0487h] ; a eaeie o ?aay
aaai?ad ? @@Exit: ErrorMsg db 'Cannot find 8x16.fnt in current directory. jc errorExit ; CF=1 - io ia n?ia i?edu?u … mov ah,3Fh ; ipi?e?a?u ec oaeea call LoadFont ; iapaiia?aeuiay caapocea oii?a mov word ptr [OldHandler09+2],es ; aae?ip int 09 mov word ptr [OldHandler10],bx mov dx,offset END_TSR ; DX iadaue
aae? iinea ian mov ax,4C01h ; ipin?i auoia ipe ioeaea
| |