Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;#**************************
  2. ;#*        LIGHTS       (c)* main.inc
  3. ;#************************** 15/10/2007
  4. L0     equ 0x0000F8    ; light off
  5. L1     equ 0xFFFF00    ; light on
  6. LAG    equ 2
  7. deltaX equ 35
  8. deltaY equ 35
  9. posX   equ 50
  10. posY   equ 50
  11.  
  12. macro main_loop
  13. {
  14.  
  15. ; äã­ªæ¨ï ®âà¨á®¢ª¨ ®ª­ 
  16. draw_window:
  17.         mov     eax,12                ; äã­ªæ¨ï 12: á®®¡é¨âì á¨á⥬¥ ®
  18.                                       ; á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­ 
  19.         mov     ebx,1                 ; ¯®¤äã­ªæ¨ï 1, ­ ç «® ¯¥à¥à¨á®¢ª¨
  20.         int     0x40
  21.                                       ; =====  ŽŠŽ !!1
  22.         mov     eax,0                 ; äã­ªæ¨ï 0: ®¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠®ª­®
  23.         mov     ebx,100*65536+270     ; [x ­ ç «ì­ë©] *65536 + [x à §¬¥à]
  24.         mov     ecx,100*65536+280     ; [y ­ ç «ì­ë©] *65536 + [y à §¬¥à]
  25.         mov     edx,0x02ccddff        ; 梥â à ¡®ç¥© ®¡« á⨠RRGGBB
  26.                                       ; 0x02000000 = ⨯ ®ª­  2
  27.         mov     esi,0x808899AA        ; 梥⠮¡« á⨠§ £®«®¢ª  RRGGBB
  28.                                       ; 0x80000000 = 梥⠯¥à¥â¥ª ¥â
  29.         mov     edi,0xFFAAcc          ; 梥â à ¬ª¨ RRGGBB
  30.         int     0x40
  31.                                       ; €„ˆ‘œ ¢ § £®«®¢ª¥ Lights v0.001
  32.         mov     eax,4                 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  33.         mov     ebx,8*65536+8         ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  34.         mov     ecx,0x00224422        ; 梥â ⥪áâ  RRGGBB
  35.                                       ; áâ à訩 ¡ ©â (0x00) - à §¬¥à èà¨äâ 
  36.                                       ; (¬ «¥­ìª¨©)
  37.         mov     edx,text              ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  38.         mov     esi,texts-text        ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
  39.         int     0x40
  40.  
  41.         xor   eax,eax                 ; €„ˆ‘œ ¢ ®ª­¥!!!
  42.         mov   ecx,eax
  43.   lb:                                 ;loop ecx
  44.         mov   edi,ecx                 ;
  45.         shl   edi,3                   ;
  46.         add   edi,tBut                ;
  47.         add   al,byte[edi+1]          ;
  48.                                       ;
  49.         inc   ecx                     ;
  50.         cmp   ecx,25                  ;
  51.         jne   lb                      ;ecx<25
  52.  
  53.         cmp   eax, 0xE7    ;25
  54.         jne   goon
  55.         ;int3
  56.         ;call Bin2Hex
  57.         mov     eax,4                 ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  58.         mov     ebx,80*65536+250       ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  59.         mov     ecx,0x10FF22FF        ; 梥â ⥪áâ  RRGGBB
  60.         ;                              ; áâ à訩 ¡ ©â (0x10) - à §¬¥à èà¨äâ 
  61.         ;                             ; (¡®«ì让)
  62.         ;mov     edx,txthex
  63.         ;mov     esi,17
  64.         mov     edx,texts             ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  65.         mov     esi,textend-texts     ; ¤«¨­  ⥪áâ  ¢ ¡ ©â å
  66.         int     0x40
  67.  
  68.    goon:
  69. ;-------------------------------------------------------------------------------
  70. ;                              ----ŠŽŠˆ----
  71. ;        button()
  72. ;-------------------------------------------------------------------------------
  73.  
  74.         mov     eax,8                 ; äã­ªæ¨ï 8: ®¯à¥¤¥«¨âì ¨ ¢ë¢¥á⨠ª­®¯ªã
  75.         mov     ebx,(200-19)*65536+12 ; [x ­ ç «ì­ë©] *65536 + [x à §¬¥à]
  76.         mov     ecx,5*65536+12        ; [y ­ ç «ì­ë©] *65536 + [y à §¬¥à]
  77.         mov     edx,100               ; ¨¤¥­â¨ä¨ª â®à ª­®¯ª¨  =1
  78.         mov     esi,0xFF6611          ; 梥⠪­®¯ª¨ RRGGBB
  79.         int     0x40                  ; ===ŠŽŠ€ ‡€Š›’ˆŸ ŽŠ€===
  80.  
  81.  
  82.    LoopBegin  labl,0                  ;ecx - loop index
  83.                                       ;add  ecx,5
  84.         mov   edi,ecx
  85.         shl   edi,3      ;edi*8 -index of table
  86.         add   edi,tBut
  87.  
  88.         xor     ebx,ebx
  89.         mov      bl,byte[edi+2]         ;X
  90.         shl     ebx,16                   ;*65536=256*256
  91.         add     ebx,deltaX-LAG               ;dX
  92.         xor     ecx,ecx
  93.         mov      cl,byte[edi+3]         ;Y
  94.         shl     ecx,16                   ;*65536=256*256
  95.         add     ecx,deltaY-LAG               ;dY
  96.         xor     edx,edx
  97.         mov      dl,byte[edi]           ;N
  98.  
  99.         xor     esi,esi
  100.         cmp      byte[edi+1], 0         ;Color = 0/1
  101.         je      lit_off
  102.         mov     esi,L1                  ;on
  103.         jmp     lend
  104.     lit_off:
  105.         mov     esi,L0                  ;off
  106.     lend:
  107.         mov     eax,8                    ;8-BUTTON
  108.         int     0x40
  109.    LoopEnd    labl,25
  110.  
  111. ;=============================================================
  112. endbut:
  113.         mov     eax,12                ; äã­ªæ¨ï 12: á®®¡é¨âì á¨á⥬¥ ®
  114.                                       ; á®áâ®ï­¨¨ ¯¥à¥à¨á®¢ª¨ ®ª­ 
  115.         mov     ebx,2                 ; ¯®¤äã­ªæ¨ï 2, ¯¥à¥à¨á®¢ª  ®ª®­ç¥­ 
  116.         int     0x40
  117.         ;ret                           ; ª®­¥æ ä㭪樨  - íâ® ­¥ äã­ªæ¨ï!
  118.  
  119. event_wait:
  120.         ;mov     eax,10       ; äã­ªæ¨ï 10:=0A ®¦¨¤ ­¨¥ ᮡëâ¨ï
  121.         mov     eax,23
  122.         mov     ebx,100
  123.         int     0x40
  124.  
  125. ; ⨯ ᮡëâ¨ï ¢®§¢à éñ­ ¢ eax, ¤ «¥¥ ¯à®¢¥à塞, ª ª®¥ ᮡë⨥ ¯à®¨§®è«®
  126. ;-------------------------------------------------------------------------------
  127.         cmp     eax,1        ; § ¯à®á ­  ¯¥à¥à¨á®¢ªã?
  128.         je      redraw
  129.         cmp     eax,2        ; ­ ¦ â  ª« ¢¨è  ª« ¢¨ âãàë?
  130.         je      key
  131.         cmp     eax,3        ; ­ ¦ â  ª­®¯ª  ¢ ®ª­¥ ¯à®£à ¬¬ë?
  132.         je      button
  133.  
  134.         jmp     event_wait   ; ¢®§¢à é ¥¬áï ª ­ ç «ã 横«  ®¦¨¤ ­¨ï ᮡë⨩
  135.  
  136. ; ¯®á«¥ ⮣®, ª ª ᮡë⨥ ¨¤¥­â¨ä¨æ¨à®¢ ­®, ¥£® ­ ¤® ®¡à ¡®â âì
  137. ;-------------------------------------------------------------------------------
  138. redraw:
  139.         call    draw_window  ; ¢ë§ë¢ ¥¬ äã­ªæ¨î draw_window ¨
  140.         jmp     event_wait   ; ¢®§¢à é ¥¬áï ­ § ¤ ª 横«ã ®¦¨¤ ­¨ï
  141.  
  142. key:
  143.         mov     eax,2        ; áç¨â뢠¥¬ ª®¤ ­ ¦ â®© ª« ¢¨è¨. ‚®§¢à é¥­ ¢ ah.
  144.         int     0x40         ; Š« ¢¨è  ¤®«¦­  ¡ëâì ¯à®ç¨â ­  ¤«ï ®ç¨á⪨
  145.         cmp     ah,27
  146.         je      clos0        ; exit on ESC
  147.                              ;
  148.         jmp     event_wait   ; ¢®§¢à â ª event_wait
  149.  
  150. button:
  151.         mov     eax,17       ; áç¨â뢠¥¬ ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  152.         int     0x40         ; ¢®§¢à é¥­ ah.
  153.  
  154. ;-------------------------------------------------------------------------------
  155. ; ᬮâਬ, ª ª ï ª­®¯ª  ¡ë«  ­ ¦ â  ¨ ᮮ⢥âáâ¢ãî騬 ®¡à §®¬ ॠ£¨à㥬.
  156. ;-------------------------------------------------------------------------------
  157.         cmp     ah,100         ; ª­®¯ª  á id=100("§ ªàëâì")?
  158.         jne     noclose
  159.   clos0:
  160.         mov     eax,-1         ; äã­ªæ¨ï -1: § ¢¥àè¨âì ¯à®£à ¬¬ã
  161.         int     0x40           ; ª­®¯ª  5-29
  162.   noclose:
  163.  
  164.         xor     ecx,ecx        ;
  165.         mov     cl,ah          ;
  166.         sub     ecx,5          ; ecx - index for tBut
  167.  
  168.         mov     edi,ecx
  169.         call    x_lit            ;+0 - 業âà
  170.         mov     [tButIdx],edi    ;save  index
  171.  
  172.         mov     edi,[tButIdx]
  173.         cmp     byte[edi+6],0
  174.         je      next000
  175.         mov     edi,ecx
  176.         inc     edi
  177.         call    x_lit       ;+1    á¯à ¢ 
  178.  
  179.   next000:
  180.         mov     edi,[tButIdx]
  181.         cmp     byte[edi+5],0
  182.         je      next001
  183.         mov     edi,ecx
  184.         dec     edi
  185.         call    x_lit       ;-1    á«¥¢ 
  186.  
  187.   next001:
  188.         mov     edi,[tButIdx]
  189.         cmp     byte[edi+4],0
  190.         je      next002
  191.         mov     edi,ecx
  192.         sub     edi,5
  193.         call    x_lit       ;-5     ᢥàåã
  194.  
  195.   next002:
  196.         mov     edi,[tButIdx]
  197.         cmp     byte[edi+7],0
  198.         je      next003
  199.         mov     edi,ecx
  200.         add     edi,5
  201.         call    x_lit       ;+5     á­¨§ã
  202.   next003:
  203.         call    draw_window
  204.         jmp     event_wait
  205. ;================================--
  206.   x_lit:                      ; edi - index
  207.         shl    edi,3          ; edi*8 -index of table tBut
  208.         add    edi,tBut       ;
  209.         not    byte[edi+1]    ; invert second byte = L0/L1
  210.         ret                   ;
  211. ;================================--
  212.         call    draw_window  ;­ è  ª­®¯ª ;)
  213. ; §¤¥áì ¯à®¢¥à塞 ®áâ «ì­ë¥ ª­®¯ª¨
  214.         jmp     event_wait   ;¢®§¢à é ¥¬áï ª 横«ã ®¦¨¤ ­¨ï
  215. }
  216.  
  217.  
  218.