
; Listing6e.s	Overlappen van 2 bitplanes, waarvan er 1 een lijn naar 
;		beneden is verschoven.
 
	SECTION	CIPenCOP,CODE

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

;	POINTEN NAAR ONZE BITPLANES...

	MOVE.L	#BITPLANE,d0	
	LEA	BPLPOINTERS,A1	
	move.w	d0,6(a1)	
	swap	d0		
	move.w	d0,2(a1)	
 
; Let op de -80!!
 
	MOVE.L	#BITPLANE-80,d0 ; in d0 komt het Adres van het Bitplane-80,
				; dus 1 lijn naar beneden geschoven!!
	LEA	BPLPOINTERS2,A1 ; Pointer in de Copperlist
	move.w	d0,6(a1)	
	swap	d0		
	move.w	d0,2(a1)	
	
	move.l	#COPPERLIST,$dff080	; COP1LC 
	move.w	d0,$dff088		; COPJMP1
	move.w	#0,$dff1fc		; FMODE - Deactiveert AGA
	move.w	#$c00,$dff106		; BPLCON3 - Deactiveert AGA

	bsr.w	print		

mouse:
	
	btst	#6,$bfe001	
	bne.s	mouse		

	move.l	OldCop(PC),$dff080	; COP1LC - Orginele-COP
	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

;	Routine, die 8x8 Pixel grote letters print

PRINT:
	LEA	TEXT(PC),A0	
	LEA	BITPLANE,A3	
	MOVEQ	#25-1,D3	
PRINTREGEL:
	MOVEQ	#80-1,D0	

PRINTCHAR2:
	MOVEQ	#0,D2		
	MOVE.B	(A0)+,D2	
	SUB.B	#$20,D2		
				
	MULU.W	#8,D2		
				
	MOVE.L	D2,A2
	ADD.L	#FONT,A2	

	MOVE.B	(A2)+,(A3)	; Teken Lijn 1 van de letter
	MOVE.B	(A2)+,80(A3)	; Teken Lijn 2	"	"
	MOVE.B	(A2)+,80*2(A3)	; Teken Lijn 3  "	"
	MOVE.B	(A2)+,80*3(A3)	; Teken Lijn 4  "	"
	MOVE.B	(A2)+,80*4(A3)	; Teken Lijn 5  "	"
	MOVE.B	(A2)+,80*5(A3)	; Teken Lijn 6  "	"
	MOVE.B	(A2)+,80*6(A3)	; Teken Lijn 7  "	"
	MOVE.B	(A2)+,80*7(A3)	; Teken Lijn 8  "	"

	ADDQ.w	#1,A3		
	
	DBRA	D0,PRINTCHAR2	; PRINT D0 (80) TEKENS PER REGEL
 
	ADD.W	#80*7,A3	; "Return"

	DBRA	D3,PRINTREGEL	; We printen D3 regels.
	
	RTS
	

TEXT:
             ;            1111111111222222222233333333334
             ;   1234567890123456789012345678901234567890
	dc.b	'  EERSTE REGEL IN  HIRES 640  PIXEL  BRE' ; 1a \ REGEL 1
	dc.b	'EDTE!  -- -- -- Ook nog eerste regel....' ; 1b /
	dc.b	'                U kunt een HEEL LANG    ' ; 2  \ REGEL 2
	dc.b	' verhaal kwijt op dit scherm!           ' ;    /
	dc.b	'     /\  /                              ' ; 3
	dc.b	'                                        ' ;
	dc.b	'    /  \/                               ' ; 4
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 5
	dc.b	'                                        ' ;
	dc.b	'        BLA Bla BlA bLa                 ' ; 6
	dc.b	'                     Bla BLA bla BlA bLa' ;
	dc.b	'                                        ' ; 7
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 8
	dc.b	'                                        ' ;
	dc.b	'Digital Mozart is proud to present to yo' ; 9
	dc.b	'u the ASSEMBLER-cursus in 100 % DUTCH!  ' ;
	dc.b	'                                        ' ; 10
	dc.b	'                                        ' ;
	dc.b	'   1234567890 !@#$%^&*()_+|\=-[]{}      ' ; 11
	dc.b	'       TECHNISCHE ZENDTEST              ' ;
	dc.b	'                                        ' ; 12
	dc.b	'                                        ' ;
	dc.b	'     TO BE OR NOT TO BE, THAT IS THE QUE' ; 13
	dc.b	'STION... YOU ARE!                       ' ;
	dc.b	'                                        ' ; 14
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 15
	dc.b	'                                        ' ;
	dc.b	'  Heel lang geleden was er eens         ' ; 16
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 17
	dc.b	'                                        ' ;
	dc.b	'  een boze heks en die wilde            ' ; 18
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 19
	dc.b	'                                        ' ;
	dc.b	'  al jaren wraak nemen op de koning     ' ; 20
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 21
	dc.b	'                                        ' ;
	dc.b	'  maar ze had nog nooit haar kans       ' ; 22
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 23
	dc.b	'                                        ' ;
	dc.b	'  gekregen. Totdat op een dag...        ' ; 24
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 25
	dc.b	'                                        ' ;
	dc.b	'                                        ' ; 26
	dc.b	'  Bla Bla Bla Bla Bla Bla Bla Bla       ' ;


	EVEN
	
	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,$2c81	; DiwStrt (Registers met Normaalwaarden)
	dc.w	$90,$2cc1	; DiwStop
	dc.w	$92,$003c	; DdfStart \ HIRES...
	dc.w	$94,$00d4	; 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,%1010001000000000  ; Bit 13 - 2 Bitplanes,4 Kleuren 
					; HIRES

BPLPOINTERS:
	dc.w $e0,$0000,$e2,$0000	;1e Bitplane
BPLPOINTERS2:
	dc.w $e4,$0000,$e6,$0000	;2e Bitplane

	dc.w	$180,$103	; Color0 - Achtergrond
	dc.w	$182,$fff	; Color1 - Plane 1 
	dc.w	$184,$345	; Color2 - Plane 2 (naar beneden verschoven)
	dc.w	$186,$abc	; Color3 - beide Planes - Overlapping

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

FONT:
;	incbin	"metal.fnt"	
;	incbin	"normal.fnt"	
	incbin	"nice.fnt"	

	SECTION MIJNPLANE,BSS_C	
	
	ds.b	80	; De lijn die we overslaan
BITPLANE:
	ds.b	80*256	; 1 Bitplane HIRES 640x256

	end
 
Hier is een kleine truuk om onze text iets netter te maken: Gewoon een 
tweede Bitplane activeren, en de eerste overlappen, maar wel 1 lijn naar
beneden geschoven om de volgende situatie te scheppen:

	...###..			...111..	; 1 = Color1 (Licht)
	..#...#.	...###..	..12221.	; 2 = Color2 (Donker)
	..#...#.	..#...#.	..3...3.	; 3 = Color3 (Middel)
	..#####.+	..#...#.=	..31113.
	..#...#.	..#####.	..32223.
	..#...#.	..#...#.	..3...3.
	..#...#.	..#...#.	..3...3.
	........	..#...#.	..2...2.
			........

	dc.w	$180,$103	; Color0 - Achtergrond
	dc.w	$182,$fff	; Color1 - Plane 1 
	dc.w	$184,$345	; Color2 - Plane 2 (naar beneden verschoven)
	dc.w	$186,$abc	; Color3 - beide Planes - Overlapping
 

Dit overlappings-effect van dezelfde Bitplanes wordt vaak gebruikt om Relief
te scheppen.

Om het effect nog duidelijker te maken wordt het tweede bitplane ook vaak
nog opzij geschoven. Probeer eens:

	dc.w	$102,$10	; BplCon1 - Plane 2 1 Pixel naar rechts

(Deze regel komt in de Copperlist tussen Beide BPLPOINTERS!)

Bij kleine Fonts verslechtert de zaak vaak, maar bij grote vlakken kan het
er heel mooi uit zien:
	......
	.:::::#
	.:::::#
	.:::::#
	 ######