Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;------------------------------------------------------------------------------
  2. ;   Mad Mouse
  3. ;---------------------------------------------------------------------
  4. ; version:      0.2
  5. ; last update:  03/06/2012
  6. ; changed by:   Marat Zakiyanov aka Mario79, aka Mario
  7. ; changes:      Some optimizations.
  8. ;---------------------------------------------------------------------
  9. ;   €¢â®à í⮣® 㦠᭮ áâ६­®£® ª®¤ : Sourcerer, 23.04.2010
  10. ;   popovpa (29.05.2012)
  11. ;   1. ˆ§¬¥­¥­¨¥ «®£¨ª¨ à ¡®âë ¯à®£à ¬¬ë.
  12. ;   2. „®¡ ¢«¥­® "¯¥à¥áª ª¨¢ ­¨¥" ᢥàåã ¨ ­¨§ã :)
  13. ;   3. Ž¯â¨¬¨§ æ¨ï ª®¤ .
  14. ;------------------------------------------------------------------------------
  15.         use32           ; âà ­á«ïâ®à, ¨á¯®«ì§ãî騩 32-å à §àï¤­ë¥ ª®¬ ­¤ë
  16.         org 0x0         ; ¡ §®¢ë©  ¤à¥á ª®¤ , ¢á¥£¤  0x0
  17.  
  18.         db 'MENUET01'   ; 1. ¨¤¥­â¨ä¨ª â®à ¨á¯®«­ï¥¬®£® ä ©«  (8 ¡ ©â)
  19.         dd 0x01         ; 2. ¢¥àá¨ï ä®à¬ â  § £®«®¢ª  ¨á¯®«­ï¥¬®£® ä ©« 
  20.         dd START        ; 3.  ¤à¥á, ­  ª®â®àë© á¨á⥬  ¯¥à¥¤ ñâ ã¯à ¢«¥­¨¥
  21.                         ; ¯®á«¥ § £à㧪¨ ¯à¨«®¦¥­¨ï ¢ ¯ ¬ïâì
  22.         dd IM_END       ; 4. à §¬¥à ¯à¨«®¦¥­¨ï
  23.         dd I_END        ; 5. ®¡êñ¬ ­¥®¡å®¤¨¬®© ¯à¨«®¦¥­¨î ¯ ¬ïâ¨
  24.                         ; ¬®¦­® ®¡à é âìáï ª ¯ ¬ï⨠¢ ¤¨ ¯ §®­¥ ®â 0x0
  25.                         ; ¤® §­ ç¥­¨ï, ®¯à¥¤¥«ñ­­®£® §¤¥áì
  26.         dd stack_area   ; 6. ¢¥à設  á⥪  ¢ ¤¨ ¯ §®­¥ ¯ ¬ïâ¨, 㪠§ ­­®¬ ¢ëè¥
  27.         dd 0x0          ; 7. 㪠§ â¥«ì ­  áâபã á ¯ à ¬¥âà ¬¨.
  28.                         ; ¥á«¨ ¯®á«¥ § ¯ã᪠ ­¥à ¢­® ­ã«î, ¯à¨«®¦¥­¨¥ ¡ë«®
  29.                         ; § ¯ã饭® á ¯ à ¬¥âà ¬¨ ¨§ ª®¬ ­¤­®© áâப¨
  30.         dd 0x0          ; 8. 㪠§ â¥«ì ­  áâபã, ¢ ª®â®àãî § ¯¨á ­ ¯ãâì,
  31.                         ; ®âªã¤  § ¯ã饭® ¯à¨«®¦¥­¨¥
  32. ;------------------------------------------------------------------------------
  33. ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì ¯à®£à ¬¬¨áâ 
  34. include '../../macros.inc'
  35. ;------------------------------------------------------------------------------
  36. ;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
  37. ;------------------------------------------------------------------------------
  38. START:                          ; ¤à¥á ­ ç «  ¯à®£à ¬¬ë
  39.         mov     eax,40          ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩.
  40.         mov     ebx,100000b     ;­ã¦­® ⮫쪮 ᮡë⨥ ¬ëè¨
  41.         int     0x40
  42. ;------------------------------------------------------------------------------
  43. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  44. ;------------------------------------------------------------------------------
  45. align 4
  46. still:
  47.         mov     eax,10          ;®¦¨¤ âì ᮡë⨩
  48.         int     0x40
  49.        
  50.         mov     eax,14          ;äã­ªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà ­ 
  51.         int     0x40            ;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â
  52.                                 ;¯®¬¥­ïâìáï à §à¥è¥­¨¥ íªà ­ 
  53.         mov     ebx,eax
  54.         shl     ebx,16
  55.         shr     ebx,16
  56.         mov     edi,ebx         ;á®åà ­¨¬ ã
  57.         shr     eax,16          ;ᤢ¨£ ¥¬ eax ¢¯à ¢® ­  16 - ¯®«ãç ¥¬ x
  58.         mov     esi,eax         ;á®åà ­¨¬ x
  59. ;¯®«ãç ¥¬ ª®®à¤¨­ âë ªãàá®à 
  60.         mov     eax,37          ;äã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  61.         xor     ebx,ebx         ;¯®¤äãªæ¨ï 0 - ª®®à¤¨­ âë ¬ëè¨
  62.                                 ;®â­®á¨â¥«ì­® íªà ­ 
  63.         int     0x40
  64.  
  65.         mov     ebx,eax         ;§ ¯®¬¨­ ¥¬ ª®®à¤¨­ âë
  66.         shr     eax,16          ;⥯¥àì ã ­ á ⮫쪮 x. ­ã¦¥­ ¨ y
  67.         mov     ecx,eax         ;§ ¯®¬¨­ ¥¬ x
  68.         shl     ebx,16          ;ᤢ¨­¥¬ ¢«¥® ­  16
  69.         shr     ebx,16          ;ᤢ¨­¥¬¢ ¯à ¢® ­  16, ã ­ á ¥áâì ã
  70. ;------------------------------------------------------------------------------
  71. ;¢ esi ¨ edi ª®®à¤¨­ âë à §¬¥à  íªà ­  X ¨ Y ᮮ⢥âᢥ­­®
  72. ;¢ ecx ¨ ebx ª®®à¤¨­ âë ªãàá®à  X ¨ Y ᮮ⢥⢥­­®
  73. ;------------------------------------------------------------------------------
  74. ;áà ¢­¥­¨¥ ª®®à¤¨­ â x
  75.         test    ecx,ecx         ;à ¢­  0?
  76.         jz      left_border     ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï
  77.  
  78.         cmp     ecx,esi         ;à ¢­  è¨à¨­¥ íªà ­ ?
  79.         jz      right_border    ;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ 㠯ࠢ®£® ªà ï
  80. ;áà ¢­¥­¨¥ ª®®à¤¨­ â y
  81.         test    ebx,ebx         ;à ¢­  0?
  82.         jz      top_border      ;¥á«¨ ¤  §­ ç¨â ªãàá®à ¢¢¥àåã
  83.  
  84.         cmp     ebx,edi         ;à ¢­  ¢ëá®â¥ íªà ­ ?
  85.         jz      bottom_border   ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ­¨¦­¥£® ªà ï
  86.  
  87.         jmp     still           ;¨­ ç¥ ­¨ç¥£® ¤¥« âì ­¥ ­ã¦­®
  88. ;------------------------------------------------------------------------------
  89. align 4
  90. left_border:
  91.         mov     edx,esi         ;¢ edx ¨¬¥¥¬ è¨à¨­ã íªà ­ 
  92.         dec     edx             ;㬥­ì訬 ­  1
  93.         shl     edx,16          ;⥯¥àì edx=(x-1)*65536
  94.         add     edx,ebx         ;  ⥯¥àì edx=(x-1)*65536+y
  95. ;------------------------------------------------------------------------------
  96. align 4
  97. set_mouse_position:
  98.         mov     eax,18          ;äã­ªæ¨ï 18: ãáâ ­®¢¨âì ­ áâனª¨ ¬ëè¨
  99.         mov     ebx,19          ;¯®¤äã­ªæ¨ï 19
  100.         mov     ecx,4           ;¯®¤¯®¤äã­ªæ¨ï 4: ãáâ ­®¢¨âì ¯®«®¦¥­¨¥
  101.                                 ;ªãàá®à 
  102.         int     0x40
  103.         jmp     still           ;®â¤ëå ¥¬
  104. ;------------------------------------------------------------------------------
  105. align 4
  106. right_border:                   ;ªãàá®à 㠯ࠢ®£® ªà ï
  107.  
  108.         xor     edx,edx
  109.         inc     edx             ;edx=1
  110.         shl     edx,16          ;edx = 1*65536
  111.         add     edx,ebx         ;edx=1*65536+y
  112.         jmp     set_mouse_position
  113. ;------------------------------------------------------------------------------
  114. align 4
  115. top_border:                     ;ªãàá®à ã ¢¥àå­¥£® ªà ï
  116.  
  117.         mov     edx,ecx         ;• ª®®à¤¨­ â  ªãàá®à 
  118.         shl     edx,16          ;⥯¥àì edx=(x)*65536
  119.         add     edx,edi         ;  ⥯¥àì edx=(x)*65536+y
  120.         dec     edx             ;  ⥯¥àì edx=(x)*65536+(ã-1)
  121.         jmp     set_mouse_position
  122. ;------------------------------------------------------------------------------
  123. align 4
  124. bottom_border:                  ;ªãàá®à ã ­¨¦­¥£® ªà ï
  125.         mov     edx,ecx         ;edx=ecx x ª®®à¤¨­ â  ªãàá®à 
  126.         shl     edx,16          ;edx = å*65536
  127.                                 ;ã ª®®à¤¨­ â  à ¢­  0
  128.         jmp     set_mouse_position
  129. ;------------------------------------------------------------------------------
  130. IM_END:                         ; ¬¥âª  ª®­æ  ª®¤ 
  131. ;------------------------------------------------------------------------------
  132. align 4
  133.         rb 1024
  134. stack_area:
  135. ;------------------------------------------------------------------------------
  136. I_END:                          ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  137. ;------------------------------------------------------------------------------