Subversion Repositories Kolibri OS

Rev

Rev 5175 | Rev 5256 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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
  79. txt_op db 'Op_code',0
  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
  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
  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_len:dword
  95.         mov esi,dword[str2]
  96.         mov ecx,dword[n_len]
  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. 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
  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
  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'
  215.