Rev 109 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 109 | Rev 205 | ||
---|---|---|---|
1 | ; new application structure |
1 | ; new application structure |
2 | macro meos_app_start |
2 | macro meos_app_start |
3 | { |
3 | { |
4 | use32 |
4 | use32 |
5 | org 0x0 |
5 | org 0x0 |
6 | 6 | ||
7 | db 'MENUET01' |
7 | db 'MENUET01' |
8 | dd 0x01 |
8 | dd 0x01 |
9 | dd __start |
9 | dd __start |
10 | dd __end |
10 | dd __end |
11 | dd __memory |
11 | dd __memory |
12 | dd __stack |
12 | dd __stack |
13 | 13 | ||
14 | if used __params & ~defined __params |
14 | if used __params & ~defined __params |
15 | dd __params |
15 | dd __params |
16 | else |
16 | else |
17 | dd 0x0 |
17 | dd 0x0 |
18 | end if |
18 | end if |
19 | 19 | ||
20 | dd 0x0 |
20 | dd 0x0 |
21 | } |
21 | } |
22 | MEOS_APP_START fix meos_app_start |
22 | MEOS_APP_START fix meos_app_start |
23 | 23 | ||
24 | macro code |
24 | macro code |
25 | { |
25 | { |
26 | __start: |
26 | __start: |
27 | } |
27 | } |
28 | CODE fix code |
28 | CODE fix code |
29 | 29 | ||
30 | macro data |
30 | macro data |
31 | { |
31 | { |
32 | __data: |
32 | __data: |
33 | } |
33 | } |
34 | DATA fix data |
34 | DATA fix data |
35 | 35 | ||
36 | macro udata |
36 | macro udata |
37 | { |
37 | { |
38 | if used __params & ~defined __params |
38 | if used __params & ~defined __params |
39 | __params: |
39 | __params: |
40 | db 0 |
40 | db 0 |
41 | __end: |
41 | __end: |
42 | rb 255 |
42 | rb 255 |
43 | else |
43 | else |
44 | __end: |
44 | __end: |
45 | end if |
45 | end if |
46 | __udata: |
46 | __udata: |
47 | } |
47 | } |
48 | UDATA fix udata |
48 | UDATA fix udata |
49 | 49 | ||
50 | macro meos_app_end |
50 | macro meos_app_end |
51 | { |
51 | { |
52 | align 32 |
52 | align 32 |
53 | rb 2048 |
53 | rb 2048 |
54 | __stack: |
54 | __stack: |
55 | __memory: |
55 | __memory: |
56 | } |
56 | } |
57 | MEOS_APP_END fix meos_app_end |
57 | MEOS_APP_END fix meos_app_end |
58 | 58 | ||
59 | 59 | ||
60 | ; macro for defining multiline text data |
60 | ; macro for defining multiline text data |
61 | struc mstr [sstring] |
61 | struc mstr [sstring] |
62 | { |
62 | { |
63 | forward |
63 | forward |
64 | local ssize |
64 | local ssize |
65 | virtual at 0 |
65 | virtual at 0 |
66 | db sstring |
66 | db sstring |
67 | ssize = $ |
67 | ssize = $ |
68 | end virtual |
68 | end virtual |
69 | dd ssize |
69 | dd ssize |
70 | db sstring |
70 | db sstring |
71 | common |
71 | common |
72 | dd -1 |
72 | dd -1 |
73 | } |
73 | } |
74 | 74 | ||
75 | 75 | ||
76 | ; strings |
76 | ; strings |
77 | macro sz name,[data] { ; from MFAR [mike.dld] |
77 | macro sz name,[data] { ; from MFAR [mike.dld] |
78 | common |
78 | common |
79 | if used name |
79 | if used name |
80 | label name |
80 | label name |
81 | end if |
81 | end if |
82 | forward |
82 | forward |
83 | if used name |
83 | if used name |
84 | db data |
84 | db data |
85 | end if |
85 | end if |
86 | common |
86 | common |
87 | if used name |
87 | if used name |
88 | .size = $-name |
88 | .size = $-name |
89 | end if |
89 | end if |
90 | } |
90 | } |
91 | 91 | ||
92 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
92 | macro lsz name,[lng,data] { ; from MFAR [mike.dld] |
93 | common |
93 | common |
94 | if used name |
94 | if used name |
95 | label name |
95 | label name |
96 | end if |
96 | end if |
97 | forward |
97 | forward |
98 | if (used name)&(lang eq lng) |
98 | if (used name)&(lang eq lng) |
99 | db data |
99 | db data |
100 | end if |
100 | end if |
101 | common |
101 | common |
102 | if used name |
102 | if used name |
103 | .size = $-name |
103 | .size = $-name |
104 | end if |
104 | end if |
105 | } |
105 | } |
106 | 106 | ||
107 | 107 | ||
108 | 108 | ||
109 | ; easy system call macro |
109 | ; easy system call macro |
110 | macro mpack dest, hsrc, lsrc |
110 | macro mpack dest, hsrc, lsrc |
111 | { |
111 | { |
112 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
112 | if (hsrc eqtype 0) & (lsrc eqtype 0) |
113 | mov dest, (hsrc) shl 16 + lsrc |
113 | mov dest, (hsrc) shl 16 + lsrc |
114 | else |
114 | else |
115 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
115 | if (hsrc eqtype 0) & (~lsrc eqtype 0) |
116 | mov dest, (hsrc) shl 16 |
116 | mov dest, (hsrc) shl 16 |
117 | add dest, lsrc |
117 | add dest, lsrc |
118 | else |
118 | else |
119 | mov dest, hsrc |
119 | mov dest, hsrc |
120 | shl dest, 16 |
120 | shl dest, 16 |
121 | add dest, lsrc |
121 | add dest, lsrc |
122 | end if |
122 | end if |
123 | end if |
123 | end if |
124 | } |
124 | } |
125 | 125 | ||
126 | macro __mov reg,a,b { ; mike.dld |
126 | macro __mov reg,a,b { ; mike.dld |
127 | if (~a eq)&(~b eq) |
127 | if (~a eq)&(~b eq) |
128 | mpack reg,a,b |
128 | mpack reg,a,b |
129 | else if (~a eq)&(b eq) |
129 | else if (~a eq)&(b eq) |
130 | mov reg,a |
130 | mov reg,a |
131 | end if |
131 | end if |
132 | } |
132 | } |
133 | 133 | ||
134 | macro mcall a,b,c,d,e,f { ; mike.dld |
134 | macro mcall a,b,c,d,e,f { ; mike.dld |
135 | __mov eax,a |
135 | __mov eax,a |
136 | __mov ebx,b |
136 | __mov ebx,b |
137 | __mov ecx,c |
137 | __mov ecx,c |
138 | __mov edx,d |
138 | __mov edx,d |
139 | __mov esi,e |
139 | __mov esi,e |
140 | __mov edi,f |
140 | __mov edi,f |
141 | int 0x40 |
141 | int 0x40 |
142 | } |
142 | } |
- | 143 | ||
- | 144 | ||
143 | 145 | ||
144 | ; optimize the code for size |
146 | ; optimize the code for size |
145 | __regs fix |
147 | __regs fix |
146 | 148 | ||
147 | macro add arg1,arg2 |
149 | macro add arg1,arg2 |
148 | { |
150 | { |
149 | if (arg2 eqtype 0) |
151 | if (arg2 eqtype 0) |
150 | if (arg2) = 1 |
152 | if (arg2) = 1 |
151 | inc arg1 |
153 | inc arg1 |
152 | else |
154 | else |
153 | add arg1,arg2 |
155 | add arg1,arg2 |
154 | end if |
156 | end if |
155 | else |
157 | else |
156 | add arg1,arg2 |
158 | add arg1,arg2 |
157 | end if |
159 | end if |
158 | } |
160 | } |
159 | 161 | ||
160 | macro sub arg1,arg2 |
162 | macro sub arg1,arg2 |
161 | { |
163 | { |
162 | if (arg2 eqtype 0) |
164 | if (arg2 eqtype 0) |
163 | if (arg2) = 1 |
165 | if (arg2) = 1 |
164 | dec arg1 |
166 | dec arg1 |
165 | else |
167 | else |
166 | sub arg1,arg2 |
168 | sub arg1,arg2 |
167 | end if |
169 | end if |
168 | else |
170 | else |
169 | sub arg1,arg2 |
171 | sub arg1,arg2 |
170 | end if |
172 | end if |
171 | } |
173 | } |
172 | 174 | ||
173 | macro mov arg1,arg2 |
175 | macro mov arg1,arg2 |
174 | { |
176 | { |
175 | if (arg1 in __regs) & (arg2 eqtype 0) |
177 | if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
176 | if (arg2) = 0 |
178 | if (arg2) = 0 |
177 | xor arg1,arg1 |
179 | xor arg1,arg1 |
178 | else if (arg2) = 1 |
180 | else if (arg2) = 1 |
179 | xor arg1,arg1 |
181 | xor arg1,arg1 |
180 | inc arg1 |
182 | inc arg1 |
181 | else if (arg2) = -1 |
183 | else if (arg2) = -1 |
182 | or arg1,-1 |
184 | or arg1,-1 |
183 | else if (arg2) > -128 & (arg2) < 128 |
185 | else if (arg2) > -128 & (arg2) < 128 |
184 | push arg2 |
186 | push arg2 |
185 | pop arg1 |
187 | pop arg1 |
186 | else |
188 | else |
187 | mov arg1,arg2 |
189 | mov arg1,arg2 |
188 | end if |
190 | end if |
189 | else |
191 | else |
190 | mov arg1,arg2 |
192 | mov arg1,arg2 |
191 | end if |
193 | end if |
192 | } |
194 | } |
193 | 195 | ||
194 | 196 | ||
195 | macro struct name |
197 | macro struct name |
196 | { |
198 | { |
197 | virtual at 0 |
199 | virtual at 0 |
198 | name name |
200 | name name |
199 | sizeof.#name = $ - name |
201 | sizeof.#name = $ - name |
200 | end virtual |
202 | end virtual |
201 | } |
203 | } |
202 | 204 | ||
203 | ; structures used in MeOS |
205 | ; structures used in MeOS |
204 | struc process_information |
206 | struc process_information |
205 | { |
207 | { |
206 | .cpu_usage dd ? ; +0 |
208 | .cpu_usage dd ? ; +0 |
207 | .window_stack_position dw ? ; +4 |
209 | .window_stack_position dw ? ; +4 |
208 | .window_stack_value dw ? ; +6 |
210 | .window_stack_value dw ? ; +6 |
209 | .not_used1 dw ? ; +8 |
211 | .not_used1 dw ? ; +8 |
210 | .process_name rb 12 ; +10 |
212 | .process_name rb 12 ; +10 |
211 | .memory_start dd ? ; +22 |
213 | .memory_start dd ? ; +22 |
212 | .used_memory dd ? ; +26 |
214 | .used_memory dd ? ; +26 |
213 | .PID dd ? ; +30 |
215 | .PID dd ? ; +30 |
214 | .x_start dd ? ; +34 |
216 | .x_start dd ? ; +34 |
215 | .y_start dd ? ; +38 |
217 | .y_start dd ? ; +38 |
216 | .x_size dd ? ; +42 |
218 | .x_size dd ? ; +42 |
217 | .y_size dd ? ; +46 |
219 | .y_size dd ? ; +46 |
218 | .slot_state dw ? ; +50 |
220 | .slot_state dw ? ; +50 |
- | 221 | dw ? ; +52 - reserved |
|
- | 222 | .client_left dd ? ; +54 |
|
- | 223 | .client_top dd ? ; +58 |
|
- | 224 | .client_width dd ? ; +62 |
|
- | 225 | .client_height dd ? ; +66 |
|
- | 226 | .wnd_state db ? ; +70 |
|
219 | rb (1024-52) |
227 | rb (1024-71) |
220 | } |
228 | } |
221 | struct process_information |
229 | struct process_information |
222 | 230 | ||
223 | struc system_colors |
231 | struc system_colors |
224 | { |
232 | { |
225 | .frame dd ? |
233 | .frame dd ? |
226 | .grab dd ? |
234 | .grab dd ? |
227 | .grab_button dd ? |
235 | .grab_button dd ? |
228 | .grab_button_text dd ? |
236 | .grab_button_text dd ? |
229 | .grab_text dd ? |
237 | .grab_text dd ? |
230 | .work dd ? |
238 | .work dd ? |
231 | .work_button dd ? |
239 | .work_button dd ? |
232 | .work_button_text dd ? |
240 | .work_button_text dd ? |
233 | .work_text dd ? |
241 | .work_text dd ? |
234 | .work_graph dd ? |
242 | .work_graph dd ? |
235 | } |
243 | } |
236 | struct system_colors |
244 | struct system_colors |
237 | 245 | ||
238 | 246 | ||
239 | ; constants |
247 | ; constants |
240 | 248 | ||
241 | ; events |
249 | ; events |
242 | EV_IDLE = 0 |
250 | EV_IDLE = 0 |
243 | EV_TIMER = 0 |
251 | EV_TIMER = 0 |
244 | EV_REDRAW = 1 |
252 | EV_REDRAW = 1 |
245 | EV_KEY = 2 |
253 | EV_KEY = 2 |
246 | EV_BUTTON = 3 |
254 | EV_BUTTON = 3 |
247 | EV_EXIT = 4 |
255 | EV_EXIT = 4 |
248 | EV_BACKGROUND = 5 |
256 | EV_BACKGROUND = 5 |
249 | EV_MOUSE = 6 |
257 | EV_MOUSE = 6 |
250 | EV_IPC = 7 |
258 | EV_IPC = 7 |
251 | EV_STACK = 8 |
259 | EV_STACK = 8 |
252 | 260 | ||
253 | ; event mask bits for function 40 |
261 | ; event mask bits for function 40 |
254 | EVM_REDRAW = 1b |
262 | EVM_REDRAW = 1b |
255 | EVM_KEY = 10b |
263 | EVM_KEY = 10b |
256 | EVM_BUTTON = 100b |
264 | EVM_BUTTON = 100b |
257 | EVM_EXIT = 1000b |
265 | EVM_EXIT = 1000b |
258 | EVM_BACKGROUND = 10000b |
266 | EVM_BACKGROUND = 10000b |
259 | EVM_MOUSE = 100000b |
267 | EVM_MOUSE = 100000b |
260 | EVM_IPC = 1000000b |
268 | EVM_IPC = 1000000b |
261 | EVM_STACK = 10000000b> |
269 | EVM_STACK = 10000000b> |