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 | 57 | ||
58 | CreateHatch HS_CROSS, 0xFFFFFFFF, 0xFF000000 |
58 | CreateHatch HS_CROSS, 0xFFFFFFFF, 0xFF000000 |
59 | mov [br_cross], eax |
59 | mov [br_cross], eax |
60 | 60 | ||
61 | CreateHatch HS_DIAGCROSS, 0xFFFFFFFF, 0xFF000000 |
61 | CreateHatch HS_DIAGCROSS, 0xFFFFFFFF, 0xFF000000 |
62 | mov [br_dcross], eax |
62 | mov [br_dcross], eax |
63 | 63 | ||
64 | CreateHatch HS_HORIZONTAL, 0xFFFFFFFF, 0xFF000000 |
64 | CreateHatch HS_HORIZONTAL, 0xFFFFFFFF, 0xFF000000 |
65 | mov [br_horz], eax |
65 | mov [br_horz], eax |
66 | 66 | ||
67 | CreateHatch HS_VERTICAL, 0xFFFFFFFF, 0xFF000000 |
67 | CreateHatch HS_VERTICAL, 0xFFFFFFFF, 0xFF000000 |
68 | mov [br_vert], eax |
68 | mov [br_vert], eax |
69 | 69 | ||
70 | CreateHatch HS_FDIAGONAL, 0xFFFFFFFF, 0xFF000000 |
70 | CreateHatch HS_FDIAGONAL, 0xFFFFFFFF, 0xFF000000 |
71 | mov [br_fd], eax |
71 | mov [br_fd], eax |
72 | 72 | ||
73 | CreateHatch HS_BDIAGONAL, 0xFFFFFFFF, 0xFF000000 |
73 | CreateHatch HS_BDIAGONAL, 0xFFFFFFFF, 0xFF000000 |
74 | mov [br_bd], eax |
74 | mov [br_bd], eax |
75 | 75 | ||
76 | .redraw: |
76 | .redraw: |
77 | call draw_window |
77 | call draw_window |
78 | 78 | ||
79 | .wait_event: |
79 | .wait_event: |
80 | 80 | ||
81 | mov eax, 18 |
81 | mov eax, 18 |
82 | mov ebx, 7 |
82 | mov ebx, 7 |
83 | int 0x40 |
83 | int 0x40 |
84 | cmp eax, [slot] |
84 | cmp eax, [slot] |
85 | jne .skip_draw |
85 | jne .skip_draw |
86 | 86 | ||
87 | sub esp, 1024 |
87 | sub esp, 1024 |
88 | 88 | ||
89 | mov eax, 9 |
89 | mov eax, 9 |
90 | mov ebx, esp |
90 | mov ebx, esp |
91 | mov ecx, -1 |
91 | mov ecx, -1 |
92 | int 0x40 |
92 | int 0x40 |
93 | 93 | ||
94 | mov edx, [esp+0x22]; xwin |
94 | mov edx, [esp+0x22]; xwin |
95 | mov ecx, [esp+0x26]; ywin |
95 | mov ecx, [esp+0x26]; ywin |
96 | add edx, [esp+0x36] |
96 | add edx, [esp+0x36] |
97 | add ecx, [esp+0x3A] |
97 | add ecx, [esp+0x3A] |
98 | 98 | ||
99 | mov eax, [esp+0x3E] ;width |
99 | mov eax, [esp+0x3E] ;width |
100 | mov ebx, [esp+0x42] ;height |
100 | mov ebx, [esp+0x42] ;height |
101 | 101 | ||
102 | add esp, 1024 |
102 | add esp, 1024 |
103 | 103 | ||
104 | cmp eax, 50 |
104 | cmp eax, 50 |
105 | jle .skip_draw |
105 | jle .skip_draw |
106 | 106 | ||
107 | cmp ebx, 40 |
107 | cmp ebx, 40 |
108 | jle .skip_draw |
108 | jle .skip_draw |
109 | 109 | ||
110 | push ebx |
110 | push ebx |
111 | push eax |
111 | push eax |
112 | push ecx |
112 | push ecx |
113 | push edx |
113 | push edx |
114 | call _Draw |
114 | call _Draw |
115 | add esp, 16 |
115 | add esp, 16 |
116 | 116 | ||
117 | .skip_draw: |
117 | .skip_draw: |
118 | 118 | ||
119 | mov ebx, 1000 |
119 | mov ebx, 1000 |
120 | mov eax, 23 |
120 | mov eax, 23 |
121 | int 0x40 |
121 | int 0x40 |
122 | 122 | ||
123 | ; mov eax, 11 |
123 | ; mov eax, 11 |
124 | ; int 0x40 |
124 | ; int 0x40 |
125 | 125 | ||
126 | dec eax ; if event = 1 |
126 | dec eax ; if event = 1 |
127 | ; js .wait_event |
127 | ; js .wait_event |
128 | 128 | ||
129 | jz .redraw ; jump to redraw handler |
129 | jz .redraw ; jump to redraw handler |
130 | dec eax ; else if event = 2 |
130 | dec eax ; else if event = 2 |
131 | jz .key ; jump to key handler |
131 | jz .key ; jump to key handler |
132 | dec eax |
132 | dec eax |
133 | jz .button |
133 | jz .button |
134 | 134 | ||
135 | jmp .wait_event |
135 | jmp .wait_event |
136 | 136 | ||
137 | .button: ; button event handler |
137 | .button: ; button event handler |
138 | mov al, 17 ; get button identifier |
138 | mov al, 17 ; get button identifier |
139 | int 0x40 |
139 | int 0x40 |
140 | 140 | ||
141 | cmp ah, 1 |
141 | cmp ah, 1 |
142 | jne .wait_event ; return if button id != 1 |
142 | jne .wait_event ; return if button id != 1 |
143 | .exit: |
143 | .exit: |
144 | ; restore old screen and cleanup |
144 | ; restore old screen and cleanup |
145 | .fail: |
145 | .fail: |
146 | or eax, -1 ; exit application |
146 | or eax, -1 ; exit application |
147 | int 0x40 |
147 | int 0x40 |
148 | .key: ; key event handler |
148 | .key: ; key event handler |
149 | mov al, 2 ; get key code |
149 | mov al, 2 ; get key code |
150 | int 0x40 |
150 | int 0x40 |
151 | 151 | ||
152 | jmp .wait_event |
152 | jmp .wait_event |
153 | 153 | ||
154 | draw_window: |
154 | draw_window: |
155 | mov eax, 12 ; start drawing |
155 | mov eax, 12 ; start drawing |
156 | mov ebx, 1 |
156 | mov ebx, 1 |
157 | int 0x40 |
157 | int 0x40 |
158 | 158 | ||
159 | xor eax, eax ; create and draw the window |
159 | xor eax, eax ; create and draw the window |
160 | mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx) |
160 | mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx) |
161 | mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy) |
161 | mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy) |
162 | mov edx, [sc.work] ; work area color |
162 | mov edx, [sc.work] ; work area color |
163 | or edx, 0x33000000 ; & window type 3 |
163 | or edx, 0x33000000 ; & window type 3 |
164 | mov edi, title ; window title |
164 | mov edi, title ; window title |
165 | int 0x40 |
165 | int 0x40 |
166 | 166 | ||
167 | mov eax, 12 ; finish drawing |
167 | mov eax, 12 ; finish drawing |
168 | mov ebx, 2 |
168 | mov ebx, 2 |
169 | int 0x40 |
169 | int 0x40 |
170 | 170 | ||
171 | ret |
171 | ret |
172 | 172 | ||
173 | DWORD equ dword |
173 | DWORD equ dword |
174 | PTR equ |
174 | PTR equ |
175 | 175 | ||
176 | _Draw: |
176 | _Draw: |
177 | push ebp |
177 | push ebp |
178 | push edi |
178 | push edi |
179 | push esi |
179 | push esi |
180 | push ebx |
180 | push ebx |
181 | mov ebx, 1431655766 |
181 | mov ebx, 1431655766 |
182 | sub esp, 44 |
182 | sub esp, 44 |
183 | mov esi, DWORD PTR [esp+72] |
183 | mov esi, DWORD PTR [esp+72] |
184 | mov ecx, DWORD PTR [esp+76] |
184 | mov ecx, DWORD PTR [esp+76] |
185 | mov DWORD PTR [esp+24], -16777216 |
185 | mov DWORD PTR [esp+24], -16777216 |
186 | mov DWORD PTR [esp], -1 |
186 | mov DWORD PTR [esp], -1 |
187 | lea edi, [esi-40] |
187 | lea edi, [esi-40] |
188 | mov eax, edi |
188 | mov eax, edi |
189 | imul ebx |
189 | imul ebx |
190 | sar edi, 31 |
190 | sar edi, 31 |
191 | lea eax, [ecx-30] |
191 | lea eax, [ecx-30] |
192 | sub ecx, 10 |
192 | sub ecx, 10 |
193 | mov ebp, edx |
193 | mov ebp, edx |
194 | sub ebp, edi |
194 | sub ebp, edi |
195 | mov edi, eax |
195 | mov edi, eax |
196 | shr edi, 31 |
196 | shr edi, 31 |
197 | add edi, eax |
197 | add edi, eax |
198 | lea edx, [esi-20] |
198 | lea edx, [esi-20] |
199 | lea eax, [ebp+ebp*2] |
199 | lea eax, [ebp+ebp*2] |
200 | sub edx, eax |
200 | sub edx, eax |
201 | mov esi, edx |
201 | mov esi, edx |
202 | shr esi, 31 |
202 | shr esi, 31 |
203 | add esi, edx |
203 | add esi, edx |
204 | sar esi, 1 |
204 | sar esi, 1 |
205 | add esi, DWORD PTR [esp+64] |
205 | add esi, DWORD PTR [esp+64] |
206 | sar edi, 1 |
206 | sar edi, 1 |
207 | lea eax, [ebp+10+esi] |
207 | lea eax, [ebp+10+esi] |
208 | mov DWORD PTR [esp+32], eax |
208 | mov DWORD PTR [esp+32], eax |
209 | lea eax, [edi+edi] |
209 | lea eax, [edi+edi] |
210 | sub ecx, eax |
210 | sub ecx, eax |
211 | mov ebx, ecx |
211 | mov ebx, ecx |
212 | shr ebx, 31 |
212 | shr ebx, 31 |
213 | add ebx, ecx |
213 | add ebx, ecx |
214 | sar ebx, 1 |
214 | sar ebx, 1 |
215 | add ebx, DWORD PTR [esp+68] |
215 | add ebx, DWORD PTR [esp+68] |
216 | lea edx, [esi+20+ebp*2] |
216 | lea edx, [esi+20+ebp*2] |
217 | mov DWORD PTR [esp+36], edx |
217 | mov DWORD PTR [esp+36], edx |
218 | lea eax, [ebx+10+edi] |
218 | lea eax, [ebx+10+edi] |
219 | mov DWORD PTR [esp+40], eax |
219 | mov DWORD PTR [esp+40], eax |
220 | 220 | ||
221 | FillRect -1, esi, ebx,ebp, edi, [br_fd], 0xFF000000 |
221 | FillRect -1, esi, ebx,ebp, edi, [br_fd], 0xFF000000 |
222 | 222 | ||
223 | mov edx, DWORD PTR [esp+32] |
223 | mov edx, DWORD PTR [esp+32] |
224 | FillRect -1, edx, ebx, ebp, edi, [br_cross], 0xFF000000 |
224 | FillRect -1, edx, ebx, ebp, edi, [br_cross], 0xFF000000 |
225 | 225 | ||
226 | mov eax, DWORD PTR [esp+36] |
226 | mov eax, DWORD PTR [esp+36] |
227 | FillRect -1, eax, ebx, ebp, edi, [br_horz],0xFF000000 |
227 | FillRect -1, eax, ebx, ebp, edi, [br_horz],0xFF000000 |
228 | 228 | ||
229 | mov edx, DWORD PTR [esp+40] |
229 | mov edx, DWORD PTR [esp+40] |
230 | FillRect -1, esi, edx, ebp, edi, [br_bd], 0xFF000000 |
230 | FillRect -1, esi, edx, ebp, edi, [br_bd], 0xFF000000 |
231 | 231 | ||
232 | mov edx, DWORD PTR [esp+32] |
232 | mov edx, DWORD PTR [esp+32] |
233 | mov eax, DWORD PTR [esp+40] |
233 | mov eax, DWORD PTR [esp+40] |
234 | FillRect -1, edx, eax, ebp, edi, [br_dcross], 0xFF000000 |
234 | FillRect -1, edx, eax, ebp, edi, [br_dcross], 0xFF000000 |
235 | 235 | ||
236 | mov edx, DWORD PTR [esp+36] |
236 | mov edx, DWORD PTR [esp+36] |
237 | mov eax, DWORD PTR [esp+40] |
237 | mov eax, DWORD PTR [esp+40] |
238 | FillRect -1, edx, eax, ebp, edi, [br_vert], 0xFF000000 |
238 | FillRect -1, edx, eax, ebp, edi, [br_vert], 0xFF000000 |
239 | 239 | ||
240 | call [imp_FillRect] |
240 | call [imp_FillRect] |
241 | 241 | ||
242 | 242 | ||
243 | add esp, 44 |
243 | add esp, 44 |
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 | 249 | ||
250 | align 4 |
250 | align 4 |
251 | 251 | ||
252 | 252 | ||
253 | count dd 0 |
253 | count dd 0 |
254 | 254 | ||
255 | title db 'Hatches',0 |
255 | title db 'Hatches',0 |
256 | 256 | ||
257 | i_end: |
257 | i_end: |
258 | 258 | ||
259 | align 4 |
259 | align 4 |
260 | 260 | ||
261 | slot rd 1 |
261 | slot rd 1 |
262 | 262 | ||
263 | br_fd rd 1 |
263 | br_fd rd 1 |
264 | br_bd rd 1 |
264 | br_bd rd 1 |
265 | br_cross rd 1 |
265 | br_cross rd 1 |
266 | br_dcross rd 1 |
266 | br_dcross rd 1 |
267 | br_horz rd 1 |
267 | br_horz rd 1 |
268 | br_vert rd 1 |
268 | br_vert rd 1 |
269 | 269 | ||
270 | sc system_colors |
270 | sc system_colors |
271 | 271 | ||
272 | align 16 |
272 | align 16 |
273 | 273 | ||
274 | 274 | ||
275 | rb 2048 ;stack |
275 | rb 2048 ;stack |
276 | mem: |
276 | mem: |