Subversion Repositories Kolibri OS

Rev

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

Rev 9045 Rev 9477
Line 4... Line 4...
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
4
;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa      ;;
5
;; Distributed under terms of the GNU General Public License    ;;
5
;; Distributed under terms of the GNU General Public License    ;;
6
;;                                                              ;;
6
;;                                                              ;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 8... Line 8...
8
 
8
 
Line 9... Line 9...
9
$Revision: 9045 $
9
$Revision: 9477 $
10
 
10
 
11
;==============================================================================
11
;==============================================================================
Line 12... Line 12...
12
;///// public functions ///////////////////////////////////////////////////////
12
;     public functions 
Line 13... Line 13...
13
;==============================================================================
13
;==============================================================================
14
 
14
 
15
window.BORDER_SIZE = 5
15
window.BORDER_SIZE = 5
16
 
16
 
17
uglobal
-
 
18
  common_colours rd 48
-
 
19
  draw_limits    RECT
-
 
20
endg
17
uglobal
-
 
18
  common_colours rd 48
-
 
19
  draw_limits    RECT
-
 
20
endg
-
 
21
;------------------------------------------------------------------------------
21
 
22
 
22
;------------------------------------------------------------------------------
23
 
23
syscall_draw_window: ;///// system function 0 /////////////////////////////////
24
align 4
24
;------------------------------------------------------------------------------
25
syscall_draw_window: ;     system function 0
25
        mov     eax, edx
26
        mov     eax, edx
Line 67... Line 68...
67
        jmp     window._.draw_window_caption.2
68
        jmp     window._.draw_window_caption.2
68
;--------------------------------------
69
;--------------------------------------
69
.exit:
70
.exit:
70
        ret
71
        ret
71
;------------------------------------------------------------------------------
72
;------------------------------------------------------------------------------
-
 
73
 
-
 
74
 
-
 
75
align 4
-
 
76
; system function 1
-
 
77
syscall_setpixel:  
-
 
78
        mov     eax, ebx
-
 
79
        mov     ebx, ecx
-
 
80
        mov     ecx, edx
-
 
81
        mov     edx, [TASK_BASE]
-
 
82
        add     eax, [edx-twdw+WDATA.box.left]
-
 
83
        add     ebx, [edx-twdw+WDATA.box.top]
-
 
84
        mov     edi, [current_slot]
-
 
85
        add     eax, [edi+APPDATA.wnd_clientbox.left]
-
 
86
        add     ebx, [edi+APPDATA.wnd_clientbox.top]
-
 
87
        xor     edi, edi ; no force
-
 
88
        and     ecx, 0xFBFFFFFF  ;negate 0x04000000 save to mouseunder area
-
 
89
        jmp     __sys_putpixel
-
 
90
;------------------------------------------------------------------------------
-
 
91
 
-
 
92
 
-
 
93
align 4
-
 
94
; system function 4
-
 
95
syscall_writetext: 
-
 
96
 
-
 
97
        push    esi    ;check pointer on kernel address.
-
 
98
        test    ecx, 0x80000000
-
 
99
        jz      @f
-
 
100
        xor     esi, esi
-
 
101
@@:
-
 
102
        stdcall is_region_userspace, edx, esi
-
 
103
        pop     esi
-
 
104
        jnz     .err
-
 
105
 
-
 
106
        mov     eax, [TASK_BASE]
-
 
107
        mov     ebp, [eax-twdw+WDATA.box.left]
-
 
108
        push    esi
-
 
109
        mov     esi, [current_slot]
-
 
110
        add     ebp, [esi+APPDATA.wnd_clientbox.left]
-
 
111
        shl     ebp, 16
-
 
112
        add     ebp, [eax-twdw+WDATA.box.top]
-
 
113
        add     bp, word[esi+APPDATA.wnd_clientbox.top]
-
 
114
        pop     esi
-
 
115
        test    ecx, 0x08000000  ; redirect the output to the user area
-
 
116
        jnz     @f
-
 
117
        add     ebx, ebp
-
 
118
align 4
-
 
119
@@:
-
 
120
        mov     eax, edi
72
syscall_display_settings: ;///// system function 48 ///////////////////////////
121
        test    ecx, 0x08000000  ; redirect the output to the user area
-
 
122
        jnz     @f
-
 
123
        xor     edi, edi
-
 
124
        jmp     dtext
-
 
125
 
-
 
126
@@:     ;  check pointer
-
 
127
        stdcall is_region_userspace, edi, 0
-
 
128
        jnz     .err
-
 
129
        jmp     dtext
-
 
130
.err:
-
 
131
        ret
-
 
132
;------------------------------------------------------------------------------
-
 
133
 
-
 
134
 
-
 
135
align 4
-
 
136
; system function 13
-
 
137
syscall_drawrect: 
-
 
138
        mov     edi, edx ; color + gradient
-
 
139
        and     edi, 0x80FFFFFF
-
 
140
        test    bx, bx  ; x.size
-
 
141
        je      .drectr
-
 
142
        test    cx, cx ; y.size
-
 
143
        je      .drectr
-
 
144
 
-
 
145
        mov     eax, ebx ; bad idea
-
 
146
        mov     ebx, ecx
-
 
147
 
-
 
148
        movzx   ecx, ax ; ecx - x.size
-
 
149
        shr     eax, 16 ; eax - x.coord
-
 
150
        movzx   edx, bx ; edx - y.size
-
 
151
        shr     ebx, 16 ; ebx - y.coord
-
 
152
        mov     esi, [current_slot]
-
 
153
 
-
 
154
        add     eax, [esi + APPDATA.wnd_clientbox.left]
-
 
155
        add     ebx, [esi + APPDATA.wnd_clientbox.top]
-
 
156
        add     ecx, eax
-
 
157
        add     edx, ebx
-
 
158
        jmp     vesa20_drawbar
-
 
159
.drectr:
-
 
160
        ret
-
 
161
;------------------------------------------------------------------------------
-
 
162
 
-
 
163
align 4
-
 
164
; system function 38
-
 
165
syscall_drawline:
-
 
166
        mov     edi, [TASK_BASE]
-
 
167
        movzx   eax, word[edi-twdw+WDATA.box.left]
-
 
168
        mov     ebp, eax
-
 
169
        mov     esi, [current_slot]
-
 
170
        add     ebp, [esi+APPDATA.wnd_clientbox.left]
-
 
171
        add     ax, word[esi+APPDATA.wnd_clientbox.left]
-
 
172
        add     ebp, ebx
-
 
173
        shl     eax, 16
-
 
174
        movzx   ebx, word[edi-twdw+WDATA.box.top]
-
 
175
        add     eax, ebp
-
 
176
        mov     ebp, ebx
-
 
177
        add     ebp, [esi+APPDATA.wnd_clientbox.top]
-
 
178
        add     bx, word[esi+APPDATA.wnd_clientbox.top]
-
 
179
        add     ebp, ecx
-
 
180
        shl     ebx, 16
-
 
181
        xor     edi, edi
-
 
182
        add     ebx, ebp
-
 
183
        mov     ecx, edx
-
 
184
        jmp     __sys_draw_line
73
;------------------------------------------------------------------------------
185
;------------------------------------------------------------------------------
-
 
186
 
-
 
187
 
-
 
188
align 4
-
 
189
; system function 48 
-
 
190
syscall_display_settings: 
74
        cmp     ebx, 13
191
        cmp     ebx, 13
75
        ja      .ret
192
        ja      .ret
76
        jmp     dword[.ftable + ebx*4]
193
        jmp     dword[.ftable + ebx*4]
Line 77... Line 194...
77
 
194
 
Line 278... Line 395...
278
        call    kernel_free
395
        call    kernel_free
279
        call    .calculateScreen
396
        call    .calculateScreen
280
        jmp     .redrawScreen
397
        jmp     .redrawScreen
Line 281... Line 398...
281
 
398
 
-
 
399
;------------------------------------------------------------------------------
-
 
400
 
282
;------------------------------------------------------------------------------
401
align 4
283
syscall_set_window_shape: ;///// system function 50 ///////////////////////////
-
 
284
;------------------------------------------------------------------------------
402
; system function 50
285
;; Set window shape address:
403
;; Set window shape address:
286
;> ebx = 0
404
;> ebx = 0
287
;> ecx = shape data address
405
;> ecx = shape data address
288
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
406
; --------------------------
289
;; Set window shape scale:
407
;; Set window shape scale:
290
;> ebx = 1
408
;> ebx = 1
291
;> ecx = scale power (resulting scale is 2^ebx)
409
;> ecx = scale power (resulting scale is 2^ebx)
292
;------------------------------------------------------------------------------
410
syscall_set_window_shape: 
Line 293... Line 411...
293
        mov     edi, [current_slot]
411
        mov     edi, [current_slot]
294
 
412
 
295
        test    ebx, ebx
413
        test    ebx, ebx
Line 304... Line 422...
304
;--------------------------------------
422
;--------------------------------------
305
align 4
423
align 4
306
.exit:
424
.exit:
307
        ret
425
        ret
308
;------------------------------------------------------------------------------
426
;------------------------------------------------------------------------------
-
 
427
 
309
align 4
428
align 4
310
;------------------------------------------------------------------------------
-
 
311
syscall_move_window: ;///// system function 67 ////////////////////////////////
429
;     system function 67 
312
;------------------------------------------------------------------------------
-
 
313
;? 
430
syscall_move_window: 
314
;------------------------------------------------------------------------------
-
 
315
        mov     edi, [current_slot_idx]
431
        mov     edi, [current_slot_idx]
316
        shl     edi, 5
432
        shl     edi, 5
317
        add     edi, window_data
433
        add     edi, window_data
Line 318... Line 434...
318
 
434
 
Line 363... Line 479...
363
        add     esp, sizeof.BOX
479
        add     esp, sizeof.BOX
Line 364... Line 480...
364
 
480
 
365
.exit:
481
.exit:
366
        ret
482
        ret
-
 
483
;------------------------------------------------------------------------------
367
;------------------------------------------------------------------------------
484
 
368
syscall_window_settings: ;///// system function 71 ////////////////////////////
485
; system function 71
369
;------------------------------------------------------------------------------
486
syscall_window_settings: 
370
        mov     edi, [current_slot_idx]
487
        mov     edi, [current_slot_idx]
371
        shl     edi, 5
488
        shl     edi, 5
372
        or      [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
489
        or      [edi + window_data + WDATA.fl_wstyle], WSTYLE_HASCAPTION
373
        cmp     ebx, 2
490
        cmp     ebx, 2
Line 380... Line 497...
380
@@:
497
@@:
381
        mov     [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx
498
        mov     [edi*8 + SLOT_BASE + APPDATA.wnd_caption], ecx
382
        mov     [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl
499
        mov     [edi*8 + SLOT_BASE + APPDATA.captionEncoding], dl
383
        jmp     window._.draw_window_caption
500
        jmp     window._.draw_window_caption
384
;------------------------------------------------------------------------------
501
;------------------------------------------------------------------------------
-
 
502
 
385
align 4
503
align 4
386
set_window_defaults: ;/////////////////////////////////////////////////////////
504
set_window_defaults:
387
;------------------------------------------------------------------------------
-
 
388
        mov     byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable
505
        mov     byte [window_data + 0x20 + WDATA.cl_titlebar + 3], 1 ; desktop is not movable
389
        push    eax ecx
506
        push    eax ecx
390
        xor     eax, eax
507
        xor     eax, eax
391
        mov     ecx, WIN_STACK
508
        mov     ecx, WIN_STACK
392
;--------------------------------------
509
;--------------------------------------
Line 403... Line 520...
403
        pop     ecx eax
520
        pop     ecx eax
404
        ret
521
        ret
405
;------------------------------------------------------------------------------
522
;------------------------------------------------------------------------------
Line 406... Line 523...
406
 
523
 
407
align 4
-
 
408
;------------------------------------------------------------------------------
-
 
409
calculatescreen: ;/////////////////////////////////////////////////////////////
-
 
410
;------------------------------------------------------------------------------
524
align 4
411
;? Scan all windows from bottom to top, calling `setscreen` for each one
525
;? Scan all windows from bottom to top, calling `setscreen` for each one
412
;? intersecting given screen area
-
 
413
;------------------------------------------------------------------------------
526
;? intersecting given screen area
414
;> eax = left
527
;> eax = left
415
;> ebx = top
528
;> ebx = top
416
;> ecx = right
529
;> ecx = right
417
;> edx = bottom
530
;> edx = bottom
418
;------------------------------------------------------------------------------
531
calculatescreen:
419
        push    esi
532
        push    esi
420
        pushfd
533
        pushfd
Line 421... Line 534...
421
        cli
534
        cli
Line 524... Line 637...
524
        inc     [_display.mask_seqno]
637
        inc     [_display.mask_seqno]
525
        popfd
638
        popfd
526
        pop     esi
639
        pop     esi
527
        ret
640
        ret
528
;------------------------------------------------------------------------------
641
;------------------------------------------------------------------------------
-
 
642
 
-
 
643
 
529
align 4
644
align 4
530
;------------------------------------------------------------------------------
-
 
531
repos_windows: ;///////////////////////////////////////////////////////////////
-
 
532
;------------------------------------------------------------------------------
-
 
533
;? 
645
repos_windows:
534
;------------------------------------------------------------------------------
-
 
535
        mov     ecx, [thread_count]
646
        mov     ecx, [thread_count]
536
        mov     edi, window_data + sizeof.WDATA * 2
647
        mov     edi, window_data + sizeof.WDATA * 2
537
        call    force_redraw_background
648
        call    force_redraw_background
538
        dec     ecx
649
        dec     ecx
539
        jle     .exit
650
        jle     .exit
Line 600... Line 711...
600
        sub     eax, [screen_workarea.bottom]
711
        sub     eax, [screen_workarea.bottom]
601
        neg     eax
712
        neg     eax
602
        mov     [edi + WDATA.box.height], eax
713
        mov     [edi + WDATA.box.height], eax
603
        jmp     .fix_client_box
714
        jmp     .fix_client_box
604
;------------------------------------------------------------------------------
715
;------------------------------------------------------------------------------
-
 
716
 
-
 
717
 
605
align 4
718
align 4
606
;------------------------------------------------------------------------------
-
 
607
draw_rectangle: ;//////////////////////////////////////////////////////////////
-
 
608
;------------------------------------------------------------------------------
-
 
609
;> eax = pack[16(left), 16(right)]
719
;> eax = pack[16(left), 16(right)]
610
;> ebx = pack[16(top), 16(bottom)]
720
;> ebx = pack[16(top), 16(bottom)]
611
;> esi = color
721
;> esi = color
612
;       ?? RR GG BB    ; 0x01000000 negation
722
;       ?? RR GG BB    ; 0x01000000 negation
613
;                      ; 0x02000000 used for draw_rectangle without top line
723
;                      ; 0x02000000 used for draw_rectangle without top line
614
;                      ;           for example drawwindow_III and drawwindow_IV
724
;                      ;           for example drawwindow_III and drawwindow_IV
615
;------------------------------------------------------------------------------
-
 
-
 
725
draw_rectangle:
616
        push    eax ebx ecx edi
726
        push    eax ebx ecx edi
Line 617... Line 727...
617
 
727
 
618
        xor     edi, edi
728
        xor     edi, edi
619
;--------------------------------------
729
;--------------------------------------
Line 667... Line 777...
667
        push    eax ebx ecx edi
777
        push    eax ebx ecx edi
668
        xor     edi, edi
778
        xor     edi, edi
669
        inc     edi
779
        inc     edi
670
        jmp     .flags_set
780
        jmp     .flags_set
671
;------------------------------------------------------------------------------
781
;------------------------------------------------------------------------------
-
 
782
 
-
 
783
 
672
align 4
784
align 4
673
;------------------------------------------------------------------------------
-
 
674
drawwindow_I_caption: ;////////////////////////////////////////////////////////
-
 
675
;------------------------------------------------------------------------------
-
 
676
;? 
785
drawwindow_I_caption:
677
;------------------------------------------------------------------------------
-
 
678
        push    [edx + WDATA.cl_titlebar]
786
        push    [edx + WDATA.cl_titlebar]
679
        mov     esi, edx
787
        mov     esi, edx
Line 680... Line 788...
680
 
788
 
681
        mov     edx, [esi + WDATA.box.top]
789
        mov     edx, [esi + WDATA.box.top]
Line 722... Line 830...
722
 
830
 
723
        add     esp, 4
831
        add     esp, 4
724
        pop     [esi + WDATA.cl_titlebar]
832
        pop     [esi + WDATA.cl_titlebar]
725
        ret
833
        ret
-
 
834
;------------------------------------------------------------------------------
-
 
835
 
726
;------------------------------------------------------------------------------
836
 
727
align 4
-
 
728
;------------------------------------------------------------------------------
-
 
729
drawwindow_I: ;////////////////////////////////////////////////////////////////
-
 
730
;------------------------------------------------------------------------------
837
align 4
731
;? 
-
 
732
;------------------------------------------------------------------------------
838
drawwindow_I:
Line 733... Line 839...
733
        pushad
839
        pushad
Line 734... Line 840...
734
 
840
 
Line 770... Line 876...
770
align 4
876
align 4
771
.exit:
877
.exit:
772
        popad
878
        popad
773
        ret
879
        ret
774
;------------------------------------------------------------------------------
880
;------------------------------------------------------------------------------
-
 
881
 
-
 
882
 
775
align 4
883
align 4
776
;------------------------------------------------------------------------------
-
 
777
drawwindow_III_caption: ;/////////////////////////////////////////////////////
-
 
778
;------------------------------------------------------------------------------
-
 
779
;? 
884
drawwindow_III_caption:
780
;------------------------------------------------------------------------------
-
 
781
        mov     ecx, [edx + WDATA.cl_titlebar]
885
        mov     ecx, [edx + WDATA.cl_titlebar]
782
        push    ecx
886
        push    ecx
783
        mov     esi, edx
887
        mov     esi, edx
784
        mov     edx, [esi + WDATA.box.top]
888
        mov     edx, [esi + WDATA.box.top]
785
        add     edx, 4
889
        add     edx, 4
Line 831... Line 935...
831
 
935
 
832
        add     esp, 4
936
        add     esp, 4
833
        pop     [esi + WDATA.cl_titlebar]
937
        pop     [esi + WDATA.cl_titlebar]
834
        ret
938
        ret
-
 
939
;------------------------------------------------------------------------------
-
 
940
 
835
;------------------------------------------------------------------------------
941
 
836
align 4
-
 
837
;------------------------------------------------------------------------------
-
 
838
drawwindow_III: ;//////////////////////////////////////////////////////////////
-
 
839
;------------------------------------------------------------------------------
942
align 4
840
;? 
-
 
841
;------------------------------------------------------------------------------
943
drawwindow_III:
Line 842... Line 944...
842
        pushad
944
        pushad
Line 843... Line 945...
843
 
945
 
Line 904... Line 1006...
904
align 4
1006
align 4
905
.exit:
1007
.exit:
906
        popad
1008
        popad
907
        ret
1009
        ret
908
;------------------------------------------------------------------------------
1010
;------------------------------------------------------------------------------
-
 
1011
 
-
 
1012
 
909
align 4
1013
align 4
910
;------------------------------------------------------------------------------
-
 
911
waredraw: ;////////////////////////////////////////////////////////////////////
-
 
912
;------------------------------------------------------------------------------
-
 
913
;? Activate window, redrawing if necessary
1014
;? Activate window, redrawing if necessary
914
;------------------------------------------------------------------------------
-
 
-
 
1015
waredraw:
915
        push    -1
1016
        push    -1
916
        mov     eax, [thread_count]
1017
        mov     eax, [thread_count]
917
        lea     eax, [WIN_POS + eax * 2]
1018
        lea     eax, [WIN_POS + eax * 2]
918
        cmp     eax, esi
1019
        cmp     eax, esi
919
        pop     eax
1020
        pop     eax
Line 968... Line 1069...
968
align 4
1069
align 4
969
.exit:
1070
.exit:
970
        inc     eax
1071
        inc     eax
971
        ret
1072
        ret
972
;------------------------------------------------------------------------------
1073
;------------------------------------------------------------------------------
-
 
1074
 
-
 
1075
 
973
align 4
1076
align 4
974
;------------------------------------------------------------------------------
-
 
975
minimize_all_window:
1077
minimize_all_window:
976
        push    ebx ecx edx esi edi
1078
        push    ebx ecx edx esi edi
977
        pushfd
1079
        pushfd
978
        cli
1080
        cli
979
        xor     edx, edx
1081
        xor     edx, edx
Line 1019... Line 1121...
1019
        pop     edi esi edx ecx ebx
1121
        pop     edi esi edx ecx ebx
1020
        ret
1122
        ret
1021
;------------------------------------------------------------------------------
1123
;------------------------------------------------------------------------------
1022
align 4
1124
align 4
1023
;------------------------------------------------------------------------------
1125
;------------------------------------------------------------------------------
1024
minimize_window: ;/////////////////////////////////////////////////////////////
-
 
1025
;------------------------------------------------------------------------------
-
 
-
 
1126
 
1026
;> eax = window number on screen
1127
;> eax = window number on screen
1027
;------------------------------------------------------------------------------
-
 
1028
;# corrupts [dl*]
1128
;# corrupts [dl*]
1029
;------------------------------------------------------------------------------
1129
minimize_window:
1030
        push    edi
1130
        push    edi
1031
        pushfd
1131
        pushfd
1032
        cli
1132
        cli
Line 1033... Line 1133...
1033
 
1133
 
Line 1079... Line 1179...
1079
.exit:
1179
.exit:
1080
        popfd
1180
        popfd
1081
        pop     edi
1181
        pop     edi
1082
        ret
1182
        ret
1083
;------------------------------------------------------------------------------
1183
;------------------------------------------------------------------------------
-
 
1184
 
-
 
1185
 
1084
align 4
1186
align 4
1085
;------------------------------------------------------------------------------
-
 
1086
restore_minimized_window: ;////////////////////////////////////////////////////
-
 
1087
;------------------------------------------------------------------------------
-
 
1088
;> eax = window number on screen
1187
;> eax = window number on screen
1089
;------------------------------------------------------------------------------
-
 
1090
;# corrupts [dl*]
1188
;# corrupts [dl*]
1091
;------------------------------------------------------------------------------
1189
restore_minimized_window:
1092
        pushad
1190
        pushad
1093
        pushfd
1191
        pushfd
1094
        cli
1192
        cli
Line 1095... Line 1193...
1095
 
1193
 
Line 1132... Line 1230...
1132
        ret
1230
        ret
1133
;------------------------------------------------------------------------------
1231
;------------------------------------------------------------------------------
1134
align 4
1232
align 4
1135
; TODO: remove this proc
1233
; TODO: remove this proc
1136
;------------------------------------------------------------------------------
1234
;------------------------------------------------------------------------------
1137
window_check_events: ;/////////////////////////////////////////////////////////
-
 
1138
;------------------------------------------------------------------------------
-
 
-
 
1235
 
-
 
1236
 
1139
;? 
1237
window_check_events:
1140
;------------------------------------------------------------------------------
-
 
1141
        ; do we have window minimize/restore request?
1238
        ; do we have window minimize/restore request?
1142
        cmp     [window_minimize], 0
1239
        cmp     [window_minimize], 0
1143
        je      .exit
1240
        je      .exit
Line 1144... Line 1241...
1144
 
1241
 
Line 1157... Line 1254...
1157
;--------------------------------------
1254
;--------------------------------------
1158
align 4
1255
align 4
1159
.exit:
1256
.exit:
1160
        ret
1257
        ret
1161
;------------------------------------------------------------------------------
1258
;------------------------------------------------------------------------------
-
 
1259
 
-
 
1260
 
1162
align 4
1261
align 4
1163
;------------------------------------------------------------------------------
-
 
1164
sys_window_maximize_handler: ;/////////////////////////////////////////////////
-
 
1165
;------------------------------------------------------------------------------
-
 
1166
;? 
-
 
1167
;------------------------------------------------------------------------------
-
 
1168
;> esi = process slot
1262
;> esi = process slot
1169
;------------------------------------------------------------------------------
1263
sys_window_maximize_handler:
1170
        mov     edi, esi
1264
        mov     edi, esi
1171
        shl     edi, 5
1265
        shl     edi, 5
1172
        add     edi, window_data
1266
        add     edi, window_data
Line 1173... Line 1267...
1173
 
1267
 
Line 1225... Line 1319...
1225
align 4
1319
align 4
1226
.exit:
1320
.exit:
1227
        inc     [_display.mask_seqno]
1321
        inc     [_display.mask_seqno]
1228
        ret
1322
        ret
1229
;------------------------------------------------------------------------------
1323
;------------------------------------------------------------------------------
-
 
1324
 
-
 
1325
 
1230
align 4
1326
align 4
1231
;------------------------------------------------------------------------------
-
 
1232
sys_window_rollup_handler: ;///////////////////////////////////////////////////
-
 
1233
;------------------------------------------------------------------------------
-
 
1234
;? 
-
 
1235
;------------------------------------------------------------------------------
-
 
1236
;> esi = process slot
1327
;> esi = process slot
1237
;------------------------------------------------------------------------------
1328
sys_window_rollup_handler:
1238
        mov     edx, esi
1329
        mov     edx, esi
1239
        shl     edx, 8
1330
        shl     edx, 8
1240
        add     edx, SLOT_BASE
1331
        add     edx, SLOT_BASE
Line 1241... Line 1332...
1241
 
1332
 
Line 1279... Line 1370...
1279
        add     esp, sizeof.BOX
1370
        add     esp, sizeof.BOX
1280
        ret
1371
        ret
1281
;------------------------------------------------------------------------------
1372
;------------------------------------------------------------------------------
1282
align 4
1373
align 4
1283
;------------------------------------------------------------------------------
1374
;------------------------------------------------------------------------------
1284
;sys_window_start_moving_handler: ;/////////////////////////////////////////////
1375
;sys_window_start_moving_handler:
1285
;------------------------------------------------------------------------------
1376
;------------------------------------------------------------------------------
1286
;? 
1377
;? 
1287
;------------------------------------------------------------------------------
1378
;------------------------------------------------------------------------------
1288
;> eax = old (original) window box
1379
;> eax = old (original) window box
1289
;> esi = process slot
1380
;> esi = process slot
1290
;------------------------------------------------------------------------------
1381
;------------------------------------------------------------------------------
1291
;        mov     edi, eax
1382
;        mov     edi, eax
1292
;        call    window._.draw_negative_box
1383
;        call    window._.draw_negative_box
1293
;        ret
1384
;        ret
1294
;------------------------------------------------------------------------------
1385
;------------------------------------------------------------------------------
-
 
1386
 
-
 
1387
 
1295
align 4
1388
align 4
1296
;------------------------------------------------------------------------------
-
 
1297
sys_window_end_moving_handler: ;///////////////////////////////////////////////
-
 
1298
;------------------------------------------------------------------------------
-
 
1299
;? 
-
 
1300
;------------------------------------------------------------------------------
-
 
1301
;> eax = old (original) window box
1389
;> eax = old (original) window box
1302
;> ebx = new (final) window box
1390
;> ebx = new (final) window box
1303
;> esi = process slot
1391
;> esi = process slot
1304
;------------------------------------------------------------------------------
1392
sys_window_end_moving_handler:
1305
;        mov     edi, ebx
1393
;        mov     edi, ebx
1306
;        call    window._.end_moving__box
1394
;        call    window._.end_moving__box
Line 1307... Line 1395...
1307
 
1395
 
1308
        mov     edi, esi
1396
        mov     edi, esi
Line 1321... Line 1409...
1321
        mov     eax, ebx
1409
        mov     eax, ebx
1322
        mov     bl, [edi + WDATA.fl_wstate]
1410
        mov     bl, [edi + WDATA.fl_wstate]
1323
        call    window._.set_window_box
1411
        call    window._.set_window_box
1324
        ret
1412
        ret
1325
;------------------------------------------------------------------------------
1413
;------------------------------------------------------------------------------
-
 
1414
 
-
 
1415
 
1326
align 4
1416
align 4
1327
;------------------------------------------------------------------------------
-
 
1328
sys_window_moving_handler: ;///////////////////////////////////////////////////
-
 
1329
;------------------------------------------------------------------------------
-
 
1330
;? 
-
 
1331
;------------------------------------------------------------------------------
-
 
1332
;> eax = old (from previous call) window box
1417
;> eax = old (from previous call) window box
1333
;> ebx = new (current) window box
1418
;> ebx = new (current) window box
1334
;> esi = process_slot
1419
;> esi = process_slot
1335
;------------------------------------------------------------------------------
1420
sys_window_moving_handler:
1336
        mov     edi, eax
1421
        mov     edi, eax
1337
        call    window._.draw_negative_box
1422
        call    window._.draw_negative_box
1338
        mov     edi, ebx
1423
        mov     edi, ebx
1339
        call    window._.draw_negative_box
1424
        call    window._.draw_negative_box
1340
        ret
1425
        ret
-
 
1426
 
-
 
1427
 
-
 
1428
 
-
 
1429
 
1341
;==============================================================================
1430
;==============================================================================
1342
;///// private functions //////////////////////////////////////////////////////
1431
;      private functions
1343
;==============================================================================
1432
;==============================================================================
Line 1344... Line 1433...
1344
 
1433
 
1345
iglobal
1434
iglobal
1346
align 4
1435
align 4
Line 1351... Line 1440...
1351
    5,  ?, \ ;type 3 {set by skin}
1440
    5,  ?, \ ;type 3 {set by skin}
1352
    5,  ?    ;type 4 {set by skin}
1441
    5,  ?    ;type 4 {set by skin}
1353
endg
1442
endg
Line 1354... Line 1443...
1354
 
1443
 
-
 
1444
;------------------------------------------------------------------------------
-
 
1445
 
1355
;------------------------------------------------------------------------------
1446
 
1356
align 4
-
 
1357
;------------------------------------------------------------------------------
-
 
1358
window._.invalidate_screen: ;//////////////////////////////////////////////////
-
 
1359
;------------------------------------------------------------------------------
-
 
1360
;? 
-
 
1361
;------------------------------------------------------------------------------
1447
align 4
1362
;> eax = old (original) window box
1448
;> eax = old (original) window box
1363
;> ebx = new (final) window box
1449
;> ebx = new (final) window box
1364
;> edi = pointer to WDATA struct
1450
;> edi = pointer to WDATA struct
1365
;------------------------------------------------------------------------------
1451
window._.invalidate_screen:
Line 1366... Line 1452...
1366
        push    eax ebx
1452
        push    eax ebx
1367
 
1453
 
Line 1403... Line 1489...
1403
        mov     [edi + WDATA.fl_redraw], 1
1489
        mov     [edi + WDATA.fl_redraw], 1
Line 1404... Line 1490...
1404
 
1490
 
1405
        pop     ebx eax
1491
        pop     ebx eax
1406
        ret
1492
        ret
-
 
1493
;------------------------------------------------------------------------------
-
 
1494
 
1407
;------------------------------------------------------------------------------
1495
 
1408
align 4
-
 
1409
;------------------------------------------------------------------------------
-
 
1410
window._.set_window_box: ;/////////////////////////////////////////////////////
-
 
1411
;------------------------------------------------------------------------------
-
 
1412
;? 
-
 
1413
;------------------------------------------------------------------------------
1496
align 4
1414
;> eax = pointer to BOX struct
1497
;> eax = pointer to BOX struct
1415
;> bl = new window state flags
1498
;> bl = new window state flags
1416
;> edi = pointer to WDATA struct
1499
;> edi = pointer to WDATA struct
1417
;------------------------------------------------------------------------------
1500
window._.set_window_box:
Line 1418... Line 1501...
1418
        push    eax ebx esi
1501
        push    eax ebx esi
1419
 
1502
 
1420
; don't do anything if the new box is identical to the old
1503
; don't do anything if the new box is identical to the old
Line 1484... Line 1567...
1484
align 4
1567
align 4
1485
.exit:
1568
.exit:
1486
        pop     esi ebx eax
1569
        pop     esi ebx eax
1487
        ret
1570
        ret
1488
;------------------------------------------------------------------------------
1571
;------------------------------------------------------------------------------
-
 
1572
 
-
 
1573
 
1489
align 4
1574
align 4
1490
;------------------------------------------------------------------------------
-
 
1491
window._.set_window_clientbox: ;///////////////////////////////////////////////
-
 
1492
;------------------------------------------------------------------------------
-
 
1493
;? 
-
 
1494
;------------------------------------------------------------------------------
-
 
1495
;> edi = pointer to WDATA struct
1575
;> edi = pointer to WDATA struct
1496
;------------------------------------------------------------------------------
1576
window._.set_window_clientbox:
1497
        push    eax ecx edi
1577
        push    eax ecx edi
Line 1498... Line 1578...
1498
 
1578
 
1499
        mov     eax, [_skinh]
1579
        mov     eax, [_skinh]
1500
        mov     [window_topleft + 8 * 3 + 4], eax
1580
        mov     [window_topleft + 8 * 3 + 4], eax
Line 1542... Line 1622...
1542
align 4
1622
align 4
1543
.exit:
1623
.exit:
1544
        pop     edi ecx eax
1624
        pop     edi ecx eax
1545
        ret
1625
        ret
1546
;------------------------------------------------------------------------------
1626
;------------------------------------------------------------------------------
-
 
1627
 
-
 
1628
 
1547
align 4
1629
align 4
1548
;------------------------------------------------------------------------------
-
 
1549
window._.sys_set_window: ;/////////////////////////////////////////////////////
-
 
1550
;------------------------------------------------------------------------------
-
 
1551
;? 
-
 
1552
;------------------------------------------------------------------------------
-
 
1553
;< edx = pointer to WDATA struct
1630
;< edx = pointer to WDATA struct
1554
;------------------------------------------------------------------------------
1631
window._.sys_set_window:
1555
        mov     eax, [current_slot_idx]
1632
        mov     eax, [current_slot_idx]
1556
        shl     eax, 5
1633
        shl     eax, 5
1557
        add     eax, window_data
1634
        add     eax, window_data
1558
; save window colors
1635
; save window colors
1559
        mov     [eax + WDATA.cl_workarea], edx
1636
        mov     [eax + WDATA.cl_workarea], edx
Line 1635... Line 1712...
1635
        ; reset window redraw flag and exit
1712
        ; reset window redraw flag and exit
1636
        mov     [edi + WDATA.fl_redraw], 0
1713
        mov     [edi + WDATA.fl_redraw], 0
1637
        mov     edx, edi
1714
        mov     edx, edi
1638
        ret
1715
        ret
1639
;------------------------------------------------------------------------------
1716
;------------------------------------------------------------------------------
-
 
1717
 
-
 
1718
 
1640
align 4
1719
align 4
1641
;------------------------------------------------------------------------------
-
 
1642
window._.check_window_position: ;//////////////////////////////////////////////
-
 
1643
;------------------------------------------------------------------------------
-
 
1644
;? Check if window is inside screen area
1720
;? Check if window is inside screen area
1645
;------------------------------------------------------------------------------
-
 
1646
;> edi = pointer to WDATA
1721
;> edi = pointer to WDATA
1647
;------------------------------------------------------------------------------
1722
window._.check_window_position:
1648
        push    eax ebx ecx edx esi
1723
        push    eax ebx ecx edx esi
Line 1649... Line 1724...
1649
 
1724
 
1650
        mov     eax, [edi + WDATA.box.left]
1725
        mov     eax, [edi + WDATA.box.left]
1651
        mov     ebx, [edi + WDATA.box.top]
1726
        mov     ebx, [edi + WDATA.box.top]
Line 1723... Line 1798...
1723
        sub     ebx, edx
1798
        sub     ebx, edx
1724
        dec     ebx
1799
        dec     ebx
1725
        mov     [edi + WDATA.box.top], ebx
1800
        mov     [edi + WDATA.box.top], ebx
1726
        jmp     .exit
1801
        jmp     .exit
1727
;------------------------------------------------------------------------------
1802
;------------------------------------------------------------------------------
-
 
1803
 
-
 
1804
 
1728
align 4
1805
align 4
1729
;------------------------------------------------------------------------------
-
 
1730
window._.get_titlebar_height: ;////////////////////////////////////////////////
-
 
1731
;------------------------------------------------------------------------------
-
 
1732
;? 
-
 
1733
;------------------------------------------------------------------------------
-
 
1734
;> edi = pointer to WDATA
1806
;> edi = pointer to WDATA
1735
;------------------------------------------------------------------------------
1807
window._.get_titlebar_height:
1736
        mov     al, [edi + WDATA.fl_wstyle]
1808
        mov     al, [edi + WDATA.fl_wstyle]
1737
        and     al, 0x0f
1809
        and     al, 0x0f
1738
        cmp     al, 0x03
1810
        cmp     al, 0x03
1739
        jne     @f
1811
        jne     @f
1740
        mov     eax, [_skinh]
1812
        mov     eax, [_skinh]
Line 1743... Line 1815...
1743
align 4
1815
align 4
1744
@@:
1816
@@:
1745
        mov     eax, 21
1817
        mov     eax, 21
1746
        ret
1818
        ret
1747
;------------------------------------------------------------------------------
1819
;------------------------------------------------------------------------------
-
 
1820
 
-
 
1821
 
1748
align 4
1822
align 4
1749
;------------------------------------------------------------------------------
-
 
1750
window._.get_rolledup_height: ;////////////////////////////////////////////////
-
 
1751
;------------------------------------------------------------------------------
-
 
1752
;? 
-
 
1753
;------------------------------------------------------------------------------
-
 
1754
;> edi = pointer to WDATA
1823
;> edi = pointer to WDATA
1755
;------------------------------------------------------------------------------
1824
window._.get_rolledup_height:
1756
        mov     al, [edi + WDATA.fl_wstyle]
1825
        mov     al, [edi + WDATA.fl_wstyle]
1757
        and     al, 0x0f
1826
        and     al, 0x0f
1758
        cmp     al, 0x03
1827
        cmp     al, 0x03
1759
        jb      @f
1828
        jb      @f
1760
        mov     eax, [_skinh]
1829
        mov     eax, [_skinh]
Line 1771... Line 1840...
1771
align 4
1840
align 4
1772
@@:
1841
@@:
1773
        mov     eax, 21 + 2
1842
        mov     eax, 21 + 2
1774
        ret
1843
        ret
1775
;------------------------------------------------------------------------------
1844
;------------------------------------------------------------------------------
-
 
1845
 
-
 
1846
 
1776
align 4
1847
align 4
1777
;------------------------------------------------------------------------------
-
 
1778
window._.set_screen: ;/////////////////////////////////////////////////////////
-
 
1779
;------------------------------------------------------------------------------
-
 
1780
;? Reserve window area in screen buffer
1848
;? Reserve window area in screen buffer
1781
;------------------------------------------------------------------------------
-
 
1782
;> eax = left
1849
;> eax = left
1783
;> ebx = top
1850
;> ebx = top
1784
;> ecx = right
1851
;> ecx = right
1785
;> edx = bottom
1852
;> edx = bottom
1786
;> esi = process number
1853
;> esi = process number
1787
;------------------------------------------------------------------------------
1854
window._.set_screen:
1788
virtual at esp
1855
virtual at esp
1789
  ff_x     dd ?
1856
  ff_x     dd ?
1790
  ff_y     dd ?
1857
  ff_y     dd ?
1791
  ff_width dd ?
1858
  ff_width dd ?
1792
  ff_xsz   dd ?
1859
  ff_xsz   dd ?
Line 1953... Line 2020...
1953
        mov     edx, 1
2020
        mov     edx, 1
1954
        call    read_process_memory
2021
        call    read_process_memory
1955
        pop     esi edx ecx eax
2022
        pop     esi edx ecx eax
1956
        ret
2023
        ret
1957
;------------------------------------------------------------------------------
2024
;------------------------------------------------------------------------------
-
 
2025
 
-
 
2026
 
1958
align 4
2027
align 4
1959
;------------------------------------------------------------------------------
-
 
1960
window._.window_activate: ;////////////////////////////////////////////////////
-
 
1961
;------------------------------------------------------------------------------
-
 
1962
;? Activate window
2028
; Activate window
1963
;------------------------------------------------------------------------------
-
 
1964
;> esi = pointer to WIN_POS+ window data
2029
; esi = pointer to WIN_POS+ window data
1965
;------------------------------------------------------------------------------
2030
window._.window_activate:
1966
        push    eax ebx
2031
        push    eax ebx
Line 1967... Line 2032...
1967
 
2032
 
1968
        ; if type of current active window is 3 or 4, it must be redrawn
2033
        ; if type of current active window is 3 or 4, it must be redrawn
Line 2039... Line 2104...
2039
        mov     word[MOUSE_SCROLL_V], 0
2104
        mov     word[MOUSE_SCROLL_V], 0
Line 2040... Line 2105...
2040
 
2105
 
2041
        pop     ebx eax
2106
        pop     ebx eax
2042
        ret
2107
        ret
2043
;------------------------------------------------------------------------------
-
 
2044
window._.window_deactivate: ;////////////////////////////////////////////////////
-
 
-
 
2108
;------------------------------------------------------------------------------
-
 
2109
 
2045
;------------------------------------------------------------------------------
2110
 
2046
;? Deactivate window
-
 
2047
;------------------------------------------------------------------------------
2111
; Deactivate window
2048
;> esi = pointer to WIN_POS+ window data
2112
; esi = pointer to WIN_POS+ window data
2049
;------------------------------------------------------------------------------
2113
window._.window_deactivate:
2050
        push    eax ebx
2114
        push    eax ebx
2051
;--------------------------------------
2115
;--------------------------------------
2052
align 4
2116
align 4
2053
.move_others_up:
2117
.move_others_up:
Line 2092... Line 2156...
2092
        mov     word[MOUSE_SCROLL_H], 0
2156
        mov     word[MOUSE_SCROLL_H], 0
2093
        mov     word[MOUSE_SCROLL_V], 0
2157
        mov     word[MOUSE_SCROLL_V], 0
2094
        pop     ebx eax
2158
        pop     ebx eax
2095
        ret
2159
        ret
2096
;------------------------------------------------------------------------------
2160
;------------------------------------------------------------------------------
-
 
2161
 
-
 
2162
 
2097
align 4
2163
align 4
2098
;------------------------------------------------------------------------------
-
 
2099
window._.check_window_draw: ;//////////////////////////////////////////////////
-
 
2100
;------------------------------------------------------------------------------
-
 
2101
;? Check if window is necessary to draw
2164
; Check if window is necessary to draw
2102
;------------------------------------------------------------------------------
-
 
2103
;> edi = pointer to WDATA
2165
; edi = pointer to WDATA
2104
;------------------------------------------------------------------------------
2166
window._.check_window_draw:
2105
        mov     cl, [edi + WDATA.fl_wstyle]
2167
        mov     cl, [edi + WDATA.fl_wstyle]
2106
        and     cl, 0x0f
2168
        and     cl, 0x0f
2107
        cmp     cl, 3
2169
        cmp     cl, 3
2108
        je      .exit.redraw      ; window type 3
2170
        je      .exit.redraw      ; window type 3
2109
        cmp     cl, 4
2171
        cmp     cl, 4
Line 2166... Line 2228...
2166
align 4
2228
align 4
2167
.exit.no_redraw:
2229
.exit.no_redraw:
2168
        pop     esi edx ebx eax
2230
        pop     esi edx ebx eax
2169
        xor     ecx, ecx
2231
        xor     ecx, ecx
2170
        ret
2232
        ret
-
 
2233
 
-
 
2234
 
2171
;------------------------------------------------------------------------------
2235
;------------------------------------------------------------------------------
-
 
2236
 
-
 
2237
 
2172
align 4
2238
align 4
2173
;------------------------------------------------------------------------------
-
 
2174
window._.draw_window_caption: ;////////////////////////////////////////////////
2239
window._.draw_window_caption:
2175
;------------------------------------------------------------------------------
-
 
2176
;? 
-
 
2177
;------------------------------------------------------------------------------
-
 
2178
        xor     eax, eax
2240
        xor     eax, eax
2179
        mov     edx, [thread_count]
2241
        mov     edx, [thread_count]
2180
        movzx   edx, word[WIN_POS + edx * 2]
2242
        movzx   edx, word[WIN_POS + edx * 2]
2181
        cmp     edx, [current_slot_idx]
2243
        cmp     edx, [current_slot_idx]
2182
        jne     @f
2244
        jne     @f
Line 2284... Line 2346...
2284
        stc
2346
        stc
2285
        call    dtext._
2347
        call    dtext._
2286
.exit:
2348
.exit:
2287
        jmp     __sys_draw_pointer
2349
        jmp     __sys_draw_pointer
2288
;------------------------------------------------------------------------------
2350
;------------------------------------------------------------------------------
-
 
2351
 
-
 
2352
 
2289
align 4
2353
align 4
2290
;------------------------------------------------------------------------------
-
 
2291
window._.draw_negative_box: ;//////////////////////////////////////////////////
-
 
2292
;------------------------------------------------------------------------------
-
 
2293
;? Draw negative box
2354
; Draw negative box
2294
;------------------------------------------------------------------------------
-
 
2295
;> edi = pointer to BOX struct
2355
; edi = pointer to BOX struct
2296
;------------------------------------------------------------------------------
2356
window._.draw_negative_box:
2297
        push    eax ebx esi
2357
        push    eax ebx esi
2298
        mov     esi, 0x01000000
2358
        mov     esi, 0x01000000
2299
;--------------------------------------
2359
;--------------------------------------
2300
align 4
2360
align 4
2301
.1:
2361
.1:
Line 2319... Line 2379...
2319
;------------------------------------------------------------------------------
2379
;------------------------------------------------------------------------------
2320
;        push    eax ebx esi
2380
;        push    eax ebx esi
2321
;        xor     esi, esi
2381
;        xor     esi, esi
2322
;        jmp     window._.draw_negative_box.1
2382
;        jmp     window._.draw_negative_box.1
2323
;------------------------------------------------------------------------------
2383
;------------------------------------------------------------------------------
-
 
2384
 
-
 
2385
 
2324
align 4
2386
align 4
2325
;------------------------------------------------------------------------------
-
 
2326
window._.get_rect: ;/////////////////////////////////////////////////////
-
 
2327
;------------------------------------------------------------------------------
-
 
2328
;?   void __fastcall get_window_rect(struct RECT* rc);
2387
; void __fastcall get_window_rect(struct RECT* rc);
2329
;------------------------------------------------------------------------------
-
 
2330
;> ecx = pointer to RECT
2388
; ecx = pointer to RECT
2331
;------------------------------------------------------------------------------
2389
window._.get_rect:
2332
        mov     eax, [TASK_BASE]
2390
        mov     eax, [TASK_BASE]
Line 2333... Line 2391...
2333
 
2391
 
2334
        mov     edx, [eax-twdw + WDATA.box.left]
2392
        mov     edx, [eax-twdw + WDATA.box.left]
Line 2342... Line 2400...
2342
 
2400
 
2343
        add     edx, [eax-twdw + WDATA.box.height]
2401
        add     edx, [eax-twdw + WDATA.box.height]
2344
        mov     [ecx+RECT.bottom], edx
2402
        mov     [ecx+RECT.bottom], edx
2345
        ret
2403
        ret
-
 
2404
;------------------------------------------------------------------------------
-
 
2405
 
2346
;------------------------------------------------------------------------------
2406
 
2347
align 4
-
 
2348
;------------------------------------------------------------------------------
-
 
2349
window._.redraw_top_wnd: ;////////////////////////////////////////////////////////
-
 
2350
;------------------------------------------------------------------------------
2407
align 4
2351
;? redraw all windows one above the window
-
 
2352
;------------------------------------------------------------------------------
2408
; redraw all windows one above the window
2353
;> eax = left
2409
;> eax = left
2354
;> ebx = top
2410
;> ebx = top
2355
;> ecx = right
2411
;> ecx = right
2356
;> edx = bottom
2412
;> edx = bottom
2357
;> esi = process number
2413
;> esi = process number
2358
;! corrupted edi
2414
;! corrupted edi
2359
;------------------------------------------------------------------------------
2415
window._.redraw_top_wnd:
2360
        push    0
2416
        push    0
-
 
2417
        jmp     window._.set_top_wnd.go
-
 
2418
;------------------------------------------------------------------------------
Line 2361... Line 2419...
2361
        jmp     window._.set_top_wnd.go
2419
 
2362
 
-
 
2363
align 4
-
 
2364
;------------------------------------------------------------------------------
-
 
2365
window._.set_top_wnd: ;////////////////////////////////////////////////////////
2420
 
2366
;------------------------------------------------------------------------------
-
 
2367
;? call set_screen for all windows one above the window
2421
align 4
2368
;------------------------------------------------------------------------------
2422
; call set_screen for all windows one above the window
2369
;> eax = left
2423
;> eax = left
2370
;> ebx = top
2424
;> ebx = top
2371
;> ecx = right
2425
;> ecx = right
2372
;> edx = bottom
2426
;> edx = bottom
2373
;> esi = process number
2427
;> esi = process number
2374
;! corrupted edi
-
 
2375
;------------------------------------------------------------------------------
2428
;! corrupted edi
2376
 
2429
window._.set_top_wnd:
2377
        push    1
2430
        push    1
2378
.go:
2431
.go:
2379
        push    esi
2432
        push    esi