Subversion Repositories Kolibri OS

Rev

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