Subversion Repositories Kolibri OS

Rev

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

  1. ;
  2. ;   à¨¬¥à ¯à®£à ¬¬ë ¤«ï MenuetOS
  3. ;   ®§¢ã稢 ¥â ª®¤ ­ ¦ â®© ª« ¢¨è¨ ;)
  4. ;
  5. ;   Š®¬¯¨«¨à®¢ âì FASM'®¬
  6. ;
  7. ;   ‘¬. â ª¦¥:
  8. ;     template.asm  -  ¯à¨¬¥à ¯à®á⥩襩 ¯à®£à ¬¬ë (­®¢ë©!)
  9. ;     rb.asm        -  ª®­â¥ªáâ­®¥ ¬¥­î à ¡®ç¥£® á⮫ 
  10. ;     example2.asm  -  ¯à¨¬¥à ¬¥­î ¨ ¤®¯®«­¨â¥«ì­ëå ®ª®­
  11. ;     example3.asm  -  ¯à¨¬¥à ¬¥­î, ॠ«¨§®¢ ­­®£® ¯®-¤à㣮¬ã
  12. ;---------------------------------------------------------------------
  13.  
  14.   use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
  15.   org    0x0         ;  ¤à¥á æ¨ï á ­ã«ï
  16.  
  17.   db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
  18.   dd     0x01        ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
  19.   dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
  20.   dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
  21.   dd     0x1000      ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
  22.   dd     0x1000      ;  ¤à¥á ¢¥à設ë áâíª 
  23.   dd     0x0         ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢ (­¥ ¨á¯®«ì§ã¥âáï)
  24.   dd     0x0         ; § à¥§¥à¢¨à®¢ ­®
  25.  
  26. include 'lang.inc'
  27. include 'macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
  28.  
  29. ;---------------------------------------------------------------------
  30. ;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
  31. ;---------------------------------------------------------------------
  32.  
  33. START:
  34.  
  35. red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
  36.  
  37.     call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  38.  
  39. ;---------------------------------------------------------------------
  40. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  41. ;---------------------------------------------------------------------
  42.  
  43. still:
  44.     mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  45.  
  46.     cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  47.     je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
  48.     cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
  49.     je   key            ; ¥á«¨ ¤  - ­  key
  50.     cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
  51.     je   button         ; ¥á«¨ ¤  - ­  button
  52.  
  53.     jmp  still          ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  54.  
  55.  
  56. ;---------------------------------------------------------------------
  57.  
  58.  
  59.   key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  60.     mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
  61.  
  62.     mov  [Music+1], ah  ; § ¯¨á âì ª®¤ ᨬ¢®«  ª ª ª®¤ ­®âë
  63.  
  64.     ; äã­ªæ¨ï 55-55: á¨á⥬­ë© ¤¨­ ¬¨ª ("PlayNote")
  65.     ;   esi -  ¤à¥á ¬¥«®¤¨¨
  66.  
  67.     ;   mov  eax,55
  68.     ;   mov  ebx,eax
  69.     ;   mov  esi,Music
  70.     ;   int  0x40
  71.  
  72.     ; ¨«¨ ª®à®âª®:
  73.     mcall 55, eax, , , Music
  74.  
  75.     jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  76.  
  77. ;---------------------------------------------------------------------
  78.  
  79.   button:
  80.     mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  81.  
  82.     cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  83.     jne   still         ;  ¢¥à­ãâìáï
  84.  
  85.   .exit:
  86.     mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  87.  
  88.  
  89.  
  90. ;---------------------------------------------------------------------
  91. ;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
  92. ;---------------------------------------------------------------------
  93.  
  94. draw_window:
  95.  
  96.     mcall 12, 1                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  97.                                    ; 1 - ­ ç¨­ ¥¬ à¨á®¢ âì
  98.  
  99.     ; ¤ «¥¥: á­ ç «  ¤«¨­­ë© ¢ à¨ ­â (§ ª®¬¬¥­â¨à®¢ ­­ë©)
  100.     ;        § â¥¬ ª®à®âª¨©  ­ «®£ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á®¢
  101.  
  102.  
  103.                                    ; ‘Ž‡„€ðŒ ŽŠŽ
  104. ;   mov  eax,0                     ; äã­ªæ¨ï 0 : ®¯à¥¤¥«¨âì ¨ ®âà¨á®¢ âì ®ª­®
  105. ;   mov  ebx,200*65536+200         ; [x áâ àâ] *65536 + [x à §¬¥à]
  106. ;   mov  ecx,200*65536+100         ; [y áâ àâ] *65536 + [y à §¬¥à]
  107. ;   mov  edx,0x02aabbcc            ; 梥â à ¡®ç¥© ®¡« á⨠ RRGGBB,8->color gl
  108. ;   mov  esi,0x805080d0            ; 梥⠯®«®áë § £®«®¢ª  RRGGBB,8->color gl
  109. ;   mov  edi,0x005080d0            ; 梥â à ¬ª¨            RRGGBB
  110. ;   int  0x40
  111.  
  112.     mcall 0, <200,200>, <200,50>, 0x02AABBCC, 0x805080D0, 0x005080D0
  113.  
  114.                                    ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
  115. ;   mov  eax,4                     ; äã­ªæ¨ï 4 : ­ ¯¨á âì ¢ ®ª­¥ ⥪áâ
  116. ;   mov  ebx,8*65536+8             ; [x] *65536 + [y]
  117. ;   mov  ecx,0x10ddeeff            ; èà¨äâ 1 ¨ 梥â ( 0xF0RRGGBB )
  118. ;   mov  edx,header                ;  ¤à¥á áâப¨
  119. ;   mov  esi,header.size           ; ¨ ¥ñ ¤«¨­ 
  120. ;   int  0x40
  121.  
  122.     mcall 4, <8,8>, 0x10DDEEFF, header, header.size
  123.  
  124. ;   mov  eax,4
  125. ;   mov  ebx,8 shl 16 + 30
  126. ;   mov  ecx,0
  127. ;   mov  edx,message
  128. ;   mov  esi,message.size
  129. ;   int  0x40
  130.  
  131.     mcall 4, <8, 30>, 0, message, message.size
  132.  
  133.                                    ; ŠŽŠ€ ‡€Š›’ˆŸ ŽŠ€
  134. ;   mov  eax,8                     ; äã­ªæ¨ï 8 : ®¯à¥¤¥«¨âì ¨ ­ à¨á®¢ âì ª­®¯ªã
  135. ;   mov  ebx,(200-19)*65536+12     ; [x áâ àâ] *65536 + [x à §¬¥à]
  136. ;   mov  ecx,5*65536+12            ; [y áâ àâ] *65536 + [y à §¬¥à]
  137. ;   mov  edx,1                     ; ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨ - 1
  138. ;   mov  esi,0x6688dd              ; 梥⠪­®¯ª¨ RRGGBB
  139. ;   int  0x40
  140.  
  141.     mcall 8, <200-19, 12>, <5, 12>, 1, 0x6688DD
  142.  
  143.     mcall 12, 2                    ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ®¡ ®âà¨á®¢ª¥ ®ª­ 
  144.                                    ; 2, § ª®­ç¨«¨ à¨á®¢ âì
  145.  
  146.     ret                            ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
  147.  
  148.  
  149. ;---------------------------------------------------------------------
  150. ;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
  151. ;---------------------------------------------------------------------
  152.  
  153. ; ‚®â â ª ï ¢®â ª®à®âª ï "¬¥«®¤¨ï".
  154. ; ‚â®à®© ¡ ©â ¨§¬¥­ï¥âáï ­ ¦ â¨¥¬ ª« ¢¨èë
  155.  
  156. Music:
  157.   db  0x90, 0x30, 0
  158.  
  159.  
  160. ;---------------------------------------------------------------------
  161.  
  162. ; ¨­â¥àä¥©á ¯à®£à ¬¬ë ¬­®£®ï§ëç­ë©
  163. ;  ‚ë ¬®¦¥â¥ § ¤ âì ï§ëª ¢ MACROS.INC (lang fix ï§ëª)
  164.  
  165. lsz message,\
  166.   ru,' ¦¬¨â¥ «î¡ãî ª« ¢¨èã...',\
  167.   en,'Press any key...',\
  168.   fr,'Pressez une touche...'
  169.  
  170. lsz header,\
  171.   ru,'ˆŒ… Žƒ€ŒŒ›',\
  172.   en,'EXAMPLE APPLICATION',\
  173.   fr,"L'exemplaire programme"
  174.  
  175. ;---------------------------------------------------------------------
  176.  
  177. I_END:                             ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  178.