;*******************************************************************
;		    JOHAN SANNEBLAD PRESENTERAR:
;
;                  EYE OF THE BEHOLDER KARTRITARE
;*******************************************************************
Execbase	equ	$4
Openlibrary	equ	-408
Closelibrary	equ	-414
Allocmem	equ	-198
Freemem		equ	-210
Forbid		equ	-132
Permit		equ	-138
Mem_in_chip	equ	$10002

	include	'df1:Chip/CustomRegisters'
;-------------------------------------------------------------------
	movea.l	$4.w,a6
	move.l	Allocatesize,d0
	move.l	#Mem_in_chip,d1
	jsr	Allocmem(a6)
	tst.l	d0
	beq.w	Neej
	move.l	d0,Skarmen
	add.l	#SkarmSize,d0
	move.l	d0,Copper

	jsr	Forbid(a6)

	move.w	$dff002,Olddma
	add.w	#$8000,Olddma

	move.w	#$01ff,$dff096

	move.l	Skarmen,d1	Initiera skarmen i coppern
	lea.l	Bitplan,a2
	addq	#2,a2
	moveq	#3,d2
loop2	swap	d1
	move.w	d1,(a2)
	addq	#4,a2
	swap	d1
	move.w	d1,(a2)
	addq	#4,a2
	add.l	#10240,d1
	dbra	d2,loop2

	move.l	Execbase,a6
	lea.l	GrafNamn,a1
	jsr	Openlibrary(a6)
	move.l	d0,Grafbas
	move.l	d0,a6
	move.l	$26(a6),Oldcopper

	lea.l	Capper,a1
	movea.l	Copper,a2
	move.l	#Coppersize,d1
clopp	move.b	(a1)+,(a2)+
	dbra	d1,clopp

	move.l	Copper,$dff080
	clr.w	$dff088

	move.w	#$85cf,$dff096

	bsr	loppa
;*******************************************************************
			Mainloop:
;*******************************************************************
	btst	#6,$bfe001
	bne.s	Mainloop
;-------------------------------------------------------------------
			Sluta:
;-------------------------------------------------------------------
	move.l	Oldcopper(pc),$dff080
	move.w	Olddma(pc),$dff096

	movea.l	$4.w,a6
	move.l	Skarmen,a1
	move.l	Allocatesize,d0
	jsr	Freemem(a6)
	jsr	Permit(a6)
Neej	rts
;-------------------------------------------------------------------
			Vanta:
;-------------------------------------------------------------------
	move.w	VHPosR,d0
	lsr.w	#8,d0
	cmp.b	#244,d0
	bne.s	Vanta
	rts
;-------------------------------------------------------------------
			Loppa:
;-------------------------------------------------------------------
	lea	kartan,a0
	add.l	#6,a0

	moveq	#0,d7		; D7=BitSet
	moveq	#0,d6		; D6=ByteSet
	moveq	#0,d5		; D5=RowSet
	move.l	#1023,d3

Lopphej	move.b	(a0),d0
	beq.s	TomRum

EjTom	move.l	skarmen,a1
	move.l	d5,d1
	mulu	#40,d1
	add.l	d1,a1		; Ratt rad
	add.l	d6,a1
	bset	d7,(a1)

Tomrum	add.l	#1,d7
	cmp.l	#8,d7		; Bit'en overstiger??
	bne	samma
	moveq	#0,d7
	add.l	#1,d6
	cmp.l	#4,d6		; Raden for mycket???
	bne.s	samma
	add.l	#1,d5
	moveq	#0,d6
	moveq	#0,d7	
samma	add.l	#4,a0
	dbra	d3,lopphej
	rts
;-------------------------------------------------------------------
			Capper:
;-------------------------------------------------------------------
	dc.w	$0100,$4200
	dc.w	$008e,$2c81
	dc.w	$0090,$f4c1
	dc.w	$0090,$28c1
	dc.w	$0092,$0038
	dc.w	$0094,$00d0

Bitplan	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	$0180,$0000,$0182,$0fff
	dc.w	$01a0,$0511
	dc.w	$ffff,$fffe
CapperEnd
;-------------------------------------------------------------------
Skarmsize=320/8*256*4
Coppersize=CapperEnd-Capper

Allocatesize	dc.l	Coppersize+Skarmsize

Skarmen		dc.l	0
Copper		dc.l	0
Skarmbuffer	dc.l	0
Linjebuffer	dc.l	0
Textbuffer	dc.l	0
Oldcopper	dc.l	0
Olddma		dc.w	0
Grafbas		dc.l	0
GrafNamn	dc.b	'graphics.library',0
		even

Kartan		incbin	df0:level3.maz

