Subversion Repositories Kolibri OS

Rev

Rev 5175 | Rev 5218 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5175 Rev 5187
1
format MS COFF
1
format MS COFF
2
public EXPORTS
2
public EXPORTS
3
section '.flat' code readable align 16
3
section '.flat' code readable align 16
4
 
4
 
5
include '../../../../../programs/proc32.inc'
5
include '../../../../../programs/proc32.inc'
6
include '../../../../../programs/macros.inc'
6
include '../../../../../programs/macros.inc'
7
 
7
 
8
DEBUG equ 0
8
DEBUG equ 0
9
 
9
 
10
include 'zgl.inc'
10
include 'zgl.inc'
11
include 'zmath.asm'
11
include 'zmath.asm'
12
include 'clip.asm'
12
include 'clip.asm'
13
include 'vertex.asm'
13
include 'vertex.asm'
14
include 'api.asm'
14
include 'api.asm'
15
include 'list.asm'
15
include 'list.asm'
16
include 'init.asm'
16
include 'init.asm'
17
include 'matrix.asm'
17
include 'matrix.asm'
18
include 'texture.asm'
18
include 'texture.asm'
19
include 'misc.asm'
19
include 'misc.asm'
20
include 'clear.asm'
20
include 'clear.asm'
21
include 'light.asm'
21
include 'light.asm'
22
include 'select.asm'
22
include 'select.asm'
23
;include 'get.asm'
23
;include 'get.asm'
24
;include 'error.asm'
24
;include 'error.asm'
25
include 'zbuffer.asm'
25
include 'zbuffer.asm'
26
include 'zline.asm'
26
include 'zline.asm'
27
;include 'zdither.asm'
27
;include 'zdither.asm'
28
include 'ztriangle.asm'
28
include 'ztriangle.asm'
29
;include 'image_util.asm'
29
;include 'image_util.asm'
30
;include 'msghandling.asm'
30
;include 'msghandling.asm'
31
include 'arrays.asm'
31
include 'arrays.asm'
32
 
32
 
33
include 'kosgl.asm'
33
include 'kosgl.asm'
34
 
34
 
35
if DEBUG
35
if DEBUG
36
include 'info_fun_float.inc'
36
include 'info_fun_float.inc'
37
end if
37
end if
38
 
38
 
39
; ***
39
; ***
40
glVertex2d: ;(double ,double)
40
glVertex2d: ;(double ,double)
41
glVertex2fv: ;(float *)
41
glVertex2fv: ;(float *)
42
glVertex2dv: ;(double *)
42
glVertex2dv: ;(double *)
43
glVertex3d: ;(double ,double ,double)
43
glVertex3d: ;(double ,double ,double)
44
glVertex3dv: ;(double *)
44
glVertex3dv: ;(double *)
45
glVertex4d: ;(double ,double ,double, double )
45
glVertex4d: ;(double ,double ,double, double )
46
glVertex4fv: ;(float *)
46
glVertex4fv: ;(float *)
47
glVertex4dv: ;(double *)
47
glVertex4dv: ;(double *)
48
glColor3d: ;(double ,double ,double)
48
glColor3d: ;(double ,double ,double)
49
glColor3dv: ;(double *)
49
glColor3dv: ;(double *)
50
glColor4d: ;(double ,double ,double, double )
50
glColor4d: ;(double ,double ,double, double )
51
glColor4dv: ;(double *)
51
glColor4dv: ;(double *)
52
glNormal3d: ;(double ,double ,double)
52
glNormal3d: ;(double ,double ,double)
53
glNormal3dv: ;(double *)
53
glNormal3dv: ;(double *)
54
glTexCoord1f: ;(float)
54
glTexCoord1f: ;(float)
55
glTexCoord1d: ;(double)
55
glTexCoord1d: ;(double)
56
glTexCoord1fv: ;(float *)
56
glTexCoord1fv: ;(float *)
57
glTexCoord1dv: ;(double *)
57
glTexCoord1dv: ;(double *)
58
glTexCoord2d: ;(double ,double)
58
glTexCoord2d: ;(double ,double)
59
glTexCoord2dv: ;(double *)
59
glTexCoord2dv: ;(double *)
60
glTexCoord3f: ;(float ,float ,float)
60
glTexCoord3f: ;(float ,float ,float)
61
glTexCoord3d: ;(double ,double ,double)
61
glTexCoord3d: ;(double ,double ,double)
62
glTexCoord3fv: ;(float *)
62
glTexCoord3fv: ;(float *)
63
glTexCoord3dv: ;(double *)
63
glTexCoord3dv: ;(double *)
64
glTexCoord4d: ;(double ,double ,double, double )
64
glTexCoord4d: ;(double ,double ,double, double )
65
glTexCoord4fv: ;(float *)
65
glTexCoord4fv: ;(float *)
66
glTexCoord4dv: ;(double *)
66
glTexCoord4dv: ;(double *)
67
glGenTextures: ;(int n, unsigned int *textures)
67
glGenTextures: ;(int n, unsigned int *textures)
68
glDeleteTextures: ;(int n, const unsigned int *textures)
68
glDeleteTextures: ;(int n, const unsigned int *textures)
69
glGetIntegerv: ;(int pname,int *params)
69
glGetIntegerv: ;(int pname,int *params)
70
glGetFloatv: ;(int pname, float *v)
70
glGetFloatv: ;(int pname, float *v)
71
 
71
 
72
; ***
72
; ***
73
glopLight:
73
glopLight:
74
 
74
 
75
if DEBUG
75
if DEBUG
76
align 4
76
align 4
77
txt_nl db 13,10,0
77
txt_nl db 13,10,0
78
txt_sp db ' ',0
78
txt_sp db ' ',0
79
txt_op db 'Op_code',0
79
txt_op db 'Op_code',0
80
txt_zp_sp db ', ',0
80
txt_zp_sp db ', ',0
81
m_1 db '(1)',13,10,0
81
m_1 db '(1)',13,10,0
82
m_2 db '(2)',13,10,0
82
m_2 db '(2)',13,10,0
83
m_3 db '(3)',13,10,0
83
m_3 db '(3)',13,10,0
84
m_4 db '(4)',13,10,0
84
m_4 db '(4)',13,10,0
85
m_5 db '(5)',13,10,0
85
m_5 db '(5)',13,10,0
-
 
86
m_6 db '(6)',13,10,0
-
 
87
m_7 db '(7)',13,10,0
-
 
88
m_8 db '(8)',13,10,0
-
 
89
m_9 db '(9)',13,10,0
86
 
90
 
87
buf_param rb 80
91
buf_param rb 80
88
 
92
 
89
align 4
93
align 4
90
proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n_len:dword
94
proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n_len:dword
91
	mov esi,dword[str2]
95
	mov esi,dword[str2]
92
	mov ecx,dword[n_len]
96
	mov ecx,dword[n_len]
93
	mov edi,dword[str1]
97
	mov edi,dword[str1]
94
	stdcall str_len,edi
98
	stdcall str_len,edi
95
	add edi,eax
99
	add edi,eax
96
	cld
100
	cld
97
	repne movsb
101
	repne movsb
98
	mov byte[edi],0
102
	mov byte[edi],0
99
	ret
103
	ret
100
endp
104
endp
101
 
105
 
102
;input:
106
;input:
103
; eax - число
107
; eax - число
104
; edi - буфер для строки
108
; edi - буфер для строки
105
; len - длинна буфера
109
; len - длинна буфера
106
;output:
110
;output:
107
align 4
111
align 4
108
proc convert_int_to_str, len:dword
112
proc convert_int_to_str, len:dword
109
pushad
113
pushad
110
	mov esi,[len]
114
	mov esi,[len]
111
	add esi,edi
115
	add esi,edi
112
	dec esi
116
	dec esi
113
	call .str
117
	call .str
114
popad
118
popad
115
	ret
119
	ret
116
endp
120
endp
117
 
121
 
118
align 4
122
align 4
119
.str:
123
.str:
120
	mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число
124
	mov ecx,0x0a ;задается система счисления изменяются регистры ebx,eax,ecx,edx входные параметры eax - число
121
	;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной 
125
	;преревод числа в ASCII строку взодные данные ecx=система счисленя edi адрес куда записывать, будем строку, причем конец переменной 
122
	cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax
126
	cmp eax,ecx ;сравнить если в eax меньше чем в ecx то перейти на @@-1 т.е. на pop eax
123
	jb @f
127
	jb @f
124
		xor edx,edx ;очистить edx
128
		xor edx,edx ;очистить edx
125
		div ecx   ;разделить - остаток в edx
129
		div ecx   ;разделить - остаток в edx
126
		push edx  ;положить в стек
130
		push edx  ;положить в стек
127
		;dec edi  ;смещение необходимое для записи с конца строки
131
		;dec edi  ;смещение необходимое для записи с конца строки
128
		call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx
132
		call .str ;перейти на саму себя т.е. вызвать саму себя и так до того момента пока в eax не станет меньше чем в ecx
129
		pop eax
133
		pop eax
130
	@@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная))
134
	@@: ;cmp al,10 ;проверить не меньше ли значение в al чем 10 (для системы счисленя 10 данная команда - лишная))
131
	cmp edi,esi
135
	cmp edi,esi
132
	jge @f
136
	jge @f
133
		or al,0x30 ;данная команда короче  чем две выше
137
		or al,0x30 ;данная команда короче  чем две выше
134
		stosb	   ;записать элемент из регистра al в ячеку памяти es:edi
138
		stosb	   ;записать элемент из регистра al в ячеку памяти es:edi
135
		mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор
139
		mov byte[edi],0 ;в конец строки ставим 0, что-бы не вылазил мусор
136
	@@:
140
	@@:
137
	ret	   ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться
141
	ret	   ;пока в стеке храниться кол-во вызовов то столько раз мы и будем вызываться
138
end if
142
end if
139
 
143
 
140
align 4
144
align 4
141
f_kosgl_1 db 'kosglMakeCurrent',0
145
f_kosgl_1 db 'kosglMakeCurrent',0
142
err_0 db 'Error while initializing Z buffer',13,10,0
146
err_0 db 'Error while initializing Z buffer',13,10,0
143
f_zb_opn db ' ZB_open',0
147
f_zb_opn db ' ZB_open',0
144
err_1 db 'gl_malloc(sizeof.ZBuffer)==0',13,10,0
148
err_1 db 'gl_malloc(sizeof.ZBuffer)==0',13,10,0
145
err_2 db 'gl_malloc(xsize*ysize*4)==0',13,10,0
149
err_2 db 'gl_malloc(xsize*ysize*4)==0',13,10,0
146
err_3 db 'bit mode not correct',13,10,0
150
err_3 db 'bit mode not correct',13,10,0
147
f_vp db ' glViewport',0
151
f_vp db ' glViewport',0
148
err_4 db 'error while resizing display',13,10,0
152
err_4 db 'error while resizing display',13,10,0
149
err_5 db 'size too small',13,10,0
153
err_5 db 'size too small',13,10,0
150
f_clipcode db ' gl_clipcode',0
154
f_clipcode db ' gl_clipcode',0
151
f_ttv db ' gl_transform_to_viewport',0
155
f_ttv db ' gl_transform_to_viewport',0
152
f_vt db ' gl_vertex_transform',0
156
f_vt db ' gl_vertex_transform',0
153
f_ev db ' gl_eval_viewport',0
157
f_ev db ' gl_eval_viewport',0
154
f_zbz db ' ZB_line_z',0
158
f_zbz db ' ZB_line_z',0
155
f_zb db ' ZB_line',0
159
f_zb db ' ZB_line',0
156
f_cl1 db ' ClipLine1',0
160
f_cl1 db ' ClipLine1',0
157
f_m4m db 'gl_M4_Mul',0
161
f_m4m db 'gl_M4_Mul',0
158
f_m4ml db 'gl_M4_MulLeft',0
162
f_m4ml db 'gl_M4_MulLeft',0
159
f_find_l db 'find_list',0
163
f_find_l db 'find_list',0
160
f_alloc_l db 'alloc_list',0
164
f_alloc_l db 'alloc_list',0
161
f_is_l db 'glIsList',0
165
f_is_l db 'glIsList',0
162
f_gen_l db 'glGenLists',0
166
f_gen_l db 'glGenLists',0
163
f_end_l db 'glEndList',0
167
f_end_l db 'glEndList',0
-
 
168
;f_fill_trf db 'ZB_fillTriangleFlat',0
-
 
169
;f_fill_trrgb db 'ZB_fillTriangleSmooth',0
-
 
170
f_fill_tr db 'ZB_fillTriangle...',0
-
 
171
f_fill_tr_nl db ' lines',0
-
 
172
f_fill_tr_nll db ' len',0
164
 
173
 
165
align 4
174
align 4
166
proc dbg_print, fun:dword, mes:dword
175
proc dbg_print, fun:dword, mes:dword
167
pushad
176
pushad
168
	mov eax,63
177
	mov eax,63
169
	mov ebx,1
178
	mov ebx,1
170
 
179
 
171
	mov esi,[fun]
180
	mov esi,[fun]
172
	@@:
181
	@@:
173
		mov cl,byte[esi]
182
		mov cl,byte[esi]
174
		int 0x40
183
		int 0x40
175
		inc esi
184
		inc esi
176
		cmp byte[esi],0
185
		cmp byte[esi],0
177
		jne @b
186
		jne @b
178
	mov cl,':'
187
	mov cl,':'
179
	int 0x40
188
	int 0x40
180
	mov cl,' '
189
	mov cl,' '
181
	int 0x40
190
	int 0x40
182
	mov esi,[mes]
191
	mov esi,[mes]
183
	@@:
192
	@@:
184
		mov cl,byte[esi]
193
		mov cl,byte[esi]
185
		int 0x40
194
		int 0x40
186
		inc esi
195
		inc esi
187
		cmp byte[esi],0
196
		cmp byte[esi],0
188
		jne @b
197
		jne @b
189
popad
198
popad
190
	ret
199
	ret
191
endp
200
endp
192
 
201
 
193
align 16
202
align 16
194
EXPORTS:
203
EXPORTS:
195
macro E_LIB n
204
macro E_LIB n
196
{
205
{
197
	dd sz_#n, n
206
	dd sz_#n, n
198
}
207
}
199
include 'export.inc'
208
include 'export.inc'
200
	dd 0,0
209
	dd 0,0
201
macro E_LIB n
210
macro E_LIB n
202
{
211
{
203
	sz_#n db `n,0
212
	sz_#n db `n,0
204
}
213
}
205
include 'export.inc'
214
include 'export.inc'