Subversion Repositories Kolibri OS

Rev

Rev 3587 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3587 Rev 7134
1
;
1
;
2
; Óïðàâëåíèå ëîòêàìè äèñêîâûõ ïðèâîäîâ ATAPI
2
; Óïðàâëåíèå ëîòêàìè äèñêîâûõ ïðèâîäîâ ATAPI
3
; 22.07.2007 Mario79 èñõîäíûé âàðèàíò
3
; 22.07.2007 Mario79 èñõîäíûé âàðèàíò
4
;---------------------------------------------------------------------
4
;---------------------------------------------------------------------
5
 
5
 
6
  use32 	 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà
6
  use32 	 ; âêëþ÷èòü 32-áèòíûé ðåæèì àññåìáëåðà
7
  org	  0x0	      ; àäðåñàöèÿ ñ íóëÿ
7
  org	  0x0	      ; àäðåñàöèÿ ñ íóëÿ
8
 
8
 
9
  db	 'MENUET01'  ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS
9
  db	 'MENUET01'  ; 8-áàéòíûé èäåíòèôèêàòîð MenuetOS
10
  dd	 0x01	      ; âåðñèÿ çàãîëîâêà (âñåãäà 1)
10
  dd	 0x01	      ; âåðñèÿ çàãîëîâêà (âñåãäà 1)
11
  dd	 START	       ; àäðåñ ïåðâîé êîìàíäû
11
  dd	 START	       ; àäðåñ ïåðâîé êîìàíäû
12
  dd	 I_END	       ; ðàçìåð ïðîãðàììû
12
  dd	 I_END	       ; ðàçìåð ïðîãðàììû
13
  dd	 0x11000      ; êîëè÷åñòâî ïàìÿòè
13
  dd	 0x11000      ; êîëè÷åñòâî ïàìÿòè
14
  dd	 0x11000      ; àäðåñ âåðøèíû ñòýêà
14
  dd	 0x11000      ; àäðåñ âåðøèíû ñòýêà
15
  dd	 0x0	     ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ)
15
  dd	 0x0	     ; àäðåñ áóôåðà äëÿ ïàðàìåòðîâ (íå èñïîëüçóåòñÿ)
16
  dd	 0x0	     ; çàðåçåðâèðîâàíî
16
  dd	 0x0	     ; çàðåçåðâèðîâàíî
17
 
17
 
18
include 'MACROS.INC' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ!
-
 
19
include 'lang.inc'
18
include 'macros.inc' ; ìàêðîñû îáëåã÷àþò æèçíü àññåìáëåðùèêîâ!
20
 
19
 
21
;---------------------------------------------------------------------
20
;---------------------------------------------------------------------
22
;---  ÍÀ×ÀËÎ ÏÐÎÃÐÀÌÌÛ  ----------------------------------------------
21
;---  ÍÀ×ÀËÎ ÏÐÎÃÐÀÌÌÛ  ----------------------------------------------
23
;---------------------------------------------------------------------
22
;---------------------------------------------------------------------
24
 
23
 
25
START:
24
START:
26
 
25
 
27
red:		; ïåðåðèñîâàòü îêíî
26
red:		; ïåðåðèñîâàòü îêíî
28
    call draw_window	; âûçûâàåì ïðîöåäóðó îòðèñîâêè îêíà
27
    call draw_window	; âûçûâàåì ïðîöåäóðó îòðèñîâêè îêíà
29
 
28
 
30
;---------------------------------------------------------------------
29
;---------------------------------------------------------------------
31
;---  ÖÈÊË ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ  ----------------------------------------
30
;---  ÖÈÊË ÎÁÐÀÁÎÒÊÈ ÑÎÁÛÒÈÉ  ----------------------------------------
32
;---------------------------------------------------------------------
31
;---------------------------------------------------------------------
33
 
32
 
34
still:
33
still:
35
    mcall 10	    ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ
34
    mcall 10	    ; ôóíêöèÿ 10 - æäàòü ñîáûòèÿ
36
 
35
 
37
    cmp  eax,1	      ; ïåðåðèñîâàòü îêíî ?
36
    cmp  eax,1	      ; ïåðåðèñîâàòü îêíî ?
38
    je	   red	      ; åñëè äà - íà ìåòêó red
37
    je	   red	      ; åñëè äà - íà ìåòêó red
39
    cmp  eax,2	      ; íàæàòà êëàâèøà ?
38
    cmp  eax,2	      ; íàæàòà êëàâèøà ?
40
    je	   key	      ; åñëè äà - íà key
39
    je	   key	      ; åñëè äà - íà key
41
    cmp  eax,3	      ; íàæàòà êíîïêà ?
40
    cmp  eax,3	      ; íàæàòà êíîïêà ?
42
    je	   button     ; åñëè äà - íà button
41
    je	   button     ; åñëè äà - íà button
43
 
42
 
44
    jmp  still	      ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà
43
    jmp  still	      ; åñëè äðóãîå ñîáûòèå - â íà÷àëî öèêëà
45
 
44
 
46
 
45
 
47
;---------------------------------------------------------------------
46
;---------------------------------------------------------------------
48
 
47
 
49
 
48
 
50
  key:		  ; íàæàòà êëàâèøà íà êëàâèàòóðå
49
  key:		  ; íàæàòà êëàâèøà íà êëàâèàòóðå
51
    mcall 2	   ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah)
50
    mcall 2	   ; ôóíêöèÿ 2 - ñ÷èòàòü êîä ñèìâîëà (â ah)
52
 
51
 
53
    jmp  still	      ; âåðíóòüñÿ ê íà÷àëó öèêëà
52
    jmp  still	      ; âåðíóòüñÿ ê íà÷àëó öèêëà
54
 
53
 
55
;---------------------------------------------------------------------
54
;---------------------------------------------------------------------
56
 
55
 
57
  button:
56
  button:
58
    mcall 17	    ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
57
    mcall 17	    ; 17 - ïîëó÷èòü èäåíòèôèêàòîð íàæàòîé êíîïêè
59
; êíîïêè 2,3,4,5 - load tray CD0/CD1/CD2/CD3
58
; êíîïêè 2,3,4,5 - load tray CD0/CD1/CD2/CD3
60
        movzx   ecx, ah
59
        movzx   ecx, ah
61
        sub     ecx, 2
60
        sub     ecx, 2
62
        cmp     ecx, 3
61
        cmp     ecx, 3
63
        ja      b6
62
        ja      b6
64
        mcall 24,5
63
        mcall 24,5
65
        jmp     red
64
        jmp     red
66
  b6:
65
  b6:
67
; êíîïêè 6,7,8,9 - eject tray CD0/CD1/CD2/CD3
66
; êíîïêè 6,7,8,9 - eject tray CD0/CD1/CD2/CD3
68
        sub     ecx, 4
67
        sub     ecx, 4
69
        cmp     ecx, 3
68
        cmp     ecx, 3
70
        ja      b1
69
        ja      b1
71
        mcall 24,4
70
        mcall 24,4
72
        jmp     red
71
        jmp     red
73
  b1:
72
  b1:
74
    cmp   ah, 1     ; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1,
73
    cmp   ah, 1     ; åñëè ÍÅ íàæàòà êíîïêà ñ íîìåðîì 1,
75
    jne   still     ;  âåðíóòüñÿ
74
    jne   still     ;  âåðíóòüñÿ
76
 
75
 
77
  .exit:
76
  .exit:
78
    mcall -1	    ; èíà÷å êîíåö ïðîãðàììû
77
    mcall -1	    ; èíà÷å êîíåö ïðîãðàììû
79
 
78
 
80
 
79
 
81
 
80
 
82
;---------------------------------------------------------------------
81
;---------------------------------------------------------------------
83
;---  ÎÏÐÅÄÅËÅÍÈÅ È ÎÒÐÈÑÎÂÊÀ ÎÊÍÀ  ----------------------------------
82
;---  ÎÏÐÅÄÅËÅÍÈÅ È ÎÒÐÈÑÎÂÊÀ ÎÊÍÀ  ----------------------------------
84
;---------------------------------------------------------------------
83
;---------------------------------------------------------------------
85
 
84
 
86
draw_window:
85
draw_window:
87
    mcall 12, 1 	   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
86
    mcall 12, 1 	   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
88
		   ; 1 - íà÷èíàåì ðèñîâàòü
87
		   ; 1 - íà÷èíàåì ðèñîâàòü
89
		   ; ÑÎÇÄÀèÌ ÎÊÍÎ
88
		   ; ÑÎÇÄÀèÌ ÎÊÍÎ
90
 
89
 
91
    if lang eq it
90
    if lang eq it
92
			mcall 0, <100,250>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
91
			mcall 0, <100,250>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
93
	 else
92
	 else
94
			mcall 0, <100,230>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
93
			mcall 0, <100,230>, <100,110>, 0x03AABBCC, 0x805080D0, 0x005080D0
95
	 end if
94
	 end if
96
    mcall 71, 1 ,header
95
    mcall 71, 1 ,header
97
    mcall 8,<15,42>,<40,20>,2,0xaaaaaa
96
    mcall 8,<15,42>,<40,20>,2,0xaaaaaa
98
    call  draw_buttons
97
    call  draw_buttons
99
    mov   edx,6
98
    mov   edx,6
100
    add   ecx,30 shl 16
99
    add   ecx,30 shl 16
101
    mcall
100
    mcall
102
    call  draw_buttons
101
    call  draw_buttons
103
 
102
 
104
	 if lang eq it
103
	 if lang eq it
105
			mcall 4, <16,25>, 0x80ffffff,text1
104
			mcall 4, <16,25>, 0x80ffffff,text1
106
	 else
105
	 else
107
			mcall 4, <25,25>, 0x80ffffff,text1
106
			mcall 4, <25,25>, 0x80ffffff,text1
108
	 end if
107
	 end if
109
    mov   edx,text2
108
    mov   edx,text2
110
 
109
 
111
    add   ebx,3 shl 16+20
110
    add   ebx,3 shl 16+20
112
    mcall
111
    mcall
113
    mov   edx,text3
112
    mov   edx,text3
114
    add   ebx,30
113
    add   ebx,30
115
    sub   ebx,3 shl 16
114
    sub   ebx,3 shl 16
116
    mcall
115
    mcall
117
 
116
 
118
    mcall 12, 2 	   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
117
    mcall 12, 2 	   ; ôóíêöèÿ 12: ñîîáùèòü ÎÑ îá îòðèñîâêå îêíà
119
		   ; 2, çàêîí÷èëè ðèñîâàòü
118
		   ; 2, çàêîí÷èëè ðèñîâàòü
120
 
119
 
121
    ret 	       ; âûõîäèì èç ïðîöåäóðû
120
    ret 	       ; âûõîäèì èç ïðîöåäóðû
122
 
121
 
123
draw_buttons:
122
draw_buttons:
124
    pusha
123
    pusha
125
    if lang eq it
124
    if lang eq it
126
			add   ebx,60 shl 16
125
			add   ebx,60 shl 16
127
	 else
126
	 else
128
			add   ebx,50 shl 16
127
			add   ebx,50 shl 16
129
	 end if
128
	 end if
130
    inc   edx
129
    inc   edx
131
    mcall
130
    mcall
132
    if lang eq it
131
    if lang eq it
133
			add   ebx,60 shl 16
132
			add   ebx,60 shl 16
134
	 else
133
	 else
135
			add   ebx,50 shl 16
134
			add   ebx,50 shl 16
136
	 end if
135
	 end if
137
    inc   edx
136
    inc   edx
138
    mcall
137
    mcall
139
    if lang eq it
138
    if lang eq it
140
			add   ebx,60 shl 16
139
			add   ebx,60 shl 16
141
	 else
140
	 else
142
			add   ebx,50 shl 16
141
			add   ebx,50 shl 16
143
	 end if
142
	 end if
144
    inc   edx
143
    inc   edx
145
    mcall
144
    mcall
146
    popa
145
    popa
147
    ret
146
    ret
148
;---------------------------------------------------------------------
147
;---------------------------------------------------------------------
149
;---  ÄÀÍÍÛÅ ÏÐÎÃÐÀÌÌÛ  ----------------------------------------------
148
;---  ÄÀÍÍÛÅ ÏÐÎÃÐÀÌÌÛ  ----------------------------------------------
150
;---------------------------------------------------------------------
149
;---------------------------------------------------------------------
151
header db ' ATAPI Device Tray Control',0
150
header db ' ATAPI Device Tray Control',0
152
if lang eq it
151
if lang eq it
153
	text3 db 'espelli   espelli   espelli   espelli',0
152
	text3 db 'espelli   espelli   espelli   espelli',0
154
	text2 db 'carica    carica    carica    carica',0
153
	text2 db 'carica    carica    carica    carica',0
155
	text1 db '/cd0/     /cd1/     /cd2/     /cd3/',0
154
	text1 db '/cd0/     /cd1/     /cd2/     /cd3/',0
156
else
155
else
157
	text3 db 'eject   eject   eject   eject',0
156
	text3 db 'eject   eject   eject   eject',0
158
	text2 db 'load    load    load    load',0
157
	text2 db 'load    load    load    load',0
159
	text1 db '/cd0/   /cd1/   /cd2/   /cd3/',0
158
	text1 db '/cd0/   /cd1/   /cd2/   /cd3/',0
160
end if
159
end if
161
 
160
 
162
;---------------------------------------------------------------------
161
;---------------------------------------------------------------------
163
 
162
 
164
I_END:			 ; ìåòêà êîíöà ïðîãðàììû
163
I_END:			 ; ìåòêà êîíöà ïðîãðàììû