Rev 6196 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6196 | Rev 7786 | ||
---|---|---|---|
1 | include '../../../../proc32.inc' |
1 | include '../../../../proc32.inc' |
2 | 2 | ||
3 | struc system_colors |
3 | struc system_colors |
4 | { |
4 | { |
5 | .frame dd ? |
5 | .frame dd ? |
6 | .grab dd ? |
6 | .grab dd ? |
7 | .work_3d_dark dd ? |
7 | .work_dark dd ? |
8 | .work_3d_light dd ? |
8 | .work_light dd ? |
9 | .grab_text dd ? |
9 | .grab_text dd ? |
10 | .work dd ? |
10 | .work dd ? |
11 | .work_button dd ? |
11 | .work_button dd ? |
12 | .work_button_text dd ? |
12 | .work_button_text dd ? |
13 | .work_text dd ? |
13 | .work_text dd ? |
14 | .work_graph dd ? |
14 | .work_graph dd ? |
15 | } |
15 | } |
16 | 16 | ||
17 | use32 |
17 | use32 |
18 | 18 | ||
19 | db 'MENUET01' |
19 | db 'MENUET01' |
20 | dd 1 |
20 | dd 1 |
21 | dd start |
21 | dd start |
22 | dd i_end |
22 | dd i_end |
23 | dd mem |
23 | dd mem |
24 | dd mem |
24 | dd mem |
25 | dd 0 |
25 | dd 0 |
26 | dd 0 |
26 | dd 0 |
27 | 27 | ||
28 | include 'pixlib.inc' |
28 | include 'pixlib.inc' |
29 | 29 | ||
30 | align 4 |
30 | align 4 |
31 | start: |
31 | start: |
32 | call load_pxlib |
32 | call load_pxlib |
33 | test eax, eax |
33 | test eax, eax |
34 | jz .fail |
34 | jz .fail |
35 | 35 | ||
36 | sub esp, 1024 |
36 | sub esp, 1024 |
37 | 37 | ||
38 | mov eax, 9 |
38 | mov eax, 9 |
39 | mov ebx, esp |
39 | mov ebx, esp |
40 | mov ecx, -1 |
40 | mov ecx, -1 |
41 | int 0x40 |
41 | int 0x40 |
42 | 42 | ||
43 | movzx ecx, word [esp+0x1E] |
43 | movzx ecx, word [esp+0x1E] |
44 | mov eax, 18 |
44 | mov eax, 18 |
45 | mov ebx, 21 |
45 | mov ebx, 21 |
46 | int 0x40 |
46 | int 0x40 |
47 | 47 | ||
48 | mov [slot], eax |
48 | mov [slot], eax |
49 | 49 | ||
50 | add esp, 1024 |
50 | add esp, 1024 |
51 | 51 | ||
52 | mov eax,48 ; get system colors |
52 | mov eax,48 ; get system colors |
53 | mov ebx,3 |
53 | mov ebx,3 |
54 | mov ecx,sc |
54 | mov ecx,sc |
55 | mov edx,10*4 |
55 | mov edx,10*4 |
56 | int 0x40 |
56 | int 0x40 |
57 | .redraw: |
57 | .redraw: |
58 | call draw_window |
58 | call draw_window |
59 | 59 | ||
60 | .wait_event: |
60 | .wait_event: |
61 | 61 | ||
62 | mov eax, 18 |
62 | mov eax, 18 |
63 | mov ebx, 7 |
63 | mov ebx, 7 |
64 | int 0x40 |
64 | int 0x40 |
65 | cmp eax, [slot] |
65 | cmp eax, [slot] |
66 | jne .skip_draw |
66 | jne .skip_draw |
67 | 67 | ||
68 | sub esp, 1024 |
68 | sub esp, 1024 |
69 | 69 | ||
70 | mov eax, 9 |
70 | mov eax, 9 |
71 | mov ebx, esp |
71 | mov ebx, esp |
72 | mov ecx, -1 |
72 | mov ecx, -1 |
73 | int 0x40 |
73 | int 0x40 |
74 | 74 | ||
75 | mov edx, [esp+0x22]; xwin |
75 | mov edx, [esp+0x22]; xwin |
76 | mov ecx, [esp+0x26]; ywin |
76 | mov ecx, [esp+0x26]; ywin |
77 | add edx, [esp+0x36] |
77 | add edx, [esp+0x36] |
78 | add ecx, [esp+0x3A] |
78 | add ecx, [esp+0x3A] |
79 | 79 | ||
80 | mov eax, [esp+0x3E] |
80 | mov eax, [esp+0x3E] |
81 | mov ebx, [esp+0x42] |
81 | mov ebx, [esp+0x42] |
82 | 82 | ||
83 | add esp, 1024 |
83 | add esp, 1024 |
84 | 84 | ||
85 | test eax, eax |
85 | test eax, eax |
86 | jle .skip_draw |
86 | jle .skip_draw |
87 | test ebx, ebx |
87 | test ebx, ebx |
88 | jle .skip_draw |
88 | jle .skip_draw |
89 | 89 | ||
90 | push ebx |
90 | push ebx |
91 | push eax |
91 | push eax |
92 | push ecx |
92 | push ecx |
93 | push edx |
93 | push edx |
94 | call _Draw |
94 | call _Draw |
95 | add esp, 16 |
95 | add esp, 16 |
96 | 96 | ||
97 | .skip_draw: |
97 | .skip_draw: |
98 | 98 | ||
99 | ; mov ebx, 1 |
99 | ; mov ebx, 1 |
100 | ; mov eax, 23 |
100 | ; mov eax, 23 |
101 | ; int 0x40 |
101 | ; int 0x40 |
102 | 102 | ||
103 | mov eax, 11 |
103 | mov eax, 11 |
104 | int 0x40 |
104 | int 0x40 |
105 | 105 | ||
106 | dec eax ; if event = 1 |
106 | dec eax ; if event = 1 |
107 | js .wait_event |
107 | js .wait_event |
108 | 108 | ||
109 | jz .redraw ; jump to redraw handler |
109 | jz .redraw ; jump to redraw handler |
110 | dec eax ; else if event = 2 |
110 | dec eax ; else if event = 2 |
111 | jz .key ; jump to key handler |
111 | jz .key ; jump to key handler |
112 | dec eax |
112 | dec eax |
113 | jz .button |
113 | jz .button |
114 | 114 | ||
115 | jmp .wait_event |
115 | jmp .wait_event |
116 | 116 | ||
117 | .button: ; button event handler |
117 | .button: ; button event handler |
118 | mov al, 17 ; get button identifier |
118 | mov al, 17 ; get button identifier |
119 | int 0x40 |
119 | int 0x40 |
120 | 120 | ||
121 | cmp ah, 1 |
121 | cmp ah, 1 |
122 | jne .wait_event ; return if button id != 1 |
122 | jne .wait_event ; return if button id != 1 |
123 | .exit: |
123 | .exit: |
124 | ; restore old screen and cleanup |
124 | ; restore old screen and cleanup |
125 | .fail: |
125 | .fail: |
126 | or eax, -1 ; exit application |
126 | or eax, -1 ; exit application |
127 | int 0x40 |
127 | int 0x40 |
128 | .key: ; key event handler |
128 | .key: ; key event handler |
129 | mov al, 2 ; get key code |
129 | mov al, 2 ; get key code |
130 | int 0x40 |
130 | int 0x40 |
131 | 131 | ||
132 | jmp .wait_event |
132 | jmp .wait_event |
133 | 133 | ||
134 | draw_window: |
134 | draw_window: |
135 | mov eax, 12 ; start drawing |
135 | mov eax, 12 ; start drawing |
136 | mov ebx, 1 |
136 | mov ebx, 1 |
137 | int 0x40 |
137 | int 0x40 |
138 | 138 | ||
139 | xor eax, eax ; create and draw the window |
139 | xor eax, eax ; create and draw the window |
140 | mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx) |
140 | mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx) |
141 | mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy) |
141 | mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy) |
142 | mov edx, [sc.work] ; work area color |
142 | mov edx, [sc.work] ; work area color |
143 | or edx, 0x33000000 ; & window type 3 |
143 | or edx, 0x33000000 ; & window type 3 |
144 | mov edi, title ; window title |
144 | mov edi, title ; window title |
145 | int 0x40 |
145 | int 0x40 |
146 | 146 | ||
147 | mov eax, 12 ; finish drawing |
147 | mov eax, 12 ; finish drawing |
148 | mov ebx, 2 |
148 | mov ebx, 2 |
149 | int 0x40 |
149 | int 0x40 |
150 | 150 | ||
151 | ret |
151 | ret |
152 | 152 | ||
153 | DWORD equ dword |
153 | DWORD equ dword |
154 | PTR equ |
154 | PTR equ |
155 | 155 | ||
156 | _Draw: |
156 | _Draw: |
157 | push ebp |
157 | push ebp |
158 | xor edx, edx |
158 | xor edx, edx |
159 | push edi |
159 | push edi |
160 | push esi |
160 | push esi |
161 | push ebx |
161 | push ebx |
162 | sub esp, 44 |
162 | sub esp, 44 |
163 | imul eax, DWORD PTR [_glSeed], 69069 |
163 | imul eax, DWORD PTR [_glSeed], 69069 |
164 | mov ebp, DWORD PTR [esp+72] |
164 | mov ebp, DWORD PTR [esp+72] |
165 | mov ecx, DWORD PTR [esp+76] |
165 | mov ecx, DWORD PTR [esp+76] |
166 | inc eax |
166 | inc eax |
167 | mov DWORD PTR [esp+32], eax |
167 | mov DWORD PTR [esp+32], eax |
168 | imul eax, eax, 69069 |
168 | imul eax, eax, 69069 |
169 | inc eax |
169 | inc eax |
170 | mov DWORD PTR [esp+36], eax |
170 | mov DWORD PTR [esp+36], eax |
171 | imul eax, eax, 69069 |
171 | imul eax, eax, 69069 |
172 | inc eax |
172 | inc eax |
173 | mov DWORD PTR [esp+40], eax |
173 | mov DWORD PTR [esp+40], eax |
174 | imul eax, eax, 69069 |
174 | imul eax, eax, 69069 |
175 | lea ebx, [eax+1] |
175 | lea ebx, [eax+1] |
176 | mov eax, ebx |
176 | mov eax, ebx |
177 | div ebp |
177 | div ebp |
178 | imul eax, ebx, 69069 |
178 | imul eax, ebx, 69069 |
179 | lea ebx, [eax+1] |
179 | lea ebx, [eax+1] |
180 | mov eax, ebx |
180 | mov eax, ebx |
181 | mov edi, edx |
181 | mov edi, edx |
182 | xor edx, edx |
182 | xor edx, edx |
183 | div ecx |
183 | div ecx |
184 | imul eax, ebx, 69069 |
184 | imul eax, ebx, 69069 |
185 | lea ebx, [eax+1] |
185 | lea ebx, [eax+1] |
186 | mov eax, ebx |
186 | mov eax, ebx |
187 | mov esi, edx |
187 | mov esi, edx |
188 | xor edx, edx |
188 | xor edx, edx |
189 | div ebp |
189 | div ebp |
190 | imul eax, ebx, 69069 |
190 | imul eax, ebx, 69069 |
191 | inc eax |
191 | inc eax |
192 | mov DWORD PTR [_glSeed], eax |
192 | mov DWORD PTR [_glSeed], eax |
193 | mov ebp, edx |
193 | mov ebp, edx |
194 | mov DWORD PTR [esp+28], edx |
194 | mov DWORD PTR [esp+28], edx |
195 | xor edx, edx |
195 | xor edx, edx |
196 | div ecx |
196 | div ecx |
197 | cmp ebp, edi |
197 | cmp ebp, edi |
198 | mov ebx, edx |
198 | mov ebx, edx |
199 | jge L2 |
199 | jge L2 |
200 | mov DWORD PTR [esp+28], edi |
200 | mov DWORD PTR [esp+28], edi |
201 | mov edi, ebp |
201 | mov edi, ebp |
202 | L2: |
202 | L2: |
203 | cmp ebx, esi |
203 | cmp ebx, esi |
204 | jge L4 |
204 | jge L4 |
205 | mov ebx, esi |
205 | mov ebx, esi |
206 | mov esi, edx |
206 | mov esi, edx |
207 | L4: |
207 | L4: |
208 | push eax |
208 | push eax |
209 | mov ecx, 255 |
209 | mov ecx, 255 |
210 | push -16777216 |
210 | push -16777216 |
211 | mov eax, DWORD PTR [esp+40] |
211 | mov eax, DWORD PTR [esp+40] |
212 | xor edx, edx |
212 | xor edx, edx |
213 | div ecx |
213 | div ecx |
214 | mov eax, DWORD PTR [esp+48] |
214 | mov eax, DWORD PTR [esp+48] |
215 | mov ebp, edx |
215 | mov ebp, edx |
216 | xor edx, edx |
216 | xor edx, edx |
217 | div ecx |
217 | div ecx |
218 | mov eax, DWORD PTR [esp+44] |
218 | mov eax, DWORD PTR [esp+44] |
219 | sal ebp, 16 |
219 | sal ebp, 16 |
220 | or ebp, -16777216 |
220 | or ebp, -16777216 |
221 | mov DWORD PTR [esp+8], edx |
221 | mov DWORD PTR [esp+8], edx |
222 | or ebp, edx |
222 | or ebp, edx |
223 | xor edx, edx |
223 | xor edx, edx |
224 | div ecx |
224 | div ecx |
225 | lea eax, [ebx+1] |
225 | lea eax, [ebx+1] |
226 | sub eax, esi |
226 | sub eax, esi |
227 | sal edx, 8 |
227 | sal edx, 8 |
228 | or ebp, edx |
228 | or ebp, edx |
229 | push ebp |
229 | push ebp |
230 | push eax |
230 | push eax |
231 | mov eax, DWORD PTR [esp+44] |
231 | mov eax, DWORD PTR [esp+44] |
232 | inc eax |
232 | inc eax |
233 | sub eax, edi |
233 | sub eax, edi |
234 | push eax |
234 | push eax |
235 | mov eax, esi |
235 | mov eax, esi |
236 | add eax, DWORD PTR [esp+88] |
236 | add eax, DWORD PTR [esp+88] |
237 | push eax |
237 | push eax |
238 | mov eax, edi |
238 | mov eax, edi |
239 | add eax, DWORD PTR [esp+88] |
239 | add eax, DWORD PTR [esp+88] |
240 | push eax |
240 | push eax |
241 | push -1 |
241 | push -1 |
242 | call [imp_DrawRect] |
242 | call [imp_DrawRect] |
243 | add esp, 76 |
243 | add esp, 76 |
244 | pop ebx |
244 | pop ebx |
245 | pop esi |
245 | pop esi |
246 | pop edi |
246 | pop edi |
247 | pop ebp |
247 | pop ebp |
248 | ret |
248 | ret |
249 | align 4 |
249 | align 4 |
250 | 250 | ||
251 | count dd 0 |
251 | count dd 0 |
252 | _glSeed dd -365387184 |
252 | _glSeed dd -365387184 |
253 | 253 | ||
254 | title db 'Draw rect demo',0 |
254 | title db 'Draw rect demo',0 |
255 | 255 | ||
256 | i_end: |
256 | i_end: |
257 | 257 | ||
258 | align 4 |
258 | align 4 |
259 | 259 | ||
260 | slot rd 1 |
260 | slot rd 1 |
261 | 261 | ||
262 | sc system_colors |
262 | sc system_colors |
263 | 263 | ||
264 | align 16 |
264 | align 16 |
265 | 265 | ||
266 | 266 | ||
267 | rb 2048 ;stack |
267 | rb 2048 ;stack |
268 | mem: |
268 | mem: |