Subversion Repositories Kolibri OS

Rev

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