Rev 5159 | Go to most recent revision | Details | 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 | glGenLists: ;(int range) |
||
68 | glNewList: ;(unsigned int list,int mode) |
||
69 | glEndList: ;(void) |
||
70 | glGenTextures: ;(int n, unsigned int *textures) |
||
71 | glDeleteTextures: ;(int n, const unsigned int *textures) |
||
72 | glGetIntegerv: ;(int pname,int *params) |
||
73 | glGetFloatv: ;(int pname, float *v) |
||
74 | |||
75 | ; *** |
||
76 | glopLight: |
||
77 | glopClear: |
||
78 | glopCallList: |
||
79 | |||
80 | if DEBUG |
||
81 | align 4 |
||
82 | txt_nl db 13,10,0 |
||
83 | txt_sp db ' ',0 |
||
84 | txt_zp_sp db ', ',0 |
||
85 | m_1 db '(1)',13,10,0 |
||
86 | m_2 db '(2)',13,10,0 |
||
87 | m_3 db '(3)',13,10,0 |
||
88 | m_4 db '(4)',13,10,0 |
||
89 | m_5 db '(5)',13,10,0 |
||
90 | |||
91 | buf_param rb 80 |
||
92 | |||
93 | align 4 |
||
94 | proc str_n_cat uses eax ecx edi esi, str1:dword, str2:dword, n:dword |
||
95 | mov esi,dword[str2] |
||
96 | mov ecx,dword[n] |
||
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 |
||
163 | |||
164 | align 4 |
||
165 | proc dbg_print, fun:dword, mes:dword |
||
166 | pushad |
||
167 | mov eax,63 |
||
168 | mov ebx,1 |
||
169 | |||
170 | mov esi,[fun] |
||
171 | @@: |
||
172 | mov cl,byte[esi] |
||
173 | int 0x40 |
||
174 | inc esi |
||
175 | cmp byte[esi],0 |
||
176 | jne @b |
||
177 | mov cl,':' |
||
178 | int 0x40 |
||
179 | mov cl,' ' |
||
180 | int 0x40 |
||
181 | mov esi,[mes] |
||
182 | @@: |
||
183 | mov cl,byte[esi] |
||
184 | int 0x40 |
||
185 | inc esi |
||
186 | cmp byte[esi],0 |
||
187 | jne @b |
||
188 | popad |
||
189 | ret |
||
190 | endp |
||
191 | |||
192 | align 16 |
||
193 | EXPORTS: |
||
194 | macro E_LIB n |
||
195 | { |
||
196 | dd sz_#n, n |
||
197 | } |
||
198 | include 'export.inc' |
||
199 | dd 0,0 |
||
200 | macro E_LIB n |
||
201 | { |
||
202 | sz_#n db `n,0 |
||
203 | } |
||
204 | include 'export.inc' |