Rev 379 | Rev 381 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 379 | Rev 380 | ||
---|---|---|---|
Line 114... | Line 114... | ||
114 | rep movsd |
114 | rep movsd |
115 | @@: |
115 | @@: |
116 | mov ecx, [CURRENT_TASK] |
116 | mov ecx, [CURRENT_TASK] |
117 | shl ecx,8 |
117 | shl ecx,8 |
118 | add ecx, PROC_BASE+APP_OBJ_OFFSET |
118 | add ecx, SLOT_BASE+APP_OBJ_OFFSET |
119 | 119 | ||
Line 120... | Line 120... | ||
120 | pushfd |
120 | pushfd |
121 | cli |
121 | cli |
122 | mov edx, [ecx+APPOBJ.fd] |
122 | mov edx, [ecx+APPOBJ.fd] |
123 | mov [eax+APPOBJ.fd], edx |
123 | mov [eax+APPOBJ.fd], edx |
Line 171... | Line 171... | ||
171 | test eax, eax |
171 | test eax, eax |
172 | jz .fail |
172 | jz .fail |
173 | 173 | ||
Line 174... | Line 174... | ||
174 | shl eax, 8 |
174 | shl eax, 8 |
175 | cmp [PROC_BASE+eax+APPDATA.ev_count], 32 |
175 | cmp [SLOT_BASE+eax+APPDATA.ev_count], 32 |
176 | ja .fail |
176 | ja .fail |
Line 177... | Line 177... | ||
177 | 177 | ||
Line 178... | Line 178... | ||
178 | mov [slot], eax |
178 | mov [slot], eax |
Line 187... | Line 187... | ||
187 | cld |
187 | cld |
188 | rep movsd |
188 | rep movsd |
189 | 189 | ||
Line 190... | Line 190... | ||
190 | mov ecx, [slot] |
190 | mov ecx, [slot] |
191 | add ecx, PROC_BASE+APP_EV_OFFSET |
191 | add ecx, SLOT_BASE+APP_EV_OFFSET |
Line 192... | Line 192... | ||
192 | 192 | ||
193 | mov [eax+APPOBJ.magic], 'EVNT' |
193 | mov [eax+APPOBJ.magic], 'EVNT' |
194 | mov [eax+APPOBJ.destroy], destroy_event |
194 | mov [eax+APPOBJ.destroy], destroy_event |
195 | mov ebx, [pid] |
195 | mov ebx, [pid] |
Line 217... | Line 217... | ||
217 | 217 | ||
Line 218... | Line 218... | ||
218 | .wait: |
218 | .wait: |
219 | mov edx,[CURRENT_TASK] |
219 | mov edx,[CURRENT_TASK] |
220 | shl edx,8 |
220 | shl edx,8 |
221 | ; cmp [PROC_BASE+edx+APPDATA.ev_count], 0 |
221 | ; cmp [SLOT_BASE+edx+APPDATA.ev_count], 0 |
222 | ; je .switch |
222 | ; je .switch |
Line 223... | Line 223... | ||
223 | 223 | ||
Line 224... | Line 224... | ||
224 | add edx, PROC_BASE+APP_EV_OFFSET |
224 | add edx, SLOT_BASE+APP_EV_OFFSET |
225 | 225 | ||
226 | mov eax, [edx+APPOBJ.fd] |
226 | mov eax, [edx+APPOBJ.fd] |
Line 300... | Line 300... | ||
300 | jnz .done |
300 | jnz .done |
301 | 301 | ||
Line 302... | Line 302... | ||
302 | mov edx,[CURRENT_TASK] |
302 | mov edx,[CURRENT_TASK] |
303 | shl edx,8 |
303 | shl edx,8 |
304 | add edx, PROC_BASE |
304 | add edx, SLOT_BASE |
Line 305... | Line 305... | ||
305 | 305 | ||
306 | pushfd |
306 | pushfd |
307 | cli ;remove event from events |
307 | cli ;remove event from events |
308 | mov ebx, [eax+APPOBJ.fd] ;list (reset event) |
308 | mov ebx, [eax+APPOBJ.fd] ;list (reset event) |
Line 385... | Line 385... | ||
385 | test [edx+EVENT.state], EVENT_WATCHED |
385 | test [edx+EVENT.state], EVENT_WATCHED |
386 | jz .done |
386 | jz .done |
387 | @@: |
387 | @@: |
388 | shl eax, 8 |
388 | shl eax, 8 |
389 | add eax, PROC_BASE+APP_EV_OFFSET |
389 | add eax, SLOT_BASE+APP_EV_OFFSET |
390 | 390 | ||
Line 391... | Line 391... | ||
391 | pushfd |
391 | pushfd |
392 | cli |
392 | cli |
393 | mov ebx, [edx+APPOBJ.fd] |
393 | mov ebx, [edx+APPOBJ.fd] |
394 | mov ecx, [edx+APPOBJ.bk] |
394 | mov ecx, [edx+APPOBJ.bk] |
Line 429... | Line 429... | ||
429 | test eax, eax |
429 | test eax, eax |
430 | jz .fail |
430 | jz .fail |
431 | 431 | ||
Line 432... | Line 432... | ||
432 | shl eax, 8 |
432 | shl eax, 8 |
433 | add eax, PROC_BASE+APP_EV_OFFSET |
433 | add eax, SLOT_BASE+APP_EV_OFFSET |
434 | mov edx, [.event] |
434 | mov edx, [.event] |
435 | pushfd |
435 | pushfd |
436 | cli ;remove event from events |
436 | cli ;remove event from events |
437 | mov ebx, [edx+APPOBJ.fd] ;list (reset event) |
437 | mov ebx, [edx+APPOBJ.fd] ;list (reset event) |
438 | mov ecx, [edx+APPOBJ.bk] ;and clear events flag |
438 | mov ecx, [edx+APPOBJ.bk] ;and clear events flag |
Line 524... | Line 524... | ||
524 | ;mov edi,[TASK_BASE] ; KEY IN BUFFER |
524 | ;mov edi,[TASK_BASE] ; KEY IN BUFFER |
525 | test [edi+TASKDATA.event_mask],dword 2 |
525 | test [edi+TASKDATA.event_mask],dword 2 |
526 | jz no_eventoccur2 |
526 | jz no_eventoccur2 |
527 | mov ecx, [CURRENT_TASK] |
527 | mov ecx, [CURRENT_TASK] |
528 | movzx edx,word [0xC000+ecx*2] |
528 | movzx edx,word [WIN_STACK+ecx*2] |
529 | mov eax, [TASK_COUNT] |
529 | mov eax, [TASK_COUNT] |
530 | cmp eax,edx |
530 | cmp eax,edx |
531 | jne no_eventoccur2x |
531 | jne no_eventoccur2x |
532 | cmp [0xf400],byte 0 |
532 | cmp [0xf400],byte 0 |
533 | je no_eventoccur2x |
533 | je no_eventoccur2x |
Line 550... | Line 550... | ||
550 | jz no_eventoccur3 |
550 | jz no_eventoccur3 |
551 | cmp [0xf500],byte 0 |
551 | cmp [0xf500],byte 0 |
552 | je no_eventoccur3 |
552 | je no_eventoccur3 |
553 | mov ecx, [CURRENT_TASK] |
553 | mov ecx, [CURRENT_TASK] |
554 | movzx edx, word [0xC000+ecx*2] |
554 | movzx edx, word [WIN_STACK+ecx*2] |
555 | mov eax, [TASK_COUNT] |
555 | mov eax, [TASK_COUNT] |
556 | cmp eax,edx |
556 | cmp eax,edx |
557 | jnz no_eventoccur3 |
557 | jnz no_eventoccur3 |
558 | popad |
558 | popad |
559 | mov eax,[0xf501] |
559 | mov eax,[0xf501] |
560 | cmp eax,65535 |
560 | cmp eax,65535 |
Line 575... | Line 575... | ||
575 | test [edi+TASKDATA.event_mask],dword 00100000b |
575 | test [edi+TASKDATA.event_mask],dword 00100000b |
576 | jz no_mouse_event |
576 | jz no_mouse_event |
577 | mov eax,[CURRENT_TASK] |
577 | mov eax,[CURRENT_TASK] |
578 | shl eax,8 |
578 | shl eax,8 |
579 | test [eax+0x80000+APPDATA.event_mask],dword 00100000b |
579 | test [eax+SLOT_BASE+APPDATA.event_mask],dword 00100000b |
580 | jz no_mouse_event |
580 | jz no_mouse_event |
581 | and [eax+0x80000+APPDATA.event_mask],dword 0xffffffff-00100000b |
581 | and [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-00100000b |
582 | popad |
582 | popad |
583 | mov eax,6 |
583 | mov eax,6 |
584 | ret |
584 | ret |
585 | no_mouse_event: |
585 | no_mouse_event: |
586 | 586 | ||
Line 599... | Line 599... | ||
599 | test [edi+TASKDATA.event_mask],dword 01000000b |
599 | test [edi+TASKDATA.event_mask],dword 01000000b |
600 | jz no_ipc |
600 | jz no_ipc |
601 | mov eax,[CURRENT_TASK] |
601 | mov eax,[CURRENT_TASK] |
602 | shl eax,8 |
602 | shl eax,8 |
603 | test [eax+0x80000+APPDATA.event_mask],dword 01000000b |
603 | test [eax+SLOT_BASE+APPDATA.event_mask],dword 01000000b |
604 | jz no_ipc |
604 | jz no_ipc |
605 | and [eax+0x80000+APPDATA.event_mask],dword 0xffffffff-01000000b |
605 | and [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-01000000b |
606 | popad |
606 | popad |
607 | mov eax,7 |
607 | mov eax,7 |
608 | ret |
608 | ret |
609 | no_ipc: |
609 | no_ipc: |
610 | 610 | ||
Line 613... | Line 613... | ||
613 | test [edi+TASKDATA.event_mask],dword 10000000b |
613 | test [edi+TASKDATA.event_mask],dword 10000000b |
614 | jz no_stack_event |
614 | jz no_stack_event |
615 | mov eax,[CURRENT_TASK] |
615 | mov eax,[CURRENT_TASK] |
616 | shl eax,8 |
616 | shl eax,8 |
617 | test [eax+0x80000+APPDATA.event_mask],dword 10000000b |
617 | test [eax+SLOT_BASE+APPDATA.event_mask],dword 10000000b |
618 | jz no_stack_event |
618 | jz no_stack_event |
619 | and [eax+0x80000+APPDATA.event_mask],dword 0xffffffff-10000000b |
619 | and [eax+SLOT_BASE+APPDATA.event_mask],dword 0xffffffff-10000000b |
620 | popad |
620 | popad |
621 | mov eax,8 |
621 | mov eax,8 |
622 | ret |
622 | ret |
623 | no_stack_event: |
623 | no_stack_event: |
624 | 624 | ||
Line 625... | Line 625... | ||
625 | test byte [edi+TASKDATA.event_mask+1], 1 ; DEBUG |
625 | test byte [edi+TASKDATA.event_mask+1], 1 ; DEBUG |
626 | jz .test_IRQ |
626 | jz .test_IRQ |
627 | mov eax, [CURRENT_TASK] |
627 | mov eax, [CURRENT_TASK] |
628 | shl eax, 8 |
628 | shl eax, 8 |
629 | test byte [eax+0x80000+APPDATA.event_mask+1], byte 1 |
629 | test byte [eax+SLOT_BASE+APPDATA.event_mask+1], byte 1 |
630 | jz .test_IRQ |
630 | jz .test_IRQ |
631 | and byte [eax+0x80000+APPDATA.event_mask+1], not 1 |
631 | and byte [eax+SLOT_BASE+APPDATA.event_mask+1], not 1 |
632 | popad |
632 | popad |
633 | mov eax, 9 |
633 | mov eax, 9 |
634 | ret |
634 | ret |
Line 635... | Line 635... | ||
635 | 635 | ||
636 | ;.test_ext: |
636 | ;.test_ext: |
637 | ; mov eax, [CURRENT_TASK] |
637 | ; mov eax, [CURRENT_TASK] |
638 | ; shl eax, 8 |
638 | ; shl eax, 8 |
639 | ; test dword [eax+0x80000+APPDATA.event_mask], EVENT_EXTENDED |
639 | ; test dword [eax+SLOT_BASE+APPDATA.event_mask], EVENT_EXTENDED |
640 | ; jz .test_IRQ |
640 | ; jz .test_IRQ |
641 | ; popad |
641 | ; popad |
642 | ; mov eax, 10 |
642 | ; mov eax, 10 |