שתשת  W                                    
time=		0
debug=		0
cus=		$dff000


		Section	ChipCode,code_C

		include	seka:src/AGA/macros.i

j		lea	$dff000,a6
		ifeq	debug
		bsr.w	setup
		endc

		lea	j(pc),a5

		bsr.w	DoPic
		bsr.w	CodeBase
		bsr.w	DoPotTab
		bsr.w	CodeZoomTab

		ifeq	debug
		lea	base1,a0
		lea	base2,a1
		move.l	a0,d0
		move.l	a1,d1
		move.w	d0,cjmp1+6
		move.w	d1,cjmp2+6
		swap	d0
		swap	d1
		move.w	d0,cjmp1+2
		move.w	d1,cjmp2+2


		lea	planes1,a1
		lea	planes2,a2
		lea	ScreenPlanar,a3
		move.l	a3,d0
		moveq	#7-1,d7
.oo		move.w	d0,6(a1)
		move.w	d0,6(a2)
		swap	d0
		move.w	d0,2(a1)
		move.w	d0,2(a2)
		swap	d0
		addq.l	#8,a1
		addq.l	#8,a2
		add.l	#192/8,d0
		dbf	d7,.oo
	

		lea	copper1,a0
		move.l	a0,$80(a6)
		endc


		bsr.w	MandelDraw
		move.w	ha+2,ha

mainloop:	ifeq	debug
		cmp.b	#$37,$dff006
		bne.s	mainloop
		tst.b	$dff005
		beq.s	mainloop
		endc

;		bsr.w	Swaps

		ifne	time
		move.w	#$666,$dff180
		endc

		btst	#6,$bfe001
		bne.w	mainloop


quit:		lea	$dff000,a6
		moveq	#0,d7
		move.b	$6(a6),d7
		bsr.w	setdown
		moveq	#0,d0
		rts

;------------------------------------------
;------------------------------------------

interrupt:	btst	#5,$dff01f
		beq.s	interrupt
		move.w	#$0020,$dff09c

		addq.w	#1,ha+2
;		movem.l	d0-a6,-(sp)
;		movem.l	(sp)+,d0-a6
		rte

		include	seka:src/AGA/interrupt.i
		blk.b	128,0

;------------------------------------------
;------------------------------------------

Swaps:		cmp.b	#$36,$dff006
		bne.s	Swaps
		tst.b	$dff005
		beq.s	Swaps

		lea	drawcopper,a0
		move.l	(a0),d0
		move.l	4(a0),(a0)
		move.l	d0,4(a0)
		move.l	d0,$dff080

		lea	drawbase,a0
		move.l	(a0),d0
		move.l	4(a0),(a0)
		move.l	d0,4(a0)
		rts


;*********************************************
;*       Little Julia drawing routine        *
;*********************************************

SHe=	95
z1=	3
z2=	3
cx=	-$00
cy=	$600

MandelDraw:	movem.l	a5-a6,-(sp)

		lea	CopperPlaces,a1
		lea	PotTab+[4*$8000],a3

		moveq	#0,d0
		sub.l	a6,a6		; j
		move.w	#cy-($2000*z2/z1),cordy

LoopY:		lea	base1,a0
		add.l	(a1)+,a0
		sub.l	a5,a5
		move.w	#cx-($2000*z2/z1),cordx

LoopX:		move.w	cordx,d0
		move.w	cordy,d1
		move.w	d0,d2
		move.w	d1,d3
		move.w	d0,d4
		move.w	d1,d5
		moveq	#30-1,d7		;iterations
		bra	.Skip

.IterLoop:	sub.l	d3,d2		; x^2-y^2
		asl.l	#4,d2
		swap	d2
		add.w	d4,d2		; x1

		move.w	d1,d3
		muls	d0,d3		; x*2*y
		asl.l	#5,d3
		swap	d3

		add.w	d5,d3		; y1
		move.w	d2,d0
		move.w	d3,d1

.Skip:		move.l	(a3,d2.w*4),d2	;x2
		move.l	d2,d6
		move.l	(a3,d3.w*4),d3	;y2
		add.l	d3,d6

		cmp.l	#$4000000,d6		; eskapistisk ?
		bhi.s	.PutColor
		dbf	d7,.IterLoop

.PutColor:	move.w	ColTab(pc,d7.w*2),(a0)
		add.l	#4*99,a0

		addq.l	#1,a5
		add.w	#$3000*z2/z1/SHe,cordx
		cmp.l	#96,a5
		blt.s	LoopX

		add.w	#$3000*z2/z1/SHe,cordy
		addq.l	#1,a6
		cmp.l	#95,a6
		blt.w	LoopY

end:		movem.l	(sp)+,a5-a6
		rts


		dc.w	0
ColTab:
		dc.w	0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
		dc.w	$10f,$20f,$30f,$40f,$50f,$60f,$70f,$80f
		dc.w	$90f,$a0f,$b0f,$c0f,$d0f,$e0f,$f0f,$fff

;----------------------------------------------
;----------------------------------------------

DoPotTab:	lea	PotTab+[4*$8000],a0
		move.l	a0,a1
		moveq	#0,d0
		moveq	#1,d1
		move.l	#$8000,d7
.PotTabLoop:	move.l	d0,(a0)+
		move.l	d0,-(a1)
		add.l	d1,d0
		addq.l	#2,d1
		subq.l	#1,d7
		bgt.s	.PotTabLoop
		rts


DoPic:		lea	CopperPlaces,a0
		moveq	#10,d0
		moveq	#31-1,d7
.plp1		move.l	d0,(a0)+
		addq.w	#4,d0
		dbf	d7,.plp1

		addq.w	#4,d0
		moveq	#32-1,d7
.plp2		move.l	d0,(a0)+
		addq.w	#4,d0
		dbf	d7,.plp2

		addq.w	#4,d0
		moveq	#32-1,d7
.plp3		move.l	d0,(a0)+
		addq.w	#4,d0
		dbf	d7,.plp3


		lea	ScreenChunky,a0
		moveq	#2,d0
		moveq	#192/2-1,d7
.CLp:		move.b	d0,(a0)+
		move.b	d0,(a0)+
		addq.w	#2,d0
		dbf	d7,.CLp


convert:	lea	ScreenChunky,a0
		lea	ScreenPlanar,a1

		move.l	#192/32,a3
.lp		moveq	#0,d0
		moveq	#0,d1
		moveq	#0,d2
		moveq	#0,d3
		moveq	#0,d4
		moveq	#0,d5
		moveq	#0,d6
		moveq	#0,d7

		move.l	#32,a2
.lpw		move.b	(a0)+,d7
		add.b	d7,d7
		addx.l	d6,d6
		add.b	d7,d7
		addx.l	d5,d5
		add.b	d7,d7
		addx.l	d4,d4
		add.b	d7,d7
		addx.l	d3,d3
		add.b	d7,d7
		addx.l	d2,d2
		add.b	d7,d7
		addx.l	d1,d1
		add.b	d7,d7
		addx.l	d0,d0

		subq.l	#1,a2
		cmp.l	#0,a2
		bgt.s	.lpw

		move.l	d1,1*192/8(a1)
		move.l	d2,2*192/8(a1)
		move.l	d3,3*192/8(a1)
		move.l	d4,4*192/8(a1)
		move.l	d5,5*192/8(a1)
		move.l	d6,6*192/8(a1)	p7
		move.l	d0,(a1)+	p1
		subq.l	#1,a3
		cmp.l	#0,a3
		bgt.s	.lp
		rts


CodeBase:	lea	base1,a0
		move.l	#$4a8ffffe,d0
		moveq	#0,d1		index
		moveq	#192/2-1,d7

.lp		move.l	d0,(a0)+

		move.l	#$1060000,(a0)+
		lea	colregtab1(pc),a2
		moveq	#31-1,d6
.o2		move.l	(a2,d1.w*4),(a0)+	0-31
		addq.l	#1,d1
		dbf	d6,.o2
		moveq	#0,d1

		move.l	#$1062000,(a0)+
		lea	colregtab2(pc),a2
		moveq	#32-1,d6
.o3		move.l	(a2,d1.w*4),(a0)+	32-63
		addq.l	#1,d1
		and.w	#31,d1
		dbf	d6,.o3
		moveq	#0,d1

		move.l	#$1064000,(a0)+
		lea	colregtab3(pc),a2
		moveq	#32-1,d6
.o4		move.l	(a2,d1.w*4),(a0)+	64-95
		addq.l	#1,d1
		and.w	#31,d1
		dbf	d6,.o4
		moveq	#0,d1

		add.l	#$02000000,d0
		dbf	d7,.lp

		move.l	#-2,(a0)		eoc

		lea	base1,a0
		lea	base2,a1
		lea	cus,a6
		Wblit
		move.l	#$09f00000,$40(a6)
		move.l	#0,$64(a6)
		movem.l	a0-a1,$50(a6)
		move.w	#2*100,$5c(a6)	vertical
		move.w	#192/2,$5e(a6)	horiz
		rts


colregtab1:
a		set	$182000f
		rept	15
		dc.l	a
a		set	a+$20010
		endr

a		set	$1a00f0f
		rept	16
		dc.l	a
a		set	a+$20010
		endr

colregtab2:
a		set	$18000f0
		rept	32
		dc.l	a
a		set	a+$20102
		endr

colregtab3:
a		set	$1800f00
		rept	32
		dc.l	a
a		set	a+$20012
		endr

;----------------------------------------------
;----------------------------------------------

CodeZoomTab:	lea	ZoomPos,a0

		moveq	#0,d0
		moveq	#48-1,d7
.lp:		move.w	d0,d1
		and.w	#63,d1
		cmp.w	#48,d1
		blt.s	.small
		sub.w	#48,d1
.small:		move.w	d1,(a0)+
		add.w	#57,d0
		dbf	d7,.lp
		rts

;----------------------------------------------
;----------------------------------------------


		Section	FastData,data_P

ha:		dc.l	0
cordx:		dc.w	0
cordy:		dc.w	0
Sintab:		incbin	Seka:bm/sine32767.1024
		incbin	Seka:bm/sine32767.1024

drawbase:	dc.l	base1
showbase:	dc.l	base2
drawcopper:	dc.l	copper1
showcopper:	dc.l	copper2


		Section	ChipData,data_C

copper1:	dc	$108,-24-8
		dc	$10a,-24-8
		dc	$102,$00aa
		dc	$104,$0200	kill EHB!
		dc	$106,0
		dc	$10c,0
		dc	$1fc,$0003
		dc	$120,0,$122,0
		dc	$8e,$4c71,$90,$0c89
		dc	$92,$50,$94,$98
planes1:	dc	$e0,0,$e2,0
		dc	$e4,0,$e6,0
		dc	$e8,0,$ea,0
		dc	$ec,0,$ee,0
		dc	$f0,0,$f2,0
		dc	$f4,0,$f6,0
		dc	$f8,0,$fa,0
		dc	$100,$7200
		dc	$180,$0
cjmp1:		dc.w	$84,0
		dc.w	$86,0
		dc.w	$8a,0

copper2:	dc	$108,-24-8
		dc	$10a,-24-8
		dc	$102,$00aa
		dc	$104,$0200	kill EHB!
		dc	$106,0
		dc	$10c,0
		dc	$1fc,$0003
		dc	$120,0,$122,0
		dc	$8e,$4c71,$90,$0c89
		dc	$92,$50,$94,$98
planes2:	dc	$e0,0,$e2,0
		dc	$e4,0,$e6,0
		dc	$e8,0,$ea,0
		dc	$ec,0,$ee,0
		dc	$f0,0,$f2,0
		dc	$f4,0,$f6,0
		dc	$f8,0,$fa,0
		dc	$100,$7200
		dc	$180,$0
cjmp2:		dc.w	$84,0
		dc.w	$86,0
		dc.w	$8a,0

ScreenPlanar:	blk.b	192/8*7,0
ScreenChunky:	blk.b	192,0
base1:		blk.b	4*101*96+4,0
base2:		blk.b	4*101*96+4,0
CopperPlaces:	blk.l	96,0
ZoomPos:	blk.w	48,0
PotTab:		blk.l	$10000,0
