
; Listing5m2.s	Het 'Sluiten' van een beeld met DiwStart/Stop

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	DIWHORIZONTAAL	; Toont de functie van DiwStart/Stop
	bsr.w	DIWVERTIKAAL
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



DIWHORIZONTAAL:
	CMPI.B	#$FF,DIWXSTART	; Zijn we bij Maximale DiwStart aangekomen?
	BEQ.S	Einde		; Zo ja, dan kunnen we niet verder.
	ADDQ.B	#2,DIWXSTART	; Zo niet, tellen we er 1 bij.
Einde:
	TST.B	DIWXSTOP	;Zijn we bij het Minimum van DIWSTOP? ($00)?
	BEQ.S	Einde2		; Zo ja, kunnen we ook niets meer aftrekken.
	SUBQ.B	#2,DIWXSTOP	; Zo niet, 1 aftrekken
Einde2:
	RTS			; Einde van de Routine, uitstappen!


DIWVERTIKAAL:
	CMPI.B	#$95,DIWYSTOP	; Zij we bij de juiste DIWSTOP aangekomen?
	BEQ.S	Einde3		; zo ja, dan hoeven we niet verder.
	ADDQ.B	#1,DIWYSTART	; Tel 1 bij start op
	SUBQ.B	#1,DIWYSTOP	; Trek 1 van stop af.
Einde3:
	RTS			; uit de routine springen.

	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		; DIWSTART - Begin VideoBeeld
DIWYSTART:
	dc.b	$2c		; DIWSTRT $YY
DIWXSTART:
	dc.b	$81		; DIWSTRT $XX (Verhogen tot $ff)

	dc.w	$90		; DIWSTOP - Einde v.h. Videobeeld.
DIWYSTOP:
	dc.b	$fe		; DiwStop YY
DIWXSTOP:
	dc.b	$c1		; DiwStop XX (Verlagen tot $00)
	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
	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
	dc.w $e4,$0000,$e6,$0000	;2e Bitplane
	dc.w $e8,$0000,$ea,$0000	;3e Bitplane

	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	$ca07,$fffe
	dc.w	$180,$456	; Opmerking: De achtergrondkleur wordt door
				; Diwstart-Diwstop niet beïnvloed.

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

;	Plaatje...

PIC:
	incbin	"amiga.320*256*3"	; Plaatje inladen...

	end

In deze listing worden zowel de XX als YY van DiwStart en DiwStop veranderd
om het plaatje te 'wurgen'.