Subversion Repositories Kolibri OS

Rev

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

  1. ;   à®á⮩ ¯à¨¬¥à ¯à®£à ¬¬ë ¤«ï KolibriOS
  2. ;   ®§¢ã稢 ¥â ª®¤ ­ ¦ â®© ª« ¢¨è¨
  3. ;
  4. ;   Š®¬¯¨«¨à®¢ âì FASM'®¬
  5. ;        Œ®¦­® ®âªàëâì example.asm ç¥à¥§ ¯à®£à ¬¬ã FASM (¥ñ ïà«ëª ¥áâì
  6. ;        ­  à ¡®ç¥¬ á⮫¥)
  7. ;        € ¬®¦­® ¯à®áâ® ­ ¦ âì F9 ¢ Tinypad'¥. ‹®£ ª®¬¯¨«ï樨
  8. ;        ®â®¡à ¦ ¥âáï ­  ¤®áª¥ ®â« ¤ª¨ (¯à®£à ¬¬  BOARD)
  9. ;
  10. ;   —â® ¢ ¦­® §­ âì ¯à¨ ¯à®£à ¬¬¨à®¢ ­¨¨ ¯®¤ Š®«¨¡à¨:
  11. ;        ®¬¥à ä㭪樨 ¯®¬¥é ¥âáï ¢ ॣ¨áâà eax.
  12. ;        ‚맮¢ á¨á⥬­®© ä㭪樨 ®áãé¥á⢫ï¥âáï ª®¬ ­¤®© "int 0x40".
  13. ;        ‚ᥠॣ¨áâàë, ªà®¬¥ ® 㪠§ ­­ëå ¢ ¢®§¢à é ¥¬®¬ §­ ç¥­¨¨,
  14. ;        ¢ª«îç ï ॣ¨áâà ä« £®¢ eflags, á®åà ­ïîâáï.
  15. ;
  16. ;    à¨¬¥à:
  17. ;        mov eax, 1    ;”ã­ªæ¨ï 1 - ¯®áâ ¢¨âì â®çªã ¢ ®ª­¥
  18. ;                      ;ᯨ᮪ á¨áä㭪権 á¬. ¢ DOCPACK - sysfuncr.txt
  19. ;        mov ebx, 10   ; ª®®à¤¨­ â  x=10
  20. ;        mov ecx, 20   ; ª®®à¤¨­ â  y=10
  21. ;        mov edx, 0xFFFfff ;梥â â®çª¨
  22. ;        int 0x40      ;¢ë§¢ âì äã­ªæ¨î
  23. ;
  24. ;    ’®¦¥ á ¬®¥ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á :
  25. ;        mcall 1, 10, 20, 0xFFFfff
  26. ;---------------------------------------------------------------------
  27.  
  28.   use32              ; ¢ª«îç¨âì 32-¡¨â­ë© ०¨¬  áᥬ¡«¥à 
  29.   org    0           ;  ¤à¥á æ¨ï á ­ã«ï
  30.  
  31.   db     'MENUET01'  ; 8-¡ ©â­ë© ¨¤¥­â¨ä¨ª â®à MenuetOS
  32.   dd     1           ; ¢¥àá¨ï § £®«®¢ª  (¢á¥£¤  1)
  33.   dd     START       ;  ¤à¥á ¯¥à¢®© ª®¬ ­¤ë
  34.   dd     I_END       ; à §¬¥à ¯à®£à ¬¬ë
  35.   dd     MEM         ; ª®«¨ç¥á⢮ ¯ ¬ïâ¨
  36.   dd     STACKTOP    ;  ¤à¥á ¢¥à設ë áâíª 
  37.   dd     0           ;  ¤à¥á ¡ãä¥à  ¤«ï ¯ à ¬¥â஢
  38.   dd     0           ; § à¥§¥à¢¨à®¢ ­®
  39.  
  40. include "lang.inc"
  41. include "../../macros.inc" ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§­ì  áᥬ¡«¥à騪®¢!
  42.  
  43. ;---------------------------------------------------------------------
  44. ;---  €—€‹Ž Žƒ€ŒŒ›  ----------------------------------------------
  45. ;---------------------------------------------------------------------
  46.  
  47. START:
  48.  
  49. red:                    ; ¯¥à¥à¨á®¢ âì ®ª­®
  50.  
  51.     call draw_window    ; ¢ë§ë¢ ¥¬ ¯à®æ¥¤ãàã ®âà¨á®¢ª¨ ®ª­ 
  52.  
  53. ;---------------------------------------------------------------------
  54. ;---  –ˆŠ‹ Ž€Ž’Šˆ ‘Ž›’ˆ‰  ----------------------------------------
  55. ;---------------------------------------------------------------------
  56.  
  57. still:
  58.     ;mcall 10            ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  59.     mov eax, 10
  60.     int 0x40
  61.  
  62.     cmp  eax,2          ; ­ ¦ â  ª« ¢¨è  ?
  63.     je   key            ; ¥á«¨ ¤  - ­  key
  64.     cmp  eax,3          ; ­ ¦ â  ª­®¯ª  ?
  65.     je   button         ; ¥á«¨ ¤  - ­  button
  66.     cmp  eax,1          ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  67.     je   red            ; ¥á«¨ ¤  - ­  ¬¥âªã red
  68.  
  69.     jmp  still          ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  70.  
  71.  
  72.  
  73. ;---------------------------------------------------------------------
  74.  
  75.  
  76.   key:                  ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  77.     mcall 2             ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah)
  78.  
  79.  
  80.         cmp   ah, 0x41        ; A - if Caps Lock ON
  81.         jnz   @f
  82.         jmp   _07
  83.     @@:
  84.         cmp   ah, 0x5a        ; Z
  85.         jnz   @f
  86.         jmp   _08
  87.     @@:
  88.         cmp   ah, 0x53        ; S
  89.         jnz   @f
  90.         jmp   _09
  91.     @@:
  92.         cmp   ah, 0x58        ; X
  93.         jnz   @f
  94.         jmp   _0a
  95.     @@:
  96.         cmp   ah, 0x44        ; D
  97.         jnz   @f
  98.         jmp   _0b
  99.     @@:
  100.         cmp   ah, 0x43        ; C
  101.         jnz   @f
  102.         jmp   _0c
  103.     @@:
  104.         cmp   ah, 0x56        ; V
  105.         jnz   @f
  106.    _01:
  107.         mov   ah, 0x01
  108.         jmp   p
  109.     @@:
  110.         cmp   ah, 0x47        ; G
  111.         jnz   @f
  112.    _02:
  113.         mov   ah, 0x02
  114.         jmp   p
  115.     @@:
  116.         cmp   ah, 0x42        ; B
  117.         jnz   @f
  118.    _03:
  119.         mov   ah, 0x03
  120.         jmp   p
  121.     @@:
  122.         cmp   ah, 0x48        ; H
  123.         jnz   @f
  124.    _04:
  125.         mov   ah, 0x04
  126.         jmp   p
  127.     @@:
  128.         cmp   ah, 0x4e        ; N
  129.         jnz   @f
  130.    _05:
  131.         mov   ah, 0x05
  132.         jmp   p
  133.     @@:
  134.         cmp   ah, 0x4d        ; M
  135.         jnz   @f
  136.    _06:
  137.         mov   ah, 0x06
  138.         jmp   p
  139.     @@:
  140.         cmp   ah, 0x4b        ; K
  141.         jnz   @f
  142.    _07:
  143.         mov   ah, 0x07
  144.         jmp   p
  145.     @@:
  146.         cmp   ah, 0x3c        ; <
  147.         jnz   @f
  148.    _08:
  149.         mov   ah, 0x08
  150.         jmp   p
  151.     @@:
  152.         cmp   ah, 0x4c        ; L
  153.         jnz   @f
  154.    _09:
  155.         mov   ah, 0x09
  156.         jmp   p
  157.     @@:
  158.         cmp   ah, 0x3e        ; >
  159.         jnz   @f
  160.    _0a:
  161.         mov   ah, 0x0a
  162.         jmp   p
  163.     @@:
  164.         cmp   ah, 0x3a        ; :
  165.         jnz   @f
  166.    _0b:
  167.         mov   ah, 0x0b
  168.         jmp   p
  169.     @@:
  170.         cmp   ah, 0x3f        ; ?
  171.         jnz   @f
  172.    _0c:
  173.         mov   ah, 0x0c
  174.         jmp   p
  175.     @@:
  176.         cmp   ah, 0x22        ; "
  177.         jnz   @f
  178.         jmp   _11
  179.     @@:
  180.         cmp   ah, 0x21        ; key !-------
  181.         jnz   @f
  182.         jmp   _0c
  183.     @@:
  184.         cmp   ah, 0x51        ; key Q
  185.         jnz   @f
  186.    _11:
  187.         mov   ah, 0x11
  188.         jmp   p
  189.     @@:
  190.         cmp   ah, 0x40        ; key @
  191.         jnz   @f
  192.    _12:
  193.         mov   ah, 0x12
  194.         jmp   p
  195.     @@:
  196.         cmp   ah, 0x57        ; key W
  197.         jnz   @f
  198.    _13:
  199.         mov   ah, 0x13
  200.         jmp   p
  201.     @@:
  202.         cmp   ah, 0x23        ; key #
  203.         jnz   @f
  204.    _14:
  205.         mov   ah, 0x14
  206.         jmp   p
  207.     @@:
  208.         cmp   ah, 0x45        ; key E
  209.         jnz   @f
  210.    _15:
  211.         mov   ah, 0x15
  212.         jmp   p
  213.     @@:
  214.         cmp   ah, 0x52        ; key R
  215.         jnz   @f
  216.    _16:
  217.         mov   ah, 0x16
  218.         jmp   p
  219.     @@:
  220.         cmp   ah, 0x25        ; key %
  221.         jnz   @f
  222.         jmp   _17
  223.     @@:
  224.         cmp   ah, 0x54        ; key T
  225.         jnz   @f
  226.         jmp   _18
  227.     @@:
  228.         cmp   ah, 0x5e        ; key ^
  229.         jnz   @f
  230.         jmp   _19
  231.     @@:
  232.         cmp   ah, 0x59        ; key Y
  233.         jnz   @f
  234.         jmp   _1a
  235.     @@:
  236.         cmp   ah, 0x26        ; key &
  237.         jnz   @f
  238.         jmp   _1b
  239.     @@:
  240.         cmp   ah, 0x55        ; key U
  241.         jnz   @f
  242.         jmp   _1c
  243.     @@:
  244.         cmp   ah, 0x49        ; key I
  245.         jnz   @f
  246.         jmp   _21
  247.     @@:
  248.         cmp   ah, 0x28        ; key (
  249.         jnz   @f
  250.         jmp   _22
  251.     @@:
  252.         cmp   ah, 0x4f        ; key O
  253.         jnz   @f
  254.         jmp   _23
  255.     @@:
  256.         cmp   ah, 0x29        ; key )
  257.         jnz   @f
  258.         jmp   _24
  259.     @@:
  260.         cmp   ah, 0x50        ; key P
  261.         jnz   @f
  262.         jmp   _25
  263.     @@:
  264.         cmp   ah, 0x7b        ; key {
  265.         jnz   @f
  266.         jmp   _26
  267.     @@:
  268.         cmp   ah, 0x2b        ; key +
  269.         jnz   @f
  270.         jmp   _27
  271.     @@:
  272.         cmp   ah, 0x7d        ; key }
  273.         jnz   @f
  274.         jmp   _28
  275.     @@:
  276.         cmp   ah, 0x7c        ; key |
  277.         jnz   @f
  278.         jmp   _29
  279.     @@:
  280.         cmp   ah, 0x61        ; a - if Caps Lock OFF
  281.         jnz   @f
  282.    _17:
  283.         mov   ah, 0x17
  284.         jmp   p
  285.     @@:
  286.         cmp   ah, 0x7a        ; z
  287.         jnz   @f
  288.    _18:
  289.         mov   ah, 0x18
  290.         jmp   p
  291.     @@:
  292.         cmp   ah, 0x73        ; s
  293.         jnz   @f
  294.    _19:
  295.         mov   ah, 0x19
  296.         jmp   p
  297.     @@:
  298.         cmp   ah, 0x78        ; x
  299.         jnz   @f
  300.    _1a:
  301.         mov   ah, 0x1a
  302.         jmp   p
  303.     @@:
  304.         cmp   ah, 0x64        ; d
  305.         jnz   @f
  306.    _1b:
  307.         mov   ah, 0x1b
  308.         jmp   p
  309.     @@:
  310.         cmp   ah, 0x63        ; c
  311.         jnz   @f
  312.    _1c:
  313.         mov   ah, 0x1c
  314.         jmp   p
  315.     @@:
  316.         cmp   ah, 0x76        ; v
  317.         jnz   @f
  318.    _21:
  319.         mov   ah, 0x21
  320.         jmp   p
  321.     @@:
  322.         cmp   ah, 0x67        ; g
  323.         jnz   @f
  324.    _22:
  325.         mov   ah, 0x22
  326.         jmp   p
  327.     @@:
  328.         cmp   ah, 0x62        ; b
  329.         jnz   @f
  330.    _23:
  331.         mov   ah, 0x23
  332.         jmp   p
  333.     @@:
  334.         cmp   ah, 0x68        ; h
  335.         jnz   @f
  336.    _24:
  337.         mov   ah, 0x24
  338.         jmp   p
  339.     @@:
  340.         cmp   ah, 0x6e        ; n
  341.         jnz   @f
  342.    _25:
  343.         mov   ah, 0x25
  344.         jmp   p
  345.     @@:
  346.         cmp   ah, 0x6d        ; m
  347.         jnz   @f
  348.    _26:
  349.         mov   ah, 0x26
  350.         jmp   p
  351.     @@:
  352.         cmp   ah, 0x6b        ; k
  353.         jnz   @f
  354.    _27:
  355.         mov   ah, 0x27
  356.         jmp   p
  357.     @@:
  358.         cmp   ah, 0x2c        ; ,
  359.         jnz   @f
  360.    _28:
  361.         mov   ah, 0x28
  362.         jmp   p
  363.     @@:
  364.         cmp   ah, 0x6c        ; l
  365.         jnz   @f
  366.    _29:
  367.         mov   ah, 0x29
  368.         jmp   p
  369.     @@:
  370.         cmp   ah, 0x2e        ; .
  371.         jnz   @f
  372.    _2a:
  373.         mov   ah, 0x2a
  374.         jmp   p
  375.     @@:
  376.         cmp   ah, 0x3b        ; ;
  377.         jnz   @f
  378.    _2b:
  379.         mov   ah, 0x2b
  380.         jmp   p
  381.     @@:
  382.         cmp   ah, 0x2f        ; /
  383.         jnz   @f
  384.    _2c:
  385.         mov   ah, 0x2c
  386.         jmp   p
  387.     @@:
  388.         cmp   ah, 0x27        ; '
  389.         jnz   @f
  390.   _31:
  391.         mov   ah, 0x31
  392.         jmp   p
  393.     @@:
  394.         cmp   ah, 0x60        ; key `
  395.         jnz   @f
  396.         jmp   _2c
  397.     @@:
  398.         cmp   ah, 0x09        ; key tab
  399.         jnz   @f
  400.         jmp   _31
  401.     @@:
  402.         cmp   ah, 0x31        ; key 1
  403.         jnz   @f
  404.   _32:
  405.         mov   ah, 0x32
  406.         jmp   p
  407.     @@:
  408.         cmp   ah, 0x71        ; key q
  409.         jnz   @f
  410.   _33:
  411.         mov   ah, 0x33
  412.         jmp   p
  413.     @@:
  414.         cmp   ah, 0x32        ; key 2
  415.         jnz   @f
  416.   _34:
  417.         mov   ah, 0x34
  418.         jmp   p
  419.     @@:
  420.         cmp   ah, 0x77        ; key w
  421.         jnz   @f
  422.   _35:
  423.         mov   ah, 0x35
  424.         jmp   p
  425.     @@:
  426.         cmp   ah, 0x65        ; key e
  427.         jnz   @f
  428.   _36:
  429.         mov   ah, 0x36
  430.         jmp   p
  431.     @@:
  432.         cmp   ah, 0x34        ; key 4
  433.         jnz   @f
  434.   _37:
  435.         mov   ah, 0x37
  436.         jmp   p
  437.     @@:
  438.         cmp   ah, 0x72        ; key r
  439.         jnz   @f
  440.   _38:
  441.         mov   ah, 0x38
  442.         jmp   p
  443.     @@:
  444.         cmp   ah, 0x35        ; key 5
  445.         jnz   @f
  446.   _39:
  447.         mov   ah, 0x39
  448.         jmp   p
  449.     @@:
  450.         cmp   ah, 0x74        ; key t
  451.         jnz   @f
  452.   _3a:
  453.         mov   ah, 0x3a
  454.         jmp   p
  455.     @@:
  456.         cmp   ah, 0x36        ; key 6
  457.         jnz   @f
  458.   _3b:
  459.         mov   ah, 0x3b
  460.         jmp   p
  461.     @@:
  462.         cmp   ah, 0x79        ; key y
  463.         jnz   @f
  464.   _3c:
  465.         mov   ah, 0x3c
  466.         jmp   p
  467.     @@:
  468.         cmp   ah, 0x75        ; key u
  469.         jnz   @f
  470.   _41:
  471.         mov   ah, 0x41
  472.         jmp   p
  473.     @@:
  474.         cmp   ah, 0x38        ; key 8
  475.         jnz   @f
  476.         mov   ah, 0x42
  477.         jmp   p
  478.     @@:
  479.         cmp   ah, 0x69        ; key i
  480.         jnz   @f
  481.         mov   ah, 0x43
  482.         jmp   p
  483.     @@:
  484.         cmp   ah, 0x39        ; key 9
  485.         jnz   @f
  486.         mov   ah, 0x44
  487.         jmp   p
  488.     @@:
  489.         cmp   ah, 0x6f        ; key o
  490.         jnz   @f
  491.         mov   ah, 0x45
  492.         jmp   p
  493.     @@:
  494.         cmp   ah, 0x70        ; key p
  495.         jnz   @f
  496.         mov   ah, 0x46
  497.         jmp   p
  498.     @@:
  499.         cmp   ah, 0x2d        ; key -
  500.         jnz   @f
  501.         mov   ah, 0x47
  502.         jmp   p
  503.     @@:
  504.         cmp   ah, 0x5b        ; key [
  505.         jnz   @f
  506.         mov   ah, 0x48
  507.         jmp   p
  508.     @@:
  509.         cmp   ah, 0x3d        ; key =
  510.         jnz   @f
  511.         mov   ah, 0x49
  512.         jmp   p
  513.     @@:
  514.         cmp   ah, 0x5d        ; key ]
  515.         jnz   @f
  516.         mov   ah, 0x4a
  517.         jmp   p
  518.     @@:
  519.         cmp   ah, 0x5c        ; key \
  520.         jnz   @f
  521.         mov   ah, 0x4b
  522.         jmp   p
  523.     @@:
  524.         cmp   ah, 0x08        ; key backspace
  525.         jnz   @f
  526.         mov   ah, 0x4c
  527.         jmp   p
  528.     @@:
  529.         cmp   ah, 0x0d        ; key enter
  530.         jnz   @f
  531.         mov   ah, 0x51
  532.         jmp   p
  533.     @@:
  534.         cmp   ah, 0x66        ; key f
  535.         jnz   @f
  536.         mov   ah, 0x01
  537.         jmp   p
  538.     @@:
  539.         cmp   ah, 0x6a        ; key j
  540.         jnz   @f
  541.         mov   ah, 0x05
  542.         jmp   p
  543.     @@:
  544.         cmp   ah, 0x33        ; key 3
  545.         jnz   @f
  546.         mov   ah, 0x08
  547.         jmp   p
  548.     @@:
  549.         cmp   ah, 0x37        ; key 7
  550.         jnz   @f
  551.         jmp   _11
  552.     @@:
  553.         cmp   ah, 0x30        ; key 0
  554.         jnz   @f
  555.         jmp   _15
  556.     @@:
  557.         cmp   ah, 0xb4        ; key home
  558.         jnz   @f
  559.         mov   ah, 0x10
  560.         jmp   p
  561.     @@:
  562.         cmp   ah, 0xb5        ; key end
  563.         jnz   @f
  564.    _70:
  565.         mov   ah, 0xfc
  566.         jmp   p
  567.     @@:
  568.         cmp   ah, 0xb8        ; key Page Up
  569.         jnz   @f
  570.         mov   ah, 0x20
  571.         jmp   p
  572.     @@:
  573.         cmp   ah, 0xb7        ; key Page Down
  574.         jnz   @f
  575.         jmp   _70
  576.     @@:
  577.         cmp   ah, 0xff        ; key F12
  578.         jnz   @f
  579.         mov   ah, 0x00
  580.         jmp   p
  581.     @@:
  582.         cmp   ah, 0xb6        ; key Del
  583.         jnz   @f
  584.         jmp   _70
  585.     @@:
  586.  
  587.   p:
  588.     mov  [M+1], ah  ; § ¯¨á âì ª®¤ ᨬ¢®«  ª ª ª®¤ ­®âë
  589.  
  590.     ; äã­ªæ¨ï 55-55: á¨á⥬­ë© ¤¨­ ¬¨ª ("PlayNote")
  591.     ;   esi -  ¤à¥á ¬¥«®¤¨¨
  592.  
  593.        mov  eax,55
  594.        mov  ebx,eax
  595.        mov  esi,M
  596.        int  0x40
  597.  
  598.     ; ¨«¨ ª®à®âª®:
  599.     ;mcall 55, , , , Music
  600.  
  601.     jmp  still          ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  602.  
  603.  
  604. ;---------------------------------------------------------------------
  605.  
  606.   button:
  607.     mcall 17            ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  608.  
  609.         cmp  ah, 0xa1       ; button 1
  610.         jnz  @f
  611.         jmp  _01
  612.     @@:
  613.         cmp  ah, 0x02       ; button 2
  614.         jnz  @f
  615.         jmp  _02
  616.     @@:
  617.         cmp  ah, 0x03       ; button 3
  618.         jnz  @f
  619.         jmp  _03
  620.     @@:
  621.         cmp  ah, 0x04
  622.         jnz  @f
  623.         jmp  _04
  624.     @@:
  625.         cmp  ah, 0x05
  626.         jnz  @f
  627.         jmp  _05
  628.     @@:
  629.         cmp  ah, 0x06
  630.         jnz  @f
  631.         jmp  _06
  632.     @@:
  633.         cmp  ah, 0x07
  634.         jnz  @f
  635.         jmp  _07
  636.     @@:
  637.         cmp  ah, 0x08       ; button 8
  638.         jnz  @f
  639.         jmp  _08
  640.     @@:
  641.         cmp  ah, 0x09
  642.         jnz  @f
  643.         jmp  _09
  644.     @@:
  645.         cmp  ah, 0x0a       ; button 10
  646.         jnz  @f
  647.         jmp  _0a
  648.     @@:
  649.         cmp  ah, 0x0b
  650.         jnz  @f
  651.         jmp  _0b
  652.     @@:
  653.         cmp  ah, 0x0c       ; button 12
  654.         jnz  @f
  655.         jmp  _0c
  656.     @@:
  657.  
  658.         cmp  ah, 0x11
  659.         jnz  @f
  660.         jmp  _11
  661.     @@:
  662.         cmp  ah, 0x12
  663.         jnz  @f
  664.         jmp  _12
  665.     @@:
  666.         cmp  ah, 0x13
  667.         jnz  @f
  668.         jmp  _13
  669.     @@:
  670.         cmp  ah, 0x14
  671.         jnz  @f
  672.         jmp  _14
  673.     @@:
  674.         cmp  ah, 0x15
  675.         jnz  @f
  676.         jmp  _15
  677.     @@:
  678.         cmp  ah, 0x16
  679.         jnz  @f
  680.         jmp  _16
  681.     @@:
  682.         cmp  ah, 0x17
  683.         jnz  @f
  684.         jmp  _17
  685.     @@:
  686.         cmp  ah, 0x18
  687.         jnz  @f
  688.         jmp  _18
  689.     @@:
  690.         cmp  ah, 0x19
  691.         jnz  @f
  692.         jmp  _19
  693.     @@:
  694.         cmp  ah, 0x1a
  695.         jnz  @f
  696.         jmp  _1a
  697.     @@:
  698.         cmp  ah, 0x1b
  699.         jnz  @f
  700.         jmp  _1b
  701.     @@:
  702.         cmp  ah, 0x1c
  703.         jnz  @f
  704.         jmp  _1c
  705.     @@:
  706.  
  707.         cmp  ah, 0x21       ; button 1
  708.         jnz  @f
  709.         jmp  _21
  710.     @@:
  711.         cmp  ah, 0x22
  712.         jnz  @f
  713.         jmp  _22
  714.     @@:
  715.         cmp  ah, 0x23       ; button 3
  716.         jnz  @f
  717.         jmp  _23
  718.     @@:
  719.         cmp  ah, 0x24
  720.         jnz  @f
  721.         jmp  _24
  722.     @@:
  723.         cmp  ah, 0x25       ; button 5
  724.         jnz  @f
  725.         jmp  _25
  726.     @@:
  727.         cmp  ah, 0x26
  728.         jnz  @f
  729.         jmp  _26
  730.     @@:
  731.         cmp  ah, 0x27       ; button 7
  732.         jnz  @f
  733.         jmp  _27
  734.     @@:
  735.         cmp  ah, 0x28
  736.         jnz  @f
  737.         jmp  _28
  738.     @@:
  739.         cmp  ah, 0x29       ; button 9
  740.         jnz  @f
  741.         jmp  _29
  742.     @@:
  743.         cmp  ah, 0x2a
  744.         jnz  @f
  745.         jmp  _2a
  746.     @@:
  747.         cmp  ah, 0x2b       ; button 11
  748.         jnz  @f
  749.         jmp  _2b
  750.     @@:
  751.         cmp  ah, 0x2c
  752.         jnz  @f
  753.         jmp  _2c
  754.     @@:
  755.         cmp  ah, 0x31
  756.         jnz  @f
  757.         jmp  _31
  758.  
  759.     @@:
  760.         cmp  ah, 0x32
  761.         jnz  @f
  762.         jmp  _32
  763.     @@:
  764.         cmp  ah, 0x33
  765.         jnz  @f
  766.         jmp  _33
  767.     @@:
  768.         cmp  ah, 0x34
  769.         jnz  @f
  770.         jmp  _34
  771.     @@:
  772.         cmp  ah, 0x35
  773.         jnz  @f
  774.         jmp  _35
  775.     @@:
  776.         cmp  ah, 0x36
  777.         jnz  @f
  778.         jmp  _36
  779.     @@:
  780.         cmp  ah, 0x37
  781.         jnz  @f
  782.         jmp  _37
  783.     @@:
  784.         cmp  ah, 0x38
  785.         jnz  @f
  786.         jmp  _38
  787.     @@:
  788.         cmp  ah, 0x39
  789.         jnz  @f
  790.         jmp  _39
  791.     @@:
  792.         cmp  ah, 0x3a
  793.         jnz  @f
  794.         jmp  _3a
  795.     @@:
  796.         cmp  ah, 0x3b
  797.         jnz  @f
  798.         jmp  _3b
  799.     @@:
  800.         cmp  ah, 0x3c
  801.         jnz  @f
  802.         jmp  _3c
  803.     @@:
  804.         cmp  ah, 0x41
  805.         jnz  @f
  806.         jmp  _41
  807.     @@:
  808.  
  809.     cmp   ah, 1         ; ¥á«¨ … ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  810.     jne   still         ;  ¢¥à­ãâìáï
  811.  
  812.   .exit:
  813.     mcall -1            ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  814.  
  815.  
  816. ;---------------------------------------------------------------------
  817. ;---  Ž…„…‹…ˆ… ˆ Ž’ˆ‘Ž‚Š€ ŽŠ€  ----------------------------------
  818. ;---------------------------------------------------------------------
  819.  
  820. WHITE_W=48   ; While key width
  821. BLACK_W=30   ; Black key width
  822. BLACK_X=34   ; Black key X offset
  823.  
  824. draw_window:
  825.  
  826.     mcall 12, 1       ; äã­ªæ¨ï 12: á®®¡é¨âì Ž‘ ® ­ ç «¥ ®âà¨á®¢ª¨
  827.  
  828.     mcall 48, 3, sc,sizeof.system_colors
  829.  
  830.     ; ¤ «¥¥: á­ ç «  ¤«¨­­ë© ¢ à¨ ­â (§ ª®¬¬¥­â¨à®¢ ­­ë©)
  831.     ; § â¥¬ ª®à®âª¨©  ­ «®£ á ¨á¯®«ì§®¢ ­¨¥¬ ¬ ªà®á®¢
  832.  
  833. ;   mov  eax,0                   ; äã­ªæ¨ï 0: ®¯à¥¤¥«¨âì ®ª­®
  834. ;   mov  ebx,200*65536+300       ; [x áâ àâ] *65536 + [x à §¬¥à]
  835. ;   mov  ecx,200*65536+150       ; [y áâ àâ] *65536 + [y à §¬¥à]
  836. ;   mov  edx, [sc.work]          ; 梥â ä®­ 
  837. ;   or   edx, 0x33000000         ; ¨ ⨯ ®ª­  3
  838. ;   mov  edi,header              ; ‡€ƒŽ‹Ž‚ŽŠ ŽŠ€
  839. ;   int  0x40
  840.  
  841.     mov   edx, [sc.work]         ; 梥â ä®­ 
  842.     or    edx, 0x33000000        ; ¨ ⨯ ®ª­  3
  843.     mcall 0, <20,WHITE_W*15+9>, <200,250>, , ,caption
  844.        
  845.     mcall 8,  <WHITE_W*0,WHITE_W>, <0,100>, 0x21, 0xff7a74
  846.     mcall 8,  <WHITE_W*1,WHITE_W>, <0,100>, 0x23, 0x907040
  847.     mcall 8,  <WHITE_W*2,WHITE_W>, <0,100>, 0x25, 0xa08050
  848.     mcall 8,  <WHITE_W*3,WHITE_W>, <0,100>, 0x26, 0xb09060
  849.     mcall 8,  <WHITE_W*4,WHITE_W>, <00,100>, 0x28, 0xc0a070
  850.     mcall 8,  <WHITE_W*5,WHITE_W>, <00,100>, 0x2a, 0xd0b080
  851.     mcall 8,  <WHITE_W*6,WHITE_W>, <0,100>, 0x2c, 0xe0c090
  852.     mcall 8,  <WHITE_W*7,WHITE_W>, <0,100>, 0x31, 0xffa97c
  853.     mcall 8,  <WHITE_W*8,WHITE_W>, <0,100>, 0x33, 0xaf8d8d
  854.     mcall 8,  <WHITE_W*9,WHITE_W>, <0,100>, 0x35, 0xbf9d9d
  855.     mcall 8,  <WHITE_W*10,WHITE_W>, <0,100>, 0x36, 0xcfadad
  856.     mcall 8,  <WHITE_W*11,WHITE_W>, <00,100>, 0x38, 0xdfbdbd
  857.     mcall 8,  <WHITE_W*12,WHITE_W>, <00,100>, 0x3a, 0xefcdcd
  858.     mcall 8,  <WHITE_W*13,WHITE_W>, <0,100>, 0x3c, 0xffdddd
  859.     mcall 8,  <WHITE_W*14,WHITE_W>, <0,100>, 0x41, 0xffe558
  860.  
  861.     mcall 8,  <WHITE_W*0+BLACK_X,BLACK_W>, <0,50>, 0x22, 0x221100
  862.     mcall 8,  <WHITE_W*1+BLACK_X,BLACK_W>, <0,50>, 0x24, 0x221100
  863.     mcall 8,  <WHITE_W*3+BLACK_X,BLACK_W>, <0,50>, 0x27, 0x221100
  864.     mcall 8,  <WHITE_W*4+BLACK_X,BLACK_W>, <0,50>, 0x29, 0x221100
  865.     mcall 8,  <WHITE_W*5+BLACK_X,BLACK_W>, <0,50>, 0x2b, 0x221100
  866.     mcall 8,  <WHITE_W*7+BLACK_X,BLACK_W>, <0,50>, 0x32, 0x221100
  867.     mcall 8,  <WHITE_W*8+BLACK_X,BLACK_W>, <0,50>, 0x34, 0x221100
  868.     mcall 8,  <WHITE_W*10+BLACK_X,BLACK_W>, <0,50>, 0x37, 0x221100
  869.     mcall 8,  <WHITE_W*11+BLACK_X,BLACK_W>, <0,50>, 0x39, 0x221100
  870.     mcall 8,  <WHITE_W*12+BLACK_X,BLACK_W>, <0,50>, 0x3b, 0x221100
  871.  
  872.     mcall 8,  <WHITE_W*0,WHITE_W>, <100,100>, 0xa1, 0x702050
  873.     mcall 8,  <WHITE_W*1,WHITE_W>, <100,100>, 0x03, 0x683638
  874.     mcall 8,  <WHITE_W*2,WHITE_W>, <100,100>, 0x05, 0x784648
  875.     mcall 8,  <WHITE_W*3,WHITE_W>, <100,100>, 0x06, 0x885658
  876.     mcall 8,  <WHITE_W*4,WHITE_W>, <100,100>, 0x08, 0x986668
  877.     mcall 8,  <WHITE_W*5,WHITE_W>, <100,100>, 0x0a, 0xa87678
  878.     mcall 8,  <WHITE_W*6,WHITE_W>, <100,100>, 0x0c, 0xb88688
  879.     mcall 8,  <WHITE_W*7,WHITE_W>, <100,100>, 0x11, 0x880040
  880.     mcall 8,  <WHITE_W*8,WHITE_W>, <100,100>, 0x13, 0x90622b
  881.     mcall 8,  <WHITE_W*9,WHITE_W>, <100,100>, 0x15, 0xa0723b
  882.     mcall 8,  <WHITE_W*10,WHITE_W>, <100,100>, 0x16, 0xb0824b
  883.     mcall 8,  <WHITE_W*11,WHITE_W>, <100,100>, 0x18, 0xc0925b
  884.     mcall 8,  <WHITE_W*12,WHITE_W>, <100,100>, 0x1a, 0xd0a26b
  885.     mcall 8,  <WHITE_W*13,WHITE_W>, <100,100>, 0x1c, 0xe0b27b
  886.     mcall 8,  <WHITE_W*14,WHITE_W>, <100,100>, 0x21, 0xff7a74
  887.  
  888.     mcall 8,  <WHITE_W*0+BLACK_X,BLACK_W>, <100,50>, 0x02, 0x221100
  889.     mcall 8,  <WHITE_W*1+BLACK_X,BLACK_W>, <100,50>, 0x04, 0x221100
  890.     mcall 8,  <WHITE_W*3+BLACK_X,BLACK_W>, <100,50>, 0x07, 0x221100
  891.     mcall 8,  <WHITE_W*4+BLACK_X,BLACK_W>, <100,50>, 0x09, 0x221100
  892.     mcall 8,  <WHITE_W*5+BLACK_X,BLACK_W>, <100,50>, 0x0b, 0x221100
  893.     mcall 8,  <WHITE_W*7+BLACK_X,BLACK_W>, <100,50>, 0x12, 0x221100
  894.     mcall 8,  <WHITE_W*8+BLACK_X,BLACK_W>, <100,50>, 0x14, 0x221100
  895.     mcall 8,  <WHITE_W*10+BLACK_X,BLACK_W>, <100,50>, 0x17, 0x221100
  896.     mcall 8,  <WHITE_W*11+BLACK_X,BLACK_W>, <100,50>, 0x19, 0x221100
  897.     mcall 8,  <WHITE_W*12+BLACK_X,BLACK_W>, <100,50>, 0x1b, 0x221100
  898.  
  899.  
  900.     ; ¢ë¢®¤ ⥪á⮢®© áâப¨
  901.     mov   ecx, [sc.work_text]    ; 梥â ä®­ 
  902.     or    ecx, 0x90000000        ; ¨ ⨯ áâப¨
  903.     mcall 4, <50, 205>, , message
  904.     mcall 4, <10, 235>, , message1
  905.     mcall 4, <10, 260>, , message2
  906.     mcall 4, <10, 285>, , message3
  907.     mcall 4, <10, 310>, , message4
  908.     mcall 4, <16, 185>, , t_notes
  909.  
  910.     mcall 12, 2                  ; äã­ªæ¨ï 12.2, § ª®­ç¨«¨ à¨á®¢ âì
  911.  
  912.     ret                          ; ¢ë室¨¬ ¨§ ¯à®æ¥¤ãàë
  913.  
  914.  
  915. ;---------------------------------------------------------------------
  916. ;---  „€›… Žƒ€ŒŒ›  ----------------------------------------------
  917. ;---------------------------------------------------------------------
  918.  
  919.  
  920. ; ‚â®à®© ¡ ©â ¢ M (Music) ¨§¬¥­ï¥âáï ­ ¦ â¨¥¬ ª« ¢¨è¨
  921.  
  922. M:
  923.   db  0x90, 0x30, 0
  924.  
  925.  
  926. sc system_colors
  927.  
  928. if lang eq ru
  929.   message  db '‘¯à ¢ª : éñ«ª­¨â¥ 2 à §  ­  § £®«®¢ª¥.',0
  930.   message1 db ' ¦¬¨â¥ «î¡ãî ª« ¢¨èã ¢  ­£«¨©áª®© à áª« ¤ª¥ - ',0
  931.   message2 db '¤®«¦¥­ §¢ãç âì ¢áâ஥­­ë© ¤¨­ ¬¨ª ª®¬¯ìîâ¥à  (­¥ ª®«®­ª¨!)',0
  932.   message3 db '®â  "„®" - ª« ¢¨è¨ V,Tab,U,Enter',0
  933.   message4 db '¯à¨ ¢ª«î祭¨¨ Caps Lock - ª« ¢¨è¨ V,Q,I.',0
  934.   t_notes  db '„Ž    …    Œˆ    ”€   ‘Ž‹œ   ‹Ÿ    ‘ˆ    „Ž',0
  935.   caption  db '„¥â᪮¥ ¯¨ ­¨­®',0
  936. else
  937.   message  db 'To see help click twice on the window header',0
  938.   message1 db 'Press any key in English keyboard layout - ',0
  939.   message2 db 'so you will hear the sound from the PC-speaker (Beeper)',0
  940.   message3 db 'Note "C" is the key V,Tab,U,Enter',0
  941.   message4 db 'and when Caps Lock is on then the keys V,Q,I.',0
  942.   t_notes  db 'C     D     E     F     G     A     B     C ',0
  943.   caption  db 'Baby piano',0
  944. end if
  945.  
  946. ;---------------------------------------------------------------------
  947.  
  948. I_END:                  ; ¬¥âª  ª®­æ  ¯à®£à ¬¬ë
  949.   rb 4096               ; ¯ ¬ïâì ¤«ï á⥪ 
  950. align 16
  951. STACKTOP:               ; ¬¥âª  ¢¥à設ë á⥪  (¯à¨ § ¯®«­¥­¨¨ á⥪
  952.                         ; à áâ¥â ¢ áâ®à®­ã 㬥­ì襭¨ï  ¤à¥á®¢, ¯®â®¬ã
  953.                         ; ¯ ¬ïâì ¤«ï ­¥£® ¢ ª®¤¥ ¯à®£à ¬¬ë ¢áâà¥ç ¥âáï
  954.                         ; à ­ìè¥ ç¥¬ ¥£® ¢¥à設 )
  955. MEM:                    ; ¬¥âª  㪠§ë¢ îé ï ­  ª®­¥æ ¯à®£à ¬¬ë ¯«îá
  956.                         ; à §¬¥à ¨á¯®«ì§ã¥¬®© ¥î ®¯¥à â¨¢­®© ¯ ¬ïâ¨
  957. ; €¤à¥á ¬¥âª¨ MEM ¢á¥£¤  ¤®«¦¥­ ¡ëâì ¡®«ìè¥ ç¥¬  ¤à¥á ¬¥âª¨ I_END.
  958. ; Œ¥âª  STACKTOP ¤®«¦­  à á¯®« £ ¥âáï ¯®á«¥ ¬¥âª¨ I_END ¨ ¯¥à¥¤ ¬¥âª®©
  959. ;   MEM. STACKTOP ¬®¦¥â ­ å®¤¨âáï ¨ ¯¥à¥¤ I_END, ­® íâ® ­¥ ¯à ¢¨«ì­®.
  960. ; ˆ¬¥­  ¬¥â®ª ¬®£ãâ ¡ëâì á «î¡ë¬¨ ­ §¢ ­¨ï¬¨, £« ¢­®¥ ᮡ«î¤ âì
  961. ;   ¯à ¢¨«ì­ë© ¯®à冷ª ¨å à á¯®«®¦¥­¨ï.