
; Listing6h.s	Afdrukken van text in 3 Kleuren.
;		Hiervoor gebruiken we een tweede bitplane waarop
;		TEXT2 komt.

	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)	; 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)	

;	POINTEN NAAR HET ANDERE PLANE

	MOVE.L  #BITPLANE2,d0
	LEA	BPLPOINTERS2,A1 
	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

	LEA	TEXT(PC),A0	; Adres van de te schrijven text in a0.
	LEA	BITPLANE,A3	; Adres doel-plane in a3
	bsr.w	print		; Druk de text af

	LEA	TEXT2(PC),A0	; Adres van de te schrijven text in a0.
	LEA	BITPLANE2,A3	; Adres doel-plane in a3
	bsr.w	print		; Druk de text af

mouse:
	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

;	Routine, die 8x8 grote tekens afdrukt

PRINT:
	MOVEQ	#27-1,D3	 
PRINTREGEL:
	MOVEQ	#40-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)	; Print 1e lijn van de letter.
	MOVE.B	(A2)+,40(A3)	; Print 2e lijn van de letter.
	MOVE.B	(A2)+,40*2(A3)	; Print 3e lijn van de letter.
	MOVE.B	(A2)+,40*3(A3)	; Print 4e lijn van de letter.
	MOVE.B	(A2)+,40*4(A3)	; Print 5e lijn van de letter.
	MOVE.B	(A2)+,40*5(A3)	; Print 6e lijn van de letter.
	MOVE.B	(A2)+,40*6(A3)	; Print 7e lijn van de letter.
	MOVE.B	(A2)+,40*7(A3)	; Print 8e lijn van de letter.

	ADDQ.w	#1,A3		
	DBRA	D0,PRINTCHAR2	

	ADD.W	#40*7,A3	; "Return"

	DBRA	D3,PRINTREGEL 	; We printen d3 regels.
	RTS


TEXT:
             ;            1111111111222222222233333333334
             ;   1234567890123456789012345678901234567890
	dc.b	'  E S E R G L                           ' ; 1
	dc.b	'                TWEEDE                  ' ; 2
	dc.b	'         /                              ' ; 3
	dc.b	'    /  \                                ' ; 4
	dc.b	'                                        ' ; 5
	dc.b	'        Zesde ReGeL!!                   ' ; 6
	dc.b	'                                        ' ; 7
	dc.b	'                                        ' ; 8
	dc.b	'D g t l M z r   m ( ) ( ) i c   . . ( ? ' ; 9
	dc.b	'                                        ' ; 10
	dc.b	'   1234567890 !@#$%^&*()_+|\=-[]{}      ' ; 11
	dc.b	'                                        ' ; 12
	dc.b	' -=-    Ik denk,dus ik leef...      -=- ' ; 13
	dc.b	' ## zei eens iemand, maar hij beviel ## ' ; 14
	dc.b	' ///de striptekenaar niet,en werd   \\\ ' ; 15
	dc.b	'            u   i g g g m . .           ' ; 16
	dc.b	'                                        ' ; 17
	dc.b	'  Loading...(??)                        ' ; 18
	dc.b	'                                        ' ; 19
	dc.b	'  Wat zal ik eens typen???              ' ; 20
	dc.b	'                                        ' ; 21
	dc.b	'  Heeft u een idee??                    ' ; 22
	dc.b	'                                        ' ; 23
	dc.b	'   k n e . .                            ' ; 24
	dc.b	'                                        ' ; 25
	dc.b	'             .                          ' ; 26
	dc.b	'                                        ' ; 27

	EVEN

TEXT2:
             ;            1111111111222222222233333333334
             ;   1234567890123456789012345678901234567890
	dc.b	' E R T   E E                            ' ; 1
	dc.b	'                       REGEL            ' ; 2
	dc.b	'     /\                                 ' ; 3
	dc.b	'        /                               ' ; 4
	dc.b	'                                        ' ; 5
	dc.b	'        Zesde ReGeL!!                   ' ; 6
	dc.b	'                                        ' ; 7
	dc.b	'                                        ' ; 8
	dc.b	' i i a   o a t t   C   R   n . b v   ? )' ; 9
	dc.b	'                                        ' ; 10
	dc.b	'   1234567890 !@#$%^&*()_+|\=-[]{}      ' ; 11
	dc.b	'                                        ' ; 12
	dc.b	' -=-    Ik denk,dus ik leef...      -=- ' ; 13
	dc.b	' ##                                  ## ' ; 14
	dc.b	' ///                                \\\ ' ; 15
	dc.b	'           d s u t e e u d . .          ' ; 16
	dc.b	'                                        ' ; 17
	dc.b	'  Loading...(??)                        ' ; 18
	dc.b	'                                        ' ; 19
	dc.b	'  Wat zal ik eens typen???              ' ; 20
	dc.b	'                                        ' ; 21
	dc.b	'                                        ' ; 22
	dc.b	'                                        ' ; 23
	dc.b	'  I   i t...                            ' ; 24
	dc.b	'                                        ' ; 25
	dc.b	'            . .                         ' ; 26
	dc.b	'                                        ' ; 27

	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,$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,%0010001000000000  ; 2 BITPLANES LOWRES, 4 Kleuren

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

	dc.w	$0180,$001  ; Color0 - Achtergrondkleur.
	dc.w	$0182,$19a  ; Color1 - Kleur 1e Bitplane (BLAUW)
	dc.w	$0184,$f62  ; Color2 - Kleur 2e Bitplane (ORANJE)
	dc.w	$0186,$1e4  ; Color3 - Kleur 1e+2e Bitplane (GROEN)

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

;	Het font...

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

	SECTION MIJNPLANE,BSS_C	

BITPLANE:
	ds.b	40*256	; 1 Bitplane LOWRES 320x256
BITPLANE2:
	ds.b	40*256	; 1 Bitplane LOWRES 320x256

	end

Om de text in 3 kleuren te tonen (4 als men de achtergrond meetelt), moet 
men een extra bitplane in het leven roepen, en daarop text2 zetten. Als men
enkele woorden of letters weglaat (in het een of het ander bitplane) dan
krijgen we verschillende overlappingen,die telkens tot andere kleuren 
leiden. U weet nog wel:

	Bitplane 1 UIT, Bitplane 2 UIT = Achtergrondkleur
	Bitplane 1 AAN, Bitplane 2 UIT = Color01
	Bitplane 1 UIT, Bitplane 2 AAN = Color02
	Bitplane 1 AAN, Bitplane 2 AAN = Color03

Om beide texten te tonen gebruiken we dezelfde routine, alleen met een 
kleine verandering: De eerste twee instructies die de te printen text en
het doel-bitplane aanwijzen worden eruit gehaald, en voor de PRINT routine
zelf gezet. Deze routine print nu elke text waarvan we het adres in a0 
hebben geladen, en zet die op het bitplane waar a3 naar wijst.

	LEA	TEXT(PC),A0	; Adres van de te schrijven text in a0.
	LEA	BITPLANE,A3	; Adres doel-plane in a3
	bsr.w	print		; Druk de text af

	LEA	TEXT2(PC),A0	; Adres van de te schrijven text in a0.
	LEA	BITPLANE2,A3	; Adres doel-plane in a3
	bsr.w	print		; Druk de text af

Daardoor kan de routine op elk bitplane en met elke text gebruikt worden.
Bij de eerste bsr.w is nog alles hetzelfde als bij de vorige listings,
alleen bij de tweede komt Bitplane2 en TEXT2 aan de beurt. Deze zorgt voor 
een overlapping, en afhankelijk daarvan komt er een kleur tevoorschijn:

	dc.w	$0180,$001  ; Color0 - Achtergrondkleur.
	dc.w	$0182,$19a  ; Color1 - Kleur 1e Bitplane (BLAUW)
	dc.w	$0184,$f62  ; Color2 - Kleur 2e Bitplane (ORANJE)
	dc.w	$0186,$1e4  ; Color3 - Kleur 1e+2e Bitplane (GROEN)

Om dat alles beter te zien en begrijpen,kint u het tweede bitplane b.v. 3
pixels naar boven verschuiven:

	MOVE.L  #BITPLANE2+(40*3),d0