	opt	c-,l+

	section	draw,code

	xdef	edraw0,edraw1,mendraw,meraen,char,schar
	xdef	ordraw0,mdraw0,sdraw0,omdraw1,endraw

	xref	scrloc,otscr,pile,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-2(a2)
	move.w	(\2)+,d1
	\1.w	d1,16000-2(a2)
	move.w	(\2)+,d1
	\1.w	d1,24000-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

dr5:	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

dr6:	macro
	movea.l	\1,a2
	mulu	#40,d2
	lsr.w	#3,d1
	andi.l	#$fffe,d1
	adda.l	d2,a2
	move	d1,d3
	move	d3,d4
	cmpi.w	#$5000>>2,d1
	bls.s	r\@
z\@:	move.l	#$8000>>2,d1
	sub.l	d3,d1
	suba.l	d1,a2
	bra.s	c\@
r\@:	adda.l	d1,a2
c\@:
	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
; MDRAW - 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	edr00

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

ORDRAW0 LEA	PILE,A2
	ADDA.L	A2,A0
	dr2
	dr1	SCRLOC
	dr3	or,a0
	RTS

MDRAW0:	LEA	PILE,A2
	ADDA.L	A2,A0
	ADDA.L	A2,A1
	dr2
	dr1	SCRLOC
DRM1:	dr4	0
	dr4	8000
	dr4	16000
	dr4	24000
	addq.l	#2,a2
	dbra	d5,drm1
	adda.l	d7,a2
	move.w	d0,d5
	DBRA	D6,DRM1
	RTS

SDRAW0:	LEA	PILE,A2
	ADDA.L	A2,A0
	dr2
	dr1	SCRLOC
DR1S1:	MOVE.W	(A0)+,(A2)+
	move.w	(a0)+,8000-2(a2)
	move.w	(a0)+,16000-2(a2)
	move.w	(a0)+,24000-2(a2)
	DBRA	D5,DR1S1
	ADDA.L	D7,A2
	MOVE.W	D0,D5
	DBRA	D6,DR1S1
	RTS

OMDRAW1:dr2
	dr1	OTSCR
omd00:	dr3	eor,a5
	RTS

MENDRAW:LEA	PILE,A2
	ADDA.L	A2,A0
	ADDA.L	A2,A1
	dr2
	dr6	scrloc
; 	PRED PLACE ROUTINE START
MCP1	CMPI.W	#38,D3
	BLS.S	MCP2
	ADDq.L	#8,A0
	addq.l	#8,a1		; ovdje je trebalo dodati!!!
	move.l	#0,(a5)+
	move.l	#0,(a5)+
	BRA.S	MCP3

MCP2:	dr5	0
	dr5	8000
	dr5	16000
	dr5	24000
MCP3:	addq.l	#2,a2
	ADDq.W	#2,D3
	DBRA	D5,MCP1
	MOVE.W	D4,D3
	ADDA.L	D7,A2
	MOVE.W	D0,D5
	DBRA	D6,MCP1
	RTS

ENDRAW:	LEA	PILE,A2
	ADDA.L	A2,A0
	dr2
	dr6	scrloc
; 	PRED PLACE ROUTINE START
CP1:	CMPI.W	#38,D3
	BLS.S	CP2
	ADDq.L	#8,A0
	move.l	#0,(a5)+
	move.l	#0,(a5)+
	addq.l	#2,a2
	BRA.S	CP3

CP2:	MOVE.W	(A0),D1
	EOR.W	D1,(A2)+
	move.w	(a0)+,(a5)+
	MOVE.W	(A0),D1
	EOR.W	D1,8000-2(A2)
	move.w	(a0)+,(a5)+
	MOVE.W	(A0),D1
	EOR.W	D1,16000-2(A2)
	move.w	(a0)+,(a5)+
	MOVE.W	(A0),D1
	EOR.W	D1,24000-2(A2)
	move.w	(a0)+,(a5)+
CP3:	ADDI.W	#2,D3
	DBRA	D5,CP1
	MOVE.W	D4,D3
	ADDA.L	D7,A2
	MOVE.W	D0,D5
	DBRA	D6,CP1
	RTS

meraen:	dr2
	dr6	otscr
mr1:
*	CMPI.W	#38,D3
*	BLS.S	mr2*
*	ADDq.L	#8,A0
*	addq.l	#8,a5
*	addq.l	#2,a2
*	BRA.S	mr3

mr2:	move.w	(a5)+,d1
	eor.w	d1,(a2)+
	move.w	(a5)+,d1
	eor.w	d1,8000-2(a2)
	move.w	(a5)+,d1
	eor.w	d1,16000-2(a2)
	move.w	(a5)+,d1
	eor.w	d1,24000-2(a2)
*mr3:	addq.w	#2,d3
	dbra	d5,mr1
*	move	d4,d3
	adda.l	d7,a2
	move.w	d0,d5
	dbra	d6,mr1

	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

