
; Listing6c2.s	Meerdere Regels op het scherm!
;		-Met ons eigen font!
		
	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	#27-1,D3	; Aantal te printen regels in d3
PRINTREGEL:
	MOVEQ	#40-1,D0	; Aantal tekens per regel.
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
 
	ADD.W	#40*7,A3	; "Return", Nieuwe regel

	DBRA	D3,PRINTREGEL	; We printen d3 regels
	RTS


TEXT:
             ;            1111111111222222222233333333334
             ;   1234567890123456789012345678901234567890
	dc.b	'   ERSTE REGEL                          ' ; 1
	dc.b	'                TWEEDE REGEL            ' ; 2
	dc.b	'     /*  /                              ' ; 3
	dc.b	'    /  */                               ' ; 4
	dc.b	'                                        ' ; 5
	dc.b	'        ZESDE REGEL                     ' ; 6
	dc.b	'                                        ' ; 7
	dc.b	'                                        ' ; 8
	dc.b	'  AUTEUR: ROB JANSSEN (DIGITAL MOZART)  ' ; 9
	dc.b	'                                        ' ; 10
	dc.b	'          1234567890 !@#$%^&*()         ' ; 11
	dc.b	'                                        ' ; 12
	dc.b	'   DIT IS LISTING6C2.S WAARIN WE ONS    ' ; 13
	dc.b	'                                        ' ; 14
	dc.b	'   EIGEN FONT GEBRUIKEN. AARDIG HE?     ' ; 15
	dc.b	'                                        ' ; 16
	dc.b	'    @ let op wat @  @ hier gebeurt @    ' ; 17
	dc.b	'                                        ' ; 18
	dc.b	'  kleine letters zijn onzichtbaar of    ' ; 19
	dc.b	'                                        ' ; 20
	dc.b	'  leveren troep op omdat ze geheugen    ' ; 21
	dc.b	'                                        ' ; 22
	dc.b	'  weergeven dat niet gevuld is met ons  ' ; 23
	dc.b	'                                        ' ; 24
	dc.b	'               eigen font               ' ; 25
	dc.b	'                                        ' ; 26
	dc.b	'  en daarom vul ik een stuk met nullen  ' ; 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
	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 - TextKleur


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

;	HET FONT

;  Charakters:  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ
;  LET OP! DEZE ZIJN ER NIET: [\]^_`abcdefghijklmnopqrstuvwxyz{|}~


FONT:
; ' '  (Spatie)
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
; '!'
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00000000
	dc.b	%00011000
	dc.b	%00000000
; '"'
	dc.b	%00011011
	dc.b	%00011011
	dc.b	%00011011
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
; '#'
	dc.b	%00010100
	dc.b	%00010100
	dc.b	%00010100
	dc.b	%01111111
	dc.b	%00010100
	dc.b	%00010100
	dc.b	%00010100
	dc.b	%00000000
; '$'
	dc.b	%00001000
	dc.b	%00011110
	dc.b	%00100000
	dc.b	%00011100
	dc.b	%00000010
	dc.b	%00111100
	dc.b	%00001000
	dc.b	%00000000
; '%'
	dc.b	%00000001
	dc.b	%00110011
	dc.b	%00110110
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110110
	dc.b	%01100110
	dc.b	%00000000
; '&'
	dc.b	%00011000
	dc.b	%00100100
	dc.b	%00011000
	dc.b	%00011001
	dc.b	%00100110
	dc.b	%00111110
	dc.b	%00011001
	dc.b	%00000000
; "'"
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
; "("
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%00110000
	dc.b	%00110000
	dc.b	%00011000
	dc.b	%00001100
	dc.b	%00000000
; ")"
	dc.b	%00110000
	dc.b	%00011000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%00000000
; "*"
	dc.b	%01100011
	dc.b	%00110110
	dc.b	%00011100
	dc.b	%01111111
	dc.b	%00011100
	dc.b	%00110110
	dc.b	%01100011
	dc.b	%00000000
; '+'
	dc.b	%00000000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%01111110
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00000000
	dc.b	%00000000
; ","
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%00000000
; "-"
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%01111110
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
; "."
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00011000
	dc.b	%00011000
	dc.b	%00000000
; "/"
	dc.b	%00000001
	dc.b	%00000011
	dc.b	%00000110
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%01100000
	dc.b	%00000000
; '0'
	dc.b	%01111111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000000
; '1'
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000000
; '2'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000000
; '3'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%00011111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; '4'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000000
; '5'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; '6'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000000
; '7'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000000
; '8'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000000
; '9'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; ':'
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00000000
; ';'
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00000000
; "<"
	dc.b	%00000110
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%00011000
	dc.b	%00001100
	dc.b	%00000110
	dc.b	%00000000
; "="
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%01111110
	dc.b	%00000000
	dc.b	%01111110
	dc.b	%00000000
	dc.b	%00000000
	dc.b	%00000000
; ">"
	dc.b	%00011000
	dc.b	%00001100
	dc.b	%00000110
	dc.b	%00000011
	dc.b	%00000110
	dc.b	%00001100
	dc.b	%00110000
	dc.b	%00000000
; '?'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%00001111
	dc.b	%00001100
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00000000
; "@"
	dc.b	%00000000	; Probeer deze eens!
	dc.b	%11100111
	dc.b	%11100111
	dc.b	%00000000
	dc.b	%00010000
	dc.b	%00011000
	dc.b	%10000001
	dc.b	%01111110
; "A"
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; "B"
	dc.b	%01111110
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111110
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111110
	dc.b	%00000000
; 'C'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000000
; 'D'
	dc.b	%01111110
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111110
	dc.b	%00000000
; 'E'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01111100
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000000
; 'F'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01111100
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%00000000
; 'G'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01100111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000000
; 'H'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01101111
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; 'I'
	dc.b	%00111111
	dc.b	%00000000
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00001100
	dc.b	%00111111
	dc.b	%00000000
; 'J'
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000000
; 'K'
	dc.b	%01100011
	dc.b	%01100110
	dc.b	%00001100
	dc.b	%01111000
	dc.b	%01101100
	dc.b	%01100110
	dc.b	%01100011
	dc.b	%00000000
; 'L'
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%00000000
	dc.b	%01111111
	dc.b	%00000000
; 'M'
	dc.b	%01100011
	dc.b	%01110111
	dc.b	%01101011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; 'N'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; 'O'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%00000000
; 'P'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111111
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%01100000
	dc.b	%00000000
; 'Q'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100111
	dc.b	%01111111
	dc.b	%00000000
; 'R'
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%01100011
	dc.b	%01111100
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; 'S'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%01100000
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; 'T'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%00000000
; 'U'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; 'V'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00110110
	dc.b	%00011100
	dc.b	%00000000
; 'W'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%01101011
	dc.b	%01110111
	dc.b	%01100011
	dc.b	%00000000
; 'X'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00110110
	dc.b	%00001000
	dc.b	%00110110
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000000
; 'Y'
	dc.b	%01100011
	dc.b	%01100011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000011
	dc.b	%00000011
	dc.b	%01111111
	dc.b	%00000000
; 'Z'
	dc.b	%01111111
	dc.b	%00000000
	dc.b	%00000110
	dc.b	%00001100
	dc.b	%00011000
	dc.b	%00110000
	dc.b	%01111111
	dc.b	%00000000

	dcb.b	40*8,0		; Als we deze regel verwijderen krijgen
				; we 'troep' te zien. Hier vullen we
				; de resterende (LEES: Kleine ) letters
				; op met nullen. Ze worden dus NIET
				; zichtbaar.( Verander de 0 eens in $f of
				; %10101010! )
;
; Er ontbreken alleen de Kleine letters. We hebben alleen hoofdletters.
; Als u geduld genoeg heeft, kunt u uw eigen font (inclusief kleine letters)
; ontwerpen!

	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


Deze listing is Identiek aan die van 6c.s, maar het font is 'handmade'.
I.p.v. dat we het font inladen, tekenen we het hier meteen rechtstreeks
in het geheugen d.m.v. dc.b. (In binair).

		;12345678
; "A"
	dc.b	%01111111	;1
	dc.b	%00000011	;2
	dc.b	%01100011	;3
	dc.b	%01111111	;4
	dc.b	%01100011	;5
	dc.b	%01100011	;6
	dc.b	%01100011	;7
	dc.b	%00000000	;8

Dit is b.v. een "A". LET OP! Gebruik in de te drukken text geen kleine 
letters omdat deze niet bestaan in de listing omdat we ze er niet bij gezet
hebben! Nu is in elk geval de opbouw van een font iets duidelijker hoop ik.
U zult wel begrijpen dat een 16x16 font er ongeveer ook zo uit ziet:

		;1234567890123456
; "A"
	dc.w	%0000111111111100	;1
	dc.w	%0011111111111111	;2
	dc.w	%0011110000001111	;3
	dc.w	%0011110000001111	;4
	dc.w	%0011110000001111	;5
	dc.w	%0011110000001111	;6
	dc.w	%0011111111111111	;7
	dc.w	%0011111111111111	;8
	dc.w	%0011110000001111	;9
	dc.w	%0011110000001111	;10
	dc.w	%0011110000001111	;11
	dc.w	%0011110000001111	;12
	dc.w	%0011110000001111	;13
	dc.w	%0011110000001111	;14
	dc.w	%0000000000000000	;15
	dc.w	%0000000000000000	;16

Maar het is makkelijker deze in een tekenprogramma te tekenen en dan te 
Converteren naar RAW om het zo te kunnen inladen.

U kunt in deze listing zelf het font aanpassen. U kunt bijvoorbeeld de 'Q'
vervangen door een poppetje. Type in de text dan Q en er verschijnt een 
poppetje... Simpel toch? (Ik heb een voorbeeld gemaakt met het @ teken!).
U kunt ook b.v. de kleine letters zelf ontwerpen. Ik heb er de brui aan 
gegeven na de grote letters (want het is wel een hoop werk!).