Subversion Repositories Kolibri OS

Rev

Rev 5175 | Rev 5218 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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