Rev 377 | Rev 380 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 377 | Rev 379 | ||
---|---|---|---|
Line 99... | Line 99... | ||
99 | mov [eax+EVENT.id], ebx |
99 | mov [eax+EVENT.id], ebx |
100 | 100 | ||
Line 101... | Line 101... | ||
101 | mov ebx, [CURRENT_TASK] |
101 | mov ebx, [CURRENT_TASK] |
102 | shl ebx, 5 |
102 | shl ebx, 5 |
103 | mov ebx, [0x3000+ebx+4] |
103 | mov ebx, [CURRENT_TASK+ebx+4] |
104 | mov [eax+APPOBJ.pid], ebx |
104 | mov [eax+APPOBJ.pid], ebx |
105 | mov edx, [.flags] |
105 | mov edx, [.flags] |
106 | mov [eax+EVENT.state], edx |
106 | mov [eax+EVENT.state], edx |
Line 107... | Line 107... | ||
107 | 107 | ||
Line 272... | Line 272... | ||
272 | .destroy: |
272 | .destroy: |
273 | call destroy_event.force |
273 | call destroy_event.force |
274 | ret |
274 | ret |
275 | .switch: |
275 | .switch: |
276 | mov eax, [0x3010] |
276 | mov eax, [TASK_BASE] |
277 | mov [eax+TASKDATA.state], byte 5 |
277 | mov [eax+TASKDATA.state], byte 5 |
278 | call change_task |
278 | call change_task |
279 | jmp .wait |
279 | jmp .wait |
280 | endp |
280 | endp |
Line 337... | Line 337... | ||
337 | add esp, 4 |
337 | add esp, 4 |
338 | ret |
338 | ret |
339 | .switch: |
339 | .switch: |
340 | or [eax+EVENT.state], EVENT_WATCHED |
340 | or [eax+EVENT.state], EVENT_WATCHED |
341 | mov eax, [0x3010] |
341 | mov eax, [TASK_BASE] |
342 | mov [eax+TASKDATA.state], byte 5 |
342 | mov [eax+TASKDATA.state], byte 5 |
343 | call change_task |
343 | call change_task |
344 | mov eax, [.event] |
344 | mov eax, [.event] |
345 | jmp .wait |
345 | jmp .wait |
346 | restore .event |
346 | restore .event |
347 | 347 | ||
Line 495... | Line 495... | ||
495 | test eax,eax |
495 | test eax,eax |
496 | jne eventoccur |
496 | jne eventoccur |
497 | newwait: |
497 | newwait: |
498 | 498 | ||
Line 499... | Line 499... | ||
499 | mov eax, [0x3010] |
499 | mov eax, [TASK_BASE] |
500 | mov [eax+TASKDATA.state], byte 5 |
500 | mov [eax+TASKDATA.state], byte 5 |
501 | call change_task |
501 | call change_task |
Line 502... | Line 502... | ||
502 | 502 | ||
Line 509... | Line 509... | ||
509 | get_event_for_app: |
509 | get_event_for_app: |
Line 510... | Line 510... | ||
510 | 510 | ||
Line 511... | Line 511... | ||
511 | pushad |
511 | pushad |
512 | 512 | ||
513 | mov edi,[0x3010] ; WINDOW REDRAW |
513 | mov edi,[TASK_BASE] ; WINDOW REDRAW |
514 | test [edi+TASKDATA.event_mask],dword 1 |
514 | test [edi+TASKDATA.event_mask],dword 1 |
515 | jz no_eventoccur1 |
515 | jz no_eventoccur1 |
516 | ;mov edi,[0x3010] |
516 | ;mov edi,[TASK_BASE] |
517 | cmp [edi-twdw+WDATA.fl_redraw],byte 0 |
517 | cmp [edi-twdw+WDATA.fl_redraw],byte 0 |
518 | je no_eventoccur1 |
518 | je no_eventoccur1 |
519 | popad |
519 | popad |
520 | mov eax,1 |
520 | mov eax,1 |
Line 521... | Line 521... | ||
521 | ret |
521 | ret |
522 | no_eventoccur1: |
522 | no_eventoccur1: |
523 | 523 | ||
524 | ;mov edi,[0x3010] ; 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, [0x3000] |
527 | mov ecx, [CURRENT_TASK] |
528 | movzx edx,word [0xC000+ecx*2] |
528 | movzx edx,word [0xC000+ecx*2] |
529 | mov eax, [0x3004] |
529 | mov eax, [TASK_COUNT] |
530 | cmp eax,edx |
530 | cmp eax,edx |
531 | jne no_eventoccur2x |
531 | jne no_eventoccur2x |
Line 544... | Line 544... | ||
544 | cmp eax, hotkey_buffer+120*8 |
544 | cmp eax, hotkey_buffer+120*8 |
545 | jb @b |
545 | jb @b |
546 | no_eventoccur2: |
546 | no_eventoccur2: |
547 | 547 | ||
Line 548... | Line 548... | ||
548 | ;mov edi,[0x3010] ; BUTTON IN BUFFER |
548 | ;mov edi,[TASK_BASE] ; BUTTON IN BUFFER |
549 | test [edi+TASKDATA.event_mask],dword 4 |
549 | test [edi+TASKDATA.event_mask],dword 4 |
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, [0x3000] |
553 | mov ecx, [CURRENT_TASK] |
554 | movzx edx, word [0xC000+ecx*2] |
554 | movzx edx, word [0xC000+ecx*2] |
555 | mov eax, [0x3004] |
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 570... | Line 570... | ||
570 | 570 | ||
Line 571... | Line 571... | ||
571 | no_eventoccur3: |
571 | no_eventoccur3: |
Line 572... | Line 572... | ||
572 | 572 | ||
573 | 573 | ||
574 | ;mov edi,[0x3010] ; mouse event |
574 | ;mov edi,[TASK_BASE] ; mouse event |
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,[0x3000] |
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+0x80000+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+0x80000+APPDATA.event_mask],dword 0xffffffff-00100000b |
582 | popad |
582 | popad |
583 | mov eax,6 |
583 | mov eax,6 |
Line 584... | Line 584... | ||
584 | ret |
584 | ret |
585 | no_mouse_event: |
585 | no_mouse_event: |
586 | 586 | ||
587 | 587 | ||
588 | ;mov edi,[0x3010] ; DESKTOP BACKGROUND REDRAW |
588 | ;mov edi,[TASK_BASE] ; DESKTOP BACKGROUND REDRAW |
589 | test [edi+TASKDATA.event_mask],dword 16 |
589 | test [edi+TASKDATA.event_mask],dword 16 |
590 | jz no_eventoccur5 |
590 | jz no_eventoccur5 |
591 | cmp [0xfff0],byte 2 |
591 | cmp [0xfff0],byte 2 |
592 | jnz no_eventoccur5 |
592 | jnz no_eventoccur5 |
Line 593... | Line 593... | ||
593 | popad |
593 | popad |
594 | mov eax,5 |
594 | mov eax,5 |
595 | ret |
595 | ret |
596 | no_eventoccur5: |
596 | no_eventoccur5: |
597 | 597 | ||
598 | ;mov edi,[0x3010] ; IPC |
598 | ;mov edi,[TASK_BASE] ; IPC |
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,[0x3000] |
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+0x80000+APPDATA.event_mask],dword 01000000b |
604 | jz no_ipc |
604 | jz no_ipc |
Line 605... | Line 605... | ||
605 | and [eax+0x80000+APPDATA.event_mask],dword 0xffffffff-01000000b |
605 | and [eax+0x80000+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 | ||
611 | 611 | ||
612 | ;mov edi,[0x3010] ; STACK |
612 | ;mov edi,[TASK_BASE] ; STACK |
613 | test [edi+TASKDATA.event_mask],dword 10000000b |
613 | test [edi+TASKDATA.event_mask],dword 10000000b |
Line 623... | Line 623... | ||
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, [0x3000] |
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+0x80000+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+0x80000+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, [0x3000] |
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+0x80000+APPDATA.event_mask], EVENT_EXTENDED |
640 | ; jz .test_IRQ |
640 | ; jz .test_IRQ |
641 | ; popad |
641 | ; popad |
Line 649... | Line 649... | ||
649 | mov esi,0x2e0000 ; IRQ'S AND DATA |
649 | mov esi,0x2e0000 ; IRQ'S AND DATA |
650 | mov ebx,0x00010000 |
650 | mov ebx,0x00010000 |
651 | xor ecx, ecx |
651 | xor ecx, ecx |
652 | irq_event_test: |
652 | irq_event_test: |
653 | mov edi,[0x3010] |
653 | mov edi,[TASK_BASE] |
654 | test [edi+TASKDATA.event_mask],ebx |
654 | test [edi+TASKDATA.event_mask],ebx |
655 | jz no_irq_event |
655 | jz no_irq_event |
656 | mov edi,ecx |
656 | mov edi,ecx |
657 | shl edi,2 |
657 | shl edi,2 |
658 | add edi,irq_owner |
658 | add edi,irq_owner |
659 | mov edx,[edi] |
659 | mov edx,[edi] |
660 | mov eax,[0x3010] |
660 | mov eax,[TASK_BASE] |
661 | mov eax,[eax+TASKDATA.pid] |
661 | mov eax,[eax+TASKDATA.pid] |
662 | cmp edx,eax |
662 | cmp edx,eax |
663 | jne no_irq_event |
663 | jne no_irq_event |
664 | cmp [esi],dword 0 |
664 | cmp [esi],dword 0 |
665 | jz no_irq_event |
665 | jz no_irq_event |