(c)  騭, ᪢

ZXNet : 500:95/462.53
E-mail: bestview@mtu-net.ru
WWW   : http://www.ivr.da.ru

      ࠢ ࠭  ࠢ쭮 ० ⥪
      
                 १⭮ ணࠬ
               

(".  " 1/2003)
 ᫥ ।஢: 13.04.2003.




     室  ⥪, ᮤঠ騩  ᪨, 
⨭᪨ 㪢,  뢠 ४ ० /Lat, 
ࠥ ⥪ ⠭ ᫥. 뢠,  ⠪ 
뢠 ४ ० Caps Lock,   ய 㪢
   . 室  ࠢ쭮
࠭ ⮪ ⥪    .
     । ᯮᮡ 襭 ⮩ ஡  MS-DOS 
 १⭮ ணࠬ.  ⮩  ஡ ᬮ७
  ࠧࠡ⪨.


⠭ 


    砫 ।  ନ. ࠡ뢠 ணࠬ 
  쭥襬 뢠 "१",  ନ "ணࠬ" 
ᯮ짮  祭 ணࠬ,  ன  ࠥ 
ࠢ ⥪.  (   Shift, Alt, Ctrl),
।祭  ⨢樨 १, 㤥  쭥襬
뢠 "祩 襩".
    ⠪,   ?   뫨 ४ ०
/Lat,   १ ࠢ쭮 ࠫ । ⮪
⥪.  訡 祭, ⥫   ।
" " (  㤥, ᪠, F12), ᫥ 祣
ࠢ쭮 ࠭ ⮪ ⥪  ࠢ.
筮 ⠪ ,   뫨  ( , 몫)
० Caps Lock, ⥫    " "
(᪠, F11)  ࠢ ࠢ쭮 ࠭ ⥪.
    ,  ⠪ ⠭     㤠,
ਤ   - ஬.   ᭨ 
  ࠧࠡ⪨.


  ⮣...


        ப ᨬ,  ⭮,   
  ࠢ쭮 ⠭ ० Caps Lock.  ࠢ
⠪ ப?
    ᫨ ० Caps Lock 몫祭,   ⨨  
Shift   㪢,   Shift - ய. ᫨ 
 ० ,  :  Shift  ய
㪢,   Shift - .  ࠧ,  ࠢ
ப 筮    ய 㪢   
.
     .      ப ᨬ, 
⭮,      訡筮  ᪨ (
⨭᪨) ०.  ࠢ ⠪ ப?
     ⨨       ᪮  ⨭᪮
०  ࠧ ᨬ.  ᮮ⢥⢨ ਢ 
⠡. 1 ( 䨪 KeyRus  ᪫  "
㬮砭").

Ŀ
N ப      ࠡ                               ᨬ                           
⠡ Caps Lock                                                                            
Ĵ
   1     몫祭           "/':,.; 
Ĵ
   2     몫祭     LAT      f,dult;pbqrkvyjghcnea[wxio]sm'.zF<DULT:PBQRKVYJGHCNEA{WXIO}SM">Z@#$%^&* 
Ĵ
   3                 "/':,.; 
Ĵ
   4           LAT      F,DULT;PBQRKVYJGHCNEA[WXIO]SM'.Zf<dult:pbqrkvyjghcnea{wxio}sm">z@#$%^&* 


                               . 1

     ।⢥ ᫥  ࠢ ப.
  ࠧ .
    1. ᫨   ப  訡筮  ᪨
०,  ० Caps Lock  몫祭,  ᪨  ப
 ᨬ, 騥  ப 1 ⠡. 1,  塞  
ᮮ⢥騥 ᨬ  ப 2 ⠡. 1.
    2. ᫨  訡筮  ⨭᪨ ०,  ० Caps
Lock  몫祭,  ᪨  ப  ᨬ, 騥
 ப 2 ⠡. 1,  塞   ᮮ⢥騥 ᨬ 
ப 1 ⠡. 1.
    3. ᫨  訡筮  ᪨ ०,  ० Caps
Lock  ,  ᪨  ப  ᨬ, 騥
 ப 3 ⠡. 1,  塞   ᮮ⢥騥 ᨬ 
ப 4 ⠡. 1.
    4. ᫨  訡筮  ⨭᪨ ०,  ० Caps
Lock  ,  ᪨  ப  ᨬ, 騥
 ப 4 ⠡. 1,  塞   ᮮ⢥騥 ᨬ 
ப 3 ⠡. 1.
     ,  ࠢ ப, ࠭  ࠢ쭮
० /Lat,   ,   몫祭  ०
Caps Lock   . ᫨ ,     ப
   ࠢ ﭨ Caps Lock  , 
筮 㧭 ⥪饥 ﭨ Caps Lock.   ᤥ,
 ᬮਬ .
     ,  ப 1  ⠡. 1 ⫨砥  ப
3 ⮫쪮 ⥬,  ய 㪢    
.   ᠬ ⭮  ப 2  4.  룮
   ࠭    ப, , ਬ,
⮫쪮   ,       ,
 ॣ 㪢  ⨢. 楤  
ॣ 㪢  ࠢ   ࠢ ⥪,
࠭  ࠢ쭮 ﭨ Caps Lock.


⢨ १  ணࠬ


    ࠥ  ணࠬ ⥪ ࠭  ன 
.   - "" ⮫쪮 ᠬ ணࠬ.  
짮⥫  " "  ࠢ ⥪.
 १ "㧭",   ⥪   ࠢ?
     ᠬ ,  뢮  誮  졮 짮⥫,
⮡    ࠧ ࠢ쭮 ࠭ ⥪. 祢, 
⮣ ᯮ짮 १  直 :  㤥
ࠢ ⥪ .
    ⨬,  ࠭ ⥪ ⠪ ⮡ࠦ  ࠭!
   室  .  ।⢥ ᫥
ࠢ쭮 ࠭ ப ⥪ ⮨ !  ,
  㭪 뢠 BIOS 10h, । न
,  ⥬ 㧭,  ᨬ 室 ᫥ 
, -   㤥 ࠢ塞 ⥪.
       ।  ࠢ塞 ⪠ ⥪.
 易⥫쭮  㤥  ᯮ ᫥  
 ப.  , 짮⥫ ࠫ  ࠢ쭮
० ⮫쪮 ᫥ ᪮쪮 ᨬ.  ? 
訢   짮⥫  ࠢ쭮 񭭮
ப?
    ।  ⮬᪨?  ?   ⮩.
 । ࠧ ᯮᮡ,      ᯥ
100% 񦭮. ⮬  訫,   ⨥ "祩
" 㤥 ࠢ ⮫쪮  ᨬ ⥪, 室騩
᫥  , ᫥ 祣  ।  ᨬ
. (᫨ - ᨬ, ਬ, , ࠢ 
㦭,    । .) ,
᫥⥫쭮  " ", 짮⥫ ᠬ
⠭,   ࠢ쭮 ࠭ ⥪ 㤥
ࠢ.
     ⨨ "祩 "  ࠢ ⥪,
࠭  ࠢ쭮 ० /Lat, १  
।,  ०  訡筮    ⥪:
᪨  ⨭᪨.   ᤥ? ᫨ ,  
  ப    ࠢ ० /Lat 
४砫,  筮   ⥪饥 ﭨ. 
ᢥ  ⮬,  ०    , ࠭
-  ࠩ-䨪,    - ""
⮫쪮  ᠬ.  뫮    ଠ 
짮⥫,  ⥫    ⮣...
     㯨 ⠪: 㤥 ᬠਢ ப  樨
    ࠭,    㪢. ᫨
 㪢 - ᪠, ,   ⥪  訡筮
 ᪨ ०; ᫨ ⨭᪠ - ᮮ⢥⢥,
⨭᪨ ०. ᫨  ப   㪢,  ⠥,
 訡筮     ०,   ।
 ⨨ "祩 "   ࠧ.
    ⨬   ᫥饥. ᫨ 짮⥫ ࠢ
ப ⥪, ࠭  ࠢ쭮 ० /Lat, 
 ⮣ 㦭 ᫮ ࠧ ᮮ⢥ " ", 
।,  ०  訡筮    ப,
 ⮫쪮  ࢮ ⨨ "祩 ".   ⮬,
 ᫨ ⠫ ࠢ묨 ⮫쪮 㪢 ᨬ, 
᫥ ⠫ ⮪ ப,  㦤騩  ࠢ  
㣨 㪢,  । ० ந ୮.
    ਬ,  ࠭ ⠪ ப:

   Ŀ
      ⮪ "nj dnjhjq exfcnjr           
                                          <- 
   

     ࢮ ⨨ "祩 "   ᨬ ᫥
  뢠 ⨭᪮ 㪢. ,   
訡筮  ⨭᪨ ०. ᫥⥫ 
"祩 " ਢ  ࠢ ப:

   Ŀ
      ⮪ " ன ⮪ 
                         <-        
   

    ⠫ ࠢ ⮫쪮  ᨬ ப. ᫨ ᥩ
஡ ᭮ ।,  ०  ࠢ쭮
   ⥪,  ࢮ 祭 㪢 
᪠,  㤥 ᤥ 뢮,   ࠢ쭮 
᪨ ०.  ୮,  쭥襥 ࠢ 㤥
ࠢ:

   Ŀ
      ⮪ @ ன ⮪ 
                        <-         
   

    ३  ᬮ७ ᫥饣 .  ᫥
 "祩 " १ 㦥 ।,  ᨬ
⥪   ࠢ    ᨬ  
.     ᤥ ?  㦥 㯮,
 ࠥ  ணࠬ ⥪ ࠭  ன 
, ⭮ ⮫쪮 ᠬ ணࠬ.   १ 
 ᠬ ࠢ ⥪,   ⮫쪮 । ணࠬ
㪠   ࠢ.
      ᤥ?   । 㪠  ࠢ
⥪ 짮⥫?    , 筮.  
⠫  ࠢ ࠢ쭮 ࠭ ᨬ ⥪? 砫
   BackSpace  ࠭ ⮣ ᨬ,  ⥬
  ࠢ.
    , १  "" ணࠬ ଠ 
 ,     짮⥫.  
 ᤥ?
     饬 設⢥ 砥 ணࠬ ᯮ 
  뢠 BIOS 16h ( ,  
   ।⢥). ⥫쭮, ⮡
"ᮢ뢠" ணࠬ 㦭  , 㦭 墠
ࠡ ⮣ 뢠.  ⮣, 墠 뢠
BIOS 16h 㦥    ⮣, ⮡ ᫥ 䠪 
짮⥫ " ".


⠥ ࠢ筨: 뢠 BIOS 10h


    ᬮਬ 㭪樨 뢠 BIOS 10h,  
  ।    । 
ᨬ, ⮡ࠦ  ࠭.
     맮 㭪樨   㪠뢠  ॣ AH.  [3]
㯮,  ᫥ 砭 ࠡ 맢 㭪樨
ᮤন ॣ஢ BX, CX, DX, SI  BP  
(祢, ᫨  ॣ  ᯮ  饭
१).
     । न  㦨 㭪 3. । 
맮  ॣ BH  㪠  ⥪饩 ࠭
. ᫥ 맮  DH 㤥  ப,   DL -
 ⮫,  ᯮ .  ॣ CX 頥
ࠧ  (   ,  ,  ᮤন
CX  ᫥ 맮 㭪樨, 室).
     ᯮ짮 ⮩ 㭪樨    ⥪饩
࠭ . ⮡  㧭, ᯮ 㭪 F.
᫥  맮 㦭   ࠭ 㤥  ॣ BH.
      ⮬,  ।  ᨬ, ᫨  
न  ࠭.  ⮣  ᯮ짮 㭪 8.
। 맮  ॣ BH  㪠  ⥪饩 ࠭
. ᫥ 맮  ᨬ, 室饣  樨
, 㤥  ॣ AL.
    ⭮,  । 맮 ⮩ 㭪樨  ⠭
  㦭 ,  ᫥ 맮 -   
० .      㦨
㭪 2. ।  맮  ॣ BH  㪠 
⥪饩 ࠭ ,   DX -  न 
(DH -  ப, DL -  ⮫).
     , ᯮ짮  㭪樨   ᮡ
室 ᯮ짮 㣮 㭪樨,  ⠪ . 
뫮  筮 ᥣ  㭪権 - "। न
  ⥪饩 ࠭ "  "। 
ᨬ  묨 न⠬  ⥪饩 ࠭
".


⠥ ࠢ筨: 뢠 BIOS 16h


    㭪樨 ⮣ 뢠 ।祭  ࠡ 
ன.  ᫨ ணࠬ  
᮪஢묨 㭪ﬨ DOS,   ⮣  ࠢ 
 ⮬ 뢠.
     ࠡ  ன ࣠ ⠪:  ⨨
 ᪠ -  ந室 ⭮
뢠 INT 9. ࠡ稪 ⮣ 뢠  ᪠-
 ASCII-   (  [᪠-, ASCII-]
  뢠   )  ᯥ樠 
( -  ).   ணࠬ 뢠 㭪
뢠 16h  祭   , ࠡ稪
⮩ 㭪樨 頥  ୮ .
      ᬮਬ   㭪権 뢠 BIOS 16h,
  ਤ ᯮ짮 / 墠뢠 
१.
     맮 㭪樨   㪠뢠  ॣ AH.
    㭪 0 - ⥭  .   ୮
 祭 ᪠-  ASCII-   頥 
ᮮ⢥⢥  AH  AL. ᫨  ୮  ,
㭪 㤥 ,  ⠬ -  , .. 
짮⥫   .
    㭪 1 - ⥭    㤠  
୮ . ᫨   , 䫠 Z 뢠, 
⠭ ᪠-  ASCII-  ᮮ⢥⢥ 
AH  AL. ᫨  ୮  , 㭪  
 ,   室 ⠭ 䫠 Z.
    㭪 2 -  ﭨ 㦥 . 
頥  ॣ AL.  㭪  , ⮡
㧭,   몫祭 ० Caps Lock. ᫨ 6-  AL
ࠢ 0,  ० 몫祭; ᫨ 1 - .
    㭪樨 10h  11h -   ᠬ,  㭪樨 0  1,   
  ⠪   ⥫ ,
  101-譮 ,   
権  (Alt+Enter  .).  㭪樨,  ᪠ 
[1],   BIOS, 饭 ᫥ 15  1985 .
    㭪樨 0, 1, 10h, 11h   墠祭 १⮬,
⮡ "ᮢ뢠" ணࠬ 㦭  .  
饭  㭪樨  । ணࠬ ⮫쪮  
,   ࠢ ࠢ쭮 񭭮 ᨬ 
। ᪮쪮 . ⥫쭮,  ࣠ 
१ ᯥ樠  ( - ७ ), 
⠢訥  㤠,   ᫥ 饭 ணࠬ 
㭪 INT 16h    -   
⮣ .
     㦥 㯮 ,  㭪樨  
 AH ᪠- ,   AL - ASCII-. ,  
ࠪ⨪ ( 祭 ᪠-, 頥 䨪஬
KeyRus), ᫨ 㭪 頥 ASCII- ᪮  ⨭᪮
㪢,  ᪠-  ⮬   㫥.    
࠭  १ ⠡ ᮮ⢥⢨ 㪢  ᪠-
,     㪢 ,   㦭
ணࠬ 祭 ᪠-  ASCII- 㪢.


 १⭮ ணࠬ


KEY_1      equ     8600h ;-  ASCII- "祩 " RUS <-> LAT.
KEY_2      equ     8500h ;-  ASCII- "祩 " txt <-> TXT.

codesg     segment
           assume  cs:codesg
           assume  ds:codesg

           org     100h

begin:     jmp     init       ;室  樠樨

;। ६:

buf_inside dw      ?,?,?      ;७ .
buf_len    db      0          ;饥 ⢮ ⮢  .
page_num   db      ?          ; ⥪饩 ࠭ .
next_corr  db      0          ;諮 ⮩ 襩 뫠 KEY_1?
way_l2r    db      1          ;0 - RUS -> LAT, 1 - LAT -> RUS.
cursor_xy  dw      ?          ;न .

rus_chars  db      ""
           db      ""
           db      '"',"/':,.;"

lat_chars  db      "f,dult;pbqrkvyjghcnea[wxio]sm'.z"
           db      'F<DULT:PBQRKVYJGHCNEA{WXIO}SM">Z'
           db      "@#$%^&*"

len_chars  equ     offset lat_chars - offset rus_chars

; ࠡ稪 뢠 16h.

new_16h:   test    ah,0eeh  ;஢ઠ  맢 㭪樨.
           jz      main_1

;᫨ 맢    㭪権 0,1,10h,11h, । ࠢ
;  ࠡ稪:

           db      0eah  ; ᥣ⭮ JMP.
old_16h    dd      ?     ; ண ࠡ稪.

; ࠡ뢠 ᠬ:

main_1:    push    ax
           push    bx
           push    cx
           push    dx
           push    es
           push    ds
           push    si
           push    di
           push    bp

           mov     bp,sp

; 室 ( 頥) 祭 AX 室   [BP+16],
; 室 ( 頥) 祭 ॣ 䫠 -   [BP+22].

           push    cs
           pop     ds

;஢ઠ  맢 㭪樨:

           test    ah,0efh
           jnz     main_3

;㭪 0  10h - "⥭  ":

           cmp     buf_len,0             ;᫨  , 塞.
           jne     main_2
           call    append_buf

main_2:    mov     ax,buf_inside         ;६  "᪠-, ᨬ"
           mov     [bp+16],ax            ; .

           mov     ax,buf_inside+2       ; ⠢訥
           mov     buf_inside,ax         ; .
           mov     ax,buf_inside+4
           mov     buf_inside+2,ax

           dec     buf_len
           jmp     short return

;㭪 1  11h - "஢ 稥  ":

main_3:    cmp     buf_len,0
           jne     main_7

; ७  , ஢塞  
;(  㭪樨 11h, ⮡ ᫥  " "):

           mov     ah,11h              ;!!!
           pushf
           call    old_16h
           mov     buf_inside,ax
           jnz     main_4

;᫨ ⠬ ⮦ , 室, ⠭ 䫠 Z=1:

           or      word ptr [bp+22],40h
           jmp     short return

; ୮  - .
;஢塞:   "祩 "?

main_4:    cmp     ax,KEY_1
           je      main_5
           cmp     ax,KEY_2
           jne     main_6

;ࠡ⪠ "祩 ":

main_5:    call    act_hotkey
           jmp     main_3

; ୮    "祩 ".
;頥 ⢥, 뢠  ࠡ稪 INT 16h:

main_6:    or      word ptr [bp+22],40h ;砫 ⠭ 䫠 Z.
           mov     ax,[bp+16]
           pushf
           call    old_16h
           jnz     return_1             ;室, ᫨ 䫠 Z  .
           jmp     short return_2

;७   .  㤠 祭  室, ᨢ 䫠 Z:

main_7:    mov     ax,buf_inside

return_1:  and     word ptr [bp+22],0bfh
return_2:  mov     [bp+16],ax

return:    pop     bp
           pop     di
           pop     si
           pop     ds
           pop     es
           pop     dx
           pop     cx
           pop     bx
           pop     ax
           iret

;----------------------------------------------------------------------------
;楤 append_buf -  ७   .
;뢠, ᫨   (.. buf_len=0).

append_buf proc    near

;⮡   । ⨥ "祩 ", 訢
;  101-   ,   ᨬ 
;୮ :

append_1:  mov     ah,11h              ;!!!
           pushf
           call    old_16h
           mov     buf_inside,ax
           jz      append_1

;஢塞:  ୮   "祩 "?

           cmp     ax,KEY_1
           jz      append_2
           cmp     ax,KEY_2
           jnz     append_3

;ࠡ⪠ "祩 ":

append_2:  call    act_hotkey
           cmp     buf_len,0
           jne     append_4

; ୮    "祩 "   ,   ࠡ⪥
; ७  祣  뫮 饭.   訢 
;,   ஬ ࠡ稪:

append_3:  mov     ax,[bp+16]
           pushf
           call    old_16h
           mov     buf_inside,ax
           inc     buf_len        ;= mov buf_len,1
           mov     next_corr,0

append_4:  ret

append_buf endp

;----------------------------------------------------------------------------
;楤 act_hotkey - ࠡ⪠ "祩 ".
;
;室:   ୮  -  "祩 ",  ७  -
;         ( buf_len=0).
;室: ᫨ ⨥  ࠡ뢠,       
;       ,  - 祣.   ᮮ⢥⢥ 㤥 3, 1  0.

act_hotkey proc    near

;  "祩 "  ୮ :

           mov     ah,10h              ;!!!
           pushf
           call    old_16h

;।塞 ⥪ ࠭ :

           mov     ah,15
           int     10h
           mov     page_num,bh

;।塞 न :

           mov     ah,3
           int     10h
           mov     cursor_xy,dx

;᫨    ࠭ ࠭, 室:

           and     dl,dl
           jz      act_exit

; 室  ᨬ :

           dec     dl

;।塞,   " " :

           cmp     buf_inside,KEY_1
           jnz     act_2

;믮塞 ८ࠧ /Lat.

           cmp     next_corr,0
           jnz     act_1

;।塞 ࠢ ८ࠧ:

           push    dx
           call    def_rl
           pop     dx
           inc     next_corr   ;=mov next_corr,1

act_1:     call    char_xy
           call    corr_rl
           cmp     al,0
           je      act_4
           jmp     short act_3

;믮塞 ८ࠧ ய/:

act_2:     mov     next_corr,0
           call    char_xy
           call    corr_caps

;, ᫨ AH=2,  ᨬ   ८ࠧ뢠, 
; AL ८ࠧ ᨬ.

           cmp     ah,2
           je      act_4

;  ८ࠧ뢠.
;ᨬ    Backspace:

act_3:     mov     buf_inside,0e08h

;ᨬ   ᪠- (=0)  ASCII- ८ࠧ ᨬ:

           mov     ah,0
           mov     buf_inside+2,ax

;ᨬ    "<-":

           mov     buf_inside+4,4b00h
           mov     buf_len,3
           ret

;   ८ࠧ뢠 - ᨬ   ⮫쪮  "<-":

act_4:     mov     buf_inside,4b00h
           inc     buf_len           ;= mov buf_len,1

act_exit:  ret

act_hotkey endp

;----------------------------------------------------------------------------
;楤 def_rl । ࠢ ८ࠧ ப: 0, ᫨
;ப 뫠 ࠢ쭮 ࠭  ᪮ ०,  1, ᫨ ப 뫠
;ࠢ쭮 ࠭  ⨭᪮ ०.
;
;室:  DX - न ᫥ ᨬ ப.
;室: way_l2r - ࠢ.

def_rl     proc    near

           call    char_xy    ; ⥪騩 ᨬ ப.

           call    corr_caps  ;஢塞:  㪢,  ᫨ ,  ?
           cmp     ah,2
           jne     def_rl_2

;  㪢 - ⮣ 室  ।饬 ᨬ. ᫨ ப 稫,
;室,  ⮬ way_l2r ࠭ ஥ 祭.

def_rl_1:  and     dl,dl
           jz      def_rl_3
           dec     dl
           jmp     def_rl

; 㪢 - ⮣  AH ᥩ 0, ᫨ 㪢 ᪠,  1 - ᫨ ⨭᪠.
; 祭  ᢠ way_l2r.

def_rl_2:  mov     way_l2r,ah
def_rl_3:  ret

def_rl     endp

;----------------------------------------------------------------------------
;楤 char_xy 頥  ᨬ  묨 न⠬.
;
;室:  DX - न ᨬ.
;室: AL -  ᨬ;
;       DX -  .

char_xy    proc    near

           push    dx

           mov     ah,2               ;⠭ 
           mov     bh,page_num        ;  .
           int     10h

           mov     ah,8               ;।塞  ᨬ
           int     10h                ; 樨 .
           push    ax

           mov     ah,2               ;⠭
           mov     dx,cursor_xy       ;न .
           int     10h

           pop     ax
           pop     dx
           ret

char_xy    endp

;----------------------------------------------------------------------------
;楤 corr_rl ࠢ  ᨬ ப.
;
;室:  AL - 室 ᨬ,
;       way_l2r - ࠢ ८ࠧ.
;室: AL - ࠢ ᨬ  0, ᫨ ࠢ  .

corr_rl_a  dw      ?      ; 뢠 ணࠬ: addr_ret 
                          ; ⮩ Caps Lock  corr_caps -  ⮩.
corr_rl    proc    near

           push    ax

;।塞,    Caps Lock:

           mov     ah,2
           pushf
           call    old_16h

;᫨ ,   ⥭  ᨢ rus_chars  lat_chars  㪢
;  ॣ  㪢  ⨢.  ⮣  corr_rl_a
;뢠  楤 corr_caps. ᫨  Caps Lock  ,
; corr_rl_a 뢠   RET.

           mov     corr_rl_a,offset addr_ret
           and     al,40h
           jz      corr_rl_1
           mov     corr_rl_a,offset corr_caps

corr_rl_1: mov     di,offset rus_chars
           mov     si,offset lat_chars
           cmp     way_l2r,0
           je      corr_rl_2
           xchg    di,si

corr_rl_2: pop     cx           ;CL - 室 ᨬ

; DI 㪠뢠  ப  "ࠢ묨" ᨬ,  SI -  ப
; "ࠢ묨".

           xor     bx,bx        ;㫨 稪.

corr_rl_3: mov     al,[bx+di]
           call    corr_rl_a
           cmp     cl,al        ;室 ᨬ ᮢ  "ࠢ"?
           jnz     corr_rl_4

           mov     al,[bx+si]   ;᫨ ᮢ, 塞   "ࠢ".
           jmp     corr_rl_a    ;= CALL/RET

corr_rl_4: inc     bx           ;᫨  ᮢ,  ஢  ᮢ
           cmp     bx,len_chars ; ᫥騬 "ࠢ" ᨬ.
           jnz     corr_rl_3

           mov     al,0         ;᫨  ᮢ   , 頥 0.
addr_ret:  ret

corr_rl    endp

;----------------------------------------------------------------------------
;楤 corr_caps.
;
;室:  AL -  ᨬ.
;室: ᫨ ᨬ   㪢,  AH=2, AL  ;
;       ᫨ ᨬ - ᪠ 㪢,  AH=0, ॣ 㪢 ;
;       ᫨ ᨬ - ⨭᪠ 㪢,  AH=1, ॣ 㪢 .

data_corr  db      1,97,122,-20h   ;a-z
           db      1,65,90,20h     ;A-Z
           db      0,160,175,-20h  ;-
           db      0,224,239,-50h  ;-
           db      0,128,143,20h   ;-
           db      0,144,159,50h   ;-
           db      0,240,240,1     ;
           db      0,241,241,-1    ;
           db      2,0             ;஥ ᫮, ࠢ 0 - ਧ .

corr_caps  proc    near

           push    bx
           mov     bx,offset data_corr-4

corr_c_1:  add     bx,4

           mov     ah,[bx]           ;AH = 0, 1  2.
           cmp     byte ptr [bx+1],0 ; ⠡?
           je      corr_c_2

           cmp     al,[bx+1]  ;஢ઠ  ࠭ .
           jb      corr_c_1
           cmp     al,[bx+2]  ;஢ઠ ࠢ ࠭ .
           ja      corr_c_1

           add     al,[bx+3]  ;塞 ॣ 㪢  ⨢.
corr_c_2:  pop     bx
           ret

corr_caps  endp

;----------------------------------------------------------------------------
;樠:

init:      mov     ah,9                   ;
           mov     dx,offset info         ;ᢥ
           int     21h                    ; ணࠬ.

           mov     ax,3516h               ;砥  
           int     21h                    ; ண
           mov     word ptr old_16h,bx    ;ࠡ稪 INT 16h.
           mov     word ptr old_16h+2,es

           mov     dx,offset new_16h      ;⠭
           mov     ax,2516h               ; 
           int     21h                    ;ࠡ稪 INT 16h.

           mov     dx,offset init         ;  
           int     27h                    ;१⮬.

info       db      13,10
           db      'Text corrector by Ivan Roshin, Moscow, 29 Apr 2002.'
           db      13,10
           db      'Use F11 to correct TEXT -> text, text -> TEXT.'
           db      13,10
           db      'Use F12 to correct RUS/LAT.'
           db      13,10
           db      'Welcome to http://www.ivr.da.ru!'
           db      13,10,13,10,'$'

codesg     ends
           end     begin


ਨ


    ⭠       (912
⮢, ᫨  ).
    ᫨  ᯮ㥬  䨪 㣠 ᪫
 (筮 ࠧ稥  ⮬,   ᯮ
   ९  ᪮ ०),  ᫥
ᮮ⢥騬 ࠧ  ப rus_chars  lat_chars,
।騥  ᮮ⢥⢨ ᨬ,   ᪮
 ⨭᪮ ०.
    ᫨ BIOS 襣   ন 101-
 (.. 饭 ࠭ 15  1985 ), 
 맮 㭪権 10h  11h  맮 㭪権 0  1
ᮮ⢥⢥. ⢥騥 ப ணࠬ ⬥祭
ਥ "!!!".
     㦥 㯮 ,  ࠢ ⥪, ࠭
 ࠢ쭮 ﭨ Caps Lock,  ࠫ  F11, 
 ࠢ ⥪, ࠭  ࠢ쭮 ०
/Lat, -  F12.    㣨 "稥
",  祭 ⠭ KEY_1  KEY_2. 訩 
⠭ ᮤন ᪠-  ( 樨 ), 
訩  - ASCII-.
     ᯨ᮪  [᪠-, ASCII-]    
権 Shift+, Alt+, Ctrl+   ਢ
-  讣 ࠧ.  ⮣ ।
ᯮ짮 ਢ񭭮  ணࠬ,   ⨨
 ( 樨 ) ⠥ ⭠筮
᫮,    ண - ᪠-,    -
ASCII-. 室  ணࠬ -   Esc.

codesg     segment
           assume  cs:codesg
           assume  ds:codesg

           org     100h

main       proc    near

           mov     ah,10h     ; mov ah,0  ண BIOS.
           int     16h        ;  .

           cmp     ax,011bh   ;᫨  Esc - 室.
           je      exit

           mov     bx,offset string
           push    bx

           mov     cl,4       ;⠢
           mov     ch,ah      ;뢮 ப
           shr     ch,cl      ; .
           call    one_digit
           mov     ch,ah
           call    one_digit
           mov     ch,al
           shr     ch,cl
           call    one_digit
           mov     ch,al
           call    one_digit

           pop     dx         ; ப.
           mov     ah,9
           int     21h

           jmp     main

exit:      ret

main       endp

one_digit  proc    near

           push    ax
           and     ch,0fh
           add     ch,'0'
           cmp     ch,'9'
           jna     m1
           add     ch,'a'-'0'-10
m1:        mov     [bx],ch
           inc     bx
           pop     ax
           ret

one_digit  endp

string     db      '0000',13,10,'$'

codesg     ends
           end     main


"" १


      १,  砫쭮  
ࠧࠡ⪥  뢠,  稫 "ᠬ ᮡ".
    ᫨ ⥪騩 ० - ᪨,     ⨭
㪢 ( , ⥪騩 ० - ⨭᪨,   
  㪢),      㪢, 
४ ०,  ⥬ ࠢ  ⨥ ᮮ⢥饩
"祩 ".
    筮 ⠪   㯨,   ⥪騩 ० -
᪨,      ᨬ <, >, [, ], {, },
  ⮫쪮  ⨭᪮ ०,   
   ᨬ,    ᪮ ०
  ९ ( 䨪 KeyRus  ᪫
 " 㬮砭"  ᨬ @, #, $, %, ^, &, *). (
᫥ 砥  ࠢ쭮 ࠢ ᨬ ᫥
㪢   ப ᫥  ⮣ ᨬ  
᪮.)
    讥 㤮⢮   ⥪ ⠢ , 
 ९  -ࠧ  ᪮  ⨭᪮
०. ⨬,  ࠥ ⥪  ⨭᪮ ०, 
 ९  ⠪,     ᪮ ० (
, ࠥ ⥪  ᪮ ०,   ९
 ⠪,     ⨭᪮ ०).  ⮬ 砥
筮  ࠧ  " "  ࠢ
⥪, ࠭  ࠢ쭮 ० /Lat,  ୮
  㤥 ࠢ!
    " "  ࠢ ⥪, ࠭ 
ࠢ쭮 ﭨ Caps Lock,  ᯮ짮  ⮫쪮
 ࠢ 訡,   , ⮡   -
 ⥪ ய 㪢     (ਬ,
뤥  ய묨 㪢).    
  ᫥ ᨬ 塞 ப  
" ",   ப  㤥 ࠡ⠭.
    , ࠧ㬥,  ⠪ ࠧ  ப,  
 㪢.  ।஢ ⥪ 쭮  室
 ய 㪢     - ਬ, 
 ᫮  砫 ।   㤠 ࢮ
᫮ ।;  ࠧ  ।    
ꥤ  ।  .





1. .஫, .஫. "⭮ ᯥ祭 IBM PC". ᪢,
   -, 1992.

2. .஫, .஫. "ணࠬ஢ ஢ CGA,
   EGA  VGA". ᪢, -, 1992.

3. .. "ᥬ  ணࠬ஢  IBM PC".

4. ., .-., .  . "㪮⢮ 
   ணࠬ஢  ࠢ MS-DOS". ᪢,  
   , 1995.




    㣨    १ ணࠬ  DOS:

1. "⪫祭 '' ᪨ ०  DOS". ".
    " 12/2002.
