
; Listing6i.s		TEXT IN 3 KLEUREN, WAARVAN ER 1 KNIPPERT
;			D.M.V een TABEL.


	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)	

;	POINTEN NAAR HET ANDERE BITPLANE

	MOVE.L	#BITPLANE2,d0	
	LEA	BPLPOINTERS2,A1 
	move.w	d0,6(a1)	
	swap	d0		
	move.w	d0,2(a1)	
	
	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

	LEA	TEXT(PC),A0	
	LEA	BITPLANE,A3	
	bsr.w	print		

	LEA	TEXT2(PC),A0	
	LEA	BITPLANE2,A3	
	bsr.w	print		
 
mouse:
	cmpi.b	#$ff,$dff006	
	bne.s	mouse		

	btst	#2,$dff016	
	beq.s	Wacht		

	bsr.w	Knipper	 ; Ga Naar KNIPPER ieder FRAME.

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

	btst	#6,$bfe001	
	bne.s	mouse		

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


; Knipper-routine die een voorgedefinieërde kleurverloop-tabel gebruikt.
; Deze tabel is niets anders dan een rij van Words, met de verschillende 
; $RGB waarden, die COLOR01 aanneemt.
; Deze routine neemt bij elke doorloop (elk FRAME dus!) de volgende waarde
; in de TABEL, en als deze routine 1 word (2 bytes) VOOR EindeCOLORTAB is
; aangekomen,begint alles weer opnieuw.
;
;	dc.w	1,3,5,7,9,8,6,4,2,1	; Onze "Mini"-Tabel
;
; Tijdens het uitvoeren van de routine wordt dus de rij als volgt:
;
;	1,3,5,7,9,8,6,4,2,1,1,3,5,7,9,8,6,4,2,1,1,3,5,7,9,8,6,4,2,1....
;
; Dit resulteert dan in een oneindige loop.
; Het adres van het laatst gelezen LONG wordt in COLTABPOINT opgeslagen.

Knipper:
	ADDQ.L	#2,COLTABPOINT		; Point naar het volgende Word
	MOVE.L	COLTABPOINT(PC),A0    	; Adres, dat in COLTABPOINT 
					; wordt in a0 gekopieërd
	CMP.L	#EindeCOLORTAB-2,A0     ; Laatste Word in de Tabel?
	BNE.S	NOBSTART2		; Nog niet? Ga dan verder.
	MOVE.L	#COLORTAB-2,COLTABPOINT ; Start weer bij het eerste word.
NOBSTART2:
	MOVE.W	(A0),Kleur1	; kopieër het Word van de Tabel in de COP
	rts


COLTABPOINT:		   ; Dit Longword "POINT" naar COLORTAB, dus het
	dc.l	COLORTAB-2 ; bevat het adres van COLORTAB.

;	Tabel met voorgedefinieërde waarden, die de kleuren bevat.

COLORTAB:
	dc.w	$000,$000,$001,$011,$011,$011,$012,$012 ; Begin Donker
	dc.w	$022,$022,$022,$023,$023
	dc.w	$033,$033,$034
	dc.w	$044,$044
	dc.w	$045,$055,$055
	dc.w	$056,$056,$066,$066,$066
	dc.w	$167,$167,$177,$177,$177,$177,$177
	dc.w	$278,$278,$278,$288,$288,$288,$288,$288
	dc.w	$389,$389,$399,$399,$399,$399
	dc.w	$39a,$39a,$3aa,$3aa,$3aa
	dc.w	$3ab,$3bb,$3bb,$3bb
	dc.w	$4bc,$4cc,$4cc,$4cc
	dc.w	$4cd,$4cd,$4dd,$4dd,$4dd
	dc.w	$5de,$5de,$5ee,$5ee,$5ee,$5ee
	dc.w	$6ef,$6ff,$6ff,$7ff,$7ff,$8ff,$8ff,$9ff ; 'Maximum' Felheid
	dc.w	$5ee,$5ee,$5ee,$5de,$5de,$5de
	dc.w	$4dd,$4dd,$4dd,$4cd,$4cd
	dc.w	$4cc,$4cc,$4cc,$4bc
	dc.w	$3cb,$3bb,$3bb
	dc.w	$3ba,$3aa,$3aa
	dc.w	$3a9,$399,$399
	dc.w	$298,$288
	dc.w	$187,$177
	dc.w	$076,$066
	dc.w	$065,$055
	dc.w	$054,$044
	dc.w	$034
	dc.w	$022
	dc.w	$011
	dc.w	$000			; Weer donker
EindeCOLORTAB:


;	Print Routine

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)	; Teken Lijn 1 van de letter
	MOVE.B	(A2)+,40(A3)	; Teken Lijn 2 van de letter
	MOVE.B	(A2)+,40*2(A3)	; Teken Lijn 3 van de letter
	MOVE.B	(A2)+,40*3(A3)	; Teken Lijn 4 van de letter
	MOVE.B	(A2)+,40*4(A3)	; Teken Lijn 5 van de letter
	MOVE.B	(A2)+,40*5(A3)	; Teken Lijn 6 van de letter
	MOVE.B	(A2)+,40*6(A3)	; Teken Lijn 7 van de letter
	MOVE.B	(A2)+,40*7(A3)	; Teken Lijn 8 van de letter

	ADDQ.w	#1,A3		
				

	DBRA	D0,PRINTCHAR2	

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

	DBRA	D3,PRINTREGEL	; 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,$000	; Color0 - AchterGrond
	dc.w	$0182

Kleur1:
	dc.w	$000
	dc.w	$0184,$f62 ; Color2 - (Oranje)
	dc.w	$0186,$1e4 ; Color3 - 1e en 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	; een Bitplane LOWRES 320x256
BITPLANE2:
	ds.b	40*256	; een Bitplane LOWRES 320x256


	end

D.m.v. het gebruik van voorgedefinieërde of voorberekende waarden kan men
veel betere Bewegingen of Kleurverlopen maken i.p.v. 'gewone' sub's of
add's.
De enige nieuwigheid zit 'm in de codering (=programmering) van de routine
'knipper', die de waarde uit een tabel leest en die dan in KLEUR1 stopt.
Daarbij wordt een Pointer naar het laatst gelezen word gebruikt, dus een
LONGWORD, dat het adres van dit word in de tabel opslaat. Let op :

een

COLTABPOINT:
	dc.l	COLORTAB

is hetzelfde als een:

COLTABPOINT:
	DC.L	0

als deze na een Move.l #Colortab,Coltabpoint uitgevoerd wordt. Er wordt dus
een Longword geassembleerd, dat het adres in een bepaald label bevat. In
deze routine is een

	dc.l	COLORTAB-2

te vinden. Deze is er echter om bij de eerste keer het eerste word te lezen
omdat de routine met

Knipper:
	ADDQ.L	#2,COLTABPOINT	; Point naar het volgende word

begint. Coltabpoint moet het begin v.h. eerste word-2 bevatten. In ieder
geval na de eerste ADDQ.L #2 word bij de eerste jsr het eerste Word 
gekopieërd en niet het tweede.
Daarna wordt het longword Coltabpoint iedere keer 2 verhoogd. Het adres dat
het bevat wordt dus steeds de volgende zolang we niet het laatste word
bereiken, dat twee bytes voor het einde van de tabel staat:

; We zijn op dit adres als we het laatste word lezen.

	dc.w	$000			; weer DONKER.
EindeCOLORTAB:

Hier wordt dan met een:

	MOVE.L	#COLORTAB-2,COLTABPOINT ; Start weer bij het eerste Word


het label Coltabpoint weer met het adres van het eerste Word geladen.

U kunt deze Routine voor vele verschillende dingen gebruiken. B.v. om 
Sprite te laten Springen of in golfbewegingen aan te laten vallen.
Gewoon de tabel vervangen!

Probeer de tabel maar eens door deze te vervangen:

COLORTAB:
	dc.w	$26F,$27E,$28D,$29C,$2AB,$2BA,$2C9,$2D8,$2E7,$2F6
	dc.w	$4E7,$6D8,$8C9,$ABA,$CAA,$D9A,$E8A,$F7A,$F6B,$F5C
	dc.w	$D6D,$B6E,$96F,$76F,$56F,$36F
EindeCOLORTAB:

