Subversion Repositories Kolibri OS

Rev

Rev 3587 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; ╙яЁртыхэшх ыюЄърьш фшёъют√ї яЁштюфют ATAPI
  3. ; 22.07.2007 Mario79 шёїюфэ√щ трЁшрэЄ
  4. ;---------------------------------------------------------------------
  5.  
  6.   use32          ; тъы■ўшЄ№ 32-сшЄэ√щ Ёхцшь рёёхьсыхЁр
  7.   org     0x0         ; рфЁхёрЎш  ё эєы 
  8.  
  9.   db     'MENUET01'  ; 8-срщЄэ√щ шфхэЄшЇшърЄюЁ MenuetOS
  10.   dd     0x01         ; тхЁёш  чруюыютър (тёхуфр 1)
  11.   dd     START         ; рфЁхё яхЁтющ ъюьрэф√
  12.   dd     I_END         ; ЁрчьхЁ яЁюуЁрьь√
  13.   dd     0x11000      ; ъюышўхёЄтю ярь Єш
  14.   dd     0x11000      ; рфЁхё тхЁ°шэ√ ёЄ¤ър
  15.   dd     0x0         ; рфЁхё сєЇхЁр фы  ярЁрьхЄЁют (эх шёяюы№чєхЄё )
  16.   dd     0x0         ; чрЁхчхЁтшЁютрэю
  17.  
  18. include 'macros.inc' ; ьръЁюё√ юсыхуўр■Є цшчэ№ рёёхьсыхЁ∙шъют!
  19.  
  20. ;---------------------------------------------------------------------
  21. ;---  ═└╫└╦╬ ╧╨╬├╨└╠╠█  ----------------------------------------------
  22. ;---------------------------------------------------------------------
  23.  
  24. START:
  25.  
  26. red:            ; яхЁхЁшёютрЄ№ юъэю
  27.     call draw_window    ; т√ч√трхь яЁюЎхфєЁє юЄЁшёютъш юъэр
  28.  
  29. ;---------------------------------------------------------------------
  30. ;---  ╓╚╩╦ ╬┴╨└┴╬╥╩╚ ╤╬┴█╥╚╔  ----------------------------------------
  31. ;---------------------------------------------------------------------
  32.  
  33. still:
  34.     mcall 10        ; ЇєэъЎш  10 - цфрЄ№ ёюс√Єш 
  35.  
  36.     cmp  eax,1        ; яхЁхЁшёютрЄ№ юъэю ?
  37.     je     red        ; хёыш фр - эр ьхЄъє red
  38.     cmp  eax,2        ; эрцрЄр ъыртш°р ?
  39.     je     key        ; хёыш фр - эр key
  40.     cmp  eax,3        ; эрцрЄр ъэюяър ?
  41.     je     button     ; хёыш фр - эр button
  42.  
  43.     jmp  still        ; хёыш фЁєуюх ёюс√Єшх - т эрўрыю Ўшъыр
  44.  
  45.  
  46. ;---------------------------------------------------------------------
  47.  
  48.  
  49.   key:            ; эрцрЄр ъыртш°р эр ъыртшрЄєЁх
  50.     mcall 2        ; ЇєэъЎш  2 - ёўшЄрЄ№ ъюф ёшьтюыр (т ah)
  51.  
  52.     jmp  still        ; тхЁэєЄ№ё  ъ эрўрыє Ўшъыр
  53.  
  54. ;---------------------------------------------------------------------
  55.  
  56.   button:
  57.     mcall 17        ; 17 - яюыєўшЄ№ шфхэЄшЇшърЄюЁ эрцрЄющ ъэюяъш
  58. ; ъэюяъш 2,3,4,5 - load tray CD0/CD1/CD2/CD3
  59.         movzx   ecx, ah
  60.         sub     ecx, 2
  61.         cmp     ecx, 3
  62.         ja      b6
  63.         mcall 24,5
  64.         jmp     red
  65.   b6:
  66. ; ъэюяъш 6,7,8,9 - eject tray CD0/CD1/CD2/CD3
  67.         sub     ecx, 4
  68.         cmp     ecx, 3
  69.         ja      b1
  70.         mcall 24,4
  71.         jmp     red
  72.   b1:
  73.     cmp   ah, 1     ; хёыш ═┼ эрцрЄр ъэюяър ё эюьхЁюь 1,
  74.     jne   still     ;  тхЁэєЄ№ё 
  75.  
  76.   .exit:
  77.     mcall -1        ; шэрўх ъюэхЎ яЁюуЁрьь√
  78.  
  79.  
  80.  
  81. ;---------------------------------------------------------------------
  82. ;---  ╬╧╨┼─┼╦┼═╚┼ ╚ ╬╥╨╚╤╬┬╩└ ╬╩═└  ----------------------------------
  83. ;---------------------------------------------------------------------
  84.  
  85. draw_window:
  86.     mcall 12, 1            ; ЇєэъЎш  12: ёююс∙шЄ№ ╬╤ юс юЄЁшёютъх юъэр
  87.                    ; 1 - эрўшэрхь ЁшёютрЄ№
  88.                    ; ╤╬╟─└ш╠ ╬╩═╬
  89.  
  90.     if lang eq it
  91.                         mcall 0, <100,250>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
  92.          else
  93.                         mcall 0, <100,230>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
  94.          end if
  95.     mcall 71, 1 ,header
  96.     mcall 8,<15,42>,<40,20>,2,0xaaaaaa
  97.     call  draw_buttons
  98.     mov   edx,6
  99.     add   ecx,30 shl 16
  100.     mcall
  101.     call  draw_buttons
  102.  
  103.          if lang eq it
  104.                         mcall 4, <16,25>, 0x80ffffff,text1
  105.          else
  106.                         mcall 4, <25,25>, 0x80ffffff,text1
  107.          end if
  108.     mov   edx,text2
  109.  
  110.     add   ebx,3 shl 16+20
  111.     mcall
  112.     mov   edx,text3
  113.     add   ebx,30
  114.     sub   ebx,3 shl 16
  115.     mcall
  116.  
  117.     mcall 12, 2            ; ЇєэъЎш  12: ёююс∙шЄ№ ╬╤ юс юЄЁшёютъх юъэр
  118.                    ; 2, чръюэўшыш ЁшёютрЄ№
  119.  
  120.     ret                ; т√їюфшь шч яЁюЎхфєЁ√
  121.  
  122. draw_buttons:
  123.     pusha
  124.     if lang eq it
  125.                         add   ebx,60 shl 16
  126.          else
  127.                         add   ebx,50 shl 16
  128.          end if
  129.     inc   edx
  130.     mcall
  131.     if lang eq it
  132.                         add   ebx,60 shl 16
  133.          else
  134.                         add   ebx,50 shl 16
  135.          end if
  136.     inc   edx
  137.     mcall
  138.     if lang eq it
  139.                         add   ebx,60 shl 16
  140.          else
  141.                         add   ebx,50 shl 16
  142.          end if
  143.     inc   edx
  144.     mcall
  145.     popa
  146.     ret
  147. ;---------------------------------------------------------------------
  148. ;---  ─└══█┼ ╧╨╬├╨└╠╠█  ----------------------------------------------
  149. ;---------------------------------------------------------------------
  150. header db ' ATAPI Device Tray Control',0
  151. if lang eq it
  152.         text3 db 'espelli   espelli   espelli   espelli',0
  153.         text2 db 'carica    carica    carica    carica',0
  154.         text1 db '/cd0/     /cd1/     /cd2/     /cd3/',0
  155. else
  156.         text3 db 'eject   eject   eject   eject',0
  157.         text2 db 'load    load    load    load',0
  158.         text1 db '/cd0/   /cd1/   /cd2/   /cd3/',0
  159. end if
  160.  
  161. ;---------------------------------------------------------------------
  162.  
  163. I_END:                   ; ьхЄър ъюэЎр яЁюуЁрьь√
  164.