	opt	c-,l+
	section	draw,code

	xdef	edraw0,edraw1,mendraw,meraen,char,schar
	xref	scrloc,otscr,pile,plots,temploc,bigset,smalset

dr1:	macro
	movea.l	\1,a2
	mulu	#40,d2
	lsr.w	#3,d1
	bclr	#0,d1
	add.w	d1,d2
	adda.l	d2,a2
	endm

dr2:	macro
	lsr.w	#2,d5
	moveq	#19,d7
	sub.w	d5,d7
	move.w	d5,d0
	asl.w	#1,d7
	endm

dr3:	macro
x\@:	move.w	(\2)+,d1
	\1.w	d1,(a2)
	move.w	(\2)+,d1
	\1.w	d1,8000(a2)
	move.w	(\2)+,d1
	\1.w	d1,16000(a2)
	move.w	(\2)+,d1
	\1.w	d1,24000(a2)
	addq.l	#2,a2
	dbra	d5,x\@
	adda.l	d7,a2
	move.w	d0,d5
	dbra	d6,x\@
	endm

dr4:	macro
	MOVE.W	\1(a2),(A5)
	MOVE.W	(A1),D1
	AND.W	D1,\1(a2)
	MOVE.W	(A0),D1
	EOR.W	D1,\1(a2)
	MOVE.W	(A1)+,D1
	EORI.W	#$FFFF,D1
	AND.W	D1,(A5)
	MOVE.W	(A0)+,D1
	EOR.W	D1,(A5)+
	endm

; THE DRAWING ROUTINES
; D5   -   .W IN  LINE -1  D6 LINES-1
; A0 - SHAPE
; A1 - MASK
; A2 - SCREEN (NOT TO INPUT)
; A5 - TEMP STORAGE SPACE

; THEY ARE AS FOLLOWS:
; EDRAW - NORMAL EOR DRAW
; MDARW - MASKED EOR DRAW / USE OMDRAW TO RESTORE BACKGRND FROM STORAGE
; SDRAW - STA DRAW ( THE SIMPLEST )
; SSDRAW- STA SAVE DRAW / USE  RDRAW TI RESTORE BACKGRND FROM STORAGE
; RDRAW AND OMDRAW ONLY USED FOR REDEMPTION OF STORED BACKGROUND
; -0 ON THE VISIBLE SCREEN   -1 ON THE INVISIBLE SCREEN

EDRAW0:	LEA	PILE,A2
	ADDA.L	A2,A0
	dr2
	dr1	scrloc
	bra.s	edr0

EDRAW1:	LEA	PILE,A2
	ADDA.L	A2,A0
	dr2
	dr1	OTSCR
edr0:	dr3	eor,a0
	RTS

MENDRAW:LEA	PILE,A2
	ADDA.L	A2,A0
	ADDA.L	A2,A1
	dr2
	dr1	scrloc
	MOVE.L	D1,D3
	MOVE.L	D3,D4
; 	RED PLACE ROUTINE START
MCP1	CMPI.W	#158,D3			***???***
;	BILO JE BNE
	BLS.S	MCP2
	ADDq.L	#8,A0
	BRA.S	MCP3

MCP2:	MOVE.W	(A0)+,D1
	EOR.W	D1,(A2)
	MOVE.W	(A0)+,D1
	EOR.W	D1,8000(A2)
	MOVE.W	(A0)+,D1
	EOR.W	D1,16000(A2)
	MOVE.W	(A0)+,D1
	EOR.W	D1,24000(A2)
MCP3:	addq.l	#2,a2
	ADDI.W	#2,D3			***???***
	DBRA	D5,MCP1
	MOVE.W	D4,D3			***???***
	ADDA.L	D7,A2
	MOVE.W	D0,D5
	DBRA	D6,MCP1
	RTS

MERAEN:	lea	plots,a2
	lea	temploc,a1
	asl.l	#1,d7
	movea.l 0(a2,d7.w),a0
	move.l	0(a1,d7.w),0(a2,d7.w)
	lea	pile,a1
	adda.l	a1,a0
	dr2
	dr1	otscr
*	MOVE.W	D1,D3
*	MOVE.W	D3,D4
	dr3	eor,a0
	RTS

; THE TEXT ROUTINES LO-RES
; !!!!!  REMEMBER TO SET SETLOC  !!!!!
; CHAR - PRINTS A COLOUR CHARACTER
; D0-NO D1-X(0-19) D2-Y(0-11)

CHAR:	MOVEA.L bigset,A1
	asl.l	#1,d1
	cmpi.w	#12,d2
	bgt.s	char0
	bne.s	char2
	moveq	#8-1,d5
	bra.s	char3
char2:	moveq	#16-1,d5
char3:	MULU	#40*16,D2
	MOVEA.L SCRLOC,A0
	ADDA.L	D1,A0
	ADDA.L	D2,A0
	asl.l	#7,D0
	ADDA.L	D0,A1
CHAR1:	MOVE.w	(A1)+,(A0)
	move.w	(a1)+,8000(a0)
	MOVE.w	(A1)+,16000(A0)
	move.w	(a1)+,24000(a0)
	ADDA.L	#40,A0
	DBRA	D5,CHAR1
char0:	RTS

SCHAR:	MOVEA.L smalset,A1
	asl.l	#1,d1
	MULU	#40*8,D2
	MOVEA.L SCRLOC,A0
	ADDA.L	D1,A0
	ADDA.L	D2,A0
	asl.l	#6,D0
	ADDA.L	D0,A1
	MOVEQ	#7,D5
SCHAR1	MOVE.w	(A1)+,(A0)
	move.w	(a1)+,8000(a0)
	MOVE.w	(A1)+,16000(A0)
	move.w	(a1)+,24000(a0)
	ADDA.L	#40,A0
	DBRA	D5,SCHAR1
	RTS


