Subversion Repositories Kolibri OS

Rev

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