
; Listing5m.s	Verschuiven van het beeld d.m.v. DiwStart/Stop.

	Section	CIPenCOP,CODE
Begin:
	move.l	4.w,a6		; Execbase in a6
	jsr	-$78(a6)	; Disable - stop Multitasking
	lea	GfxName(PC),a1  
	jsr	-$198(a6)	
	move.l	d0,GfxBase	
	move.l	d0,a6
	move.l	$26(a6),OldCop	

;	POINTEN Naar onze BITPLANES
 
	MOVE.L	#PIC,d0		

	LEA	BPLPOINTERS,A1	
				
	MOVEQ	#2,D1		
				
POINTBP:
	move.w	d0,6(a1)	
	swap	d0		
	move.w	d0,2(a1)	
	swap	d0		
	ADD.L	#40*256,d0	
	addq.w	#8,a1		
				
	dbra	d1,POINTBP	

	move.l	#COPPERLIST,$dff080	; COP1LC - Pointer naar onze COP
	move.w	d0,$dff088		; COPJMP1 - Start 'm

	move.w	#0,$dff1fc		; FMODE - Deactiveert AGA
	move.w	#$c00,$dff106		; BPLCON3 - Deactiveert AGA

mouse:
	cmpi.b	#$ff,$dff006	
	bne.s	mouse		

	btst	#2,$dff016	
	beq.s	Wacht		
 
	bsr.w	DiwOpNeer

Wacht:
	cmpi.b	#$ff,$dff006
	beq.s	Wacht	

	btst	#6,$bfe001	
	bne.s	mouse		

	move.l	OldCop(PC),$dff080	; COP1LC - Pointer naar Originele 
					; Copperlist
	move.w	d0,$dff088		; COPJMP1 - start 'm

	move.l	4.w,a6
	jsr	-$7e(a6)	; Enable - Multitasking aan
	move.l	GfxBase(PC),a1	
	jsr	-$19e(a6)	; Closelibrary 
	rts

; DATA



GfxName:
	dc.b	"graphics.library",0,0	
GfxBase:		
	dc.l	0	
OldCop:			
	dc.l	0	


; Deze routine past heel simpel Byte YY van $dff08e in de Copperlist
; (DiwStart) aan. Dit register definieërt het begin van het Video-beeld,
; dat gecentreerd worden kan, zoals men het uit de Preferences van de
; Workbench kent. In ons geval laten we het videobeeld gewoon wat lager
; beginnen, daardoor verschuift zich de inhoud. Hier wordt buiten het 
; plaatje geen rotzooi getoond zoals we eerder zagen. Dit komt omdat we
; het hele beeld verschuiven, en niet de inhoud. Interessant in de routine
; is het Word Counter, dat gebruikt wordt 35 Frames af te wachten, als het
; logo boven aangekomen is.
; Ik heb ook twee 'nieuwe' bevelen gebruikt die u nog niet kent, maar in
; deze routine uiterst handig zijn; Het gaat hier om BHI (een bevel uit de
; 'Familie' BEQ/BNE. Deze instructie springt naar een routine, als de CMP
; instructie (= Vergelijk met...) als resultaat oplevert dat de waarde
; groter is dan de gevraagde. In onsgeval springt bhi.s Logod alleen naar
; LOGOD als Counter de waarde 35 bereikt heeft. D.w.z. iedere volgende keer,
; bij 36,37,...
; Het andere bevel is BCHG, wat Bit CHanGe betekent ( = Verwissel Bit). 
; Deze stamt uit de familie BTST, en verwisselt het aangegeven bit: 
; Bchg #1,Label kijkt naar het eerste bit van Label, en als het 0 is wordt
; het 1 gemaakt, en als het 1 is wordt het 0 gemaakt. Simpel toch ?

DiwOpNeer:
	ADDQ.W	#1,COUNTER	; We tellen het aantal keren dat we
				; deze routine uitvoeren.
	CMPI.W	#35,COUNTER	; Minimaal 35 frames voorbij gegaan?
	BHI.S	LOGOD		; Zo Ja ga naar LOGOD.
	RTS			; Anders terug zonder deze uit te voeren.

LOGOD:
	BTST	#1,FLAGDIW   ; Moeten we naar boven?
	BEQ.S	UP	     ; Zo ja, voer routine "UP" uit
	SUBQ.B	#2,DIWSCX    ; Ga in stappen van 2 (=sneller)
	CMPI.B	#$2c,DIWSCX   ; Zijn we boven? (Normale Waarde: $2c81)
	BEQ.S	CHANGEUPDOWN2 ; Zo ja, verander Richting
	RTS

UP:
	ADDQ.B	#1,DIWSCX	; Ga naar beneden in stappen van 1.
	CMPI.B	#$70,DIWSCX	; Zijn we beneden? (Positie $70)
	BEQ.S	CHANGEUPDOWN	; Zo ja, verander Richting.
	RTS

CHANGEUPDOWN
	BCHG	#1,FLAGDIW	; Verwissel Richting-Bit
	RTS

CHANGEUPDOWN2
	BCHG	#1,FLAGDIW	; Verwissel RichtingBit, en zet de Teller
	CLR.W	COUNTER	 	; op 0. We zijn aan het einde!
	RTS

FLAGDIW:
	dc.w	0

COUNTER:
	dc.w	0


	SECTION GRAPHIC,DATA_C

COPPERLIST:
	; Sprites uit...
	dc.w	$120,$0000,$122,$0000,$124,$0000,$126,$0000,$128,$0000
	dc.w	$12a,$0000,$12c,$0000,$12e,$0000,$130,$0000,$132,$0000
	dc.w	$134,$0000,$136,$0000,$138,$0000,$13a,$0000,$13c,$0000
	dc.w	$13e,$0000

	dc.w	$8E
DIWSCX:
	dc.w	$2c81	; DIWSTRT = $YYXX Begin van het  Video-beeld

	dc.w	$90,$2cc1	; DiwStop
	dc.w	$92,$0038	; DdfStart
	dc.w	$94,$00d0	; DdfStop
	dc.w	$102,0		; BplCon1
	dc.w	$104,0		; BplCon2
	dc.w	$108,0		; Bpl1Mod
	dc.w	$10a,0		; Bpl2Mod

		    ; 5432109876543210  ; BPLCON0:
	dc.w	$100,%0011001000000000  ; Bits 13 en 12 aan!! (3 = %011)
					; 3 Bitplanes Lowres, geen Lace
BPLPOINTERS:
	dc.w $e0,$0000,$e2,$0000	;1e Bitplane - BPL0PT
	dc.w $e4,$0000,$e6,$0000	;2e Bitplane - BPL1PT
	dc.w $e8,$0000,$ea,$0000	;3e Bitplane - BPL2PT

	dc.w	$0180,$000	; Color0
	dc.w	$0182,$475	; Color1
	dc.w	$0184,$fff	; Color2
	dc.w	$0186,$ccc	; Color3
	dc.w	$0188,$999	; Color4
	dc.w	$018a,$232	; Color5
	dc.w	$018c,$777	; Color6
	dc.w	$018e,$444	; Color7

	dc.w	$FFFF,$FFFE	; Einde van de Copperlist

;	Plaatje

PIC:
	incbin	"amiga.320*256*3"	; hier laden we het plaatje in RAW-
					; Formaat in

	end


