Rev 109 | Go to most recent revision | Only display areas with differences | Ignore 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 | 143 | ||
144 | 144 | ||
145 | - | ||
146 | - | ||
147 | - | ||
148 | - | ||
149 | 145 | ||
150 | ; optimize the code for size |
146 | ; optimize the code for size |
151 | __regs fix |
147 | __regs fix |
152 | 148 | ||
153 | macro add arg1,arg2 |
149 | macro add arg1,arg2 |
154 | { |
150 | { |
155 | if (arg2 eqtype 0) |
151 | if (arg2 eqtype 0) |
156 | if (arg2) = 1 |
152 | if (arg2) = 1 |
157 | inc arg1 |
153 | inc arg1 |
158 | else |
154 | else |
159 | add arg1,arg2 |
155 | add arg1,arg2 |
160 | end if |
156 | end if |
161 | else |
157 | else |
162 | add arg1,arg2 |
158 | add arg1,arg2 |
163 | end if |
159 | end if |
164 | } |
160 | } |
165 | 161 | ||
166 | macro sub arg1,arg2 |
162 | macro sub arg1,arg2 |
167 | { |
163 | { |
168 | if (arg2 eqtype 0) |
164 | if (arg2 eqtype 0) |
169 | if (arg2) = 1 |
165 | if (arg2) = 1 |
170 | dec arg1 |
166 | dec arg1 |
171 | else |
167 | else |
172 | sub arg1,arg2 |
168 | sub arg1,arg2 |
173 | end if |
169 | end if |
174 | else |
170 | else |
175 | sub arg1,arg2 |
171 | sub arg1,arg2 |
176 | end if |
172 | end if |
177 | } |
173 | } |
178 | 174 | ||
179 | macro mov arg1,arg2 |
175 | macro mov arg1,arg2 |
180 | { |
176 | { |
181 | if (arg1 in __regs) & (arg2 eqtype 0) |
177 | if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0')) |
182 | if (arg2) = 0 |
178 | if (arg2) = 0 |
183 | xor arg1,arg1 |
179 | xor arg1,arg1 |
184 | else if (arg2) = 1 |
180 | else if (arg2) = 1 |
185 | xor arg1,arg1 |
181 | xor arg1,arg1 |
186 | inc arg1 |
182 | inc arg1 |
187 | else if (arg2) = -1 |
183 | else if (arg2) = -1 |
188 | or arg1,-1 |
184 | or arg1,-1 |
189 | else if (arg2) > -128 & (arg2) < 128 |
185 | else if (arg2) > -128 & (arg2) < 128 |
190 | push arg2 |
186 | push arg2 |
191 | pop arg1 |
187 | pop arg1 |
192 | else |
188 | else |
193 | mov arg1,arg2 |
189 | mov arg1,arg2 |
194 | end if |
190 | end if |
195 | else |
191 | else |
196 | mov arg1,arg2 |
192 | mov arg1,arg2 |
197 | end if |
193 | end if |
198 | } |
194 | } |
199 | 195 | ||
200 | 196 | ||
201 | macro struct name |
197 | macro struct name |
202 | { |
198 | { |
203 | virtual at 0 |
199 | virtual at 0 |
204 | name name |
200 | name name |
205 | sizeof.#name = $ - name |
201 | sizeof.#name = $ - name |
206 | end virtual |
202 | end virtual |
207 | } |
203 | } |
208 | 204 | ||
209 | ; structures used in MeOS |
205 | ; structures used in MeOS |
210 | struc process_information |
206 | struc process_information |
211 | { |
207 | { |
212 | .cpu_usage dd ? ; +0 |
208 | .cpu_usage dd ? ; +0 |
213 | .window_stack_position dw ? ; +4 |
209 | .window_stack_position dw ? ; +4 |
214 | .window_stack_value dw ? ; +6 |
210 | .window_stack_value dw ? ; +6 |
215 | .not_used1 dw ? ; +8 |
211 | .not_used1 dw ? ; +8 |
216 | .process_name rb 12 ; +10 |
212 | .process_name rb 12 ; +10 |
217 | .memory_start dd ? ; +22 |
213 | .memory_start dd ? ; +22 |
218 | .used_memory dd ? ; +26 |
214 | .used_memory dd ? ; +26 |
219 | .PID dd ? ; +30 |
215 | .PID dd ? ; +30 |
220 | .x_start dd ? ; +34 |
216 | .x_start dd ? ; +34 |
221 | .y_start dd ? ; +38 |
217 | .y_start dd ? ; +38 |
222 | .x_size dd ? ; +42 |
218 | .x_size dd ? ; +42 |
223 | .y_size dd ? ; +46 |
219 | .y_size dd ? ; +46 |
224 | .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 |
|
225 | rb (1024-52) |
227 | rb (1024-71) |
226 | } |
228 | } |
227 | struct process_information |
229 | struct process_information |
228 | 230 | ||
229 | struc system_colors |
231 | struc system_colors |
230 | { |
232 | { |
231 | .frame dd ? |
233 | .frame dd ? |
232 | .grab dd ? |
234 | .grab dd ? |
233 | .grab_button dd ? |
235 | .grab_button dd ? |
234 | .grab_button_text dd ? |
236 | .grab_button_text dd ? |
235 | .grab_text dd ? |
237 | .grab_text dd ? |
236 | .work dd ? |
238 | .work dd ? |
237 | .work_button dd ? |
239 | .work_button dd ? |
238 | .work_button_text dd ? |
240 | .work_button_text dd ? |
239 | .work_text dd ? |
241 | .work_text dd ? |
240 | .work_graph dd ? |
242 | .work_graph dd ? |
241 | } |
243 | } |
242 | struct system_colors |
244 | struct system_colors |
243 | 245 | ||
244 | 246 | ||
245 | ; constants |
247 | ; constants |
246 | 248 | ||
247 | ; events |
249 | ; events |
248 | EV_IDLE = 0 |
250 | EV_IDLE = 0 |
249 | EV_TIMER = 0 |
251 | EV_TIMER = 0 |
250 | EV_REDRAW = 1 |
252 | EV_REDRAW = 1 |
251 | EV_KEY = 2 |
253 | EV_KEY = 2 |
252 | EV_BUTTON = 3 |
254 | EV_BUTTON = 3 |
253 | EV_EXIT = 4 |
255 | EV_EXIT = 4 |
254 | EV_BACKGROUND = 5 |
256 | EV_BACKGROUND = 5 |
255 | EV_MOUSE = 6 |
257 | EV_MOUSE = 6 |
256 | EV_IPC = 7 |
258 | EV_IPC = 7 |
257 | EV_STACK = 8 |
259 | EV_STACK = 8 |
258 | 260 | ||
259 | ; event mask bits for function 40 |
261 | ; event mask bits for function 40 |
260 | EVM_REDRAW = 1b |
262 | EVM_REDRAW = 1b |
261 | EVM_KEY = 10b |
263 | EVM_KEY = 10b |
262 | EVM_BUTTON = 100b |
264 | EVM_BUTTON = 100b |
263 | EVM_EXIT = 1000b |
265 | EVM_EXIT = 1000b |
264 | EVM_BACKGROUND = 10000b |
266 | EVM_BACKGROUND = 10000b |
265 | EVM_MOUSE = 100000b |
267 | EVM_MOUSE = 100000b |
266 | EVM_IPC = 1000000b |
268 | EVM_IPC = 1000000b |
267 | EVM_STACK = 10000000b> |
269 | EVM_STACK = 10000000b> |