
; Listing6b.s	Toon een hele regel!

	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)	

	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

	bsr.w	print		; Teken de letter

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 Pixel grote tekens drukt.

PRINT:
	LEA	TEXT(PC),A0	; Adres van te schrijven text in a0
	LEA	BITPLANE,A3	; Adres van doel-bitplane in a3
	MOVEQ	#40-1,D0	; Aantal ruimtes per regel (Dus het aantal
				; karakters dat op 1 regel past)
PRINTCHAR2:
	MOVEQ	#0,D2		; Wis d2
	MOVE.B	(A0)+,D2	; Volgend karakter in d2
	SUB.B	#$20,D2		; Trek 32 van de ascii waarde af,waardoor
				; we b.v. de spatie (=$20) in $00 krijgen,
				; het uitroepteken (=$21) in $01 enz..
	MULU.W	#8,D2		; Vermenigvuldig het verkregen getal met 8
				; omdat de karakters 8 pixels hoog zijn
	MOVE.L	D2,A2
	ADD.L	#FONT,A2	; Vindt de gewenste letter in het font.

				; Druk de letter lijn voor lijn af:
	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		; A3+1, we gaan 8 bit verder voor de 
				; volgende letter.

	DBRA	D0,PRINTCHAR2	; Print d0 (40) tekens per regel.
	RTS


TEXT:
		;         1111111111222222222233333333334
		;1234567890123456789012345678901234567890
	dc.b	'   Eerste Regel Text!!! 1,2,3 Test!!    '

	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
	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,%0001001000000000  ; 1 Bitplane LOWRES 320x256


BPLPOINTERS:
	dc.w $e0,$0000,$e2,$0000	;1e Bitplane

	dc.w	$0180,$000	; color0 - Achtergrond
	dc.w	$0182,$19a	; color1 - Letter-Kleur


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

;	HET FONT (8x8)

FONT:
	incbin	"nice.fnt"	; Zonder de ALT-Karakters (ė,ö,č,é enz..)
;	incbin	"metal.fnt"	; U kunt ook kiezen voor een van deze
;	incbin  "normal.fnt"	; twee fonts.


	SECTION MYPLANE,BSS_C	; SECTION BSS kan alleen uit NULLEN
				; bestaan. Men gebruikt DS.B om te 
				; definieėren hoeveel nullen die section
				; moet bevatten.

BITPLANE:
	ds.b	40*256	; een Bitplane LowRes 320x256

	end


In een regel kan men veel schrijven. Om 40 tekens af te drukken, is een
DBRA-lus genoeg, hier PRINTCHAR2 genoemd:

	MOVEQ	#40-1,D0	; Aantal plaatsen per regel : 40
PRINTCHAR2:

Omdat elke letter 1 byte 'breed' is, hebben we in een Lowres-Lijn 40 
plaatsen van... Tadaaaa, 1 byte! Dat is dus 40 tekens per regel. Dit kan
ook in Hires, waardoor u...Tadaaa...80 tekens per regel kunt gebruiken!
Voordat we de lus opnieuw uitvoeren die een teken op de regel zet, wort
nog een ADD uigevoerd dat onze (onzichtbare,niet bestaande) cursor 1 byte
verder schuift.

	ADDQ.w	#1,A3		; A1+1, 8 bit verder ( volgend karakter )

	DBRA	D0,PRINTCHAR2	; Print d0 (40) tekens per regel.


U kunt uit 3 verschillende fonts kiezen. Gewoon de ; weghalen, en de anderen
die u niet wilt van een ; voorzien of verwijderen.

Als u dit in Hires wilt proberen, dan moet u dezelfde stappen ondernemen
als omschreven in Listing6a.s. Daardoor heeft u 80 tekens per regel, dus
wel de Printchar-lus veranderen: Moveq #80-1,d0. De text kunt u op twee
regels neerzetten:

	dc.b	' EERSTE Regel op het scherm! Deze regel ' 0-40
	dc.b	'gaat hier gewoon verder! Tot het Einde..' 41-80

	dc.b	" Tweede Regel..........................."
	dc.b	"........................................"

	dc.b	" Derde Regel........ etcetera.

