home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga 5 / MA_Cover_5.iso / ppc / mesa / src / misc.s < prev    next >
Encoding:
Text File  |  1998-01-31  |  23.3 KB  |  1,354 lines

  1.  
  2. ; Storm C Compiler
  3. ; TEMP:Mesa_2_5/src/misc.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _gl_clear_stencil_buffer
  7.     XREF    _gl_mask_index_span
  8.     XREF    _gl_mask_color_span
  9.     XREF    _gl_update_state
  10.     XREF    _gl_error
  11.     XREF    _gl_write_alpha_span
  12.     XREF    _gl_clear_alpha_buffers
  13.     XREF    _gl_clear_accum_buffer
  14.     XREF    _memset
  15.     XREF    _strcat
  16.     XREF    _strcpy
  17.     XREF    _CC
  18.  
  19.     SECTION "_gl_ClearIndex:0",CODE
  20.  
  21.  
  22. ;void gl_ClearIndex( GLcontext *ctx, GLfloat c )
  23.     XDEF    _gl_ClearIndex
  24. _gl_ClearIndex
  25.     move.l    4(a7),a0
  26.     fmove.s    $8(a7),fp0
  27. L75
  28. ;   if (INSIDE_BEGIN_END(ctx)) 
  29.     move.l    a0,a1
  30.     add.l    #$E08A,a1
  31.     move.l    (a1),d0
  32.     cmp.l    #$1A00,d0
  33.     beq.b    L77
  34. L76
  35. ;      gl_error( ctx, GL_INVALID_OPERATION, "glClearIndex" );
  36.     move.l    #L74,-(a7)
  37.     pea    $502.w
  38.     move.l    a0,-(a7)
  39.     jsr    _gl_error
  40.     add.w    #$C,a7
  41.     rts
  42. L77
  43. ;   ctx->Color.ClearIndex = (GLuint) c;
  44.     fmove.l    fp0,d0
  45.     move.l    d0,$1E74(a0)
  46. ;   if (!ctx->Visual->RGBAflag) 
  47.     move.l    $898(a0),a1
  48.     move.b    (a1),d0
  49.     bne.b    L79
  50. L78
  51. ;      (*ctx->Driver.ClearIndex)( ctx, ctx->Color.ClearIndex );
  52.     lea    $1E74(a0),a1
  53.     move.l    (a1),d0
  54.     move.l    d0,-(a7)
  55.     move.l    a0,-(a7)
  56.     add.w    #$8A0,a0
  57.     move.l    $8(a0),a0
  58.     jsr    (a0)
  59.     addq.w    #$8,a7
  60. L79
  61.     rts
  62.  
  63. L71
  64.     dc.b    '1.1 Mesa 2.5',0
  65. L70
  66.     dc.b    'Brian Paul',0
  67. L72
  68.     dc.b    'GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_logic_op GL_'
  69.     dc.b    'EXT_blend_subtract GL_EXT_paletted_texture GL_EXT_point_paramete'
  70.     dc.b    'rs GL_EXT_polygon_offset GL_EXT_vertex_array GL_EXT_texture_obje'
  71.     dc.b    'ct GL_EXT_texture3D GL_MESA_window_pos GL_MESA_resize_buffers GL'
  72.     dc.b    '_EXT_shared_texture_palette',0
  73. L74
  74.     dc.b    'glClearIndex',0
  75.  
  76.     SECTION "_gl_ClearColor:0",CODE
  77.  
  78.     rts
  79.  
  80. ;void gl_ClearColor( GLcontext *ctx, GLclampf red, GLclampf green,
  81.     XDEF    _gl_ClearColor
  82. _gl_ClearColor
  83.     movem.l    d2/d3,-(a7)
  84.     fmovem.x fp2/fp3,-(a7)
  85.     move.l    $24(a7),a0
  86.     fmove.s    $34(a7),fp0
  87.     fmove.s    $30(a7),fp1
  88.     fmove.s    $2C(a7),fp2
  89.     fmove.s    $28(a7),fp3
  90. L81
  91. ;   if (INSIDE_BEGIN_END(ctx)) 
  92.     move.l    a0,a1
  93.     add.l    #$E08A,a1
  94.     move.l    (a1),d0
  95.     cmp.l    #$1A00,d0
  96.     beq.b    L83
  97. L82
  98. ;      gl_error( ctx, GL_INVALID_OPERATION, "glClearColor" );
  99.     move.l    #L80,-(a7)
  100.     pea    $502.w
  101.     move.l    a0,-(a7)
  102.     jsr    _gl_error
  103.     add.w    #$C,a7
  104.     fmovem.x (a7)+,fp2/fp3
  105.     movem.l    (a7)+,d2/d3
  106.     rts
  107. L83
  108. ;   ctx->Color.ClearColor[0] = CLAMP( red,   0.0F, 1.0F );
  109.     fcmp.s    #$.00000000,fp3
  110.     fboge.b    L85
  111. L84
  112.     fmove.s    #$.00000000,fp3
  113.     bra.b    L89
  114. L85
  115.     fcmp.s    #$.3F800000,fp3
  116.     fbole.b    L87
  117. L86
  118.     fmove.s    #$.3F800000,fp3
  119. L87
  120. L88
  121. L89
  122.     lea    $1E78(a0),a1
  123.     fmove.s    fp3,(a1)
  124. ;   ctx->Color.ClearColor[1] = CLAMP( green, 0.0F, 1.0F );
  125.     fcmp.s    #$.00000000,fp2
  126.     fboge.b    L91
  127. L90
  128.     fmove.s    #$.00000000,fp2
  129.     bra.b    L95
  130. L91
  131.     fcmp.s    #$.3F800000,fp2
  132.     fbole.b    L93
  133. L92
  134.     fmove.s    #$.3F800000,fp2
  135. L93
  136. L94
  137. L95
  138.     lea    $1E78(a0),a1
  139.     addq.w    #4,a1
  140.     fmove.s    fp2,(a1)
  141. ;   ctx->Color.ClearColor[2] = CLAMP( blue,  0.0F, 1.0F );
  142.     fcmp.s    #$.00000000,fp1
  143.     fboge.b    L97
  144. L96
  145.     fmove.s    #$.00000000,fp1
  146.     bra.b    L101
  147. L97
  148.     fcmp.s    #$.3F800000,fp1
  149.     fbole.b    L99
  150. L98
  151.     fmove.s    #$.3F800000,fp1
  152. L99
  153. L100
  154. L101
  155.     lea    $1E78(a0),a1
  156.     addq.w    #$8,a1
  157.     fmove.s    fp1,(a1)
  158. ;   ctx->Color.ClearColor[3] = CLAMP( alpha, 0.0F, 1.0F );
  159.     fcmp.s    #$.00000000,fp0
  160.     fboge.b    L103
  161. L102
  162.     fmove.s    #$.00000000,fp0
  163.     bra.b    L107
  164. L103
  165.     fcmp.s    #$.3F800000,fp0
  166.     fbole.b    L105
  167. L104
  168.     fmove.s    #$.3F800000,fp0
  169. L105
  170. L106
  171. L107
  172.     lea    $1E78(a0),a1
  173.     add.w    #$C,a1
  174.     fmove.s    fp0,(a1)
  175. ;   if (ctx->Visual->RGBAflag) 
  176.     move.l    $898(a0),a1
  177.     move.b    (a1),d0
  178.     beq    L109
  179. L108
  180. ;      GLubyte r = (GLint) (ctx->Color.ClearColor[0] * ctx->Vis
  181.     lea    $1E78(a0),a1
  182.     fmove.s    (a1),fp0
  183.     move.l    $898(a0),a1
  184.     fmove.s    2(a1),fp1
  185.     fmul.x    fp1,fp0
  186.     fmove.l    fp0,d0
  187.     move.b    d0,d3
  188. ;      GLubyte g = (GLint) (ctx->Color.ClearColor[1] * ctx->Vis
  189.     lea    $1E78(a0),a1
  190.     addq.w    #4,a1
  191.     fmove.s    (a1),fp0
  192.     move.l    $898(a0),a1
  193.     fmove.s    6(a1),fp1
  194.     fmul.x    fp1,fp0
  195.     fmove.l    fp0,d0
  196.     move.b    d0,d2
  197. ;      GLubyte b = (GLint) (ctx->Color.ClearColor[2] * ctx->Vis
  198.     lea    $1E78(a0),a1
  199.     addq.w    #$8,a1
  200.     fmove.s    (a1),fp0
  201.     move.l    $898(a0),a1
  202.     fmove.s    $A(a1),fp1
  203.     fmul.x    fp1,fp0
  204.     fmove.l    fp0,d0
  205.     move.b    d0,d1
  206. ;      GLubyte a = (GLint) (ctx->Color.ClearColor[3] * ctx->Vis
  207.     lea    $1E78(a0),a1
  208.     add.w    #$C,a1
  209.     fmove.s    (a1),fp0
  210.     move.l    $898(a0),a1
  211.     fmove.s    $E(a1),fp1
  212.     fmul.x    fp1,fp0
  213.     fmove.l    fp0,d0
  214. ;      (*ctx->Driver.ClearColor)( ctx, r, g, b, a );
  215.     move.b    d0,-(a7)
  216.     move.b    d1,-(a7)
  217.     move.b    d2,-(a7)
  218.     move.b    d3,-(a7)
  219.     move.l    a0,-(a7)
  220.     add.w    #$8A0,a0
  221.     move.l    $C(a0),a0
  222.     jsr    (a0)
  223.     add.w    #$C,a7
  224. L109
  225.     fmovem.x (a7)+,fp2/fp3
  226.     movem.l    (a7)+,d2/d3
  227.     rts
  228.  
  229. L80
  230.     dc.b    'glClearColor',0
  231.  
  232.     SECTION "_clear_color_buffer_with_masking:0",CODE
  233.  
  234.  
  235. ;static void clear_color_buffer_with_masking( GLcontext *ctx )
  236. _clear_color_buffer_with_masking
  237. L127    EQU    -$1F64
  238.     link    a5,#L127
  239.     movem.l    d2-d5/a2,-(a7)
  240.     move.l    $8(a5),a2
  241. L110
  242. ;   if (ctx->Scissor.Enabled) 
  243.     move.l    a2,a0
  244.     add.l    #$D714,a0
  245.     lea    (a0),a0
  246.     move.b    (a0),d0
  247.     beq.b    L112
  248. L111
  249. ;      x = ctx->Buffer->Xmin;
  250.     move.l    $89C(a2),a0
  251.     move.l    $24(a0),d4
  252. ;      y = ctx->Buffer->Ymin;
  253.     move.l    $89C(a2),a0
  254.     move.l    $2C(a0),d3
  255. ;      height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
  256.     move.l    $89C(a2),a0
  257.     move.l    $30(a0),d5
  258.     move.l    $89C(a2),a0
  259.     move.l    $2C(a0),d0
  260.     sub.l    d0,d5
  261.     addq.l    #1,d5
  262. ;      width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
  263.     move.l    $89C(a2),a0
  264.     move.l    $28(a0),d2
  265.     move.l    $89C(a2),a0
  266.     move.l    $24(a0),d0
  267.     sub.l    d0,d2
  268.     addq.l    #1,d2
  269.     bra.b    L113
  270. L112
  271. ;      x = 0;
  272.     moveq    #0,d4
  273. ;      y = 0;
  274.     moveq    #0,d3
  275. ;      height = ctx->Buffer->Height;
  276.     move.l    $89C(a2),a0
  277.     move.l    $8(a0),d5
  278. ;      width  = ctx->Buffer->Width;
  279.     move.l    $89C(a2),a0
  280.     move.l    4(a0),d2
  281. L113
  282. ;   if (ctx->Visual->RGBAflag) 
  283.     move.l    $898(a2),a0
  284.     move.b    (a0),d0
  285.     beq    L120
  286. L114
  287. ;      GLubyte r = ctx->Color.ClearColor[0] * ctx->Visual->RedS
  288.     lea    $1E78(a2),a0
  289.     fmove.s    (a0),fp0
  290.     move.l    $898(a2),a0
  291.     fmove.s    2(a0),fp1
  292.     fmul.x    fp1,fp0
  293.     fmove.l    fp0,d0
  294.     move.b    d0,-$1911(a5)
  295. ;      GLubyte g = ctx->Color.ClearColor[1] * ctx->Visual->Gree
  296.     lea    $1E78(a2),a0
  297.     addq.w    #4,a0
  298.     fmove.s    (a0),fp0
  299.     move.l    $898(a2),a0
  300.     fmove.s    6(a0),fp1
  301.     fmul.x    fp1,fp0
  302.     fmove.l    fp0,d0
  303.     move.b    d0,-$1912(a5)
  304. ;      GLubyte b = ctx->Color.ClearColor[2] * ctx->Visual->Blue
  305.     lea    $1E78(a2),a0
  306.     addq.w    #$8,a0
  307.     fmove.s    (a0),fp0
  308.     move.l    $898(a2),a0
  309.     fmove.s    $A(a0),fp1
  310.     fmul.x    fp1,fp0
  311.     fmove.l    fp0,d0
  312.     move.b    d0,-$1913(a5)
  313. ;      GLubyte a = ctx->Color.ClearColor[3] * ctx->Visual->Alph
  314.     lea    $1E78(a2),a0
  315.     add.w    #$C,a0
  316.     fmove.s    (a0),fp0
  317.     move.l    $898(a2),a0
  318.     fmove.s    $E(a0),fp1
  319.     fmul.x    fp1,fp0
  320.     fmove.l    fp0,d0
  321.     move.b    d0,-$1914(a5)
  322. ;      for (i=0;
  323.     clr.l    -$1918(a5)
  324.     bra    L118
  325. L115
  326. ;     MEMSET( red,   (int) r, width );
  327.     move.l    d2,-(a7)
  328.     moveq    #0,d0
  329.     move.b    -$1911(a5),d0
  330.     move.l    d0,-(a7)
  331.     lea    -$650(a5),a0
  332.     move.l    a0,-(a7)
  333.     jsr    _memset
  334.     add.w    #$C,a7
  335. ;     MEMSET( green, (int) g, width );
  336.     move.l    d2,-(a7)
  337.     moveq    #0,d0
  338.     move.b    -$1912(a5),d0
  339.     move.l    d0,-(a7)
  340.     lea    -$C90(a5),a0
  341.     move.l    a0,-(a7)
  342.     jsr    _memset
  343.     add.w    #$C,a7
  344. ;     MEMSET( blue,  (int) b, width );
  345.     move.l    d2,-(a7)
  346.     moveq    #0,d0
  347.     move.b    -$1913(a5),d0
  348.     move.l    d0,-(a7)
  349.     lea    -$12D0(a5),a0
  350.     move.l    a0,-(a7)
  351.     jsr    _memset
  352.     add.w    #$C,a7
  353. ;     MEMSET( alpha, (int) a, width );
  354.     move.l    d2,-(a7)
  355.     moveq    #0,d0
  356.     move.b    -$1914(a5),d0
  357.     move.l    d0,-(a7)
  358.     lea    -$1910(a5),a0
  359.     move.l    a0,-(a7)
  360.     jsr    _memset
  361.     add.w    #$C,a7
  362. ;     gl_mask_color_span( ctx, width, x, y, red, green, blue, alpha );
  363.     lea    -$1910(a5),a0
  364.     move.l    a0,-(a7)
  365.     lea    -$12D0(a5),a0
  366.     move.l    a0,-(a7)
  367.     lea    -$C90(a5),a0
  368.     move.l    a0,-(a7)
  369.     lea    -$650(a5),a0
  370.     move.l    a0,-(a7)
  371.     move.l    d3,-(a7)
  372.     move.l    d4,-(a7)
  373.     move.l    d2,-(a7)
  374.     move.l    a2,-(a7)
  375.     jsr    _gl_mask_color_span
  376.     add.w    #$20,a7
  377. ;     (*ctx->Driver.WriteColorSpan)( ctx,
  378.     clr.l    -(a7)
  379.     lea    -$1910(a5),a0
  380.     move.l    a0,-(a7)
  381.     lea    -$12D0(a5),a0
  382.     move.l    a0,-(a7)
  383.     lea    -$C90(a5),a0
  384.     move.l    a0,-(a7)
  385.     lea    -$650(a5),a0
  386.     move.l    a0,-(a7)
  387.     move.l    d3,-(a7)
  388.     move.l    d4,-(a7)
  389.     move.l    d2,-(a7)
  390.     move.l    a2,-(a7)
  391.     lea    $8A0(a2),a0
  392.     move.l    $24(a0),a0
  393.     jsr    (a0)
  394.     add.w    #$24,a7
  395. ;     if (ctx->RasterMask & ALPHABUF_BIT) 
  396.     move.l    a2,a0
  397.     add.l    #$E096,a0
  398.     move.l    (a0),d0
  399.     and.l    #$100,d0
  400.     beq.b    L117
  401. L116
  402. ;        gl_write_alpha_span( ctx, width, x, y, alpha, NULL );
  403.     clr.l    -(a7)
  404.     lea    -$1910(a5),a0
  405.     move.l    a0,-(a7)
  406.     move.l    d3,-(a7)
  407.     move.l    d4,-(a7)
  408.     move.l    d2,-(a7)
  409.     move.l    a2,-(a7)
  410.     jsr    _gl_write_alpha_span
  411.     add.w    #$18,a7
  412. L117
  413.     addq.l    #1,-$1918(a5)
  414.     addq.l    #1,d3
  415. L118
  416.     move.l    -$1918(a5),d0
  417.     cmp.l    d5,d0
  418.     blt    L115
  419. L119
  420.     bra    L126
  421. L120
  422. ;      MEMSET( mask, 1, width );
  423.     move.l    d2,-(a7)
  424.     pea    1.w
  425.     lea    -$1F50(a5),a0
  426.     move.l    a0,-(a7)
  427.     jsr    _memset
  428.     add.w    #$C,a7
  429. ;      for (i=0;
  430.     clr.l    -$1F54(a5)
  431.     bra.b    L125
  432. L121
  433. ;     for (j=0;
  434.     moveq    #0,d0
  435.     bra.b    L123
  436. L122
  437. ;        indx[j] = ctx->Color.ClearIndex;
  438.     lea    $1E74(a2),a0
  439.     move.l    (a0),d1
  440.     lea    -$1910(a5),a0
  441.     lea    0(a0,d0.l*4),a0
  442.     move.l    d1,(a0)
  443.     addq.l    #1,d0
  444. L123
  445.     cmp.l    d2,d0
  446.     blt.b    L122
  447. L124
  448. ;     gl_mask_index_span( ctx, width, x, y, indx );
  449.     lea    -$1910(a5),a0
  450.     move.l    a0,-(a7)
  451.     move.l    d3,-(a7)
  452.     move.l    d4,-(a7)
  453.     move.l    d2,-(a7)
  454.     move.l    a2,-(a7)
  455.     jsr    _gl_mask_index_span
  456.     add.w    #$14,a7
  457. ;     (*ctx->Driver.WriteIndexSpan)( ctx, width, x, y, indx, mask );
  458.     lea    -$1F50(a5),a0
  459.     move.l    a0,-(a7)
  460.     lea    -$1910(a5),a0
  461.     move.l    a0,-(a7)
  462.     move.l    d3,-(a7)
  463.     move.l    d4,-(a7)
  464.     move.l    d2,-(a7)
  465.     move.l    a2,-(a7)
  466.     lea    $8A0(a2),a0
  467.     move.l    $34(a0),a0
  468.     jsr    (a0)
  469.     add.w    #$18,a7
  470.     addq.l    #1,-$1F54(a5)
  471.     addq.l    #1,d3
  472. L125
  473.     move.l    -$1F54(a5),d0
  474.     cmp.l    d5,d0
  475.     blt.b    L121
  476. L126
  477.     movem.l    (a7)+,d2-d5/a2
  478.     unlk    a5
  479.     rts
  480.  
  481.     SECTION "_clear_color_buffers:0",CODE
  482.  
  483.  
  484. ;static void clear_color_buffers( GLcontext *ctx )
  485. _clear_color_buffers
  486.     movem.l    d2-d4/a2,-(a7)
  487.     move.l    $14(a7),a2
  488. L128
  489. ;   if (ctx->Color.SWmasking) 
  490.     lea    $1E74(a2),a0
  491.     move.b    $1C(a0),d0
  492.     beq.b    L130
  493. L129
  494. ;      clear_color_buffer_with_masking( ctx );
  495.     move.l    a2,-(a7)
  496.     jsr    _clear_color_buffer_with_masking
  497.     addq.w    #4,a7
  498.     bra    L132
  499. L130
  500. ;      GLint x = ctx->Buffer->Xmin;
  501.     move.l    $89C(a2),a0
  502.     move.l    $24(a0),d4
  503. ;      GLint y = ctx->Buffer->Ymin;
  504.     move.l    $89C(a2),a0
  505.     move.l    $2C(a0),d3
  506. ;      GLint height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
  507.     move.l    $89C(a2),a0
  508.     move.l    $30(a0),d1
  509.     move.l    $89C(a2),a0
  510.     move.l    $2C(a0),d0
  511.     sub.l    d0,d1
  512.     addq.l    #1,d1
  513. ;      GLint width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
  514.     move.l    $89C(a2),a0
  515.     move.l    $28(a0),d0
  516.     move.l    $89C(a2),a0
  517.     move.l    $24(a0),d2
  518.     sub.l    d2,d0
  519.     addq.l    #1,d0
  520. ;      (*ctx->Driver.Clear)( ctx, !ctx->Scissor.Enabled,
  521.     move.l    d1,-(a7)
  522.     move.l    d0,-(a7)
  523.     move.l    d3,-(a7)
  524.     move.l    d4,-(a7)
  525.     move.l    a2,a0
  526.     add.l    #$D714,a0
  527.     lea    (a0),a0
  528.     move.b    (a0),d0
  529.     seq    d0
  530.     and.l    #1,d0
  531.     move.b    d0,-(a7)
  532.     move.l    a2,-(a7)
  533.     lea    $8A0(a2),a0
  534.     move.l    $10(a0),a0
  535.     jsr    (a0)
  536.     add.w    #$16,a7
  537. ;      if (ctx->RasterMask & ALPHABUF_BIT) 
  538.     move.l    a2,a0
  539.     add.l    #$E096,a0
  540.     move.l    (a0),d0
  541.     and.l    #$100,d0
  542.     beq.b    L132
  543. L131
  544. ;     gl_clear_alpha_buffers( ctx );
  545.     move.l    a2,-(a7)
  546.     jsr    _gl_clear_alpha_buffers
  547.     addq.w    #4,a7
  548. L132
  549. ;   if (ctx->RasterMask & FRONT_AND_BACK_BIT) 
  550.     move.l    a2,a0
  551.     add.l    #$E096,a0
  552.     move.l    (a0),d0
  553.     and.l    #$400,d0
  554.     beq    L137
  555. L133
  556. ;      (*ctx->Driver.SetBuffer)( ctx, GL_BACK );
  557.     pea    $405.w
  558.     move.l    a2,-(a7)
  559.     lea    $8A0(a2),a0
  560.     move.l    $1C(a0),a0
  561.     jsr    (a0)
  562.     addq.w    #$8,a7
  563. ;      if (ctx->Color.SWmasking) 
  564.     lea    $1E74(a2),a0
  565.     move.b    $1C(a0),d0
  566.     beq.b    L135
  567. L134
  568. ;     clear_color_buffer_with_masking( ctx );
  569.     move.l    a2,-(a7)
  570.     jsr    _clear_color_buffer_with_masking
  571.     addq.w    #4,a7
  572.     bra.b    L136
  573. L135
  574. ;     GLint x = ctx->Buffer->Xmin;
  575.     move.l    $89C(a2),a0
  576.     move.l    $24(a0),d4
  577. ;     GLint y = ctx->Buffer->Ymin;
  578.     move.l    $89C(a2),a0
  579.     move.l    $2C(a0),d3
  580. ;     GLint height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
  581.     move.l    $89C(a2),a0
  582.     move.l    $30(a0),d1
  583.     move.l    $89C(a2),a0
  584.     move.l    $2C(a0),d0
  585.     sub.l    d0,d1
  586.     addq.l    #1,d1
  587. ;     GLint width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
  588.     move.l    $89C(a2),a0
  589.     move.l    $28(a0),d0
  590.     move.l    $89C(a2),a0
  591.     move.l    $24(a0),d2
  592.     sub.l    d2,d0
  593.     addq.l    #1,d0
  594. ;     (*ctx->Driver.Clear)( ctx, !ctx->Scissor.Enabled,
  595.     move.l    d1,-(a7)
  596.     move.l    d0,-(a7)
  597.     move.l    d3,-(a7)
  598.     move.l    d4,-(a7)
  599.     move.l    a2,a0
  600.     add.l    #$D714,a0
  601.     lea    (a0),a0
  602.     move.b    (a0),d0
  603.     seq    d0
  604.     and.l    #1,d0
  605.     move.b    d0,-(a7)
  606.     move.l    a2,-(a7)
  607.     lea    $8A0(a2),a0
  608.     move.l    $10(a0),a0
  609.     jsr    (a0)
  610.     add.w    #$16,a7
  611. L136
  612. ;      (*ctx->Driver.SetBuffer)( ctx, GL_FRONT );
  613.     pea    $404.w
  614.     move.l    a2,-(a7)
  615.     lea    $8A0(a2),a0
  616.     move.l    $1C(a0),a0
  617.     jsr    (a0)
  618.     addq.w    #$8,a7
  619. L137
  620.     movem.l    (a7)+,d2-d4/a2
  621.     rts
  622.  
  623.     SECTION "_gl_Clear:0",CODE
  624.  
  625.  
  626. ;void gl_Clear( GLcontext *ctx, GLbitfield mask )
  627.     XDEF    _gl_Clear
  628. _gl_Clear
  629.     movem.l    d2/a2,-(a7)
  630.     move.l    $10(a7),d2
  631.     move.l    $C(a7),a2
  632. L139
  633. ;   if (INSIDE_BEGIN_END(ctx)) 
  634.     move.l    a2,a0
  635.     add.l    #$E08A,a0
  636.     move.l    (a0),d0
  637.     cmp.l    #$1A00,d0
  638.     beq.b    L141
  639. L140
  640. ;      gl_error( ctx, GL_INVALID_OPERATION, "glClear" );
  641.     move.l    #L138,-(a7)
  642.     pea    $502.w
  643.     move.l    a2,-(a7)
  644.     jsr    _gl_error
  645.     add.w    #$C,a7
  646.     movem.l    (a7)+,d2/a2
  647.     rts
  648. L141
  649. ;   if (ctx->RenderMode==GL_RENDER) 
  650.     move.l    a2,a0
  651.     add.l    #$E086,a0
  652.     move.l    (a0),d0
  653.     cmp.l    #$1C00,d0
  654.     bne.b    L152
  655. L142
  656. ;      if (ctx->NewState) 
  657.     move.l    a2,a0
  658.     add.l    #$E082,a0
  659.     move.l    (a0),d0
  660.     beq.b    L144
  661. L143
  662. ;     gl_update_state( ctx );
  663.     move.l    a2,-(a7)
  664.     jsr    _gl_update_state
  665.     addq.w    #4,a7
  666. L144
  667. ;      if (mask & GL_COLOR_BUFFER_BIT)   
  668.     move.l    d2,d0
  669.     and.l    #$4000,d0
  670.     beq.b    L146
  671. L145
  672. ;      if (mask & GL_COLOR_BU
  673.     move.l    a2,-(a7)
  674.     jsr    _clear_color_buffers
  675.     addq.w    #4,a7
  676. L146
  677. ;      if (mask & GL_DEPTH_BUFFER_BIT)   
  678.     move.l    d2,d0
  679.     and.l    #$100,d0
  680.     beq.b    L148
  681. L147
  682. ;      if (mask & GL_DEPTH_BU
  683.     move.l    a2,-(a7)
  684.     lea    $8A0(a2),a0
  685.     move.l    $78(a0),a0
  686.     jsr    (a0)
  687.     addq.w    #4,a7
  688. L148
  689. ;      if (mask & GL_ACCUM_BUFFER_BIT)   
  690.     move.l    d2,d0
  691.     and.l    #$200,d0
  692.     beq.b    L150
  693. L149
  694. ;      if (mask & GL_ACCUM_BU
  695.     move.l    a2,-(a7)
  696.     jsr    _gl_clear_accum_buffer
  697.     addq.w    #4,a7
  698. L150
  699. ;      if (mask & GL_STENCIL_BUFFER_BIT) 
  700.     and.l    #$400,d2
  701.     beq.b    L152
  702. L151
  703. ;      if (mask & GL_STENCIL_
  704.     move.l    a2,-(a7)
  705.     jsr    _gl_clear_stencil_buffer
  706.     addq.w    #4,a7
  707. L152
  708.     movem.l    (a7)+,d2/a2
  709.     rts
  710.  
  711. L138
  712.     dc.b    'glClear',0
  713.  
  714.     SECTION "_gl_GetString:0",CODE
  715.  
  716.  
  717. ;const GLubyte *gl_GetString( GLcontext *ctx, GLenum name )
  718.     XDEF    _gl_GetString
  719. _gl_GetString
  720.     move.l    a2,-(a7)
  721.     move.l    $C(a7),d1
  722.     move.l    $8(a7),a2
  723. L156
  724. ;   if (INSIDE_BEGIN_END(ctx)) 
  725.     move.l    a2,a0
  726.     add.l    #$E08A,a0
  727.     move.l    (a0),d0
  728.     cmp.l    #$1A00,d0
  729.     beq.b    L158
  730. L157
  731. ;      gl_error( ctx, GL_INVALID_OPERATION, "glGetString" );
  732.     move.l    #L153,-(a7)
  733.     pea    $502.w
  734.     move.l    a2,-(a7)
  735.     jsr    _gl_error
  736.     add.w    #$C,a7
  737.     moveq    #0,d0
  738.     move.l    (a7)+,a2
  739.     rts
  740. L158
  741. ;   switch (name)
  742.     cmp.l    #$1F02,d1
  743.     beq    L163
  744.     bgt.b    L166
  745.     cmp.l    #$1F00,d1
  746.     beq.b    L159
  747.     cmp.l    #$1F01,d1
  748.     beq.b    L160
  749.     bra    L165
  750. L166
  751.     cmp.l    #$1F03,d1
  752.     beq.b    L164
  753.     bra.b    L165
  754. ;      
  755. L159
  756.     move.l    _vendor___gl_GetString,d0
  757.     move.l    (a7)+,a2
  758.     rts
  759. L160
  760. ;     strcpy(renderer, "Mesa");
  761.     move.l    #L154,-(a7)
  762.     move.l    #_renderer___gl_GetString,-(a7)
  763.     jsr    _strcpy
  764.     addq.w    #$8,a7
  765. ;     if (ctx->Driver.RendererString) 
  766.     lea    $8A0(a2),a0
  767.     move.l    (a0),a0
  768.     cmp.w    #0,a0
  769.     beq.b    L162
  770. L161
  771. ;        strcat(renderer, " ");
  772.     move.l    #L155,-(a7)
  773.     move.l    #_renderer___gl_GetString,-(a7)
  774.     jsr    _strcat
  775.     addq.w    #$8,a7
  776. ;        strcat(renderer, (*ctx->Driver.RendererString)());
  777.     lea    $8A0(a2),a0
  778.     move.l    (a0),a0
  779.     jsr    (a0)
  780.     move.l    d0,-(a7)
  781.     move.l    #_renderer___gl_GetString,-(a7)
  782.     jsr    _strcat
  783.     addq.w    #$8,a7
  784. L162
  785.     move.l    #_renderer___gl_GetString,d0
  786.     move.l    (a7)+,a2
  787.     rts
  788. L163
  789.     move.l    _version___gl_GetString,d0
  790.     move.l    (a7)+,a2
  791.     rts
  792. L164
  793.     move.l    _extensions___gl_GetString,d0
  794.     move.l    (a7)+,a2
  795.     rts
  796. L165
  797. ;     gl_error( ctx, GL_INVALID_ENUM, "glGetString" );
  798.     move.l    #L153,-(a7)
  799.     pea    $500.w
  800.     move.l    a2,-(a7)
  801.     jsr    _gl_error
  802.     add.w    #$C,a7
  803.     moveq    #0,d0
  804.     move.l    (a7)+,a2
  805.     rts
  806.  
  807. L155
  808.     dc.b    ' ',0
  809. L154
  810.     dc.b    'Mesa',0
  811. L153
  812.     dc.b    'glGetString',0
  813.  
  814.     SECTION "_gl_GetString:1",DATA
  815.  
  816. _vendor___gl_GetString
  817.     dc.l    L70
  818. _version___gl_GetString
  819.     dc.l    L71
  820. _extensions___gl_GetString
  821.     dc.l    L72
  822.  
  823.     SECTION "_gl_GetString:2",BSS
  824.  
  825. _renderer___gl_GetString
  826.     ds.b    1000
  827.  
  828.     SECTION "_gl_Finish:0",CODE
  829.  
  830.  
  831. ;void gl_Finish( GLcontext *ctx )
  832.     XDEF    _gl_Finish
  833. _gl_Finish
  834.     move.l    4(a7),a0
  835. L168
  836. ;   if (INSIDE_BEGIN_END(ctx)) 
  837.     move.l    a0,a1
  838.     add.l    #$E08A,a1
  839.     move.l    (a1),d0
  840.     cmp.l    #$1A00,d0
  841.     beq.b    L170
  842. L169
  843. ;      gl_error( ctx, GL_INVALID_OPERATION, "glFinish" );
  844.     move.l    #L167,-(a7)
  845.     pea    $502.w
  846.     move.l    a0,-(a7)
  847.     jsr    _gl_error
  848.     add.w    #$C,a7
  849.     rts
  850. L170
  851. ;   if (ctx->Driver.Finish) 
  852.     lea    $8A0(a0),a1
  853.     move.l    $54(a1),a1
  854.     cmp.w    #0,a1
  855.     beq.b    L172
  856. L171
  857. ;      (*ctx->Driver.Finish)( ctx );
  858.     move.l    a0,-(a7)
  859.     add.w    #$8A0,a0
  860.     move.l    $54(a0),a0
  861.     jsr    (a0)
  862.     addq.w    #4,a7
  863. L172
  864.     rts
  865.  
  866. L167
  867.     dc.b    'glFinish',0
  868.  
  869.     SECTION "_gl_Flush:0",CODE
  870.  
  871.  
  872. ;void gl_Flush( GLcontext *ctx )
  873.     XDEF    _gl_Flush
  874. _gl_Flush
  875.     move.l    4(a7),a0
  876. L174
  877. ;   if (INSIDE_BEGIN_END(ctx)) 
  878.     move.l    a0,a1
  879.     add.l    #$E08A,a1
  880.     move.l    (a1),d0
  881.     cmp.l    #$1A00,d0
  882.     beq.b    L176
  883. L175
  884. ;      gl_error( ctx, GL_INVALID_OPERATION, "glFlush" );
  885.     move.l    #L173,-(a7)
  886.     pea    $502.w
  887.     move.l    a0,-(a7)
  888.     jsr    _gl_error
  889.     add.w    #$C,a7
  890.     rts
  891. L176
  892. ;   if (ctx->Driver.Flush) 
  893.     lea    $8A0(a0),a1
  894.     move.l    $58(a1),a1
  895.     cmp.w    #0,a1
  896.     beq.b    L178
  897. L177
  898. ;      (*ctx->Driver.Flush)( ctx );
  899.     move.l    a0,-(a7)
  900.     add.w    #$8A0,a0
  901.     move.l    $58(a0),a0
  902.     jsr    (a0)
  903.     addq.w    #4,a7
  904. L178
  905.     rts
  906.  
  907. L173
  908.     dc.b    'glFlush',0
  909.  
  910.     SECTION "_gl_Hint:0",CODE
  911.  
  912.  
  913. ;void gl_Hint( GLcontext *ctx, GLenum target, GLenum mode )
  914.     XDEF    _gl_Hint
  915. _gl_Hint
  916.     movem.l    d2/a2,-(a7)
  917.     move.l    $14(a7),d0
  918.     move.l    $10(a7),d2
  919.     move.l    $C(a7),a2
  920. L182
  921. ;   if (INSIDE_BEGIN_END(ctx)) 
  922.     move.l    a2,a0
  923.     add.l    #$E08A,a0
  924.     move.l    (a0),d1
  925.     cmp.l    #$1A00,d1
  926.     beq.b    L184
  927. L183
  928. ;      gl_error( ctx, GL_INVALID_OPERATION, "glHint" );
  929.     move.l    #L179,-(a7)
  930.     pea    $502.w
  931.     move.l    a2,-(a7)
  932.     jsr    _gl_error
  933.     add.w    #$C,a7
  934.     movem.l    (a7)+,d2/a2
  935.     rts
  936. L184
  937. ;   if (mode!=GL_DONT_CARE && mode!=GL_FASTEST && mode!=GL_NICEST)
  938.     cmp.l    #$1100,d0
  939.     beq.b    L188
  940. L185
  941.     cmp.l    #$1101,d0
  942.     beq.b    L188
  943. L186
  944.     cmp.l    #$1102,d0
  945.     beq.b    L188
  946. L187
  947. ;      gl_error( ctx, GL_INVALID_ENUM, "glHint(mode)" );
  948.     move.l    #L180,-(a7)
  949.     pea    $500.w
  950.     move.l    a2,-(a7)
  951.     jsr    _gl_error
  952.     add.w    #$C,a7
  953.     movem.l    (a7)+,d2/a2
  954.     rts
  955. L188
  956. ;   switch (target)
  957.     cmp.l    #$C52,d2
  958.     beq.b    L190
  959.     bgt.b    L196
  960.     cmp.l    #$C50,d2
  961.     beq.b    L191
  962.     cmp.l    #$C51,d2
  963.     beq.b    L192
  964.     bra.b    L194
  965. L196
  966.     cmp.l    #$C53,d2
  967.     beq.b    L193
  968.     cmp.l    #$C54,d2
  969.     beq.b    L189
  970.     bra.b    L194
  971. ;      
  972. L189
  973. ;     ctx->Hint.Fog = mode;
  974.     move.l    d0,$1F9C(a2)
  975. ;     
  976.     bra.b    L195
  977. L190
  978. ;     ctx->Hint.LineSmooth = mode;
  979.     move.l    d0,$1F94(a2)
  980. ;     
  981.     bra.b    L195
  982. L191
  983. ;     ctx->Hint.PerspectiveCorrection = mode;
  984.     move.l    d0,$1F8C(a2)
  985. ;     
  986.     bra.b    L195
  987. L192
  988. ;     ctx->Hint.PointSmooth = mode;
  989.     move.l    d0,$1F90(a2)
  990. ;     
  991.     bra.b    L195
  992. L193
  993. ;     ctx->Hint.PolygonSmooth = mode;
  994.     move.l    d0,$1F98(a2)
  995. ;     
  996.     bra.b    L195
  997. L194
  998. ;     gl_error( ctx, GL_INVALID_ENUM, "glHint(target)" );
  999.     move.l    #L181,-(a7)
  1000.     pea    $500.w
  1001.     move.l    a2,-(a7)
  1002.     jsr    _gl_error
  1003.     add.w    #$C,a7
  1004. L195
  1005. ;   ctx->NewState |= NEW_ALL;
  1006.     move.l    a2,a0
  1007.     add.l    #$E082,a0
  1008.     move.l    (a0),d0
  1009.     or.l    #$F,d0
  1010.     move.l    a2,a0
  1011.     add.l    #$E082,a0
  1012.     move.l    d0,(a0)
  1013. ;    i++;
  1014.     movem.l    (a7)+,d2/a2
  1015.     rts
  1016.  
  1017. L179
  1018.     dc.b    'glHint',0
  1019. L180
  1020.     dc.b    'glHint(mode)',0
  1021. L181
  1022.     dc.b    'glHint(target)',0
  1023.  
  1024.     SECTION "_gl_DrawBuffer:0",CODE
  1025.  
  1026.  
  1027. ;void gl_DrawBuffer( GLcontext *ctx, GLenum mode )
  1028.     XDEF    _gl_DrawBuffer
  1029. _gl_DrawBuffer
  1030.     movem.l    d2/a2,-(a7)
  1031.     move.l    $10(a7),d2
  1032.     move.l    $C(a7),a2
  1033. L198
  1034. ;   if (INSIDE_BEGIN_END(ctx)) 
  1035.     move.l    a2,a0
  1036.     add.l    #$E08A,a0
  1037.     move.l    (a0),d0
  1038.     cmp.l    #$1A00,d0
  1039.     beq.b    L200
  1040. L199
  1041. ;      gl_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer" );
  1042.     move.l    #L197,-(a7)
  1043.     pea    $502.w
  1044.     move.l    a2,-(a7)
  1045.     jsr    _gl_error
  1046.     add.w    #$C,a7
  1047.     movem.l    (a7)+,d2/a2
  1048.     rts
  1049. L200
  1050. ;   switch (mode)
  1051.     move.l    d2,d0
  1052.     cmp.l    #$404,d0
  1053.     beq.b    L201
  1054.     bgt.b    L211
  1055.     cmp.l    #$401,d0
  1056.     beq    L208
  1057.     bgt.b    L212
  1058.     cmp.l    #0,d0
  1059.     beq    L207
  1060.     cmp.l    #$400,d0
  1061.     beq.b    L201
  1062.     bra    L209
  1063. L212
  1064.     cmp.l    #$402,d0
  1065.     beq    L204
  1066.     cmp.l    #$403,d0
  1067.     beq    L208
  1068.     bra    L209
  1069. L211
  1070.     cmp.l    #$407,d0
  1071.     beq    L208
  1072.     bgt.b    L213
  1073.     cmp.l    #$405,d0
  1074.     beq    L204
  1075.     cmp.l    #$406,d0
  1076.     beq    L208
  1077.     bra    L209
  1078. L213
  1079.     cmp.l    #$408,d0
  1080.     beq.b    L201
  1081.     cmp.l    #$409,d0
  1082.     beq    L208
  1083.     bra    L209
  1084. ;      
  1085. L201
  1086. ;     if ( (*ctx->Driver.SetBuffer)( ctx, GL_FRONT ) == GL_FALSE ) 
  1087.     pea    $404.w
  1088.     move.l    a2,-(a7)
  1089.     lea    $8A0(a2),a0
  1090.     move.l    $1C(a0),a0
  1091.     jsr    (a0)
  1092.     addq.w    #$8,a7
  1093.     tst.b    d0
  1094.     bne.b    L203
  1095. L202
  1096. ;        gl_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" );
  1097.     move.l    #L197,-(a7)
  1098.     pea    $500.w
  1099.     move.l    a2,-(a7)
  1100.     jsr    _gl_error
  1101.     add.w    #$C,a7
  1102.     movem.l    (a7)+,d2/a2
  1103.     rts
  1104. L203
  1105. ;     ctx->Color.DrawBuffer = mode;
  1106.     move.l    d2,$1E92(a2)
  1107. ;     ctx->Buffer->Alpha = ctx->Buffer->FrontAlpha;
  1108.     move.l    $89C(a2),a0
  1109.     move.l    $18(a0),a1
  1110.     move.l    $89C(a2),a0
  1111.     move.l    a1,$20(a0)
  1112. ;     ctx->NewState |= NEW_RASTER_OPS;
  1113.     move.l    a2,a0
  1114.     add.l    #$E082,a0
  1115.     move.l    (a0),d0
  1116.     or.l    #2,d0
  1117.     move.l    a2,a0
  1118.     add.l    #$E082,a0
  1119.     move.l    d0,(a0)
  1120. ;     
  1121.     bra    L210
  1122. L204
  1123. ;     if ( (*ctx->Driver.SetBuffer)( ctx, GL_BACK ) == GL_FALSE) 
  1124.     pea    $405.w
  1125.     move.l    a2,-(a7)
  1126.     lea    $8A0(a2),a0
  1127.     move.l    $1C(a0),a0
  1128.     jsr    (a0)
  1129.     addq.w    #$8,a7
  1130.     tst.b    d0
  1131.     bne.b    L206
  1132. L205
  1133. ;        gl_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" );
  1134.     move.l    #L197,-(a7)
  1135.     pea    $500.w
  1136.     move.l    a2,-(a7)
  1137.     jsr    _gl_error
  1138.     add.w    #$C,a7
  1139.     movem.l    (a7)+,d2/a2
  1140.     rts
  1141. L206
  1142. ;     ctx->Color.DrawBuffer = mode;
  1143.     move.l    d2,$1E92(a2)
  1144. ;     ctx->Buffer->Alpha = ctx->Buffer->BackAlpha;
  1145.     move.l    $89C(a2),a0
  1146.     move.l    $1C(a0),a1
  1147.     move.l    $89C(a2),a0
  1148.     move.l    a1,$20(a0)
  1149. ;     ctx->NewState |= NEW_RASTER_OPS;
  1150.     move.l    a2,a0
  1151.     add.l    #$E082,a0
  1152.     move.l    (a0),d0
  1153.     or.l    #2,d0
  1154.     move.l    a2,a0
  1155.     add.l    #$E082,a0
  1156.     move.l    d0,(a0)
  1157. ;     
  1158.     bra.b    L210
  1159. L207
  1160. ;     ctx->Color.DrawBuffer = mode;
  1161.     move.l    d2,$1E92(a2)
  1162. ;     ctx->Buffer->Alpha = NULL;
  1163.     move.l    $89C(a2),a0
  1164.     clr.l    $20(a0)
  1165. ;     ctx->NewState |= NEW_RASTER_OPS;
  1166.     move.l    a2,a0
  1167.     add.l    #$E082,a0
  1168.     move.l    (a0),d0
  1169.     or.l    #2,d0
  1170.     move.l    a2,a0
  1171.     add.l    #$E082,a0
  1172.     move.l    d0,(a0)
  1173. ;     
  1174.     bra.b    L210
  1175. L208
  1176. ;     gl_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer" );
  1177.     move.l    #L197,-(a7)
  1178.     pea    $502.w
  1179.     move.l    a2,-(a7)
  1180.     jsr    _gl_error
  1181.     add.w    #$C,a7
  1182. ;     
  1183.     bra.b    L210
  1184. L209
  1185. ;     gl_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" );
  1186.     move.l    #L197,-(a7)
  1187.     pea    $500.w
  1188.     move.l    a2,-(a7)
  1189.     jsr    _gl_error
  1190.     add.w    #$C,a7
  1191. L210
  1192.     movem.l    (a7)+,d2/a2
  1193.     rts
  1194.  
  1195. L197
  1196.     dc.b    'glDrawBuffer',0
  1197.  
  1198.     SECTION "_gl_ReadBuffer:0",CODE
  1199.  
  1200.  
  1201. ;void gl_ReadBuffer( GLcontext *ctx, GLenum mode )
  1202.     XDEF    _gl_ReadBuffer
  1203. _gl_ReadBuffer
  1204.     movem.l    d2/a2,-(a7)
  1205.     move.l    $10(a7),d2
  1206.     move.l    $C(a7),a2
  1207. L215
  1208. ;   if (INSIDE_BEGIN_END(ctx)) 
  1209.     move.l    a2,a0
  1210.     add.l    #$E08A,a0
  1211.     move.l    (a0),d0
  1212.     cmp.l    #$1A00,d0
  1213.     beq.b    L217
  1214. L216
  1215. ;      gl_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
  1216.     move.l    #L214,-(a7)
  1217.     pea    $502.w
  1218.     move.l    a2,-(a7)
  1219.     jsr    _gl_error
  1220.     add.w    #$C,a7
  1221.     movem.l    (a7)+,d2/a2
  1222.     rts
  1223. L217
  1224. ;   switch (mode)
  1225.     move.l    d2,d0
  1226.     sub.l    #$400,d0
  1227.     cmp.l    #$9,d0
  1228.     bhi    L225
  1229.     move.l    L227(pc,d0.l*4),a0
  1230.     jmp    (a0)
  1231. L227
  1232.     dc.l    L218
  1233.     dc.l    L224
  1234.     dc.l    L221
  1235.     dc.l    L224
  1236.     dc.l    L218
  1237.     dc.l    L221
  1238.     dc.l    L224
  1239.     dc.l    L224
  1240.     dc.l    L225
  1241.     dc.l    L224
  1242. ;      
  1243. L218
  1244. ;     if ( (*ctx->Driver.SetBuffer)( ctx, GL_FRONT ) == GL_FALSE) 
  1245.     pea    $404.w
  1246.     move.l    a2,-(a7)
  1247.     lea    $8A0(a2),a0
  1248.     move.l    $1C(a0),a0
  1249.     jsr    (a0)
  1250.     addq.w    #$8,a7
  1251.     tst.b    d0
  1252.     bne.b    L220
  1253. L219
  1254. ;        gl_error( ctx, GL_INVALID_ENUM, "glReadBuffer" );
  1255.     move.l    #L214,-(a7)
  1256.     pea    $500.w
  1257.     move.l    a2,-(a7)
  1258.     jsr    _gl_error
  1259.     add.w    #$C,a7
  1260.     movem.l    (a7)+,d2/a2
  1261.     rts
  1262. L220
  1263. ;     ctx->Pixel.ReadBuffer = mode;
  1264.     move.l    a2,a0
  1265.     add.l    #$ADEC,a0
  1266.     move.l    d2,(a0)
  1267. ;     ctx->Buffer->Alpha = ctx->Buffer->FrontAlpha;
  1268.     move.l    $89C(a2),a0
  1269.     move.l    $18(a0),a1
  1270.     move.l    $89C(a2),a0
  1271.     move.l    a1,$20(a0)
  1272. ;     ctx->NewState |= NEW_RASTER_OPS;
  1273.     move.l    a2,a0
  1274.     add.l    #$E082,a0
  1275.     move.l    (a0),d0
  1276.     or.l    #2,d0
  1277.     move.l    a2,a0
  1278.     add.l    #$E082,a0
  1279.     move.l    d0,(a0)
  1280. ;     
  1281.     bra    L226
  1282. L221
  1283. ;     if ( (*ctx->Driver.SetBuffer)( ctx, GL_BACK ) == GL_FALSE) 
  1284.     pea    $405.w
  1285.     move.l    a2,-(a7)
  1286.     lea    $8A0(a2),a0
  1287.     move.l    $1C(a0),a0
  1288.     jsr    (a0)
  1289.     addq.w    #$8,a7
  1290.     tst.b    d0
  1291.     bne.b    L223
  1292. L222
  1293. ;        gl_error( ctx, GL_INVALID_ENUM, "glReadBuffer" );
  1294.     move.l    #L214,-(a7)
  1295.     pea    $500.w
  1296.     move.l    a2,-(a7)
  1297.     jsr    _gl_error
  1298.     add.w    #$C,a7
  1299.     movem.l    (a7)+,d2/a2
  1300.     rts
  1301. L223
  1302. ;     ctx->Pixel.ReadBuffer = mode;
  1303.     move.l    a2,a0
  1304.     add.l    #$ADEC,a0
  1305.     move.l    d2,(a0)
  1306. ;     ctx->Buffer->Alpha = ctx->Buffer->BackAlpha;
  1307.     move.l    $89C(a2),a0
  1308.     move.l    $1C(a0),a1
  1309.     move.l    $89C(a2),a0
  1310.     move.l    a1,$20(a0)
  1311. ;     ctx->NewState |= NEW_RASTER_OPS;
  1312.     move.l    a2,a0
  1313.     add.l    #$E082,a0
  1314.     move.l    (a0),d0
  1315.     or.l    #2,d0
  1316.     move.l    a2,a0
  1317.     add.l    #$E082,a0
  1318.     move.l    d0,(a0)
  1319. ;     
  1320.     bra.b    L226
  1321. L224
  1322. ;     gl_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
  1323.     move.l    #L214,-(a7)
  1324.     pea    $502.w
  1325.     move.l    a2,-(a7)
  1326.     jsr    _gl_error
  1327.     add.w    #$C,a7
  1328. ;     
  1329.     bra.b    L226
  1330. L225
  1331. ;     gl_error( ctx, GL_INVALID_ENUM, "glReadBuffer" );
  1332.     move.l    #L214,-(a7)
  1333.     pea    $500.w
  1334.     move.l    a2,-(a7)
  1335.     jsr    _gl_error
  1336.     add.w    #$C,a7
  1337. L226
  1338. ;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Color.DrawBuffer );
  1339.     lea    $1E74(a2),a0
  1340.     move.l    $1E(a0),d0
  1341.     move.l    d0,-(a7)
  1342.     move.l    a2,-(a7)
  1343.     lea    $8A0(a2),a0
  1344.     move.l    $1C(a0),a0
  1345.     jsr    (a0)
  1346.     addq.w    #$8,a7
  1347.     movem.l    (a7)+,d2/a2
  1348.     rts
  1349.  
  1350. L214
  1351.     dc.b    'glReadBuffer',0
  1352.  
  1353.     END
  1354.