
; Listing6q.s	BRENGT ENIGE VERSCHILLENDE 'SCHAAKBORD'-PATRONEN
;		OP HET BEELDSCHERM

;		LINKER - RECHTER - LINKER MUISKNOP OM TE STOPPEN.


	SECTION	CIPenCOP,CODE

Begin
	move.l	4.w,a6		; Execbase
	jsr	-$78(a6)	; Disable
	lea	GfxName(PC),a1	; 
	jsr	-$198(a6)	; OpenLibrary
	move.l	d0,GfxBase	;
	move.l	d0,a6
	move.l	$26(a6),OldCop	; Opslaan oude COP

;	POINTEN NAAR ONZE BITPLANES
 
	MOVE.L	#BITPLANE,d0
	LEA	BPLPOINTERS,A1	; COP - Pointer
	move.w	d0,6(a1)
	swap	d0		
	move.w	d0,2(a1)	

	move.l	#COPPERLIST,$dff080	; COP1LC - Onze COP
	move.w	d0,$dff088		; COPJMP1 - Starten Onze COP
	move.w	#0,$dff1fc		; FMODE - Deactiveert AGA
	move.w	#$c00,$dff106		; BPLCON3 - Deactiveert AGA

	bsr.s	MATRIX1

mouse:
	btst	#6,$bfe001	; Linker Muisknop gedrukt?
	bne.s	mouse

	bsr.w	MATRIX2

mouse2:
	btst	#2,$dff016	; Rechter Muisknop gedrukt?
	bne.s	mouse2

	bsr.w	MATRIX3

mouse3:
	btst	#6,$bfe001	; Linker Muisknop gedrukt?
	bne.s	mouse3

	bsr.w	MATRIX4
mouse4:
	btst	#2,$dff016	; Rechter Muisknop gedrukt?
	bne.s	mouse4

	move.l	OldCop(PC),$dff080	; Pointen naar System-Cop
	move.w	d0,$dff088		; Starten oude Cop

	move.l	4.w,a6
	jsr	-$7e(a6)	; Enable
	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

; Deze routine vult een bitplane met hokjes van 8x8 pixels.

MATRIX1:
	LEA	BITPLANE,a0	; Adres Doel-Bitplane

	MOVEQ	#16-1,d0	; 16 Paar van 8 Pixel hoge Quadraten
				; 16*2*8=256 totaal vullen Scherm
MaakPaar:
	move.l	#(20*8)-1,d1	; 20 Words om een lijn te vullen
				; 8 maal 
MaakEen:
	move.w	#%1111111100000000,(a0)+ ; Lengte Quadraat op 1=8 Pixels
					 ; Quadraat op NULL = 8 Pixels
	dbra	d1,MaakEen		 ; doe 8 lijnen #.#.#.#.#.#.#.#.#.#

	move.l	#(20*8)-1,d1	; 20 Words om 1 lijn te vullen
				; 8 maal 
MaakAnder:
	move.w	#%0000000011111111,(a0)+ ; Lengte van op 0 gezette Quad= 8
					 ; Quadraat op 1 = 8 Pixels
	dbra	d1,MaakAnder		 ; doe 8 lijnen #.#.#.#.#.#.#.#.#.

	DBRA	d0,MaakPaar		; Maak 16 Paar Quadraten
					; #.#.#.#.#.#.#.#.#.#
	rts				; .#.#.#.#.#.#.#.#.#.

; Deze routine maakt een patroon van 4x4 pixels

MATRIX2:
	LEA	BITPLANE,a0	; Adres Doel-Bitplane

	MOVEQ	#32-1,d0	; 32 Paar van 4 Pixel hoge Quadraten
				; 32*2*4=256 totaal te vullen scherm
MaakPaar2:
	move.l	#(40*4)-1,d1	; 40 Bytes om een lijn te vullen
				; 4 lijnen te vullen
MaakEen2:
	move.b	#%11110000,(a0)+  ; Lengte van een Quadraat op 1 = 4 Pixels
				  ; Quadraat op 0 = 4 Pixels
	dbra	d1,MaakEen2	  ; doe 4 lijnen #.#.#.#.#.#.#.#.#.#

	move.l	#(40*4)-1,d1	; 40 Bytes om een lijn te vullen
				; 4 lijnen te vullen
MaakAnder2:
	move.b	#%00001111,(a0)+ ; Lengte van op 0 gezette Quadraat=4 Pixels
				 ; Quadraat op 1 = 4 Pixels
	dbra	d1,MaakAnder2	 ; doe 8 lijnen .#.#.#.#.#.#.#.#.#.

	DBRA	d0,MaakPaar2		; maak 32 Paar van Quadraten
					; #.#.#.#.#.#.#.#.#.#
	rts				; .#.#.#.#.#.#.#.#.#.

; Deze routine maakt een patroon van 16x16 pixels


MATRIX3:
	LEA	BITPLANE,a0	; Adres Doel-Bitplane

	MOVEQ	#8-1,d0	 	; 8 Paar van 16 Pixels hoge Quadraten
				; 8*2*4=256 totaal scherm
MaakPaar3:
	move.l	#(10*16)-1,d1	; 10 Bytes om een lijn te vullen
				; 16 lijnen te vullen
MaakEen3:
	move.l	#%11111111111111110000000000000000,(a0)+
				; Lengte van Quadraat op 1 = 16 Pixels
				; Quadraat op 0 = 16 Pixels
	dbra	d1,MaakEen3	; doe 16 Lijnen #.#.#.#.#.#.#.#.#.#

	move.l	#(10*16)-1,d1	; 10 Bytes om een lijn te vullen
				; 16 Lijnen te vullen
MaakAnder3:

	move.l	#%00000000000000001111111111111111,(a0)+
				; Lengte van een op 0 gezet Quadr.=16 Pixels
				; Quadraat op 1 = 16 Pixels
	dbra	d1,MaakAnder3	; doe 8 lijnen .#.#.#.#.#.#.#.#.#.

	DBRA	d0,MaakPaar3		; maak 8 Paar van Quadraten
					; #.#.#.#.#.#.#.#.#.#
	rts				; .#.#.#.#.#.#.#.#.#.


; MATRIX Model:"Fantasie"

MATRIX4:
	LEA	BITPLANE,a0	; Adres Doel-Bitplane in a0

	MOVEQ	#8-1,d0	 ; 8 Paar van 16 Pixels hoge Quadraten
			 ; 8*2*16=256 totaal te vullen scherm
MaakPaar4:
	move.l	#(10*16)-1,d1	; 10 Longwords om een lijn te vullen
				; 16 lijnen te vullen
MaakEen4:
	move.l	#%11111000000000011111000000000000,(a0)+ 
					; Lengte Quadraat op 1 = 4 Pixels
					; Quadraat op 0 = 12 Pixel
	dbra	d1,MaakEen4		; doe 16 lijnen #.#.#.#.#.#.#.#.#.#

	move.l	#(10*16)-1,d1	; 10 Longwords om een lijn te vullen
				; 16 lijnen te vullen
MaakAnder4:
	move.l	#%00000000000011111000000000011111,(a0)+
					; Lengte Quadraat op 0 = 12
					; Quadraat op 1 = 4 Pixel
	dbra	d1,MaakAnder4		; doe 8 lijnen .#.#.#.#.#.#.#.#.#.

	DBRA	d0,MaakPaar4		; Maak 8 Paar van Quadraten
					; #.#.#.#.#.#.#.#.#.#
	rts				; .#.#.#.#.#.#.#.#.#.



	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,%0001001000000000  ; Bit 12 aan - 1 Bitplane Lowres

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

	SECTION MIJNPLANE,BSS_C

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

	end

If you need a geometric background, you can do it with a routine!