Subversion Repositories Kolibri OS

Rev

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

Rev 205 Rev 475
Line -... Line 1...
-
 
1
;~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
-
 
2
macro iglobal {
-
 
3
  IGlobals equ IGlobals,
-
 
4
  macro __IGlobalBlock { }
-
 
5
  
-
 
6
macro uglobal {
-
 
7
  UGlobals equ UGlobals,
-
 
8
  macro __UGlobalBlock { }
-
 
9
 
-
 
10
endg fix }      ; Use endg for ending iglobal and uglobal blocks.
-
 
11
 
-
 
12
 
-
 
13
macro IncludeIGlobals{
-
 
14
  macro IGlobals dummy,[n] \{ __IGlobalBlock
-
 
15
     purge __IGlobalBlock  \}
-
 
16
  match I, IGlobals \{ I \} }
-
 
17
 
-
 
18
macro IncludeUGlobals{
-
 
19
  macro UGlobals dummy,[n] \{
-
 
20
    \common
-
 
21
      \local begin, size
-
 
22
      begin = $
-
 
23
      virtual at $
-
 
24
    \forward
-
 
25
      __UGlobalBlock
-
 
26
      purge __UGlobalBlock
-
 
27
    \common
-
 
28
      size = $ - begin
-
 
29
    end virtual
-
 
30
    rb size
-
 
31
  \}
-
 
32
  match U, UGlobals \{ U \} }
-
 
33
 
-
 
34
uglobal
-
 
35
endg
-
 
36
  
-
 
37
iglobal
-
 
38
endg
-
 
39
 
-
 
40
;~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-
-
 
41
; new application structure
1
; new application structure
42
macro meos_app_start
2
macro meos_app_start
43
 {
3
 {
44
  use32
4
  use32
45
  org 0x0
5
  org 0x0
46
 
Line 28... Line 69...
28
CODE fix code
69
 
Line 29... Line 70...
29
 
70
macro data
30
macro data
71
 {
31
 {
72
  __data:
-
 
73
  IncludeIGlobals
32
  __data:
74
 }
33
 }
75
DATA fix data
Line 34... Line 76...
34
DATA fix data
76
 
35
 
77
macro udata
Line 42... Line 84...
42
      rb 255
84
  else
43
  else
85
    __end:
44
    __end:
86
  end if
45
  end if
87
  __udata:
46
  __udata:
88
  IncludeUGlobals
-
 
89
 }
47
 }
90
UDATA fix udata
48
UDATA fix udata
91
 
Line 49... Line 92...
49
 
92
macro meos_app_end
50
macro meos_app_end
93
 {
Line 70... Line 113...
70
    db sstring
113
  common
71
  common
114
    dd -1
72
    dd -1
115
 }
73
 }
116
 
Line -... Line 117...
-
 
117
; macro for defining multiline text data
-
 
118
struc mls [sstring] {
-
 
119
	forward
-
 
120
	local ssize
-
 
121
	virtual at 0
-
 
122
		db sstring	; mod
-
 
123
		ssize = $
-
 
124
	end virtual
-
 
125
	db ssize
-
 
126
	db sstring
-
 
127
	common
-
 
128
 
-
 
129
	db -1			; mod
-
 
130
}
-
 
131
 
-
 
132
 
Line 74... Line 133...
74
 
133
 
75
 
134
; strings
76
; strings
135
macro sz name,[data] {       ; from MFAR [mike.dld]
77
macro sz name,[data] {       ; from MFAR [mike.dld]
136
  common
Line 129... Line 188...
129
 else if (~a eq)&(b eq)
188
   mov reg,a
130
   mov reg,a
189
 end if
131
 end if
190
}
132
}
191
 
Line -... Line 192...
-
 
192
__CPU_type	equ	p5
-
 
193
SYSENTER_VAR	equ	0
-
 
194
 
133
 
195
macro mcall a,b,c,d,e,f {   ; mike.dld, updated by Ghost for Fast System Calls
-
 
196
 local	..ret_point
134
macro mcall a,b,c,d,e,f {   ; mike.dld
197
 __mov eax,a
135
 __mov eax,a
198
 __mov ebx,b
136
 __mov ebx,b
199
 __mov ecx,c
137
 __mov ecx,c
200
 __mov edx,d
138
 __mov edx,d
201
 __mov esi,e
139
 __mov esi,e
202
 __mov edi,f
-
 
203
 
-
 
204
 if __CPU_type eq p5
-
 
205
	int	0x40
-
 
206
 else
-
 
207
  if __CPU_type eq p6
-
 
208
	push	ebp
-
 
209
	mov	ebp, esp
-
 
210
	push	..ret_point	; it may be 2 or 5 byte
-
 
211
	sysenter
-
 
212
 ..ret_point:
-
 
213
	pop	edx
-
 
214
	pop	ecx
-
 
215
 
-
 
216
  else
-
 
217
   if __CPU_type eq k6
-
 
218
	push	ecx
-
 
219
	syscall
-
 
220
	pop	ecx
-
 
221
   else
-
 
222
	display 'ERROR : unknown CPU type'
140
 __mov edi,f
223
	int	0x40
-
 
224
   end if
-
 
225
  end if
-
 
226
 end if
141
 int   0x40
227
}
Line -... Line 228...
-
 
228
 
142
}
229
 
143
 
230
 
Line 144... Line 231...
144
 
231
 
145
 
232
; optimize the code for size