Subversion Repositories Kolibri OS

Rev

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