Subversion Repositories Kolibri OS

Rev

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