Subversion Repositories Kolibri OS

Rev

Rev 2726 | 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. ;------------------------------------------------------------------------------
  35. START:                          ; ¤à¥á ­ ç «  ¯à®£à ¬¬ë
  36.         mov     eax,40          ;ãáâ ­®¢¨âì ¬ áªã ¤«ï ®¦¨¤ ¥¬ëå ᮡë⨩.
  37.         mov     ebx,100000b     ;­ã¦­® ⮫쪮 ᮡë⨥ ¬ëè¨
  38.         int     0x40
  39. ;------------------------------------------------------------------------------
  40. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  41. ;------------------------------------------------------------------------------
  42. align 4
  43. still:
  44.         mov     eax,10          ;®¦¨¤ âì ᮡë⨩
  45.         int     0x40
  46.        
  47.         mov     eax,14          ;äã­ªæ¨ï 14 - ¯®«ãç¨âì à §¬¥à íªà ­ 
  48.         int     0x40            ;¢ë§®¢ ä.14 ¢ 横«¥ ¯®â®¬ã çâ® ¬®¦¥â
  49.                                 ;¯®¬¥­ïâìáï à §à¥è¥­¨¥ íªà ­ 
  50.         mov     ebx,eax
  51.         shl     ebx,16
  52.         shr     ebx,16
  53.         mov     edi,ebx         ;á®åà ­¨¬ ã
  54.         shr     eax,16          ;ᤢ¨£ ¥¬ eax ¢¯à ¢® ­  16 - ¯®«ãç ¥¬ x
  55.         mov     esi,eax         ;á®åà ­¨¬ x
  56. ;¯®«ãç ¥¬ ª®®à¤¨­ âë ªãàá®à 
  57.         mov     eax,37          ;äã­ªæ¨ï 37 - à ¡®â  á ¬ëèìî
  58.         xor     ebx,ebx         ;¯®¤äãªæ¨ï 0 - ª®®à¤¨­ âë ¬ëè¨
  59.                                 ;®â­®á¨â¥«ì­® íªà ­ 
  60.         int     0x40
  61.  
  62.         mov     ebx,eax         ;§ ¯®¬¨­ ¥¬ ª®®à¤¨­ âë
  63.         shr     eax,16          ;⥯¥àì ã ­ á ⮫쪮 x. ­ã¦¥­ ¨ y
  64.         mov     ecx,eax         ;§ ¯®¬¨­ ¥¬ x
  65.         shl     ebx,16          ;ᤢ¨­¥¬ ¢«¥® ­  16
  66.         shr     ebx,16          ;ᤢ¨­¥¬¢ ¯à ¢® ­  16, ã ­ á ¥áâì ã
  67. ;------------------------------------------------------------------------------
  68. ;¢ esi ¨ edi ª®®à¤¨­ âë à §¬¥à  íªà ­  X ¨ Y ᮮ⢥âᢥ­­®
  69. ;¢ ecx ¨ ebx ª®®à¤¨­ âë ªãàá®à  X ¨ Y ᮮ⢥⢥­­®
  70. ;------------------------------------------------------------------------------
  71. ;áà ¢­¥­¨¥ ª®®à¤¨­ â x
  72.         test    ecx,ecx         ;à ¢­  0?
  73.         jz      left_border     ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã «¥¢®£® ªà ï
  74.  
  75.         cmp     ecx,esi         ;à ¢­  è¨à¨­¥ íªà ­ ?
  76.         jz      right_border    ;¯¥à¥å®¤¨¬ ª ®¡à ¡®âª¥ 㠯ࠢ®£® ªà ï
  77. ;áà ¢­¥­¨¥ ª®®à¤¨­ â y
  78.         test    ebx,ebx         ;à ¢­  0?
  79.         jz      top_border      ;¥á«¨ ¤  §­ ç¨â ªãàá®à ¢¢¥àåã
  80.  
  81.         cmp     ebx,edi         ;à ¢­  ¢ëá®â¥ íªà ­ ?
  82.         jz      bottom_border   ;¯¥à¥å®¤ ª ®¡à ¡®âª¥ ã ­¨¦­¥£® ªà ï
  83.  
  84.         jmp     still           ;¨­ ç¥ ­¨ç¥£® ¤¥« âì ­¥ ­ã¦­®
  85. ;------------------------------------------------------------------------------
  86. align 4
  87. left_border:
  88.         mov     edx,esi         ;¢ edx ¨¬¥¥¬ è¨à¨­ã íªà ­ 
  89.         dec     edx             ;㬥­ì訬 ­  1
  90.         shl     edx,16          ;⥯¥àì edx=(x-1)*65536
  91.         add     edx,ebx         ;  ⥯¥àì edx=(x-1)*65536+y
  92. ;------------------------------------------------------------------------------
  93. align 4
  94. set_mouse_position:
  95.         mov     eax,18          ;äã­ªæ¨ï 18: ãáâ ­®¢¨âì ­ áâனª¨ ¬ëè¨
  96.         mov     ebx,19          ;¯®¤äã­ªæ¨ï 19
  97.         mov     ecx,4           ;¯®¤¯®¤äã­ªæ¨ï 4: ãáâ ­®¢¨âì ¯®«®¦¥­¨¥
  98.                                 ;ªãàá®à 
  99.         int     0x40
  100.         jmp     still           ;®â¤ëå ¥¬
  101. ;------------------------------------------------------------------------------
  102. align 4
  103. right_border:                   ;ªãàá®à 㠯ࠢ®£® ªà ï
  104.  
  105.         xor     edx,edx
  106.         inc     edx             ;edx=1
  107.         shl     edx,16          ;edx = 1*65536
  108.         add     edx,ebx         ;edx=1*65536+y
  109.         jmp     set_mouse_position
  110. ;------------------------------------------------------------------------------
  111. align 4
  112. top_border:                     ;ªãàá®à ã ¢¥àå­¥£® ªà ï
  113.  
  114.         mov     edx,ecx         ;• ª®®à¤¨­ â  ªãàá®à 
  115.         shl     edx,16          ;⥯¥àì edx=(x)*65536
  116.         add     edx,edi         ;  ⥯¥àì edx=(x)*65536+y
  117.         dec     edx             ;  ⥯¥àì edx=(x)*65536+(ã-1)
  118.         jmp     set_mouse_position
  119. ;------------------------------------------------------------------------------
  120. align 4
  121. bottom_border:                  ;ªãàá®à ã ­¨¦­¥£® ªà ï
  122.         mov     edx,ecx         ;edx=ecx x ª®®à¤¨­ â  ªãàá®à 
  123.         shl     edx,16          ;edx = å*65536
  124.         inc     edx             ;ã ª®®à¤¨­ â  à ¢­  1
  125.         jmp     set_mouse_position
  126. ;------------------------------------------------------------------------------
  127. IM_END:                         ; ¬¥âª  ª®­æ  ª®¤ 
  128. ;------------------------------------------------------------------------------
  129. align 4
  130.         rb 1024
  131. stack_area:
  132. ;------------------------------------------------------------------------------
  133. I_END:                          ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  134. ;------------------------------------------------------------------------------