
;           02.08.1988
;     ______________________
;
;      FAST SPECCY FILL RTN
;     ______________________
;
;         Danny Hartley


	DB	"ZX82",3,0
	DB	THE-START/256,THE-START&255
	DB	START/256,START&255
	DW	-1

	ORG	50000

DFILE:	EQU	16384
AFILE:	EQU	22528

START:	LD	HL,TESTSCRN
	LD	DE,DFILE
	LD	BC,6144
	LDIR

	LD	DE,2040H

;  D=y coord, E=x coord
;  --------------------

FILL:
	DI
	LD	A,D
	RLCA 
	RLCA 
	AND	224
	LD	L,A
	LD	A,D
	RRCA
	RRCA
	RRCA
	AND	24
	OR	DFILE/256
	LD	H,A
	LD	A,D
	AND	7
	OR	H
	LD	H,A
	LD	A,E
	AND	7
	ADD	PX_DTBL&255
	LD	C,A
	ADC	PX_DTBL/256
	SUB	C
	LD	B,A
	LD	A,(BC)
	LD	C,A
	SRL	E
	SRL	E
	SRL	E
	LD	B,E	

;  HL=screen Y addr (ie colm zero)
;   D=flags,dirn
;   B=X/8 (ie 0-31)
;   C=pattern within byte

	LD	E,0
	PUSH	DE	; eo stack

FIL1:	LD	E,L
	LD	A,L
	OR	B
	LD	L,A
FIL2:	RLC	C
	JP	NC,FIL21
	DEC	L
	LD	A,L
	CPL
	AND	31
	JR	Z,FIL22
FIL21:	LD	A,(HL)
	AND	C
	JP	Z,FIL2
FIL22:	RRC	C
	JP	NC,FIL3
	INC	L
FIL3:	LD	A,L
	LD	L,E
	AND	31
	LD	B,A
	RES	0,D
	RES	1,D
FIL4:
	LD	E,L
	LD	A,L
	OR	B
	LD	L,A
	LD	A,(HL)
	AND	C
	JP	NZ,FIL11
	LD	A,(HL)
	OR	C
	LD	(HL),A
	LD	L,E	
	LD	A,H
	DEC	H
	AND	7
	JP	NZ,FIL41
	LD	A,L
	SUB	32
	LD	L,A
	JR	C,FIL41
	LD	A,H
	ADD	8
	LD	H,A
FIL41:	LD	A,H
	CP	DFILE/256
	JR	C,FIL6
	LD	E,L
	LD	A,L
	OR	B
	LD	L,A
	LD	A,(HL)
	AND	C	
	LD	L,E
	JR	NZ,FIL5
	BIT	0,D
	JR	NZ,FIL6
	PUSH	HL
	PUSH	BC
	SET	0,D
	JR	FIL6
FIL5:	RES	0,D
FIL6:
	INC	H
	LD	A,H
	AND	7
	JP	NZ,FIL61
	LD	A,L
	ADD	32
	LD	L,A
	JR	C,FIL61
	LD	A,H
	SUB	8
	LD	H,A
FIL61:	INC	H
	LD	A,H
	AND	7
	JP	NZ,FIL62
	LD	A,L
	ADD	32
	LD	L,A
	JR	C,FIL62
	LD	A,H
	SUB	8
	LD	H,A
FIL62:	LD	A,H
	CP	AFILE/256
	JR	NC,FIL8
	LD	E,L
	LD	A,L
	OR	B
	LD	L,A
	LD	A,(HL)
	AND	C
	LD	L,E
	JR	NZ,FIL7
	BIT	1,D
	JR	NZ,FIL8
	PUSH	HL
	PUSH	BC
	SET	1,D
	JR	FIL8
FIL7:	RES	1,D
FIL8:	LD	A,H
	DEC	H
	AND	7
	JP	NZ,FIL81
	LD	A,L
	SUB	32
	LD	L,A
	JR	C,FIL81
	LD	A,H
	ADD	8
	LD	H,A
FIL81:
	RRC	C
	JP	NC,FIL4
	INC	B
	BIT	5,B		; chk rhs
	JP	Z,FIL4		; of screen
FIL11:	POP	BC
	POP	HL
	INC	C
	DEC	C
	JP	NZ,FIL1
	PUSH	HL
	EI
	RET

PX_DTBL:	DBH	8040201008040201

TESTSCRN:	INCB	ZXSTUFF2:FILL$

THE:	END

