
; Storm C Compiler
; TEMP:Mesa_2_5/amiga_stormc/src/gl/AmigaMesa.c
	mc68030
	mc68881
	XREF	_RestoreFPU
	XREF	_SetFPU
	XREF	_SWFSDriver_init
	XREF	_EvalPen
	XREF	_SWDriver_init
	XREF	_Amiga_Standard_init
	XREF	_Cyb_Standard_init
	XREF	_gl_get_current_context
	XREF	_gl_make_current
	XREF	_gl_destroy_framebuffer
	XREF	_gl_create_framebuffer
	XREF	_gl_destroy_context
	XREF	_gl_create_context
	XREF	_gl_destroy_visual
	XREF	_gl_create_visual
	XREF	_glViewport
	XREF	_glClearColor
	XREF	_glClearIndex
	XREF	_SysBase
	XREF	_DOSBase
	XREF	_IntuitionBase
	XREF	_GfxBase
	XREF	_UtilityBase
	XREF	_CC
	XREF	_pal
	XREF	_std__in
	XREF	_std__out
	XREF	_std__err

	SECTION "_LastError:2",BSS

	XDEF	_LastError
_LastError
	ds.l	1

	SECTION "_CyberGfxBase:0",CODE

	rts

	SECTION "_CyberGfxBase:1",DATA

	XDEF	_CyberGfxBase
_CyberGfxBase
	dc.l	0

	SECTION "_AmigaMesaCreateVisualTags:0",CODE


;struct amigamesa_visual *
	XDEF	_AmigaMesaCreateVisualTags
_AmigaMesaCreateVisualTags
L76	EQU	0
	link	a5,#L76
L75
	lea	$8(a5),a0
	jsr	_AmigaMesaCreateVisual
	unlk	a5
	rts

	SECTION "_AmigaMesaCreateVisual:0",CODE


;struct amigamesa_visual * __saveds
	XDEF	_AmigaMesaCreateVisual
_AmigaMesaCreateVisual
L83	EQU	-$3C
	link	a5,#L83
	movem.l	d2-d5/a6,-(a7)
	fmovem.x fp2/fp3,-(a7)
	move.l	a0,-$3C(a5)
L77
;   v = (struct amigamesa_visual *)AllocVec(sizeof(struct amigames
	moveq	#$C,d0
	move.l	#$10001,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-4(a5)
;   if (!v) 
	tst.l	-4(a5)
	bne.b	L79
L78
	moveq	#0,d0
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts
L79
;	v->rgb_flag=GetTagData(AMA_RGBMode,GL_TRUE,tagList);
	move.l	#$80000051,d0
	moveq	#1,d1
	move.l	-$3C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a0
	move.b	d0,5(a0)
;	v->db_flag=GetTagData(AMA_DoubleBuf,GL_FALSE,tagList);
	move.l	#$80000050,d0
	moveq	#0,d1
	move.l	-$3C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a0
	move.b	d0,4(a0)
;	v->alpha_flag=GetTagData(AMA_AlphaFlag,GL_FALSE,tagList);
	move.l	#$80000052,d0
	moveq	#0,d1
	move.l	-$3C(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a0
	move.b	d0,6(a0)
;   if (v->rgb_flag) 
	move.l	-4(a5),a0
	move.b	5(a0),d0
	beq.b	L81
L80
;	  redscale =   greenscale = bluescale = alphascale = 255;
	fmove.s	#$.437F0000,fp1
	fmove.x	fp1,fp3
	fmove.x	fp1,fp0
	fmove.x	fp1,fp2
;	  index_bits = 0;
	moveq	#0,d4
;	  redbits = greenbits = bluebits = 8;
	moveq	#$8,d2
	move.l	d2,d1
	move.l	d2,d0
;	  alphabits = 8;
	moveq	#$8,d3
	bra.b	L82
L81
;	  redscale = 0.0;
	fmove.s	#$.00000000,fp1
;	  greenscale = 0.0;
	fmove.s	#$.00000000,fp2
;	  bluescale = 0.0;
	fmove.s	#$.00000000,fp0
;	  alphascale = 0.0;
	fmove.s	#$.00000000,fp3
;	  index_bits = 8;
	moveq	#$8,d4
;	  redbits = greenbits = bluebits = alphabits = 0;
	moveq	#0,d2
	move.l	d2,d3
	move.l	d2,d1
	move.l	d2,d0
L82
;   v->depth = 16;
	move.l	-4(a5),a0
	move.l	#$10,$8(a0)
;   v->gl_visual = gl_create_visual( v->rgb_flag, 
	move.l	d3,-(a7)
	move.l	d1,-(a7)
	move.l	d0,-(a7)
	move.l	d2,-(a7)
	fmove.s	fp3,-(a7)
	fmove.s	fp0,-(a7)
	fmove.s	fp2,-(a7)
	fmove.s	fp1,-(a7)
	move.l	d4,-(a7)
	pea	$10.w
	pea	$8.w
	pea	$10.w
	move.l	-4(a5),a0
	move.b	4(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),a0
	move.b	6(a0),d0
	move.b	d0,-(a7)
	move.l	-4(a5),a0
	move.b	5(a0),d0
	move.b	d0,-(a7)
	jsr	_gl_create_visual
	add.w	#$36,a7
	move.l	-4(a5),a1
	move.l	d0,(a1)
	move.l	-4(a5),d0
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2-d5/a6
	unlk	a5
	rts

	SECTION "_AmigaMesaDestroyVisual:0",CODE


;void __saveds AmigaMesaDestroyVisual(register __a0 struct amigamesa_
	XDEF	_AmigaMesaDestroyVisual
_AmigaMesaDestroyVisual
	move.l	a6,-(a7)
	move.l	a0,a6
L84
;   gl_destroy_visual( v->gl_visual );
	move.l	(a6),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_visual
	addq.w	#4,a7
;   FreeVec( v );
	move.l	a6,a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	move.l	(a7)+,a6
	rts

	SECTION "_AmigaMesaCreateBuffer:0",CODE


;struct amigamesa_buffer *AmigaMesaCreateBuffer( struct amigamesa_vis
	XDEF	_AmigaMesaCreateBuffer
_AmigaMesaCreateBuffer
L88	EQU	-$8
	link	a5,#L88
	move.l	a6,-(a7)
L85
;   b = (struct amigamesa_buffer *) AllocVec(sizeof(struct amigame
	moveq	#4,d0
	move.l	#$10001,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,a6
;   if (!b) 
	cmp.w	#0,a6
	bne.b	L87
L86
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L87
;   b->gl_buffer = gl_create_framebuffer( visual->gl_visual);
	move.l	$8(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_create_framebuffer
	addq.w	#4,a7
	move.l	d0,(a6)
	move.l	a6,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

	SECTION "_AmigaMesaDestroyBuffer:0",CODE


;void AmigaMesaDestroyBuffer( struct amigamesa_buffer *b )
	XDEF	_AmigaMesaDestroyBuffer
_AmigaMesaDestroyBuffer
	move.l	a6,-(a7)
	move.l	$8(a7),a6
L89
;	gl_destroy_framebuffer( b->gl_buffer );
	move.l	(a6),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_framebuffer
	addq.w	#4,a7
;   FreeVec( b );
	move.l	a6,a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	move.l	(a7)+,a6
	rts

	SECTION "_AmigaMesaCreateContextTags:0",CODE


;struct amigamesa_context *AmigaMesaCreateContextTags(long Tag1, ...)
	XDEF	_AmigaMesaCreateContextTags
_AmigaMesaCreateContextTags
L91	EQU	0
	link	a5,#L91
L90
	lea	$8(a5),a0
	jsr	_AmigaMesaCreateContext
	unlk	a5
	rts

	SECTION "_AmigaMesaCreateContext:0",CODE


;struct amigamesa_context * __saveds
	XDEF	_AmigaMesaCreateContext
_AmigaMesaCreateContext
L153	EQU	-$80
	link	a5,#L153
	move.l	a6,-(a7)
	move.l	a0,-$80(a5)
L93
;	SetFPU();
	jsr	_SetFPU
;	if (CyberGfxBase==NULL)
	move.l	_CyberGfxBase,a0
	cmp.w	#0,a0
	bne.b	L95
L94
;			CyberGfxBase = OpenLibrary((UBYTE*)"cybergraphics.library",0);
	moveq	#0,d0
	move.l	#L92,a1
	move.l	_SysBase,a6
	jsr	-$228(a6)
	move.l	d0,_CyberGfxBase
L95
;	c = (struct amigamesa_context *) AllocVec(sizeof(struct amigamesa_
	move.l	#$49C,d0
	move.l	#$10001,d1
	move.l	_SysBase,a6
	jsr	-$2AC(a6)
	move.l	d0,-4(a5)
;	if (!c)
	tst.l	-4(a5)
	bne.b	L97
L96
;		LastError=AMESA_OUT_OF_MEM;
	clr.l	_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L97
;	c->window=(struct Window *)GetTagData(AMA_Window,0,tagList);
	move.l	#$80000027,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a1
	move.l	d0,$1C(a1)
;	if (!c->window)
	move.l	-4(a5),a1
	move.l	$1C(a1),a0
	cmp.w	#0,a0
	bne	L103
L98
;	    c->rp=(struct RastPort *)GetTagData(AMA_RastPort,0,tagList)
	move.l	#$80000028,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a1
	move.l	d0,$34(a1)
;	    if (!c->rp)
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	cmp.w	#0,a0
	bne.b	L100
L99
;		LastError=AMESA_RASTPORT_TAG_MISSING;
	move.l	#1,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L100
;	    c->Screen=(struct Screen *)GetTagData(AMA_Screen,0,tagList)
	move.l	#$80000026,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a1
	move.l	d0,$38(a1)
;	    if (!c->Screen)
	move.l	-4(a5),a1
	move.l	$38(a1),a0
	cmp.w	#0,a0
	bne.b	L102
L101
;		LastError=AMESA_SCREEN_TAG_MISSING;
	move.l	#2,_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L102
;		return
	bra.b	L104
L103
;	    c->rp =c->window->RPort;
	move.l	-4(a5),a1
	move.l	$1C(a1),a0
	move.l	$32(a0),a0
	move.l	-4(a5),a1
	move.l	a0,$34(a1)
;	    c->Screen=c->window->WScreen;
	move.l	-4(a5),a1
	move.l	$1C(a1),a0
	move.l	$2E(a0),a0
	move.l	-4(a5),a1
	move.l	a0,$38(a1)
L104
;	if (GetTagData(AMA_Fullscreen,GL_FALSE,tagList) == GL_TRUE)
	move.l	#$80000054,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	cmp.l	#1,d0
	bne.b	L106
L105
;		c->flags = c->flags | FLAG_FULLSCREEN;
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	or.l	#$8,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
L106
;	if (GetTagData(AMA_DirectRender,GL_FALSE,tagList) == GL_TRUE)
	move.l	#$80000055,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	cmp.l	#1,d0
	bne.b	L108
L107
;		c->flags = c->flags | FLAG_DIRECTRENDER;
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	or.l	#$10,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
L108
;	if (CyberGfxBase != 0)
	move.l	_CyberGfxBase,a0
	cmp.w	#0,a0
	beq	L120
L109
;	    if (IsCyberModeID(GetVPModeID(&c->Screen->ViewPort)))
	move.l	-4(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	_GfxBase,a6
	jsr	-$318(a6)
	move.l	_CyberGfxBase,a6
	jsr	-$36(a6)
	tst.w	d0
	beq	L120
L110
;		fmt = GetCyberMapAttr(c->rp->BitMap,CYBRMATTR_PIXFMT);
	move.l	-4(a5),a1
	move.l	$34(a1),a0
	move.l	4(a0),a0
	move.l	#$80000004,d0
	move.l	_CyberGfxBase,a6
	jsr	-$60(a6)
;		if ((fmt != PIXFMT_LUT8) && (fmt != PIXFMT_RGB16)
	tst.l	d0
	beq.b	L120
L111
	cmp.l	#5,d0
	beq.b	L120
L112
	cmp.l	#$B,d0
	beq.b	L120
L113
	cmp.l	#$C,d0
	beq.b	L120
L114
	cmp.l	#7,d0
	beq.b	L120
L115
	cmp.l	#1,d0
	beq.b	L120
L116
	cmp.l	#3,d0
	beq.b	L120
L117
	cmp.l	#4,d0
	beq.b	L120
L118
	cmp.l	#$8,d0
	beq.b	L120
L119
;		    c->flags = c->flags & (~FLAG_DIRECTRENDER);
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	and.l	#-$11,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
;		    c->flags = c->flags & (~FLAG_FULLSCREEN);
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	and.l	#-$9,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
L120
;	c->visual=(struct amigamesa_visual *)GetTagData(AMA_Visual,NULL,ta
	move.l	#$80000061,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a1
	move.l	d0,4(a1)
;	c->buffer=(struct amigamesa_buffer *)GetTagData(AMA_Buffer,NULL,ta
	move.l	#$80000062,d0
	moveq	#0,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	-4(a5),a1
	move.l	d0,$8(a1)
;	if(!c->visual)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	cmp.w	#0,a0
	bne.b	L124
L121
;		if (!(c->visual=AmigaMesaCreateVisual(tagList)))
	move.l	-$80(a5),a0
	jsr	_AmigaMesaCreateVisual
	move.l	-4(a5),a1
	move.l	d0,4(a1)
	bne.b	L123
L122
;			LastError=AMESA_OUT_OF_MEM;
	clr.l	_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L123
;		c->flags=c->flags|FLAG_OWNVISUAL;
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	or.l	#1,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
L124
;	if(!c->buffer)
	move.l	-4(a5),a1
	move.l	$8(a1),a0
	cmp.w	#0,a0
	bne.b	L128
L125
;		if(!(c->buffer=AmigaMesaCreateBuffer( c->visual,GetTagData(AMA_W
	move.l	#$80000063,d0
	moveq	#1,d1
	move.l	-$80(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	d0,-(a7)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.l	a0,-(a7)
	jsr	_AmigaMesaCreateBuffer
	addq.w	#$8,a7
	move.l	-4(a5),a1
	move.l	d0,$8(a1)
	bne.b	L127
L126
;			LastError=AMESA_OUT_OF_MEM;
	clr.l	_LastError
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L127
;		c->flags=c->flags|FLAG_OWNBUFFER;
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	or.l	#2,d0
	move.l	-4(a5),a0
	move.l	d0,$10(a0)
L128
;	c->share = NULL;
	move.l	-4(a5),a1
	clr.l	$C(a1)
;	c->gl_ctx = gl_create_context(  c->visual->gl_visual,NULL,(void *)
	move.l	-4(a5),-(a7)
	clr.l	-(a7)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.l	(a0),a0
	move.l	a0,-(a7)
	jsr	_gl_create_context
	add.w	#$C,a7
	move.l	-4(a5),a1
	move.l	d0,(a1)
;	if (CyberGfxBase)
	tst.l	_CyberGfxBase
	beq	L142
L129
;		if ( ((c->flags & FLAG_DIRECTRENDER) && (IsCyberModeID(GetVPMode
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	and.l	#$10,d0
	beq.b	L131
L130
	move.l	-4(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	_GfxBase,a6
	jsr	-$318(a6)
	move.l	_CyberGfxBase,a6
	jsr	-$36(a6)
	tst.w	d0
	bne.b	L132
L131
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	and.l	#$8,d0
	beq.b	L135
L132
;			if (SWFSDriver_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_SWFSDriver_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L134
L133
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L134
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L135
;		if(c->visual->db_flag==GL_TRUE)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	cmp.b	#1,d0
	bne.b	L139
L136
;			if (SWDriver_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_SWDriver_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L138
L137
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L138
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L139
;			if (Cyb_Standard_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_Cyb_Standard_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L141
L140
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L141
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L142
;		if (c->flags & FLAG_FULLSCREEN)
	move.l	-4(a5),a0
	move.l	$10(a0),d0
	and.l	#$8,d0
	beq.b	L146
L143
;			if (SWFSDriver_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_SWFSDriver_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L145
L144
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L145
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L146
;		if(c->visual->db_flag==GL_TRUE)
	move.l	-4(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	cmp.b	#1,d0
	bne.b	L150
L147
;			if (SWDriver_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_SWDriver_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L149
L148
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L149
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L150
;			if (Amiga_Standard_init(c,tagList))
	move.l	-$80(a5),-(a7)
	move.l	-4(a5),-(a7)
	jsr	_Amiga_Standard_init
	addq.w	#$8,a7
	tst.w	d0
	beq.b	L152
L151
	move.l	-4(a5),d0
	move.l	(a7)+,a6
	unlk	a5
	rts
L152
;				gl_destroy_context( c->gl_ctx );
	move.l	-4(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;				FreeVec( c );
	move.l	-4(a5),a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
	moveq	#0,d0
	move.l	(a7)+,a6
	unlk	a5
	rts

L92
	dc.b	'cybergraphics.library',0

	SECTION "_AmigaMesaDestroyContext:0",CODE


;void __saveds AmigaMesaDestroyContext(register __a0 struct amigamesa
	XDEF	_AmigaMesaDestroyContext
_AmigaMesaDestroyContext
	move.l	a6,-(a7)
	move.l	a0,a6
L154
;	(*c->Dispose)( c );
	move.l	a6,-(a7)
	move.l	$494(a6),a0
	jsr	(a0)
	addq.w	#4,a7
;	if(c->flags&FLAG_OWNVISUAL)
	move.l	$10(a6),d0
	and.l	#1,d0
	beq.b	L156
L155
;		AmigaMesaDestroyVisual(c->visual);
	move.l	4(a6),a0
	jsr	_AmigaMesaDestroyVisual
L156
;	if(c->flags&FLAG_OWNBUFFER)
	move.l	$10(a6),d0
	and.l	#2,d0
	beq.b	L158
L157
;		AmigaMesaDestroyBuffer(c->buffer);
	move.l	$8(a6),a0
	move.l	a0,-(a7)
	jsr	_AmigaMesaDestroyBuffer
	addq.w	#4,a7
L158
;	gl_destroy_context( c->gl_ctx );
	move.l	(a6),a0
	move.l	a0,-(a7)
	jsr	_gl_destroy_context
	addq.w	#4,a7
;	FreeVec( c );
	move.l	a6,a1
	move.l	_SysBase,a6
	jsr	-$2B2(a6)
;	if (CyberGfxBase)
	tst.l	_CyberGfxBase
	beq.b	L160
L159
;		CloseLibrary(CyberGfxBase);
	move.l	_CyberGfxBase,a1
	move.l	_SysBase,a6
	jsr	-$19E(a6)
L160
;	RestoreFPU();
	jsr	_RestoreFPU
	move.l	(a7)+,a6
	rts

	SECTION "_AmigaMesaMakeCurrent:0",CODE


;void __saveds AmigaMesaMakeCurrent(register __a0 struct amigamesa_co
	XDEF	_AmigaMesaMakeCurrent
_AmigaMesaMakeCurrent
L177	EQU	-$C
	link	a5,#L177
	move.l	a2,-(a7)
	fmovem.x fp2,-(a7)
	move.l	a1,-$C(a5)
	move.l	a0,a2
L161
;   if (amesa && b) 
	cmp.w	#0,a2
	beq	L175
L162
	tst.l	-$C(a5)
	beq	L175
L163
;	    if (amesa->gl_ctx == gl_get_current_context())
	move.l	(a2),-$8(a5)
	jsr	_gl_get_current_context
	move.l	-$8(a5),a0
	cmp.l	d0,a0
	bne.b	L165
L164
	fmovem.x (a7)+,fp2
	move.l	(a7)+,a2
	unlk	a5
	rts
L165
;	    if (amesa->share == NULL)
	move.l	$C(a2),a0
	cmp.w	#0,a0
	bne	L168
L166
;	      if (!(amesa->visual->rgb_flag))
	move.l	4(a2),a0
	move.b	5(a0),d0
	bne	L168
L167
;		AmigaMesaSetOneColor(amesa,0,0.0,0.0,0.0);
	moveq	#0,d0
	move.l	a2,a0
	fmove.s	#$.00000000,fp0
	fmove.s	#$.00000000,fp1
	fmove.s	#$.00000000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,1,1.0,0.0,0.0);
	moveq	#1,d0
	move.l	a2,a0
	fmove.s	#$.3F800000,fp0
	fmove.s	#$.00000000,fp1
	fmove.s	#$.00000000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,2,0.0,1.0,0.0);
	moveq	#2,d0
	move.l	a2,a0
	fmove.s	#$.00000000,fp0
	fmove.s	#$.3F800000,fp1
	fmove.s	#$.00000000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,3,1.0,1.0,0.0);
	moveq	#3,d0
	move.l	a2,a0
	fmove.s	#$.3F800000,fp0
	fmove.s	#$.3F800000,fp1
	fmove.s	#$.00000000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,4,0.0,0.0,1.0);
	moveq	#4,d0
	move.l	a2,a0
	fmove.s	#$.00000000,fp0
	fmove.s	#$.00000000,fp1
	fmove.s	#$.3F800000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,5,1.0,0.0,1.0);
	moveq	#5,d0
	move.l	a2,a0
	fmove.s	#$.3F800000,fp0
	fmove.s	#$.00000000,fp1
	fmove.s	#$.3F800000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,6,0.0,1.0,1.0);
	moveq	#6,d0
	move.l	a2,a0
	fmove.s	#$.00000000,fp0
	fmove.s	#$.3F800000,fp1
	fmove.s	#$.3F800000,fp2
	jsr	_AmigaMesaSetOneColor
;		AmigaMesaSetOneColor(amesa,7,1.0,1.0,1.0);
	moveq	#7,d0
	move.l	a2,a0
	fmove.s	#$.3F800000,fp0
	fmove.s	#$.3F800000,fp1
	fmove.s	#$.3F800000,fp2
	jsr	_AmigaMesaSetOneColor
L168
;	   gl_make_current( amesa->gl_ctx,b->gl_buffer );
	move.l	-$C(a5),a1
	move.l	(a1),a0
	move.l	a0,-(a7)
	move.l	(a2),a0
	move.l	a0,-(a7)
	jsr	_gl_make_current
	addq.w	#$8,a7
;	   (*amesa->InitDD)(amesa->gl_ctx);
	move.l	(a2),a0
	move.l	a0,-(a7)
	move.l	$490(a2),a0
	jsr	(a0)
	addq.w	#4,a7
;	   if (amesa->gl_ctx->Viewport.Width==0) 
	move.l	(a2),a0
	add.l	#$DCA8,a0
	lea	(a0),a0
	move.l	$8(a0),d0
	bne.b	L170
L169
;		glViewport( 0, 0, amesa->width, amesa->height );
	move.l	$5C(a2),d0
	move.l	d0,-(a7)
	move.l	$58(a2),d0
	move.l	d0,-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glViewport
	add.w	#$10,a7
L170
;	   if (amesa->share == NULL)
	move.l	$C(a2),a0
	cmp.w	#0,a0
	bne.b	L174
L171
;	     if (!(amesa->visual->rgb_flag))
	move.l	4(a2),a0
	move.b	5(a0),d0
	bne.b	L173
L172
;		glClearIndex(0.0);
	clr.l	-(a7)
	jsr	_glClearIndex
	addq.w	#4,a7
	bra.b	L174
L173
;		glClearColor(0.0,0.0,0.0,0.0);
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_glClearColor
	add.w	#$10,a7
L174
;	   amesa->share = (struct amigamesa_context *)1;
	move.l	#1,$C(a2)
	bra.b	L176
L175
;	gl_make_current( NULL,NULL);
	clr.l	-(a7)
	clr.l	-(a7)
	jsr	_gl_make_current
	addq.w	#$8,a7
L176
	fmovem.x (a7)+,fp2
	move.l	(a7)+,a2
	unlk	a5
	rts

	SECTION "_AmigaMesaSwapBuffers:0",CODE


;void __saveds AmigaMesaSwapBuffers(register __a0 struct amigamesa_co
	XDEF	_AmigaMesaSwapBuffers
_AmigaMesaSwapBuffers
L178
;	(*amesa->SwapBuffer)( amesa );
	move.l	a0,-(a7)
	move.l	$498(a0),a0
	jsr	(a0)
	addq.w	#4,a7
	rts

	SECTION "_AmigaMesaSetDefs:0",CODE


;BOOL __saveds AmigaMesaSetDefs(register __a0 struct TagItem *tagList)
	XDEF	_AmigaMesaSetDefs
_AmigaMesaSetDefs
L179
	moveq	#0,d0
	rts

	SECTION "_AmigaMesaReportError:0",CODE


;GLenum __saveds AmigaMesaReportError(register __a0 struct amigamesa_
	XDEF	_AmigaMesaReportError
_AmigaMesaReportError
L180
;	error=LastError;
	move.l	_LastError,d0
;	LastError=NULL;
	clr.l	_LastError
	rts

	SECTION "_AmigaMesaSetOneColor:0",CODE


;void __saveds AmigaMesaSetOneColor(register __a0 struct amigamesa_co
	XDEF	_AmigaMesaSetOneColor
_AmigaMesaSetOneColor
L211	EQU	-$74
	link	a5,#L211
	movem.l	d2-d6/a6,-(a7)
	fmovem.x fp2/fp3,-(a7)
	move.l	a0,-$74(a5)
	move.l	d0,d5
L181
;    unsigned char red = (int)(r*255);
	fmul.s	#$.437F0000,fp0
	fmove.l	fp0,d1
;    unsigned char green = (int)(g*255);
	fmul.s	#$.437F0000,fp1
	fmove.l	fp1,d2
;    unsigned char blue = (int)(b*255);
	fmul.s	#$.437F0000,fp2
	fmove.l	fp2,d3
;    if (c->visual->rgb_flag)
	move.l	-$74(a5),a1
	move.l	4(a1),a0
	move.b	5(a0),d0
	beq.b	L183
L182
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2-d6/a6
	unlk	a5
	rts
L183
;    if (c->visual->db_flag)
	move.l	-$74(a5),a1
	move.l	4(a1),a0
	move.b	4(a0),d0
	beq	L207
L184
;	if (c->depth <= 8)
	move.l	-$74(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bhi	L186
L185
;	    color = (unsigned char)ObtainBestPen(c->Screen->ViewPort.C
	clr.l	-(a7)
	move.l	#-1,-(a7)
	move.l	#$84000000,-(a7)
	and.l	#$FF,d3
	moveq	#$18,d0
	asl.l	d0,d3
	and.l	#$FF,d2
	moveq	#$18,d0
	asl.l	d0,d2
	and.l	#$FF,d1
	moveq	#$18,d0
	asl.l	d0,d1
	move.l	-$74(a5),a1
	move.l	$38(a1),a0
	add.w	#$2C,a0
	move.l	4(a0),a0
	move.l	a7,a1
	move.l	_GfxBase,a6
	jsr	-$348(a6)
	add.w	#$C,a7
;	    (c->ColorTable2[color])++;
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	moveq	#0,d1
	move.b	d0,d1
	lea	0(a0,d1.l*4),a0
	move.l	(a0),d1
	addq.l	#1,d1
	move.l	d1,(a0)
;	    c->penconv[index] = color;
	move.l	-$74(a5),a1
	lea	$88(a1),a0
	add.l	d5,a0
	move.b	d0,(a0)
;	    c->penconvinv[color] = index;
	move.b	d5,d1
	move.l	-$74(a5),a1
	lea	$188(a1),a0
	and.l	#$FF,d0
	add.l	d0,a0
	move.b	d1,(a0)
	bra	L206
L186
;	    if ((c->flags & FLAG_FULLSCREEN) || (c->flags & FLAG_DIREC
	move.l	-$74(a5),a0
	move.l	$10(a0),d0
	and.l	#$8,d0
	bne.b	L188
L187
	move.l	-$74(a5),a0
	move.l	$10(a0),d0
	and.l	#$10,d0
	beq	L205
L188
;		if (c->fmt == PIXFMT_ARGB32)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#$B,d0
	bne.b	L190
L189
;		    c->ColorTable2[index] = (red << 16) | (green << 8) | blu
	moveq	#0,d0
	move.b	d1,d0
	moveq	#$10,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#$8,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d3,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L190
;		if (c->fmt == PIXFMT_BGRA32)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#$C,d0
	bne.b	L192
L191
;		    c->ColorTable2[index] = (blue << 24) | (green << 16) | (
	moveq	#0,d0
	move.b	d3,d0
	moveq	#$18,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#$10,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d1,d4
	moveq	#$8,d6
	asl.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L192
;		if (c->fmt == PIXFMT_RGB16)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#5,d0
	bne.b	L194
L193
;		    c->ColorTable2[index] = ((red >> 3) << 11) | ((green >> 
	moveq	#0,d0
	move.b	d1,d0
	moveq	#3,d4
	asr.l	d4,d0
	moveq	#$B,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#2,d6
	asr.l	d6,d4
	moveq	#5,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d3,d4
	moveq	#3,d6
	asr.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L194
;		if (c->fmt == PIXFMT_RGB16PC)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#7,d0
	bne.b	L196
L195
;		    c->ColorTable2[index] = ((red >> 3) << 3) | (green >> 5)
	moveq	#0,d0
	move.b	d1,d0
	moveq	#3,d4
	asr.l	d4,d0
	moveq	#3,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#5,d6
	asr.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#2,d6
	asr.l	d6,d4
	moveq	#$D,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d3,d4
	moveq	#3,d6
	asr.l	d6,d4
	moveq	#$8,d6
	asl.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L196
;		if (c->fmt == PIXFMT_RGB15)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#1,d0
	bne.b	L198
L197
;		    c->ColorTable2[index] = ((red >> 3) << 10) | ((green >> 
	moveq	#0,d0
	move.b	d1,d0
	moveq	#3,d4
	asr.l	d4,d0
	moveq	#$A,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#3,d6
	asr.l	d6,d4
	moveq	#5,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d3,d4
	moveq	#3,d6
	asr.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L198
;		if (c->fmt == PIXFMT_RGB15PC)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#3,d0
	bne.b	L200
L199
;		    c->ColorTable2[index] = ((red >> 3) << 2) | (green >> 6)
	moveq	#0,d0
	move.b	d1,d0
	moveq	#3,d4
	asr.l	d4,d0
	moveq	#2,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#6,d6
	asr.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#3,d6
	asr.l	d6,d4
	moveq	#$D,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d3,d4
	moveq	#3,d6
	asr.l	d6,d4
	moveq	#$8,d6
	asl.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L200
;		if (c->fmt == PIXFMT_BGR16PC)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#$8,d0
	bne.b	L202
L201
;		    c->ColorTable2[index] = ((blue >> 3) << 3) | (green >> 5)
	moveq	#0,d0
	move.b	d3,d0
	moveq	#3,d4
	asr.l	d4,d0
	moveq	#3,d4
	asl.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#5,d6
	asr.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d2,d4
	moveq	#2,d6
	asr.l	d6,d4
	moveq	#$D,d6
	asl.l	d6,d4
	or.l	d4,d0
	moveq	#0,d4
	move.b	d1,d4
	moveq	#3,d6
	asr.l	d6,d4
	moveq	#$8,d6
	asl.l	d6,d4
	or.l	d4,d0
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
L202
;		if (c->fmt == PIXFMT_BGR15PC)
	move.l	-$74(a5),a0
	move.l	$54(a0),d0
	cmp.l	#4,d0
	bne.b	L204
L203
;		    c->ColorTable2[index] = ((blue >> 3) << 2) | (green >> 6)
	and.l	#$FF,d3
	moveq	#3,d0
	asr.l	d0,d3
	moveq	#2,d0
	asl.l	d0,d3
	moveq	#0,d0
	move.b	d2,d0
	moveq	#6,d4
	asr.l	d4,d0
	or.l	d0,d3
	and.l	#$FF,d2
	moveq	#3,d0
	asr.l	d0,d2
	moveq	#$D,d0
	asl.l	d0,d2
	or.l	d2,d3
	and.l	#$FF,d1
	moveq	#3,d0
	asr.l	d0,d1
	moveq	#$8,d0
	asl.l	d0,d1
	or.l	d1,d3
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d3,(a0)
L204
	bra.b	L206
L205
;		c->ColorTable2[index] = (red << 16) | (green << 8) | blue;
	and.l	#$FF,d1
	moveq	#$10,d0
	asl.l	d0,d1
	and.l	#$FF,d2
	moveq	#$8,d0
	asl.l	d0,d2
	or.l	d2,d1
	and.l	#$FF,d3
	or.l	d3,d1
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d1,(a0)
L206
	bra	L210
L207
;	if (c->depth>8) 
	move.l	-$74(a5),a0
	move.l	$48(a0),d0
	cmp.l	#$8,d0
	bls.b	L209
L208
;	    c->ColorTable2[index] = (red << 16) | (green << 8) | blue;
	and.l	#$FF,d1
	moveq	#$10,d0
	asl.l	d0,d1
	and.l	#$FF,d2
	moveq	#$8,d0
	asl.l	d0,d2
	or.l	d2,d1
	and.l	#$FF,d3
	or.l	d3,d1
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d1,(a0)
;	    ((unsigned long*)c->penconv)[index] = c->ColorTable2[index
	move.l	-$74(a5),a1
	move.l	$84(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	(a0),d0
	move.l	-$74(a5),a1
	lea	$88(a1),a0
	lea	0(a0,d5.l*4),a0
	move.l	d0,(a0)
	bra.b	L210
L209
;	    color = EvalPen(c,red,green,blue);
	move.b	d3,-(a7)
	move.b	d2,-(a7)
	move.b	d1,-(a7)
	move.l	-$74(a5),-(a7)
	jsr	_EvalPen
	add.w	#$A,a7
;	    c->penconv[index] = color;
	move.l	-$74(a5),a1
	lea	$88(a1),a0
	add.l	d5,a0
	move.b	d0,(a0)
;	    c->penconvinv[color] = index;
	move.b	d5,d1
	move.l	-$74(a5),a1
	lea	$188(a1),a0
	and.l	#$FF,d0
	add.l	d0,a0
	move.b	d1,(a0)
L210
	fmovem.x (a7)+,fp2/fp3
	movem.l	(a7)+,d2-d6/a6
	unlk	a5
	rts

	SECTION "_AmigaMesaSetRastTags:0",CODE


;void AmigaMesaSetRastTags(struct amigamesa_context *c, long Tag1, ..
	XDEF	_AmigaMesaSetRastTags
_AmigaMesaSetRastTags
L213	EQU	0
	link	a5,#L213
	move.l	$8(a5),a0
L212
;	AmigaMesaSetRast(c,(struct TagItem *)&Tag1);
	lea	$C(a5),a1
	jsr	_AmigaMesaSetRast
	unlk	a5
	rts

	SECTION "_AmigaMesaSetRast:0",CODE


;void __saveds AmigaMesaSetRast(register __a0 struct amigamesa_contex
	XDEF	_AmigaMesaSetRast
_AmigaMesaSetRast
L223	EQU	-$1C
	link	a5,#L223
	movem.l	a2/a6,-(a7)
	move.l	a0,-$1C(a5)
	move.l	a1,-$14(a5)
L214
;	if (c->flags & FLAG_FULLSCREEN)
	move.l	-$1C(a5),a0
	move.l	$10(a0),d0
	and.l	#$8,d0
	beq.b	L216
L215
;		LastError=AMESA_NOT_IN_FULLSCREEN;
	move.l	#4,_LastError
	movem.l	(a7)+,a2/a6
	unlk	a5
	rts
L216
;	win=(struct Window *)GetTagData(AMA_Window,0,tagList);
	move.l	#$80000027,d0
	moveq	#0,d1
	move.l	-$14(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	d0,-4(a5)
;	rp=(struct RastPort *)GetTagData(AMA_RastPort,0,tagList);
	move.l	#$80000028,d0
	moveq	#0,d1
	move.l	-$14(a5),a0
	move.l	_UtilityBase,a6
	jsr	-$24(a6)
	move.l	d0,a0
;	if (!win)
	tst.l	-4(a5)
	bne.b	L221
L217
;	    if (!rp)
	cmp.w	#0,a0
	bne.b	L219
L218
;		c->rp = NULL;
	move.l	-$1C(a5),a2
	clr.l	$34(a2)
;		c->front_rp = rp;
	move.l	-$1C(a5),a1
	move.l	a0,$20(a1)
	bra.b	L220
L219
;		c->rp = rp;
	move.l	-$1C(a5),a1
	move.l	a0,$34(a1)
;		c->front_rp = rp;
	move.l	-$1C(a5),a1
	move.l	a0,$20(a1)
L220
	bra.b	L222
L221
;	    c->window = win;
	move.l	-$1C(a5),a1
	move.l	-4(a5),$1C(a1)
;	    c->rp = win->RPort;
	move.l	-4(a5),a1
	move.l	$32(a1),a0
	move.l	-$1C(a5),a1
	move.l	a0,$34(a1)
;	    c->front_rp = c->rp;
	move.l	-$1C(a5),a1
	move.l	$34(a1),a0
	move.l	-$1C(a5),a1
	move.l	a0,$20(a1)
L222
	movem.l	(a7)+,a2/a6
	unlk	a5
	rts

	END
