Rev 551 | Rev 2096 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 551 | Rev 2063 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | ;--------------------------------------------------------------------- |
|
- | 2 | ; MAGNIFY SCREEN v1.0 |
|
1 | ; |
3 | ; |
2 | ; MAGNIFY SCREEN |
4 | ; Version for KolibriOS 2005-2011 |
3 | ; |
5 | ; |
4 | ; Compile with FASM for Menuet |
6 | ; Version for Menuet to 2005 |
5 | ; |
- | |
6 | - | ||
- | 7 | ;--------------------------------------------------------------------- |
|
- | 8 | ; last update: 08/18/2011 |
|
- | 9 | ; changed by: Marat Zakiyanov aka Mario79, aka Mario |
|
- | 10 | ; changes: Checking for "rolled up" window |
|
- | 11 | ;--------------------------------------------------------------------- |
|
7 | use32 |
12 | use32 |
8 | - | ||
9 | org 0x0 |
13 | org 0x0 |
10 | - | ||
11 | db 'MENUET01' ; 8 byte id |
14 | db 'MENUET01' ; 8 byte id |
12 | dd 1 ; header version |
15 | dd 1 ; header version |
13 | dd START ; program start |
16 | dd START ; program start |
14 | dd I_END ; program image size |
17 | dd I_END ; program image size |
15 | dd 0x1000 ; required amount of memory |
18 | dd 0x1000 ; required amount of memory |
16 | dd 0x1000 ; esp |
19 | dd 0x1000 ; esp |
17 | dd 0, 0 ; no parameters, no path |
20 | dd 0, 0 ; no parameters, no path |
18 | - | ||
- | 21 | ;--------------------------------------------------------------------- |
|
- | 22 | include 'lang.inc' |
|
19 | include '..\..\..\macros.inc' |
23 | include '..\..\..\macros.inc' |
20 | delay equ 20 |
24 | delay equ 20 |
Line 21... | Line 25... | ||
21 | 25 | ||
22 | magnify_width = 40 |
26 | magnify_width = 40 |
23 | magnify_height = 30 |
- | |
- | 27 | magnify_height = 30 |
|
24 | 28 | ;--------------------------------------------------------------------- |
|
25 | START: ; start of execution |
29 | START: ; start of execution |
26 | redraw: |
30 | redraw: |
27 | call draw_window |
31 | call draw_window |
28 | still: |
32 | still: |
29 | call draw_screen |
33 | call draw_magnify |
30 | wtevent: |
34 | wtevent: |
31 | mov eax, 23 ; wait here for event with timeout |
- | |
32 | mov ebx, delay |
- | |
33 | mcall |
35 | mcall 23,delay ; wait here for event with timeout |
34 | dec eax |
36 | dec eax |
35 | js still |
37 | js still |
36 | jz redraw |
38 | jz redraw |
37 | dec eax |
39 | dec eax |
38 | jnz button |
40 | jnz button |
39 | ; key in buffer |
41 | ; key in buffer |
40 | mov al, 2 |
42 | mov al, 2 |
41 | mcall |
43 | mcall |
- | 44 | jmp wtevent |
|
42 | jmp wtevent |
45 | ;--------------------------------------------------------------------- |
43 | button: |
46 | button: |
44 | ; we have only one button, close |
47 | ; we have only one button, close |
45 | or eax, -1 |
48 | or eax, -1 |
46 | mcall |
- | |
47 | 49 | mcall |
|
48 | ; ********************************************* |
50 | ;--------------------------------------------------------------------- |
49 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
51 | ; ******* WINDOW DEFINITIONS AND DRAW ******** |
50 | ; ********************************************* |
- | |
51 | 52 | ;--------------------------------------------------------------------- |
|
52 | draw_window: |
- | |
53 | mov eax, 12 ; function 12:tell os about windowdraw |
- | |
54 | mov ebx, 1 ; 1, start of draw |
53 | draw_window: |
Line 55... | Line 54... | ||
55 | mcall |
54 | mcall 12,1 |
56 | 55 | ||
57 | mov al, 48 ; function 48 : graphics parameters |
56 | mov al, 48 ; function 48 : graphics parameters |
58 | mov bl, 4 ; subfunction 4 : get skin height |
- | |
59 | mcall |
57 | mov bl, 4 ; subfunction 4 : get skin height |
60 | 58 | mcall |
|
61 | ; DRAW WINDOW |
59 | ; DRAW WINDOW |
62 | mov ebx, 100*65536 + 8*magnify_width + 8 |
60 | mov ebx, 100*65536 + 8*magnify_width + 8 |
63 | lea ecx, [eax + 100*65536 + 8*magnify_height + 3] |
61 | lea ecx, [eax + 100*65536 + 8*magnify_height + 3] |
64 | mov edx, 0x34000000 ; color of work area RRGGBB |
62 | mov edx, 0x34000000 ; color of work area RRGGBB |
65 | mov edi, labelt ; header |
63 | mov edi, labelt ; header |
Line 66... | Line -... | ||
66 | xor eax, eax ; function 0 : define and draw window |
- | |
67 | mcall |
- | |
68 | - | ||
69 | 64 | xor eax, eax ; function 0 : define and draw window |
|
70 | mov al, 12 ; function 12:tell os about windowdraw |
- | |
71 | mov ebx, 2 ; 2, end of draw |
65 | mcall |
72 | mcall |
- | |
73 | - | ||
- | 66 | ||
74 | ret |
67 | mcall 12,2 |
75 | 68 | ret |
|
- | 69 | ;--------------------------------------------------------------------- |
|
- | 70 | draw_magnify: |
|
- | 71 | mcall 9,procinfo,-1 |
|
- | 72 | mov eax,[procinfo+70] ;status of window |
|
76 | draw_screen: |
73 | test eax,100b |
77 | draw_magnify: |
74 | jne .end |
78 | mov eax, 14 |
75 | |
79 | mcall ; get screen size |
76 | mcall 14 ; get screen size |
80 | movzx ecx, ax |
77 | movzx ecx, ax |
81 | inc ecx |
78 | inc ecx |
82 | mov [size_y], ecx |
79 | mov [size_y], ecx |
Line 83... | Line -... | ||
83 | shr eax, 16 |
- | |
84 | inc eax |
80 | shr eax, 16 |
85 | mov [size_x], eax |
81 | inc eax |
86 | 82 | mov [size_x], eax |
|
87 | mov eax, 37 |
83 | |
88 | xor ebx, ebx |
84 | xor ebx, ebx |
89 | mcall ; get mouse coordinates |
85 | mcall 37 ; get mouse coordinates |
90 | mov ecx, eax |
86 | mov ecx, eax |
Line 110... | Line 106... | ||
110 | cmp edx, [size_y] |
106 | cmp edx, [size_y] |
111 | jge .nopix |
107 | jge .nopix |
112 | mov ebx, edx |
108 | mov ebx, edx |
113 | imul ebx, [size_x] |
109 | imul ebx, [size_x] |
114 | add ebx, ecx |
110 | add ebx, ecx |
115 | mov eax, 35 |
- | |
116 | mcall ; read pixel |
111 | mcall 35 ; read pixel |
117 | .nopix: |
112 | .nopix: |
118 | push ecx edx |
113 | push ecx edx |
119 | sub ecx, [m_x] |
114 | sub ecx, [m_x] |
120 | sub edx, [m_y] |
115 | sub edx, [m_y] |
121 | mov ebx, ecx |
116 | mov ebx, ecx |
Line 123... | Line 118... | ||
123 | mov bl, 7 |
118 | mov bl, 7 |
124 | mov ecx, edx |
119 | mov ecx, edx |
125 | shl ecx, 3+16 |
120 | shl ecx, 3+16 |
126 | mov cl, 7 |
121 | mov cl, 7 |
127 | mov edx, eax |
122 | mov edx, eax |
128 | mov eax, 13 |
- | |
129 | mcall |
123 | mcall 13 |
130 | pop edx ecx |
124 | pop edx ecx |
131 | inc ecx |
125 | inc ecx |
132 | cmp ecx, [m_xe] |
126 | cmp ecx, [m_xe] |
133 | jnz .loop_x |
127 | jnz .loop_x |
134 | mov ecx, [m_x] |
128 | mov ecx, [m_x] |
135 | inc edx |
129 | inc edx |
136 | cmp edx, [m_ye] |
130 | cmp edx, [m_ye] |
137 | jnz .loop_y |
131 | jnz .loop_y |
- | 132 | .end: |
|
138 | ret |
133 | ret |
139 | - | ||
- | 134 | ;--------------------------------------------------------------------- |
|
140 | ; DATA AREA |
135 | ; DATA AREA |
- | 136 | ;--------------------------------------------------------------------- |
|
- | 137 | if lang eq ru |
|
- | 138 | labelt: |
|
- | 139 | db 'MAGNIFIER - ', 0 |
|
141 | 140 | else |
|
142 | labelt: |
141 | labelt: |
143 | db 'MAGNIFIER - MOVE MOUSE POINTER', 0 |
142 | db 'MAGNIFIER - MOVE MOUSE POINTER', 0 |
- | 143 | end if |
|
Line 144... | Line 144... | ||
144 | 144 | ||
145 | I_END: |
145 | I_END: |
146 | align 4 |
146 | align 4 |
147 | m_x dd ? |
147 | m_x dd ? |
148 | m_y dd ? |
148 | m_y dd ? |
149 | m_xe dd ? |
149 | m_xe dd ? |
150 | m_ye dd ? |
150 | m_ye dd ? |
151 | size_x dd ? |
151 | size_x dd ? |
- | 152 | size_y dd ? |
|
- | 153 | ;--------------------------------------------------------------------- |
|
- | 154 | procinfo: |
|
- | 155 | rb 1024 |
|
152 | size_y dd ? |
156 | ;--------------------------------------------------------------------- |