	section l,code_c
; coded by atlaw

screen: equ $60000
radsize:equ 40
scsize: equ radsize*263
IRQBASE:equ	$6c

DEST=	screen+4020

INTENA:	equ	$09a
INTENAR:equ	$01c
INTREQR:equ	$01e
INTREQ:	equ	$09c
DMACONR:equ	$002
DMACON:	equ	$096
COP1LCH:equ	$080
COP2LCH:equ	$084
COPJMP1:equ	$088
COPJMP2:equ	$08a
COPCON:	equ	$02e
JOY0DAT:equ	$00a
JOY1DAT:equ	$00c
SPR0DATA:equ	$144
BLTAPTH:equ 	$050
BLTBPTH:equ 	$04c
BLTCPTH:equ 	$048
BLTDPTH:equ 	$054
BLTAMOD:equ 	$064
BLTBMOD:equ 	$062
BLTCMOD:equ 	$060
BLTDMOD:equ 	$066
BLTCON0:equ 	$040
BLTCON1:equ 	$042
BLTAFWM:equ 	$044
BLTALWM:equ 	$046
BLTSIZE:equ 	$058
BLTADAT:equ 	$074
BLTBDAT:equ 	$072
BLTCDAT:equ 	$070

s:
multioff: 
	move.l	$4,a6
        jsr	-132(a6)
memclear: 
	move.l	#$060000,a0
	move.l	#$070000,a1
	moveq	#$00,d0
mclear:	
	move.b	d0,(a0)+
	cmp.l	a0,a1
	bne	mclear

	move.l	#$dff000,a6
systemout:
	move.l	#COPPER,COP1LCH(a6)
	clr.w	COPJMP1(a6)
	lea	OLDONES(pc),a0
	move.l	IRQBASE,(a0)+
	move.w	INTENAR(a6),(a0)+
	move.w	DMACONR(a6),(a0)+
	lea	INTERUPT(pc),a0
	move.l	a0,IRQBASE
	move.w	#$7fff,DMACON(a6)
	move.w	#$83c0,DMACON(a6)
	move.w	#$7fff,INTENA(a6)
	move.w	#$c020,INTENA(a6)
	clr.l	SPR0DATA(a6)
	or.w	#$0002,COPCON(a6)
	clr.w	d3
	move.w	#64,d4

CHECK: 	
	btst 	#$6,$bfe001
      	bne	CHECK
RETURN: 
	lea	OLDONES(pc),a0
	move.l	(a0)+,IRQBASE
	move.w	(a0)+,d0
	bset	#15,d0
	move.w	#$7fff,INTENA(a6)
	move.w	d0,INTENA(a6)
	move.w	(a0)+,d0
	bset	#15,d0
	move.w	#$7fff,DMACON(a6)
	move.w	d0,DMACON(a6)
	move.l	$4,a6
	lea	GFXNAME(pc),a1
	clr.w	d0
	jsr	-552(a6)
	move.l	d0,a0
	move.l	38(a0),$dff000+COP1LCH
	clr.w	$dff000+COPJMP1
	jsr	-138(a6)
	clr.l	d0
        rts

OLDONES:
OLDIRQ:	dc.l	0
OLDINT:	dc.w	0
OLDDMA:	dc.w	0
GFXNAME:dc.b	"graphics.library",00

	even
COPPER:	
	dc.w	$008e,$2c81,$0090,$7fc1
	dc.w	$0092,$0038,$0094,$00d0
	dc.w	$0102,$0000
	dc.w	$0104,$0000
	dc.w	$0108,$0000
	dc.w	$010a,$0000
	dc.w	$0100,$1200
col:	dc.w	$0180,$0000,$0182,$0ccc,$0184,$0ee0,$0186,$0e80
	dc.w	$0188,$0e00,$018a,$0668,$018c,$088a,$018e,$0aac
	dc.w	$0190,$0cce,$0192,$0464,$0194,$0242,$0196,$0c6e
	dc.w	$0198,$0eee,$019a,$0eee,$019c,$0eee,$019e,$0eee
bpl1:	dc.w	$00e0,$0006,$00e2,$0000
	dc.w	$00e4,$0006,$00e6,$0000
	dc.w	$00e8,$0006,$00ea,$0000
	dc.w	$00ec,$0006,$00ee,$0000
	dc.w	$0001,$7ffe 
copclr:	dc.w	BLTDPTH,$0006,BLTDPTH+2,$0000
	dc.w	BLTDMOD,$0000
	dc.w	BLTCON0,$01f0
	dc.w	BLTCON1,$0000
	dc.w	BLTADAT,$0000
	dc.w	BLTSIZE,$4014
	dc.w	$ffff,$fffe  

INTERUPT:
	move.w	INTREQR(a6),d0
	btst	#05,d0
	bne	MAINvb
;-------interupt kollar
out:	
	move.w	d0,INTREQ(a6)
	rte
MAINvb:	
	move.w	d0,INTREQ(a6)
mousecheck:
 	btst 	#$6,$bfe001
      	beq	out
;-------frame ruitner
	bsr	A
	rte

A:
	lea	sinelist(pc),a0
	moveq	#15,d7
	move.l	#$80008000,d1
aloop1:
	move.l	#screen+1200,a1
	clr.w	d0
	move.b	(a0,d3.w),d0
	mulu	#50,d0
	lsr.l	#8,d0
	mulu	#radsize,d0
	add.l	d0,a1
	clr.w	d0
	move.b	(a0,d4.w),d0
	mulu	#304,d0
	lsr.l	#8,d0
	ror.l	#4,d0
	add.w	d0,d0
	add.w	d0,a1
	swap	d0
	or.w	#$0dfc,d0	
	bsr	bwait 
	move.l	#DATA,BLTAPTH(a6) 
	move.l	a1,BLTBPTH(a6)
	move.l	a1,BLTDPTH(a6)
	move.w	#$0000,BLTAMOD(a6)
	move.w	#radsize*9-4,BLTBMOD(a6)
	move.w	#radsize*9-4,BLTDMOD(a6)
	move.w	d0,BLTCON0(a6)
	move.w	#$0000,BLTCON1(a6)
	move.l	d1,BLTAFWM(a6)
	move.w	#$0402,BLTSIZE(a6)
	addq.b	#3,d3
	addq.b	#3,d4
	ror.l	#1,d1
	dbra	d7,aloop1
	sub.b	#16*3+3,d3
	sub.b	#16*3+2,d4
	rts

bwait:	btst 	#$6,$002(a6)
	bne 	bwait
	rts


DATA:
	dc.w	%0111111111111110,0
	dc.w	%1111111111111111,0
	dc.w	%1111111111111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111111111111111,0
	dc.w	%1111111111111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0
	dc.w	%1111110000111111,0

sinelist:;256 positioner (7 bitar),sin x*127:x=x+1.40625 (?)
	dc.b	127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176
	dc.b	178,181,184,187,190,192,195,198,200,203,205,208,210,212,215,217,219
	dc.b	221,223,225,227,229,231,233,234,236,238,239,240,242,243,244,245,247
	dc.b	248,249,249,250,251,252,252,253,253,253,254,254,254,254,254,254,254
	dc.b	253,253,253,252,252,251,250,249,249,248,247,245,244,243,242,240,239
	dc.b	238,236,234,233,231,229,227,225,223,221,219,217,215,212,210,208,205
	dc.b	203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158
	dc.b	155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105
	dc.b	102,099,096,093,090,087,084,081,078,076,073,070,067,064,062,059,056
	dc.b	054,051,049,046,044,042,039,037,035,033,031,029,027,025,023,021,020
	dc.b	018,016,015,014,012,011,010,009,007,006,005,005,004,003,002,002,001
	dc.b	001,001,000,000,000,000,000,000,000,001,001,001,002,002,003,004,005
	dc.b	005,006,007,009,010,011,012,014,015,016,018,020,021,023,025,027,029
	dc.b	031,033,035,037,039,042,044,046,049,051,054,056,059,062,064,067,070
	dc.b	073,076,078,081,084,087,090,093,096,099,102,105,108,111,115,118,121
	dc.b	124,127


