
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/misc.c
	mc68030
	mc68881
	XREF	_gl_clear_stencil_buffer
	XREF	_gl_mask_index_span
	XREF	_gl_mask_rgba_span
	XREF	_gl_clear_depth_buffer
	XREF	_gl_update_state
	XREF	_gl_error
	XREF	_gl_write_alpha_span
	XREF	_gl_clear_alpha_buffers
	XREF	_gl_clear_accum_buffer
	XREF	_q_memset
	XREF	_strcat
	XREF	_strcpy
	XREF	_CC
	XREF	_std__in
	XREF	_std__out
	XREF	_std__err

	SECTION "_gl_ClearIndex:0",CODE


;void gl_ClearIndex( GLcontext *ctx, GLfloat c )
	XDEF	_gl_ClearIndex
_gl_ClearIndex
	move.l	4(a7),a0
	fmove.s	$8(a7),fp0
L82
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L84
L83
;      gl_error( ctx, GL_INVALID_OPERATION, "glClearIndex" );
	move.l	#L81,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L84
;   ctx->Color.ClearIndex = (GLuint) c;
	fmove.l	fp0,d0
	move.l	d0,$21C4(a0)
;   if (!ctx->Visual->RGBAflag) 
	move.l	$8F8(a0),a1
	tst.b	(a1)
	bne.b	L86
L85
;      (*ctx->Driver.ClearIndex)( ctx, ctx->Color.ClearIndex );
	move.l	$21C4(a0),-(a7)
	move.l	a0,-(a7)
	move.l	$908(a0),a0
	jsr	(a0)
	addq.w	#$8,a7
L86
	rts

L78
	dc.b	'1.2 Mesa 3.0',0
L77
	dc.b	'Brian Paul',0
L79
	dc.b	'GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_logic_op GL_'
	dc.b	'EXT_blend_subtract GL_EXT_paletted_texture GL_EXT_point_paramete'
	dc.b	'rs GL_EXT_polygon_offset GL_EXT_vertex_array GL_EXT_texture_obje'
	dc.b	'ct GL_EXT_texture3D GL_MESA_window_pos GL_MESA_resize_buffers GL'
	dc.b	'_EXT_shared_texture_palette GL_EXT_rescale_normal GL_EXT_abgr GL'
	dc.b	'_SGIS_texture_edge_clamp GL_SGIS_multitexture GL_EXT_multitextur'
	dc.b	'e',0
L81
	dc.b	'glClearIndex',0

	SECTION "_gl_ClearColor:0",CODE

	rts

;void gl_ClearColor( GLcontext *ctx, GLclampf red, GLclampf green,
	XDEF	_gl_ClearColor
_gl_ClearColor
	movem.l	d2/d3,-(a7)
	fmovem.x fp2/fp3,-(a7)
	move.l	$24(a7),a0
	fmove.s	$34(a7),fp0
	fmove.s	$30(a7),fp1
	fmove.s	$2C(a7),fp2
	fmove.s	$28(a7),fp3
L88
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L90
L89
;      gl_error( ctx, GL_INVALID_OPERATION, "glClearColor" );
	move.l	#L87,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2/d3
	rts
L90
;   ctx->Color.ClearColor[0] = CLAMP( red,   0.0F, 1.0F );
	fcmp.s	#$.00000000,fp3
	fboge.b	L92
L91
	fmove.s	#$.00000000,fp3
	bra.b	L96
L92
	fcmp.s	#$.3F800000,fp3
	fbole.b	L94
L93
	fmove.s	#$.3F800000,fp3
L94
L95
L96
	fmove.s	fp3,$21C8(a0)
;   ctx->Color.ClearColor[1] = CLAMP( green, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp2
	fboge.b	L98
L97
	fmove.s	#$.00000000,fp2
	bra.b	L102
L98
	fcmp.s	#$.3F800000,fp2
	fbole.b	L100
L99
	fmove.s	#$.3F800000,fp2
L100
L101
L102
	lea	$21C8(a0),a1
	fmove.s	fp2,4(a1)
;   ctx->Color.ClearColor[2] = CLAMP( blue,  0.0F, 1.0F );
	fcmp.s	#$.00000000,fp1
	fboge.b	L104
L103
	fmove.s	#$.00000000,fp1
	bra.b	L108
L104
	fcmp.s	#$.3F800000,fp1
	fbole.b	L106
L105
	fmove.s	#$.3F800000,fp1
L106
L107
L108
	lea	$21C8(a0),a1
	fmove.s	fp1,$8(a1)
;   ctx->Color.ClearColor[3] = CLAMP( alpha, 0.0F, 1.0F );
	fcmp.s	#$.00000000,fp0
	fboge.b	L110
L109
	fmove.s	#$.00000000,fp0
	bra.b	L114
L110
	fcmp.s	#$.3F800000,fp0
	fbole.b	L112
L111
	fmove.s	#$.3F800000,fp0
L112
L113
L114
	lea	$21C8(a0),a1
	fmove.s	fp0,$C(a1)
;   if (ctx->Visual->RGBAflag) 
	move.l	$8F8(a0),a1
	tst.b	(a1)
	beq.b	L116
L115
;      GLubyte r = (GLint) (ctx->Color.ClearColor[0] * 255.0F);
	fmove.s	$21C8(a0),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d3
;      GLubyte g = (GLint) (ctx->Color.ClearColor[1] * 255.0F);
	lea	$21C8(a0),a1
	fmove.s	4(a1),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d2
;      GLubyte b = (GLint) (ctx->Color.ClearColor[2] * 255.0F);
	lea	$21C8(a0),a1
	fmove.s	$8(a1),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d1
;      GLubyte a = (GLint) (ctx->Color.ClearColor[3] * 255.0F);
	lea	$21C8(a0),a1
	fmove.s	$C(a1),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
;      (*ctx->Driver.ClearColor)( ctx, r, g, b, a );
	move.b	d0,-(a7)
	move.b	d1,-(a7)
	move.b	d2,-(a7)
	move.b	d3,-(a7)
	move.l	a0,-(a7)
	move.l	$90C(a0),a0
	jsr	(a0)
	add.w	#$C,a7
L116
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2/d3
	rts

L87
	dc.b	'glClearColor',0

	SECTION "_clear_color_buffer_with_masking:0",CODE


;static void clear_color_buffer_with_masking( GLcontext *ctx )
_clear_color_buffer_with_masking
L137	EQU	-$1F70
	link	a5,#L137
	movem.l	d2-d7/a2,-(a7)
	move.l	$8(a5),a2
L117
;   if (ctx->Scissor.Enabled) 
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	beq.b	L119
L118
;      x = ctx->Buffer->Xmin;
	move.l	$8FC(a2),a0
	move.l	$24(a0),d4
;      y = ctx->Buffer->Ymin;
	move.l	$8FC(a2),a0
	move.l	$2C(a0),d3
;      height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
	move.l	$8FC(a2),a0
	move.l	$30(a0),-$C(a5)
	move.l	$8FC(a2),a0
	move.l	-$C(a5),d0
	sub.l	$2C(a0),d0
	move.l	d0,-$C(a5)
	addq.l	#1,-$C(a5)
;      width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
	move.l	$8FC(a2),a0
	move.l	$28(a0),d2
	move.l	$8FC(a2),a0
	sub.l	$24(a0),d2
	addq.l	#1,d2
	bra.b	L120
L119
;      x = 0;
	moveq	#0,d4
;      y = 0;
	moveq	#0,d3
;      height = ctx->Buffer->Height;
	move.l	$8FC(a2),a0
	move.l	$8(a0),-$C(a5)
;      width  = ctx->Buffer->Width;
	move.l	$8FC(a2),a0
	move.l	4(a0),d2
L120
;   if (ctx->Visual->RGBAflag) 
	move.l	$8F8(a2),a0
	tst.b	(a0)
	beq	L130
L121
;      GLubyte r = (GLint) (ctx->Color.ClearColor[0] * 255.0F);
	fmove.s	$21C8(a2),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,-$11(a5)
;      GLubyte g = (GLint) (ctx->Color.ClearColor[1] * 255.0F);
	lea	$21C8(a2),a0
	fmove.s	4(a0),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d7
;      GLubyte b = (GLint) (ctx->Color.ClearColor[2] * 255.0F);
	lea	$21C8(a2),a0
	fmove.s	$8(a0),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d6
;      GLubyte a = (GLint) (ctx->Color.ClearColor[3] * 255.0F);
	lea	$21C8(a2),a0
	fmove.s	$C(a0),fp0
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d0
	move.b	d0,d5
;      for (i=0;
	clr.l	-$18(a5)
	bra	L128
L122
;         for (j=0;
	moveq	#0,d0
	bra.b	L124
L123
;            rgba[j][RCOMP] = r;
	lea	-$1918(a5),a0
	move.b	-$11(a5),0(a0,d0.l*4)
;            rgba[j][GCOMP] = g;
	lea	-$1918(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	d7,1(a0)
;            rgba[j][BCOMP] = b;
	lea	-$1918(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	d6,2(a0)
;            rgba[j][ACOMP] = a;
	lea	-$1918(a5),a0
	lea	0(a0,d0.l*4),a0
	move.b	d5,3(a0)
	addq.l	#1,d0
L124
	cmp.l	d2,d0
	blt.b	L123
L125
;         gl_mask_rgba_span( ctx, width, x, y, rgba );
	pea	-$1918(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_mask_rgba_span
	add.w	#$14,a7
;         (*ctx->Driver.WriteRGBASpan)( ctx, width, x, y, (C
	clr.l	-(a7)
	pea	-$1918(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$924(a2),a0
	jsr	(a0)
	add.w	#$18,a7
;         if (ctx->RasterMask & ALPHABUF_BIT) 
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$100,d0
	beq.b	L127
L126
;            gl_write_alpha_span( ctx, width, x, y, (CONS
	clr.l	-(a7)
	pea	-$1918(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_write_alpha_span
	add.w	#$18,a7
L127
	addq.l	#1,-$18(a5)
	addq.l	#1,d3
L128
	move.l	-$18(a5),d0
	cmp.l	-$C(a5),d0
	blt	L122
L129
	bra.b	L136
L130
;      MEMSET( mask, 1, width )
	move.l	d2,-(a7)
	pea	1.w
	pea	-$1F50(a5)
	jsr	_q_memset
	add.w	#$C,a7
;      for (i=0;
	moveq	#0,d5
	bra.b	L135
L131
;         for (j=0;
	moveq	#0,d0
	bra.b	L133
L132
;            indx[j] = ctx->Color.ClearIndex;
	lea	-$1910(a5),a0
	move.l	$21C4(a2),0(a0,d0.l*4)
	addq.l	#1,d0
L133
	cmp.l	d2,d0
	blt.b	L132
L134
;         gl_mask_index_span( ctx, width, x, y, indx );
	pea	-$1910(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	jsr	_gl_mask_index_span
	add.w	#$14,a7
;         (*ctx->Driver.WriteCI32Span)( ctx, width, x, y, in
	pea	-$1F50(a5)
	pea	-$1910(a5)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	d2,-(a7)
	move.l	a2,-(a7)
	move.l	$938(a2),a0
	jsr	(a0)
	add.w	#$18,a7
	addq.l	#1,d5
	addq.l	#1,d3
L135
	cmp.l	-$C(a5),d5
	blt.b	L131
L136
	movem.l	(a7)+,d2-d7/a2
	unlk	a5
	rts

	SECTION "_clear_color_buffers:0",CODE


;static void clear_color_buffers( GLcontext *ctx )
_clear_color_buffers
	movem.l	d2-d4/a2,-(a7)
	move.l	$14(a7),a2
L138
;   if (ctx->Color.SWmasking) 
	tst.b	$21E0(a2)
	beq.b	L140
L139
;      clear_color_buffer_with_masking( ctx );
	move.l	a2,-(a7)
	jsr	_clear_color_buffer_with_masking
	addq.w	#4,a7
	bra	L142
L140
;      GLint x = ctx->Buffer->Xmin;
	move.l	$8FC(a2),a0
	move.l	$24(a0),d4
;      GLint y = ctx->Buffer->Ymin;
	move.l	$8FC(a2),a0
	move.l	$2C(a0),d3
;      GLint height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
	move.l	$8FC(a2),a0
	move.l	$30(a0),d1
	move.l	$8FC(a2),a0
	sub.l	$2C(a0),d1
	addq.l	#1,d1
;      GLint width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
	move.l	$8FC(a2),a0
	move.l	$28(a0),d0
	move.l	$8FC(a2),a0
	sub.l	$24(a0),d0
	addq.l	#1,d0
;      (void) (*ctx->Driver.Clear)( ctx, GL_COLOR_BUFFER_BIT,
	move.l	d1,-(a7)
	move.l	d0,-(a7)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	seq	d0
	and.l	#1,d0
	move.b	d0,-(a7)
	pea	$4000.w
	move.l	a2,-(a7)
	move.l	$910(a2),a0
	jsr	(a0)
	add.w	#$1A,a7
;      if (ctx->RasterMask & ALPHABUF_BIT) 
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$100,d0
	beq.b	L142
L141
;         gl_clear_alpha_buffers( ctx );
	move.l	a2,-(a7)
	jsr	_gl_clear_alpha_buffers
	addq.w	#4,a7
L142
;   if (ctx->RasterMask & FRONT_AND_BACK_BIT) 
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$400,d0
	beq	L147
L143
;      (*ctx->Driver.SetBuffer)( ctx, GL_BACK );
	pea	$405.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
;      if (ctx->Color.SWmasking) 
	tst.b	$21E0(a2)
	beq.b	L145
L144
;         clear_color_buffer_with_masking( ctx );
	move.l	a2,-(a7)
	jsr	_clear_color_buffer_with_masking
	addq.w	#4,a7
	bra.b	L146
L145
;         GLint x = ctx->Buffer->Xmin;
	move.l	$8FC(a2),a0
	move.l	$24(a0),d4
;         GLint y = ctx->Buffer->Ymin;
	move.l	$8FC(a2),a0
	move.l	$2C(a0),d3
;         GLint height = ctx->Buffer->Ymax - ctx->Buffer->Ym
	move.l	$8FC(a2),a0
	move.l	$30(a0),d1
	move.l	$8FC(a2),a0
	sub.l	$2C(a0),d1
	addq.l	#1,d1
;         GLint width  = ctx->Buffer->Xmax - ctx->Buffer->Xm
	move.l	$8FC(a2),a0
	move.l	$28(a0),d0
	move.l	$8FC(a2),a0
	sub.l	$24(a0),d0
	addq.l	#1,d0
;         (void) (*ctx->Driver.Clear)( ctx, GL_COLOR_BUFFER_
	move.l	d1,-(a7)
	move.l	d0,-(a7)
	move.l	d3,-(a7)
	move.l	d4,-(a7)
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	seq	d0
	and.l	#1,d0
	move.b	d0,-(a7)
	pea	$4000.w
	move.l	a2,-(a7)
	move.l	$910(a2),a0
	jsr	(a0)
	add.w	#$1A,a7
L146
;      (*ctx->Driver.SetBuffer)( ctx, GL_FRONT );
	pea	$404.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
L147
	movem.l	(a7)+,d2-d4/a2
	rts

	SECTION "_gl_Clear:0",CODE


;void gl_Clear( GLcontext *ctx, GLbitfield mask )
	XDEF	_gl_Clear
_gl_Clear
	movem.l	d2-d7/a2,-(a7)
	move.l	$24(a7),d5
	move.l	$20(a7),a2
L149
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L151
L150
;      gl_error( ctx, GL_INVALID_OPERATION, "glClear" );
	move.l	#L148,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2-d7/a2
	rts
L151
;   if (ctx->RenderMode==GL_RENDER) 
	move.l	a2,a0
	add.l	#$E964,a0
	move.l	(a0),d0
	cmp.l	#$1C00,d0
	bne	L169
L152
;      if (ctx->NewState) 
	move.l	a2,a0
	add.l	#$E960,a0
	tst.l	(a0)
	beq.b	L154
L153
;         gl_update_state( ctx );
	move.l	a2,-(a7)
	jsr	_gl_update_state
	addq.w	#4,a7
L154
;      x = ctx->Buffer->Xmin;
	move.l	$8FC(a2),a0
	move.l	$24(a0),d7
;      y = ctx->Buffer->Ymin;
	move.l	$8FC(a2),a0
	move.l	$2C(a0),d6
;      height = ctx->Buffer->Ymax - ctx->Buffer->Ymin + 1;
	move.l	$8FC(a2),a0
	move.l	$30(a0),d4
	move.l	$8FC(a2),a0
	sub.l	$2C(a0),d4
	addq.l	#1,d4
;      width  = ctx->Buffer->Xmax - ctx->Buffer->Xmin + 1;
	move.l	$8FC(a2),a0
	move.l	$28(a0),d3
	move.l	$8FC(a2),a0
	sub.l	$24(a0),d3
	addq.l	#1,d3
;      newMask = (*ctx->Driver.Clear)( ctx, mask, !ctx->Scissor
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d6,-(a7)
	move.l	d7,-(a7)
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	seq	d0
	and.l	#1,d0
	move.b	d0,-(a7)
	move.l	d5,-(a7)
	move.l	a2,-(a7)
	move.l	$910(a2),a0
	jsr	(a0)
	add.w	#$1A,a7
	move.l	d0,d2
;      if ( (mask & GL_COLOR_BUFFER_BIT) &&
	move.l	d5,d0
	and.l	#$4000,d0
	beq.b	L158
L155
	move.l	d2,d0
	and.l	#$4000,d0
	bne.b	L158
L156
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$100,d0
	beq.b	L158
L157
;         gl_clear_alpha_buffers( ctx );
	move.l	a2,-(a7)
	jsr	_gl_clear_alpha_buffers
	addq.w	#4,a7
L158
;      if ((mask & GL_COLOR_BUFFER_BIT)
	and.l	#$4000,d5
	beq.b	L161
L159
	move.l	a2,a0
	add.l	#$E974,a0
	move.l	(a0),d0
	and.l	#$400,d0
	beq.b	L161
L160
;         (*ctx->Driver.SetBuffer)( ctx, GL_BACK );
	pea	$405.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
;         (void) (*ctx->Driver.Clear)( ctx, GL_COLOR_BUFFER_
	move.l	d4,-(a7)
	move.l	d3,-(a7)
	move.l	d6,-(a7)
	move.l	d7,-(a7)
	move.l	a2,a0
	add.l	#$DE92,a0
	tst.b	(a0)
	seq	d0
	and.l	#1,d0
	move.b	d0,-(a7)
	pea	$4000.w
	move.l	a2,-(a7)
	move.l	$910(a2),a0
	jsr	(a0)
	add.w	#$1A,a7
;         (*ctx->Driver.SetBuffer)( ctx, GL_FRONT );
	pea	$404.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
L161
;      if (newMask & GL_COLOR_BUFFER_BIT)    
	move.l	d2,d0
	and.l	#$4000,d0
	beq.b	L163
L162
;      if (newMask & GL_C
	move.l	a2,-(a7)
	jsr	_clear_color_buffers
	addq.w	#4,a7
L163
;      if (newMask & GL_DEPTH_BUFFER_BIT)    
	move.l	d2,d0
	and.l	#$100,d0
	beq.b	L165
L164
;      if (newMask & GL_D
	move.l	a2,-(a7)
	jsr	_gl_clear_depth_buffer
	addq.w	#4,a7
L165
;      if (newMask & GL_ACCUM_BUFFER_BIT)    
	move.l	d2,d0
	and.l	#$200,d0
	beq.b	L167
L166
;      if (newMask & GL_A
	move.l	a2,-(a7)
	jsr	_gl_clear_accum_buffer
	addq.w	#4,a7
L167
;      if (newMask & GL_STENCIL_BUFFER_BIT)  
	and.l	#$400,d2
	beq.b	L169
L168
;      if (newMask & GL_S
	move.l	a2,-(a7)
	jsr	_gl_clear_stencil_buffer
	addq.w	#4,a7
L169
	movem.l	(a7)+,d2-d7/a2
	rts

L148
	dc.b	'glClear',0

	SECTION "_gl_GetString:0",CODE


;const GLubyte *gl_GetString( GLcontext *ctx, GLenum name )
	XDEF	_gl_GetString
_gl_GetString
	move.l	a2,-(a7)
	move.l	$C(a7),d1
	move.l	$8(a7),a2
L173
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L175
L174
;      gl_error( ctx, GL_INVALID_OPERATION, "glGetString" );
	move.l	#L170,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#0,d0
	move.l	(a7)+,a2
	rts
L175
;   switch (name)
	cmp.l	#$1F02,d1
	beq.b	L180
	bgt.b	L185
	cmp.l	#$1F00,d1
	beq.b	L176
	cmp.l	#$1F01,d1
	beq.b	L177
	bra	L184
L185
	cmp.l	#$1F03,d1
	beq.b	L181
	bra.b	L184
;      
L176
	move.l	_vendor___gl_GetString(a6),d0
	move.l	(a7)+,a2
	rts
L177
;         strcpy(result, "Mesa");
	move.l	#L171,-(a7)
	pea	_result___gl_GetString(a6)
	jsr	_strcpy
	addq.w	#$8,a7
;         if (ctx->Driver.RendererString) 
	tst.l	$900(a2)
	beq.b	L179
L178
;            strcat(result, " ");
	move.l	#L172,-(a7)
	pea	_result___gl_GetString(a6)
	jsr	_strcat
	addq.w	#$8,a7
;            strcat(result, (*ctx->Driver.RendererString)
	move.l	$900(a2),a0
	jsr	(a0)
	move.l	d0,-(a7)
	pea	_result___gl_GetString(a6)
	jsr	_strcat
	addq.w	#$8,a7
L179
	lea	_result___gl_GetString(a6),a0
	move.l	a0,d0
	move.l	(a7)+,a2
	rts
L180
	move.l	_version___gl_GetString(a6),d0
	move.l	(a7)+,a2
	rts
L181
;         if (ctx->Driver.ExtensionString) 
	tst.l	$95C(a2)
	beq.b	L183
L182
	move.l	a2,-(a7)
	move.l	$95C(a2),a0
	jsr	(a0)
	addq.w	#4,a7
	move.l	(a7)+,a2
	rts
L183
	move.l	_extensions___gl_GetString(a6),d0
	move.l	(a7)+,a2
	rts
L184
;         gl_error( ctx, GL_INVALID_ENUM, "glGetString" );
	move.l	#L170,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	moveq	#0,d0
	move.l	(a7)+,a2
	rts

L172
	dc.b	' ',0
L171
	dc.b	'Mesa',0
L170
	dc.b	'glGetString',0

	SECTION "_gl_GetString:1",DATA

_vendor___gl_GetString
	dc.l	L77
_version___gl_GetString
	dc.l	L78
_extensions___gl_GetString
	dc.l	L79

	SECTION "_gl_GetString:2",BSS

_result___gl_GetString
	ds.b	1000

	SECTION "_gl_Finish:0",CODE


;void gl_Finish( GLcontext *ctx )
	XDEF	_gl_Finish
_gl_Finish
	move.l	4(a7),a0
L187
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L189
L188
;      gl_error( ctx, GL_INVALID_OPERATION, "glFinish" );
	move.l	#L186,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L189
;   if (ctx->Driver.Finish) 
	tst.l	$960(a0)
	beq.b	L191
L190
;      (*ctx->Driver.Finish)( ctx );
	move.l	a0,-(a7)
	move.l	$960(a0),a0
	jsr	(a0)
	addq.w	#4,a7
L191
	rts

L186
	dc.b	'glFinish',0

	SECTION "_gl_Flush:0",CODE


;void gl_Flush( GLcontext *ctx )
	XDEF	_gl_Flush
_gl_Flush
	move.l	4(a7),a0
L193
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a0,a1
	add.l	#$E968,a1
	move.l	(a1),d0
	cmp.l	#$1A00,d0
	beq.b	L195
L194
;      gl_error( ctx, GL_INVALID_OPERATION, "glFlush" );
	move.l	#L192,-(a7)
	pea	$502.w
	move.l	a0,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	rts
L195
;   if (ctx->Driver.Flush) 
	tst.l	$964(a0)
	beq.b	L197
L196
;      (*ctx->Driver.Flush)( ctx );
	move.l	a0,-(a7)
	move.l	$964(a0),a0
	jsr	(a0)
	addq.w	#4,a7
L197
	rts

L192
	dc.b	'glFlush',0

	SECTION "_gl_Hint:0",CODE


;void gl_Hint( GLcontext *ctx, GLenum target, GLenum mode )
	XDEF	_gl_Hint
_gl_Hint
	movem.l	d2/a2,-(a7)
	move.l	$14(a7),d0
	move.l	$10(a7),d2
	move.l	$C(a7),a2
L201
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d1
	cmp.l	#$1A00,d1
	beq.b	L203
L202
;      gl_error( ctx, GL_INVALID_OPERATION, "glHint" );
	move.l	#L198,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L203
;   if (mode!=GL_DONT_CARE && mode!=GL_FASTEST && mode!=GL_NICEST)
	cmp.l	#$1100,d0
	beq.b	L207
L204
	cmp.l	#$1101,d0
	beq.b	L207
L205
	cmp.l	#$1102,d0
	beq.b	L207
L206
;      gl_error( ctx, GL_INVALID_ENUM, "glHint(mode)" );
	move.l	#L199,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L207
;   switch (target)
	cmp.l	#$C52,d2
	beq.b	L209
	bgt.b	L215
	cmp.l	#$C50,d2
	beq.b	L210
	cmp.l	#$C51,d2
	beq.b	L211
	bra.b	L213
L215
	cmp.l	#$C53,d2
	beq.b	L212
	cmp.l	#$C54,d2
	beq.b	L208
	bra.b	L213
;      
L208
;         ctx->Hint.Fog = mode;
	move.l	d0,$2314(a2)
;         
	bra.b	L214
L209
;         ctx->Hint.LineSmooth = mode;
	move.l	d0,$230C(a2)
;         
	bra.b	L214
L210
;         ctx->Hint.PerspectiveCorrection = mode;
	move.l	d0,$2304(a2)
;         
	bra.b	L214
L211
;         ctx->Hint.PointSmooth = mode;
	move.l	d0,$2308(a2)
;         
	bra.b	L214
L212
;         ctx->Hint.PolygonSmooth = mode;
	move.l	d0,$2310(a2)
;         
	bra.b	L214
L213
;         gl_error( ctx, GL_INVALID_ENUM, "glHint(target)" );
	move.l	#L200,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L214
;   ctx->NewState |= NEW_ALL;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#$FF,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
	movem.l	(a7)+,d2/a2
	rts

L198
	dc.b	'glHint',0
L199
	dc.b	'glHint(mode)',0
L200
	dc.b	'glHint(target)',0

	SECTION "_gl_DrawBuffer:0",CODE


;void gl_DrawBuffer( GLcontext *ctx, GLenum mode )
	XDEF	_gl_DrawBuffer
_gl_DrawBuffer
	movem.l	d2/a2,-(a7)
	move.l	$10(a7),d2
	move.l	$C(a7),a2
L217
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L219
L218
;      gl_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer" );
	move.l	#L216,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L219
;   switch (mode)
	move.l	d2,d0
	cmp.l	#$406,d0
	beq	L227
	bgt.b	L230
	cmp.l	#$402,d0
	beq	L223
	bgt.b	L231
	cmp.l	#$400,d0
	beq.b	L220
	bgt.b	L232
	cmp.l	#0,d0
	beq	L226
	bra	L228
L232
	bgt	L227
L231
	cmp.l	#$404,d0
	beq.b	L220
	bgt.b	L233
	blt	L227
L233
	bgt	L223
L230
	sub.l	#$407,d0
	cmp.l	#5,d0
	bhi	L228
	move.l	L234(pc,d0.l*4),a0
	jmp	(a0)
L234
	dc.l	L227
	dc.l	L220
	dc.l	L227
	dc.l	L227
	dc.l	L227
	dc.l	L227
;      
L220
;         if ( (*ctx->Driver.SetBuffer)( ctx, GL_FRONT ) == 
	pea	$404.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	tst.b	d0
	bne.b	L222
L221
;            gl_error( ctx, GL_INVALID_OPERATION, "glDraw
	move.l	#L216,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L222
;         ctx->Color.DrawBuffer = mode;
	move.l	d2,$21E2(a2)
;         ctx->Buffer->Alpha = ctx->Buffer->FrontAlpha;
	move.l	$8FC(a2),a0
	move.l	$18(a0),a1
	move.l	$8FC(a2),a0
	move.l	a1,$20(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#2,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;         
	bra	L229
L223
;         if ( (*ctx->Driver.SetBuffer)( ctx, GL_BACK ) == G
	pea	$405.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	tst.b	d0
	bne.b	L225
L224
;            gl_error( ctx, GL_INVALID_OPERATION, "glDraw
	move.l	#L216,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L225
;         ctx->Color.DrawBuffer = mode;
	move.l	d2,$21E2(a2)
;         ctx->Buffer->Alpha = ctx->Buffer->BackAlpha;
	move.l	$8FC(a2),a0
	move.l	$1C(a0),a1
	move.l	$8FC(a2),a0
	move.l	a1,$20(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#2,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;         
	bra.b	L229
L226
;         ctx->Color.DrawBuffer = mode;
	move.l	d2,$21E2(a2)
;         ctx->Buffer->Alpha = NULL;
	move.l	$8FC(a2),a0
	clr.l	$20(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#2,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;         
	bra.b	L229
L227
;         gl_error( ctx, GL_INVALID_OPERATION, "glDrawBuffer
	move.l	#L216,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
;         
	bra.b	L229
L228
;         gl_error( ctx, GL_INVALID_ENUM, "glDrawBuffer" );
	move.l	#L216,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L229
	movem.l	(a7)+,d2/a2
	rts

L216
	dc.b	'glDrawBuffer',0

	SECTION "_gl_ReadBuffer:0",CODE


;void gl_ReadBuffer( GLcontext *ctx, GLenum mode )
	XDEF	_gl_ReadBuffer
_gl_ReadBuffer
	movem.l	d2/a2,-(a7)
	move.l	$10(a7),d2
	move.l	$C(a7),a2
L236
;   if (INSIDE_BEGIN_END(ctx)) 
	move.l	a2,a0
	add.l	#$E968,a0
	move.l	(a0),d0
	cmp.l	#$1A00,d0
	beq.b	L238
L237
;      gl_error( ctx, GL_INVALID_OPERATION, "glReadBuffer" );
	move.l	#L235,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L238
;   switch (mode)
	move.l	d2,d0
	sub.l	#$400,d0
	cmp.l	#$C,d0
	bhi	L246
	move.l	L248(pc,d0.l*4),a0
	jmp	(a0)
L248
	dc.l	L239
	dc.l	L245
	dc.l	L242
	dc.l	L245
	dc.l	L239
	dc.l	L242
	dc.l	L245
	dc.l	L245
	dc.l	L246
	dc.l	L245
	dc.l	L245
	dc.l	L245
	dc.l	L245
;      
L239
;         if ( (*ctx->Driver.SetBuffer)( ctx, GL_FRONT ) == 
	pea	$404.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	tst.b	d0
	bne.b	L241
L240
;            gl_error( ctx, GL_INVALID_OPERATION, "glRead
	move.l	#L235,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L241
;         ctx->Pixel.ReadBuffer = mode;
	move.l	a2,a0
	add.l	#$B168,a0
	move.l	d2,(a0)
;         ctx->Buffer->Alpha = ctx->Buffer->FrontAlpha;
	move.l	$8FC(a2),a0
	move.l	$18(a0),a1
	move.l	$8FC(a2),a0
	move.l	a1,$20(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#2,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;         
	bra	L247
L242
;         if ( (*ctx->Driver.SetBuffer)( ctx, GL_BACK ) == G
	pea	$405.w
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	tst.b	d0
	bne.b	L244
L243
;            gl_error( ctx, GL_INVALID_OPERATION, "glRead
	move.l	#L235,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
	movem.l	(a7)+,d2/a2
	rts
L244
;         ctx->Pixel.ReadBuffer = mode;
	move.l	a2,a0
	add.l	#$B168,a0
	move.l	d2,(a0)
;         ctx->Buffer->Alpha = ctx->Buffer->BackAlpha;
	move.l	$8FC(a2),a0
	move.l	$1C(a0),a1
	move.l	$8FC(a2),a0
	move.l	a1,$20(a0)
;         ctx->NewState |= NEW_RASTER_OPS;
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	(a0),d0
	or.l	#2,d0
	move.l	a2,a0
	add.l	#$E960,a0
	move.l	d0,(a0)
;         
	bra.b	L247
L245
;         gl_error( ctx, GL_INVALID_OPERATION, "glReadBuffer
	move.l	#L235,-(a7)
	pea	$502.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
;         
	bra.b	L247
L246
;         gl_error( ctx, GL_INVALID_ENUM, "glReadBuffer" );
	move.l	#L235,-(a7)
	pea	$500.w
	move.l	a2,-(a7)
	jsr	_gl_error
	add.w	#$C,a7
L247
;   (void) (*ctx->Driver.SetBuffer)( ctx, ctx->Color.DrawBuffer );
	move.l	$21E2(a2),-(a7)
	move.l	a2,-(a7)
	move.l	$91C(a2),a0
	jsr	(a0)
	addq.w	#$8,a7
	movem.l	(a7)+,d2/a2
	rts

L235
	dc.b	'glReadBuffer',0

	END
