ùúùú      T  T  T  T  T  T  T  T  T		incdir		"work:assy/inc/"
		include		"custom.i"
		include  	"exec.i"

OLib		equ		-$0228
CLib		equ		-$019e
		section		K-RAUTA,code

		bsr.w		alkuhommelit    ;ruudut auki jne...
		jsr		Precalc
		bsr.b		r3mainloop	;omat stuffit....
		bsr.w		r3loppu2	;ruutu kiinni...
		rts 				;takaisin dossiin

r3mainloop:
		addq.w		#2,s1
		addq.w		#4,s2
		cmp.w		#720,s1
		blt.b		i1
		sub.w		#720,s1
i1:		cmp.w		#720,s2
		blt.b		i2
		sub.w		#720,i2
i2:		lea		r1sintable2,a0
		move.w		s1,d0
		move.w		(a0,d0.w),d0
		asl.w		#3,d0
		add.w		#3000,d0
		move.w		d0,d7

		move.w		s2,d0
		move.w		(a0,d0.w),d0
		asl.w		#3,d0
		add.w		#3000,d0
		move.w		d0,a3
		
		jsr		IsJuliaThere
		lea		buffer,a0 ;piirrä aina tähän(160*128)
		jsr		CopyBuffer2Chip 
		jsr		konve
							
		btst		#6,$bfe001
		bne.w		r3mainloop	
		rts				
		


r3loppu2:	move.l		r3oldcop,cop1lch+custom
		move.w		r3olddma,d0
		or.w		#$8000,d0
		move.w		d0,dmacon+custom
		move.w		r3oldint,d0
		or.w		#$c000,d0
		move.w		d0,intena+custom
		move.l		r3gosote,a6
		move.l		r1wbview,a1
		jsr		-$de(a6)
		move.l		4,a6
		move.l		r3gosote,a1
		jsr		CLib(a6)	
		move.l		oldvbi,$6c(a0)
		jsr		-$008a(a6)
		moveq		#0,d0
		rts

Precalc:	lea		Multa,a0
		move.w		#-32768,d0
L:		move.w		d0,d1
		muls		d1,d1
		move.l		d1,(a0)+
		addq.w		#1,d0
		cmp.w		#32768,d0
		bne.s		L
		rts
		
IsJuliaThere:
	lea		buffer,a0
	lea		Multa+32768*4,a1
	
	move.w		y,a2

Ly:	move.w		x,d4
Lx:
	move.w		a2,d1
	move.w		d4,d6
	move.l		(a1,d6.w*4),d0	
	move.l		(a1,d1.w*4),d2
	move.w		#31,d5 ;iteraatiot

Iter:
	sub.l		d2,d0 ;zr^2-zi^2
	lsl.l		#3,d0
	swap		d0 ;zx
	muls		d6,d1 ;zr*zi
	lsl.l		#4,d1
	swap		d1	;zi
	add.w		d7,d0
	add.w		a3,d1	
	move.w		d0,d6
	move.l		(a1,d0.w*4),d0
	move.w		d1,d2
	move.l		(a1,d2.w*4),d2
	move.l		d2,d3
	add.l		d0,d3
	cmp.l		#4*8192*8192,d3
	bpl.b		Plot
	subq.w		#1,d5
	sub.l		d2,d0 ;zr^2-zi^2
	lsl.l		#3,d0
	swap		d0 ;zx
	muls		d6,d1 ;zr*zi
	lsl.l		#4,d1
	swap		d1	;zi
	add.w		d7,d0
	add.w		a3,d1	
	move.w		d0,d6
	move.l		(a1,d0.w*4),d0
	move.w		d1,d2
	move.l		(a1,d2.w*4),d2
	move.l		d2,d3
	add.l		d0,d3
	cmp.l		#4*8192*8192,d3
	bpl.b		Plot

	dbf		d5,Iter

Plot:	move.b		d5,(a0)+
	move.b		d5,(a0)+

	add.w		#200,d4
	cmp.w		#100*160-4000,d4
	bne.w		Lx
	add.w		#100,a2
	cmp.w		#100*128+2000,a2
	bne.w		Ly
	rts


CopyBuffer2Chip:
		lea		buffer,a0
		move.l		chbuf1,a1
		move.w		#160*128/32-1,d7
Juhannus:	rept		8
		move.l		(a0)+,(a1)+
		endr
		dbf		d7,Juhannus
		rts
alkuhommelit:	move.l		$4.w,a6
	        sub.l   	a1,a1                  
	        jsr     	_LVOFindTask(a6)
	        move.l  	d0,a1
	        moveq   	#127,d0             
	        jsr     	_LVOSetTaskPri(a6)
		move.l		$4.w,a6
		jsr		_LVOForbid(a6)
		jsr		_LVODisable(a6)
		jsr		GetVbr		;otetaan vbr
		jsr		_LVOEnable(a6)
		jsr		_LVOPermit(a6)
		lea		r3gnimi,a1
		moveq		#0,d0
		jsr		OLib(a6)
		move.l		d0,r3gosote ;graphics.library
		jsr		-$0084(a6)	
 		move.l		r3gosote,a6 
		move.l		$22(a6),r1wbview
		sub.l		a1,a1
		jsr		-$de(a6)
		move.w		dmaconr+custom,r3olddma
		move.w		intenar+custom,r3oldint
		move.l		38(a6),r3oldcop
		jsr		-$00e4(a6)
		jsr		-$010e(a6)
		jsr		-$010e(a6)
		lea		copheader,a0
		lea		Cop1,a1
		lea		Cop2,a2
		lea		Cop3,a3
Lopi:		cmp.l		#$99999999,(a0)
		beq.b		Over
		move.l		(a0),(a1)+
		move.l		(a0),(a2)+
		move.l		(a0)+,(a3)+
		bra.b		Lopi
Over:		move.l		a1,cop1
		move.l		a2,cop2
		move.l		a3,cop3
		move.l		vbrbase,a0
		move.l		$6c(a0),oldvbi
		move.l		#level3,$6c(a0)
		jsr		makebuffers
		rts
GetVbr:
	lea	super(pc),a5
	jsr	_LVOSupervisor(a6)
	rts

super	lea	custom,a5
	jsr	GetVBR
	move.l	a0,vbrbase
	nop
	rte

GetVBR	lea	$0.w,a0
	move.l	4.w,a6
	move.w	296(a6),d0
	btst	#1,d0
	beq.s	is68000
	movec	VBR,a0
is68000	rts

konve:	
	move.l	plbuf1,d0
	move.l	plbuf3,plbuf1
	move.l	plbuf2,plbuf3
	move.l	d0,plbuf3

	move.l	chbuf1,d0
	move.l	chbuf3,chbuf1
	move.l	chbuf2,chbuf3
	move.l	d0,chbuf3

	move.l	cpbuf1,d0
	move.l	cpbuf3,cpbuf1
	move.l	cpbuf2,cpbuf3
	move.l	d0,cpbuf3
	move.l	cpbuf3,cop1lch+custom


	lea	blist,a6		;blitterlist
	move.l	chbuf1,a0		;chunky buffer
	move.l	plbuf1,a1		;planar screen; 4 planes (memwise)
	lea	bltbuf,a2		;pass-buffer
	lea	sblbuf,a3		;scramble-buffer
	move.l	#160*128,d0		;nr of chunky pixels
	move.l	#320*256/8,d1		;distance of the 4 planes
	jsr	c2bs		;sc2bs = scrambled


	rts
;----------------------------

makebuffers
;make buf1
	move.l	cop1,a0 
	lea	sprbuf,a2
	move.l	#plane1,d0	;adr plane
	move.l	#$28,d2		;ystart 
	move.l	#128,d3		;anz lines
	move.l	#40*256,d4	;planesize
	move.l	#40,d5		;linesize
	jsr	mk2xY
	move.l	#$fffffffe,(a0)
	move.l	#Cop1,cpbuf1
	move.l	#plane1,plbuf1
	move.l	#chunky1,chbuf1

;make buf2
	move.l	cop2,a0 
	lea	sprbuf,a2
	move.l	#plane2,d0	;adr plane
	move.l	#$28,d2		;ystart 
	move.l	#128,d3		;anz lines
	move.l	#40*256,d4	;planesize
	move.l	#40,d5		;linesize
	jsr	mk2xY
	move.l	#$fffffffe,(a0)
	move.l	#Cop2,cpbuf2
	move.l	#plane2,plbuf2
	move.l	#chunky2,chbuf2

;make buf3
	move.l	cop3,a0 
	lea	sprbuf,a2
	move.l	#plane3,d0	;adr plane
	move.l	#$28,d2		;ystart 
	move.l	#128,d3		;anz lines
	move.l	#40*256,d4	;planesize
	move.l	#40,d5		;linesize
	jsr	mk2xY
	move.l	#$fffffffe,(a0)
	move.l	#Cop3,cpbuf3
	move.l	#plane3,plbuf3
	move.l	#chunky3,chbuf3

	move.w	#$0400,dmacon+custom	;nasty pois
	move.w	#$83e0,dmacon+custom	;enable,planes,copper,blitter,sprite


	rts
;----------------------------------------------------------------------
* NOTE: 2x2 or 2x1 depends on the modulo/doublescan-bit you chose
* in header coplist! Also make sure sprites are 64bit, highest
* pri, and chose the spritebank that got a dark color at offset 1
* (col 1,17,33....)

* spritebuffer: a2 (size: 312*4*2*8)
* Coplist: A0  Plane0 : D0.L
* Ystart: D2   number of lines (0-127): D3
* planesize: D4.L   linesize: D5
;----------------------------------------------------------------------
mk2xY
	jsr	mspr ;gen cover-sprites in (a2)+ and copmoves in (a0)+

* PLANES
	movem.l	d0-d7/a1-a6,-(sp) ;a0=(ptr)copl
	move.l	d4,mfpoffs 
	ext.l	d5 
	move.l	d5,mfloffs

* gen planeptr moves
	movem.l	d3/d0,-(sp)
	move.w	#$00e0,d3 
	move.w	#4-1,d7
mf256genhi
	move.w	d3,(a0)+ 
	addq.w	#2,d3 
	move.l	d0,(a0)+  ;store hiwd ! -2(a0)
	move.w	d3,-2(a0) 
	addq.w	#2,d3 
	move.w	d0,(a0)+ ;store lowd
;every 2nd plane same data
	move.w	d3,(a0)+ 
	addq.w	#2,d3 
	move.l	d0,(a0)+  ;store hiwd ! -2(a0)
	move.w	d3,-2(a0) 
	addq.w	#2,d3 
	move.w	d0,(a0)+ ;store lowd

	add.l	mfpoffs,d0
	dbra	d7,mf256genhi
* end gen ptrs
	movem.l	(sp)+,d3/d0

	and.l	#$ff,d2 
	sub.b	#1,d2 
	ror.l	#8,d2   ;sub #1: prev line
	move.l	#$00e1fffe,d4 
	or.l	d2,d4           ;WAS: 00df
*
	move.w	d3,d5
	subq.w	#1,d5
mf256yanz
	move.l	#$1020010,d7
	move.w	#2-1,d6
mf256do2
	move.l	d4,(a0)+ 
	add.l	#$01000000,d4  ;cwait
	move.l	d7,(a0)+ 
	eor.l	#$00000031,d7  ;horiz shift
                     ;             ^---- 3: 1 -> 2 -> 1 -> 2 ....
	dbra	d6,mf256do2

	add.l	mfloffs,d0
	dbra	d5,mf256yanz

	movem.l	(sp)+,d0-d7/a1-a6 ;a0=(ptr)copl
	rts

;----------------------------------------------------------------------
* Sprites that mask out doubleplane-data-rubbish

* sprbuf at a2 (COPLIST: FMODE=$F, $dff104=$003f!)
* copl at a0
* mksprites into sprbuf=(a2)+ and according coppermoves in (a0)+
mspr
	movem.l	d0-d7/a1-a6,-(sp) ;no a0! coz *copl

	move.l	#$00968020,(a0)+ ;sprites on

	lea	mf2sprdat,a1

	move.l	a2,d0
	add.l	#15,d0
	and.l	#$fffffff0,d0
	move.l	d0,a2 ;align

	move.w	#$0120,d1 ;spr0pth

	move.w	#8-1,d7 ;sprcnt
mf2mkspr
* cmoves for sprptr in copl

	move.l	a2,d0
	move.w	d1,(a0)+
	addq.w	#2,d1 ;hiptr -> loptr
	swap	d0
	move.w	d0,(a0)+
	swap	d0 ;hiwd
	move.w	d1,(a0)+
	addq.w	#2,d1 ;next sprptr
	move.w	d0,(a0)+

* make sprbuf
	move.l	(a1)+,(a2)+ ;ctl1
	move.l	#0,(a2)+    ;dummy for 64bit fetchmode
	move.l	(a1)+,(a2)+ ;ctl2
	move.l	#0,(a2)+    ;dummy for 64bit fetchmode

	move.l	(a1)+,d2
	move.l	(a1)+,d3
	move.l	d2,d4
	ror.l	#1,d4
	move.l	d3,d5
	ror.l	#1,d5

	move.w	#128-1,d6
mf2mksprdat
	move.l	d2,(a2)+
	move.l	d2,(a2)+
	move.l	d3,(a2)+
	move.l	d3,(a2)+
;2nd line
	move.l	d4,(a2)+
	move.l	d4,(a2)+
	move.l	d5,(a2)+
	move.l	d5,(a2)+                ;2nd plane

	dbra	d6,mf2mksprdat

	move.l	#$0,(a2)+
	move.l	#$0,(a2)+
	move.l	#$0,(a2)+
	move.l	#$0,(a2)+

	dbra	d7,mf2mkspr

	movem.l	(sp)+,d0-d7/a1-a6 ;ohne a0! weil *copl
	rts
;----------------------------------------------------------------------

;----------------------------------------------------------------------
*** non-scrambled chunky-to-planar ***

*  a6: blitter-list buffer (fast)
*  a0: chunky buffer (160*128) (chip)
*  a1: screen (8*40*128) (chip)
*  a2: pass-buffer (size: chunky/2) (chip)
*  a3: scramble-buffer (size: chunky) (chip)
*  d0.l: number of chunky pixels
*  d1.l: planeoffset

c2bs:	tst.w	bltbsy 
	bne.b	c2bs ;for the very unlikely case your mapping-
                           ;engine renders faster than blitterc2p ;)
	move.l	a6,bltpc ;handler starts at bltpc
	movem.l	d0-d1/a0-a3,-(sp)
	move.l	a3,a4

*** init values

   move.l #$ffff0044,(a6)+
   move.l #$ffff0046,(a6)+

*** scrambling passes
;subpass 1
  lea (a0),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea 4(a0),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea (a4),a3
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$8de40040,(a6)+
   move.l #$00000042,(a6)+
   move.l #$00ff0070,(a6)+ ;cdat

   move.l #$00060064,(a6)+ 
 move.l #$00060062,(a6)+ ;a/b mod
   move.l #$00060066,(a6)+ ;d mod

   move.l d0,d6 
 lsr.l #3,d6 ;1/4 of scr, words => /8
   move.w d6,(a6)+
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

;subpass2
  lea 2(a0),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea 6(a0),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea 2(a4),a3
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$8de40040,(a6)+
   move.l #$00000042,(a6)+
   move.l #$00ff0070,(a6)+ ;cdat

   move.l #$00060064,(a6)+ 
 move.l #$00060062,(a6)+ ;a/b mod
   move.l #$00060066,(a6)+ ;d mod

   move.l d0,d6 
 lsr.l #3,d6 ;1/4 of scr, words => /8
   move.w d6,(a6)+
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

;subpass 3
  lea -4(a0,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea -8(a0,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea -4(a4,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$8de40040,(a6)+
   move.l #$00020042,(a6)+
   move.l #$ff000070,(a6)+ ;cdat

   move.l #$00060064,(a6)+ 
 move.l #$00060062,(a6)+ ;a/b mod
   move.l #$00060066,(a6)+ ;d mod

   move.l d0,d6 
 lsr.l #3,d6 ;1/4 of scr, words => /8
   move.w d6,(a6)+
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

;subpass 4
  lea -2(a0,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea -6(a0,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea -2(a4,d0.l),a3
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$8de40040,(a6)+
   move.l #$00020042,(a6)+
   move.l #$ff000070,(a6)+ ;cdat

   move.l #$00060064,(a6)+ 
 move.l #$00060062,(a6)+ ;a/b mod
   move.l #$00060066,(a6)+ ;d mod

   move.l d0,d6 
 lsr.l #3,d6 ;1/4 of scr, words => /8
   move.w d6,(a6)+
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start


***
   movem.l (sp)+,d0-d1/a0-a3
   move.l a3,a0                  ;scrambled data is now there
   bra.b sc2bsenter

*** scrambled chunky-to-planar ***

sc2bs:	tst.w	bltbsy 
	bne.b	sc2bs
	move.l	a6,bltpc

*  a6: blitter-list buffer
*  a0: chunky buffer  a1: screen  a2: pass-buffer (half size of chunky buffer)
*  a4: 18 bytes public mem (memf_public=1 into d1 of allocmem)
*  d0.l: number of chunky pixels  d1.l: planeoffset

*** init values
	move.l	#$04000096,(a6)+
	move.l	#$80400096,(a6)+
	move.l	#$ffff0044,(a6)+
	move.l	#$ffff0046,(a6)+
sc2bsenter

;offsets to end of buffers for blitter DESCing
   move.l d0,d6                   ;len of chscr
   move.l d6,d5 
 lsr.l #1,d5     ;len of buf2
   move.l d6,d4 
 lsr.l #2,d4     ;len of 1 plane = 320*128/8, ok.

*** Pass 1, planes 7654

  lea (a0),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea 2(a0),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+

   move.l a2,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a2,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$4de40040,(a6)+
   move.l #$00000042,(a6)+
   move.l #$0f0f0070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,(a6)+         ;d4: nr_pix/4 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** Pass 2, planes 76

  lea (a2),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea 2(a2),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea (a1),a3
   add.w d1,a3 
 add.w d1,a3 
 add.w d1,a3   ;4th "doubleplane"
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$2de40040,(a6)+
   move.l #$00000042,(a6)+
   move.l #$33330070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,d0 
 lsr.w #1,d0
   move.w d0,(a6)+         ;d4: nr_pix/8 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** Pass 2, planes 54

  lea -2(a2,d5.l),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea -4(a2,d5.l),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea -2(a1,d4.l),a3
  add.w d1,a3 
 add.w d1,a3   ;3rd "doubleplane"
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$2de40040,(a6)+
   move.l #$00020042,(a6)+                ;DESC
   move.l #$cccc0070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,d0 
 lsr.w #1,d0
   move.w d0,(a6)+         ;d4: nr_pix/8 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** Pass 1, planes 3210

  lea -2(a0,d6.l),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea -4(a0,d6.l),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea -2(a2,d5.l),a3
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$4de40040,(a6)+
   move.l #$00020042,(a6)+
   move.l #$f0f00070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,(a6)+         ;d4: nr_pix/4 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** Pass 2, planes 32

  lea (a2),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea 2(a2),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea (a1),a3
   add.w d1,a3   ;2nd "doubleplane"
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$2de40040,(a6)+
   move.l #$00000042,(a6)+
   move.l #$33330070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,d0 
 lsr.w #1,d0
   move.w d0,(a6)+         ;d4: nr_pix/8 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** Pass 2, planes 10

  lea -2(a2,d5.l),a3
   move.l a3,(a6)+ 
 move.w #$004c,-2(a6) ;B
   move.w a3,(a6)+ 
 move.w #$004e,(a6)+
  lea -4(a2,d5.l),a3
   move.l a3,(a6)+ 
 move.w #$0050,-2(a6) ;A
   move.w a3,(a6)+ 
 move.w #$0052,(a6)+
  lea -2(a1,d4.l),a3
     ;1st "doubleplane"
   move.l a3,(a6)+ 
 move.w #$0054,-2(a6) ;D
   move.w a3,(a6)+ 
 move.w #$0056,(a6)+

   move.l #$2de40040,(a6)+
   move.l #$00020042,(a6)+                ;DESC
   move.l #$cccc0070,(a6)+ ;cdat

   move.l #$00020064,(a6)+ 
 move.l #$00020062,(a6)+ ;a/b mod
   move.l #$00000066,(a6)+ ;d mod

   move.w d4,d0 
 lsr.w #1,d0
   move.w d0,(a6)+         ;d4: nr_pix/8 (words!)
   move.w #$5C,(a6)+       ;SIZV

   move.l #$0001005E,(a6)+ ;SIZH+start

*** end of initblit
	move.l	#0,(a6)
;	rts
	move.w	#1,bltbsy
	move.w	#$c040,intena+custom	;bli on
	jsr	function
	rts
;----------------------------------
function:	movem.l	d0/d1/a5/a6,-(sp)
		lea	custom,a5
		move.l	bltpc,a6
.bltsetreg
		move.l	(a6)+,d0	;read next blit
		move.w	d0,d1 
		beq.s	.bltintend	;test last blit
		swap	d0
		move.w	d0,(a5,d1.w)	;set blitter regs
		cmp.w	#$5e,d1
		bne.s	.bltsetreg
;blitter started
		move.l	a6,bltpc
		movem.l	(sp)+,d0/d1/a5/a6
		rts
.bltintend	clr.w	bltbsy
		move.w	#$0040,intena+custom	;bli off
		movem.l	(sp)+,d0/d1/a5/a6
		rts
;----------------------------------------------------------------
level3:		movem.l	d0-a6,-(sp)
		move.w	intreqr+custom,d0
		btst	#6,d0
		beq.s	NotBlitInt
		move.w	#$0040,intreq+custom
		jsr	function
NotBlitInt	btst	#5,$dff01f
		bne.s	vblint
		move.w	#$3fff,$dff09c
		movem.l	(sp)+,d0-a6
		nop		;060 pipelines tarttee tämän, muuten SLOW
		rte
vblint:		move.w	#$0020,$dff09c ;vbi keskeytys
		movem.l	(sp)+,d0-a6
		nop
		rte		

		section	sprite,data_c
* ctl 1, ctl 2, plane 0, plane 1 (to be lsr'd for 2nd line)
mf2sprdat
	dc.l $28400000,$a7020000,$aaaaaaaa,$00000000
	dc.l $28600000,$a7020000,$aaaaaaaa,$00000000 ;1 & 2 nonattached, col 1
	dc.l $28800000,$a7020000,$aaaaaaaa,$00000000
	dc.l $28800000,$a7820000,$00000000,$00000000
	dc.l $28a00000,$a7020000,$aaaaaaaa,$00000000
	dc.l $28a00000,$a7820000,$00000000,$00000000
	dc.l $28c00000,$a7020000,$aaaaaaaa,$00000000
	dc.l $28c00000,$a7820000,$00000000,$00000000
;----------------------------------------------------------------

	section	buffers,bss_c
	cnop	0,256 ;64bittisen fetch moden takia....
plane1:	ds.b		8*40*128
plane2:	ds.b		8*40*128
plane3:	ds.b		8*40*128
chunky1	ds.b		160*128
chunky2	ds.b		160*128
chunky3	ds.b		160*128
bltbuf	ds.b		160*128/2
sblbuf	ds.b		160*128
sprbuf	ds.b		8*(312*8*2)
Cop1:	ds.b		10240
Cop2:	ds.b		10240
Cop3:	ds.b		10240
;----------------------------------------------------------------


		section		muuttujia,data		
		cnop		0,256
r3gosote	dc.l		0
r3oldint	dc.l		0
r3olddma	dc.l		0
r3oldcop	dc.l		0
r1wbview	dc.l		0
oldvbi:		dc.l		0
cop1:		dc.l		0
cop2:		dc.l		0
cop3:		dc.l		0
vbrbase:	dc.l		0
copheader:	dc.l $01fc400f			;fmode=3,sprfmode=3
		dc.l $01000211			;bplcon0: lores, 8pl, ecs on
		dc.l $01020000			;bplcon1
		dc.l $0104003f			;bplcon2: sprite priority
		dc.l $01060020			;bplcon3: borderblank
		dc.l $010c0000			;bplcon4: sprite-colorbank
		dc.l $0108ffd8,$010a0000	;bplmod: -40=$ffd8
		dc.l $008e2881,$009028c0	;diwstrt/stop
		dc.l $00920038,$009400a0	;ddfstrt/stop
Paletti:	incbin	"work:gfx/paletit/pentu.s"
		dc.l $99999999,$99999999,$99999999  ;älä poista
r3gnimi:	dc.b		'graphics.library',0
		even
r1sintable2:
 dc.w 0,17,35,52,70,87,105,122,139,156
 dc.w 174,191,208,225,242,259,276,292,309,326
 dc.w 342,358,375,391,407,423,438,454,469,485
 dc.w 500,515,530,545,559,574,588,602,616,629
 dc.w 643,656,669,682,695,707,719,731,743,755
 dc.w 766,777,788,799,809,819,829,839,848,857
 dc.w 866,875,883,891,899,906,914,921,927,934
 dc.w 940,946,951,956,961,966,970,974,978,982
 dc.w 985,988,990,993,995,997,998,999,999,1000		; 90
r1costable2:
 dc.w 1000,999,999,998,998,997,995,993,990,988
 dc.w 985,982,978,974,970,966,961,956,951,946
 dc.w 940,934,927,921,914,906,899,891,883,875
 dc.w 866,857,848,839,829,819,809,799,788,777
 dc.w 766,755,743,731,719,707,695,682,669,656
 dc.w 643,629,616,602,588,574,559,545,530,515
 dc.w 500,485,469,454,438,423,407,391,375,358
 dc.w 342,326,309,292,276,259,242,225,208,191
 dc.w 174,156,139,122,105,87,70,52,35,17		; 180
 dc.w 0,-17,-35,-52,-70,-87,-105,-122,-139,-156
 dc.w -174,-191,-208,-225,-242,-259,-276,-292,-309,-326
 dc.w -342,-358,-375,-391,-407,-423,-438,-454,-469,-485
 dc.w -500,-515,-530,-545,-559,-574,-588,-602,-616,-629
 dc.w -643,-656,-669,-682,-695,-707,-719,-731,-743,-755
 dc.w -766,-777,-788,-799,-809,-819,-829,-839,-848,-857
 dc.w -866,-875,-883,-891,-899,-906,-914,-921,-927,-934
 dc.w -940,-946,-951,-956,-961,-966,-970,-974,-978,-982
 dc.w -985,-988,-990,-993,-995,-997,-998,-998,-999,-999	; 270
 dc.w -1000,-999,-999,-998,-998,-997,-995,-993,-990,-988
 dc.w -985,-982,-978,-974,-970,-966,-961,-956,-951,-946
 dc.w -940,-934,-927,-921,-914,-906,-899,-891,-883,-875
 dc.w -866,-857,-848,-839,-829,-819,-809,-799,-788,-777
 dc.w -766,-755,-743,-731,-719,-707,-695,-682,-669,-656
 dc.w -643,-629,-616,-602,-588,-574,-559,-545,-530,-515
 dc.w -500,-485,-469,-454,-438,-423,-407,-391,-375,-358
 dc.w -342,-326,-309,-292,-276,-259,-242,-225,-208,-191
 dc.w -174,-156,-139,-122,-105,-87,-70,-52,-35,-17,0	; 360
 dc.w 17,35,52,70,87,105,122,139,156,174
 dc.w 191,208,225,242,259,276,292,309,326,342
 dc.w 358,375,391,407,423,438,454,469,485,500
 dc.w 515,530,545,559,574,588,602,616,629,643
 dc.w 656,669,682,695,707,719,731,743,755,766
 dc.w 777,788,799,809,819,829,839,848,857,866
 dc.w 875,883,891,899,906,914,921,927,934,940
 dc.w 946,951,956,961,966,970,974,978,982,985
 dc.w 988,990,993,995,997,998,998,999,999,1000
 dc.w 1000
	cnop		0,4
x:	dc.w		-4000,0
y:	dc.w		2000,0
cr:	dc.l		3000
ci:	dc.l		3000
s1:	dc.l		0
s2:	dc.l		0

		section	chunky,bss_p
buffer:		ds.b	160*128
backgrx		ds.l	1
cpbuf1		ds.l	1
cpbuf2		ds.l	1
cpbuf3		ds.l	1
chbuf1		ds.l	1
chbuf2		ds.l	1
chbuf3		ds.l	1
plbuf1		ds.l	1
plbuf2		ds.l	1
plbuf3		ds.l	1
bltpc		ds.l	1	;pointer to blitterinstructions to be done
bltbsy		ds.w	1	;this is 0 if all blitter-passes are done
mfpoffs		ds.l	1
mfloffs		ds.l	1
blist		ds.b	40*1024
Multa:		ds.l	65536+10
	
		end



