Subversion Repositories Kolibri OS

Rev

Rev 92 | Rev 105 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 92 Rev 102
Line 794... Line 794...
794
 
794
 
795
    pusha     ; save window coordinates for window restoring
795
    pusha     ; save window coordinates for window restoring
796
    cld
796
    cld
797
    shl   esi,5
797
    shl   esi,5
798
    add   esi,window_data
798
    add   esi,window_data
799
    mov   ax,[esi+0]
799
    mov   eax,[esi+WDATA.left]
800
    mov   word [dlx],ax
800
    mov   [dlx],eax
801
    add   ax,[esi+8]
801
    add   eax,[esi+WDATA.width]
802
    mov   word [dlxe],ax
802
    mov   [dlxe],eax
803
    mov   ax,[esi+4]
803
    mov   eax,[esi+WDATA.top]
804
    mov   word [dly],ax
804
    mov   [dly],eax
805
    add   ax,[esi+12]
805
    add   eax,[esi+WDATA.height]
-
 
806
    mov   [dlye],eax
806
    mov   word [dlye],ax
807
 
807
    mov   [esi+0],word 0
808
    mov   [esi+WDATA.left], 0
808
    mov   [esi+8],word 5
809
    mov   [esi+WDATA.width], 5
809
    mov   ax,[0xFE04]
810
    mov   eax,[0xFE04]
810
    mov   [esi+4],ax
811
    mov   [esi+WDATA.top],eax
811
    mov   [esi+12],word 5
812
    mov   [esi+WDATA.height], 5
812
    xor   eax, eax
813
    xor   eax, eax
813
    mov   [esi+16],eax;dword 0
814
    mov   [esi+16],eax
814
    mov   [esi+20],eax;dword 0
815
    mov   [esi+20],eax
815
    mov   [esi+24],eax;dword 0
816
    mov   [esi+24],eax
816
    mov   [esi+28],eax;dword 0
-
 
817
    popa
-
 
818
 
-
 
819
    pusha
-
 
820
    mov   edi,esi
-
 
821
    shl   edi,5
-
 
822
    add   edi,window_data
-
 
823
    mov   ecx,32/4
-
 
824
    xor   eax, eax
-
 
825
  ;  cld
-
 
826
    rep   stosd
-
 
827
 
-
 
828
    mov   eax,[0xFE04]      ; set window to start from maxy+1
-
 
829
    add   eax,2
-
 
830
 
-
 
831
    mov   edi,esi
-
 
832
    shl   edi,5
817
    mov   [esi+28],eax
833
    mov   [edi+4+window_data],eax
-
 
834
 
-
 
835
    add   edi,draw_data
818
    lea   edi, [esi-window_data+draw_data]
836
    mov   ecx,32/4
-
 
837
    xor   eax, eax
819
    mov   ecx,32/4
838
    rep   stosd
820
    rep   stosd
Line 839... Line 821...
839
    popa
821
    popa
840
 
822
 
Line 859... Line 841...
859
    mov   edi,esi
841
    mov   edi,esi
860
    shl   edi,8
842
    shl   edi,8
861
    add   edi,0x80000
843
    add   edi,0x80000
862
    mov   ecx,256/4
844
    mov   ecx,256/4
863
    xor   eax, eax
845
    xor   eax, eax
864
  ;  cld
-
 
865
    rep   stosd
846
    rep   stosd
866
    popa
847
    popa
Line 867... Line 848...
867
 
848
 
868
    pusha          ; name to spaces
849
    pusha          ; name to spaces
869
    mov   edi,esi
850
    mov   edi,esi
870
    shl   edi,8
851
    shl   edi,8
871
    add   edi,0x80000
852
    add   edi,0x80000
872
    mov   ecx,11
853
    mov   ecx,11
873
    mov   eax,' '
-
 
874
  ;  cld
854
    mov   eax,' '
875
    rep   stosb
855
    rep   stosb
Line -... Line 856...
-
 
856
    popa
-
 
857
 
876
    popa
858
 
877
 
859
  ; activate window
-
 
860
        movzx  eax, word [0xC000 + esi*2]
878
    pusha                ; C000 --> C400
861
        cmp    eax, [0x3004]
879
    mov   eax, 0xc000
862
        jne    .dont_activate
880
    mov   esi, 0
863
        pushad
881
  nlc40:
864
 .check_next_window:
-
 
865
        dec    eax
882
    add   eax, 2
866
        cmp    eax, 1
-
 
867
        jbe    .nothing_to_activate
883
    inc   esi
868
        lea    esi, [0xc400+eax*2]
-
 
869
        movzx  edi, word [esi]               ; edi = process
-
 
870
        shl    edi, 5
-
 
871
        cmp    [0x3000 + edi + 0xa], byte 9  ; skip dead slots
884
    cmp   esi, [0x3004]
872
        je     .check_next_window
885
    jae   nlc41
873
        add    edi, window_data
886
    movzx ecx, word [eax]
874
        call   waredraw
887
    mov   [0xC400 + ecx*2], si
875
        mov    [0xf400], byte 0
888
    jmp   nlc40
876
        mov    [0xf500], byte 0
-
 
877
 .nothing_to_activate:
Line 889... Line 878...
889
  nlc41:
878
        popad
890
    popa
879
 .dont_activate:
891
 
880
 
892
        push    esi     ; remove hd1 & cd & flp reservation
881
        push    esi     ; remove hd1 & cd & flp reservation
Line 920... Line 909...
920
    loop   newirqfree
909
    loop   newirqfree
921
    popa
910
    popa
Line 922... Line 911...
922
 
911
 
923
 
-
 
924
    pusha                     ; remove all port reservations
912
 
925
    mov   [deleted_process],esi
913
    pusha                     ; remove all port reservations
926
    mov   edx,esi
914
    mov   edx,esi
927
    shl   edx, 5 ;imul  edx,0x20
915
    shl   edx, 5 ;imul  edx,0x20
Line 995... Line 983...
995
;    movzx eax,word [dlx]
983
;    movzx eax,word [dlx]
996
;    movzx ebx,word [dly]
984
;    movzx ebx,word [dly]
997
;    movzx ecx,word [dlxe]
985
;    movzx ecx,word [dlxe]
998
;    movzx edx,word [dlye]
986
;    movzx edx,word [dlye]
999
    call  calculatescreen
987
    call  calculatescreen
1000
    cli
-
 
1001
    mov  eax,[deleted_process]
-
 
1002
    cmp  eax,[active_process]
-
 
1003
    jne  no_activate_process
-
 
1004
    call read_active_process_stack
-
 
1005
  no_activate_process:
-
 
1006
    sti
-
 
1007
    xor   eax, eax
988
    xor   eax, eax
1008
    xor   esi, esi
989
    xor   esi, esi
1009
    call  redrawscreen
990
    call  redrawscreen
Line 1010... Line 991...
1010
 
991
 
1011
    mov   [0xfff4],byte 0  ; no mouse background
992
    mov   [0xfff4],byte 0  ; no mouse background
Line 1012... Line 993...
1012
    mov   [0xfff5],byte 0  ; draw mouse
993
    mov   [0xfff5],byte 0  ; draw mouse
1013
 
994
 
1014
    mov   [application_table_status],0
995
    mov   [application_table_status],0
1015
    mov   esi,process_terminated
-
 
1016
    call  sys_msg_board_str
-
 
1017
    ret
-
 
1018
 
-
 
1019
save_active_process_stack:
-
 
1020
    cmp   [active_proc_stack_coun],0xa400+0x400-4
-
 
1021
    jne   @f
-
 
1022
    mov   [active_proc_stack_coun],0xa400-4
-
 
1023
  @@:
-
 
1024
    push  eax
-
 
1025
    push  ebx
-
 
1026
    mov   eax,[active_process]
-
 
1027
    shl   eax,5
-
 
1028
    add   eax,0x3000
-
 
1029
    mov   [eax-twdw+31],byte 1
-
 
1030
    add   [active_proc_stack_coun],4
-
 
1031
    mov   eax,[active_process]
-
 
1032
    mov   ebx,[active_proc_stack_coun]
-
 
1033
    mov   [ebx],eax
-
 
1034
    pop   ebx
-
 
Line 1035... Line -...
1035
    pop   eax
-
 
1036
    ret
-
 
1037
 
-
 
1038
read_active_process_stack:
-
 
1039
    cmp   [active_proc_stack_coun],0xa400-4
-
 
1040
    jne   @f
-
 
1041
    mov   [active_proc_stack_coun],0xa400+0x400-4
-
 
1042
  @@:
-
 
1043
    push  eax
-
 
1044
    push  ebx
-
 
1045
    mov   ebx,[active_proc_stack_coun]
-
 
1046
    mov   eax,[ebx]
-
 
1047
    mov   [0xff01],eax     ; activate
-
 
1048
    sub   [active_proc_stack_coun],4
-
 
1049
    mov   [active_process_flag],1
996
    mov   esi,process_terminated
Line 1050... Line 997...
1050
    pop   ebx
997
    call  sys_msg_board_str
1051
    pop   eax
998
 
1052
    ret
999
    ret