AntalBitplaner=4
bredde=40
hojde=256
Openlibrary=-408

Main:
	bsr	Insert
	bsr	Startcopper

	move	#$2981,$dff08e
	move	#$29c1,$dff090
	move	#$0038,$dff092
	move	#$00d0,$dff094
	move	#$0000,$dff104	;Grafik foran sprites

	move	#%0100001000000000,$dff100

	clr	$dff108
	clr	$dff10a
	clr	$dff102

	move	#$ec0,$dff182	;Init colors
	move	#$da0,$dff184
	move	#$fd3,$dff186
	move	#$fd6,$dff188
	move	#$fe9,$dff18a
	move	#$ffb,$dff18c
	move	#$c80,$dff18e
	move	#$a00,$dff190
	move	#$fde,$dff192
	move	#$800,$dff194
	move	#$000,$dff196
	move	#$000,$dff198
	move	#$000,$dff19a
	move	#$000,$dff19c
	move	#$000,$dff19e

	bsr	start_int

Waitformouse:
	btst	#6,$bfe001
	bne	waitformouse

	bsr	stop_int

	bsr	Stopcopper
	rts	

start_int:
	move.w	$dff01c,sys_intena
	move.w	$dff01e,sys_intreq
	move.w	#%0100000000000000,$dff09a
	move.w	#$7fff,$dff09c
	Move.l	$6C,GemInt
	Move.l	#NytInt,$6c
	move.w	#%1100000000010000,$dff09a
	Rts

stop_int:
	Move.l	GemInt,$6C	; Flyt gl. vektor tilbage.
	move.w	sys_intena,d0
	or.w	#$8000,d0
	move.w	d0,$dff09a
	move.w	sys_intreq,d0
	or.w	#$8000,d0
	move.w	d0,$dff09c
	Rts			; Returner.

 


NytInt:
	move.w	$dff01e,d0
	move.w	d0,-(sp)

	lea	sprite0,a0	;Peg på første kontrol ord i sprite 0
	lea	$dff120,a1	;Pointer register for sprite 0
	lea	speed,a3	;Peg på hastighed for første sprite.

	move.l	#1,d0		;Antalhardwaresprites-1 i d0 for dbra
	move	#$0020,$dff096

loop:
	move.l	a0,(a1)+	;Kopier adresse til pointerregister
				;Og læg et longword til a1
				;så der peges på $dff124

	move.l	#Antalsprites-1,d2	;For dbra

loop2:				;Her ændres X-positionerne for hver sprite
	clr	d1		;slet d1	
	move.b	1(a0),d1	;Flyt bit 1-8 af X position til d1
	lsl	#1,d1		;Flyt indholdet af register d1
				;en plads til venstre
	or.b	3(a0),d1	;Indsæt bit 0 af X position i d1
				;*OBS* brug kun denne metode, hvis
				;bit 1-7 af 2. kontrol ord altid er 0.

	add	(a3),d1		;Adder "ekstra" hastighed til x-pos.
	addi	#1,d1		;Adder min. hastighed til x-pos.

	cmp	#440,d1		;Sammenlign x-pos. med 440
	blt.s	ikkekant	;Ikke helt ude til højre

	move	#50,d1		;Set X-position til 0
	addi	#1,(a3)		;Adder 2 til "ekstra" hastighed
	andi	#$0003,(a3)	;Max "ekstra" hastighed er 3

ikkekant:
				;Flyt bit 0 af X-pos til bit 0 af 2. kontrol word.
	move.b	d1,3(a0)	;*Kun hvis bit 1-7 af 2. kontrol ord
	andi.b	#$01,3(a0)	;altid er 0*
	lsr	#1,d1		;Forskyd indholdet af register d1, en
				;plads til højre.
 
	move.b	d1,1(a0)	;Flyt bit 1-8 af X-pos til bit 0-7 af
				;2. kontrol ord.

	addi.l	#8,a0		;Peg på næste sprites kontrol ord
	addi.l	#2,a3		;Peg på hastighed for næste sprite
	dbra	d2,loop2	;Næste sprite
	
	addi.l	#4,a0
	dbra	d0,loop

	move.l	#5,d0		;hardwaresprites-1
clr:				;lad sprites pege på
	move.l	#null,(a1)+	;to 0,0 kontrol ord.
	dbra	d0,clr



	move	#$8020,$dff096


back1:
	move.w	(sp)+,d0
back2:
	and.w	#$7fff,d0
	move.w	d0,$dff09c
	rte




Insert:
	move.l	#Picture,d0
	lea	Pointerstart,a0
	move.l	#Antalbitplaner-1,d1
loop3:
	move	d0,6(a0)
	swap	d0
	move	d0,2(a0)
	swap	d0
	addi.l	#bredde*hojde,d0
	addi.l	#8,a0
	dbra	d1,loop3
	rts

Startcopper:
	move	#$03a0,$dff096
	move.l	#Copper,$dff080
	clr	$dff088
	move	#$8380,$dff096
	rts

Stopcopper:
	move.l	4,a6
	clr.l	d0
	lea	grafname,a1
	jsr	Openlibrary(a6)
	move.l	d0,a6
	move.l	38(a6),$dff080
	clr	$dff088
	move	#$83a0,$dff096
	rts
GemInt:		dc.l	0
sys_intena:	dc.w	0
sys_intreq:	dc.w	0

Antalsprites=10	;Antalsprites pr. hardware sprite

sprite0:
	dc.w	$2020,$2101				;Kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$306b,$3101				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$5512,$5601				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$5a0a,$5b01				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$7225,$7301				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$8a92,$8b01				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$a370,$a401				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$ae10,$af01				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$b805,$b901				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$c290,$c301				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$0000,$0000	
sprite1:
	dc.w	$1a60,$1b01				;Kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$2110,$2201				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$3308,$3401				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$459b,$4601				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$5283,$5301				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$6085,$6101				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$8620,$8701				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$a528,$a601				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$b370,$b401				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
	dc.w	$c20f,$c301				;Nye kontrol words
	dc.w	%1000000000000000,%0000000000000000	;Grafik
null:	dc.w	$0000,$0000

speed:	dc.w	0,1,3,1,2,3,1,2,0,1
	dc.w	2,3,1,0,1,2,3,1,2,0
		


Old_Cop:	dc.l	0
grafname:	dc.b	'graphics.library',0

	even
Copper:
Pointerstart:
	dc.w	$00e0,$0000
	dc.w	$00e2,$0000

	dc.w	$00e4,$0000
	dc.w	$00e6,$0000

	dc.w	$00e8,$0000
	dc.w	$00ea,$0000

	dc.w	$00ec,$0000
	dc.w	$00ee,$0000

	dc.w	$00f0,$0000
	dc.w	$00f2,$0000

	dc.w	$0180,$0000	;color 00 (Baggrund) sort
	dc.w	$01a2,$0fff	;color 17 (Sprite color) hvid

	dc.w	$c801,$fffe	;Raster bar
	dc.w	$0180,$0001
	dc.w	$c901,$fffe
	dc.w	$0180,$0002
	dc.w	$cb01,$fffe
	dc.w	$0180,$0003
	dc.w	$cf01,$fffe
	dc.w	$0180,$0004
	dc.w	$d501,$fffe
	dc.w	$0180,$0005
	dc.w	$dc01,$fffe
	dc.w	$0180,$0006
	dc.w	$e401,$fffe
	dc.w	$0180,$0007
	dc.w	$f401,$fffe
	dc.w	$0180,$0008
	


	dc.w	$ffff,$fffe
picture:
	blk.b	AntalBitplaner*bredde*hojde,0
