	opt	c-,l+
	section enemy

	xref	pile,fxtsno,eflg,time8
	xref	startab,tables,time4,shipx
	xref	mendraw,meraen

	xdef	prey,enset,mclrmsk,exist,tsm,spencr1,codow,entyp
	xdef	ostano,killno,enx,eny,basno
	xdef	seten,temploc,plots

maxen:	equ	40

left:	equ	0
right:	equ	1
up:	equ	2
down:	equ	3

cy.down:equ	31360
cy.dl:	equ	33408
cy.dr:	equ	35456
cy.ur:	equ	37504
cy.ul:	equ	39552
cy.up:	equ	41600
cy.left:	equ	43648
cy.right:	equ	45696

o0.asteroid:	equ	14976

o0.headphones:	equ	17024

o.atariball:	equ	19072

o0.ying:	equ	27264
o1.ying:	equ	29312

ufo.d1:	 equ	47744
ufo.l1:	 equ	51840
ufo.r1:	 equ	55936

o0.twoship:	equ	60032

o0.lander:	equ	64128
o1.lander:	equ	66176
o2.lander:	equ	68224

sh.down:	equ	70272
sh.right:	equ	72320
sh.left:	equ	74368

o0.funny:	equ	76416

o0.klingon:	equ	78464

o.uss.ent:	equ	83712
o.uss.red:	equ	85760

o.sw:		equ	87808
o.sw45:		equ	89856

shi.down:	equ	91904
shi.right:	equ	93952
shi.left:	equ	96000

o0.ufo2:	equ	81152
o1.ufo2:	equ	82432

o0.eagle:	equ	109312
o1.eagle:	equ	112384
o2.eagle:	equ	115456

o0.bomber:	equ	119424
o1.bomber:	equ	122496

o.cccp.grey:	equ	125568
o.cccp.red:	equ	131712

f.explosion:	equ	101120

o.fire.blaster: equ	0

; DATA FOR ENEMIES

;	TAKE OUT ANDI.B	#3,D1 - LATER
;	BIRDS OF PREY

ENSET:	move.l	#end_of_tab-start_of_tab-2,d0
	lsr.w	#1,d0
	lea	start_of_tab,a1
en0:	clr.w	(a1)+
	dbra	d0,en0

	LEA	offset,A1
	LEA	exflg,A2
	lea	delay,a4
	lea	killno,A5
	lea	adstor2,a3
	move.l	a1,(a3)+
	move.l	a2,(a3)+
	move.l	a4,(a3)+
	move.l	a5,(a3)+
	lea	enx,a1
	lea	eny,a2
	lea	entyp,a4
	lea	pathno,a5
	lea	adstor1,a3
	move.l	a1,(a3)+
	move.l	a2,(a3)+
	move.l	a4,(a3)+
	move.l	a5,(a3)+

	jsr	enset1

	move.b	(a0),ostano
	MOVE.B	(A0)+,basno
;	TO EVEN OUT THE FLOW
	MOVE.B	(A0)+,D6
	clr.l	d7
	move.b	basno,d7
	beq	gghhjj

enset3: lea	adstor1,a3
	movea.l (a3),a1
	movea.l 4(a3),a2
	movea.l 8(a3),a4
	movea.l 12(a3),a5
	move.w	(a0)+,(a1)+
	move.w	(a0)+,(a2)+
	move.w	(a0)+,(a4)+
	move.w	(a0)+,(a5)+
	move.l	a1,(a3)
	move.l	a2,4(a3)
	move.l	a4,8(a3)
	move.l	a5,12(a3)

	lea	adstor2,a3
	movea.l (a3),a1
	movea.l 4(a3),a2
	movea.l 8(a3),a4
	movea.l 12(a3),a5
	move.w	(a0)+,(a1)+
	move.w	(a0)+,(a2)+
	move.w	(a0)+,(a4)+
	move.w	(a0)+,(a5)+
	move.l	a1,(a3)
	move.l	a2,4(a3)
	move.l	a4,8(a3)
	move.l	a5,12(a3)

	SUBI.B	#1,D7
	BNE.S	ENSET3

	CLR.L	D7
	MOVE.B	basno,D7
	LEA	EXIST,A1
	LEA	SPENCR1,A2
	LEA	CODOW,A6
ENSET4: MOVE.W	#1,(A1)+
	clr.w	(A2)+
	clr.w	(A6)+
	SUBI.B	#1,D7
	BNE.S	ENSET4
	MOVE.B	#1,starflg
	MOVE.W	#1,(A1)
gghhjj: RTS

setEN:
	move.l	#end_of_tab-start_of_tab-2,d0
	lsr.w	#1,d0
	lea	start_of_tab,a1
sen0:	clr.w	(a1)+
	dbra	d0,sen0

	jsr	enset1

	MOVE.B	(A0)+,basno
;	TO EVEN OUT THE FLOW
	MOVE.B	(A0)+,D6
	clr.l	d7
	move.b	basno,d7
	beq.s	gghhjj

	lea	enx,a1
	lea	eny,a2
	lea	offset,a3
	lea	killno,a4
	lea	delay,a5
sete3:	move.w	0(a0),(a1)+
	move.w	2(a0),(a2)+
	move.w	8(a0),(a3)+
	move.w	12(a0),(a5)+
	move.w	14(a0),(a4)+
	adda.l	#16,a0

	SUBI.B	#1,D7
	BNE.S	sete3

	clr.l	d6
	CLR.L	D7
	MOVE.b	basno,D7
	LEA	EXIST,A1
	LEA	SPENCR1,A2
	LEA	CODOW,A6
sete4:	CMp.w	#1,(a1)
	beq.s	es4
	clr.w	(a1)+
	bra.s	es5
es4:	addi.w	#1,d6
	adda.l	#2,a1
es5:	clr.w	(A2)+
	clr.w	(A6)+
	SUBI.B	#1,D7
	BNE.S	sete4
	MOVE.B	#1,starflg
	move.w	#1,(a1)
	move.b	d6,ostano

	RTS

enset1: clr.l	d7
	lea	startab,a0
es1:	clr.l	d1
	move.b	(a0),d1
	cmp.b	d6,d7
	beq.s	es2
	muls.w	#16,d1
	addi.l	#2,d1
	adda.l	d1,a0
	addi.w	#1,d7
	bra.s	es1 
es2:	rts

; ENEMY GENERAL ROUTINE

PREY	CLR.L	D0
	MOVE.B	switch,D0
	ANDI.L	#1,D0
	MULU	#8000,D0
	MOVEA.L spmask,A1
	ADDA.L	D0,A1
	MOVE.L	A1,curmsk
	CLR.L	D7
PREY1	MOVE.B	D7,tempno
	clr.l	d2
	move.b	basno,d2
	asl.w	#1,d2
	cmp.b	d7,d2
	beq	goout

	LEA	EXIST,A1
	cmp.w	#1,0(A1,D7.w)
	Beq.s	NTEN
	cmp.w	#7,0(a1,d7.w)
	bne	nexten

nten:	LEA	ENTYP,A1
	clr.l	d0
	move.w	0(a1,d7.w),d0
	asl.w	#2,d0
	lea	branch,a2
	adda.l	d0,a2
	jmp	(a2)
branch:
	bra	cylon		; 0
	bra	asteroid	; 1
	bra	headphones	; 2
	bra	atariball 	; 3
	bra	ying		; 4
	bra	ufo		; 5
	bra	twoship		; 6
	bra	lander		; 7
	bra	shuttle		; 8
	bra	funny		; 9
	bra	klingon		; 10
	bra	enterprise	; 11
	bra	swastika	; 12
	bra	ufo2		; 13
	bra	ship		; 14
	bra	fire.blaster	; 15
	bra	eagle		; 16
	bra	bomber		; 17
	bra	tupoljev	; 18

NEXTEN: CLR.L	D7
	MOVE.B	tempno,D7
	ADDI.B	#2,D7
	BRA	PREY1
goout	RTS

cy.tab: dc.l	cy.down
	dc.l	cy.left
	dc.l	cy.right,0
	dc.l	cy.up,cy.ul,cy.ur,0
	dc.l	cy.down,cy.dl,cy.dr

cylon:	jsr	movit

	clr.l	d0
	move.b	dirflg,d0
	asl.w	#2,d0
	lea	cy.tab,a0
	adda.l	d0,a0
	movea.l (a0),a0
dren0:	move.l	#256,d4
drawen: move.l	#15,d6
	move.l	#7,d5
	jsr	mcplot
	bra	nexten

asteroid:
	jsr	movit

	movea.l #o0.asteroid,a0
	bra	dren0

headphones:
	jsr	movit

	movea.l #o0.headphones,a0
	bra	dren0

atariball:
	jsr	movit

	clr.l	d0
	move.b	time4,d0
	asl.l	#8,d0
	asl.l	#3,d0
	addi.l	#o.atariball,d0
	move.l	d0,a0

	bra	dren0

ying:	jsr	movit

	btst	#0,time4
	bne.s	ying1
	movea.l #o0.ying,a0
	bra	dren0
ying1:	movea.l #o1.ying,a0
	bra	dren0

ufo:	jsr	movit
	move.l	d1,d0
	sub.w	shipx,d0
	bpl.s	ufo1
	addi.w	#30,d0
	bpl.s	ufo20
	movea.l #ufo.r1,a0
	bra.s	ufo3
ufo1:	subi.w	#30,d0
	bra.s	ufo4
ufo20:	movea.l #ufo.d1,a0
	bra.s	ufo3
ufo4:	movea.l #ufo.l1,a0
ufo3:	btst	#0,time4
	bne	dren0
	adda.l	#2048,a0
	bra	dren0
	
twoship:jsr	movit

	movea.l #o0.twoship,a0
	bra	dren0

lander: clr.l	d1
	clr.l	d2
	lea	enx,a1
	lea	eny,a2
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	cmpi.w	#184,d2
	beq.s	lander0
	addi.w	#2,d2
	cmpi.w	#184,d2
	bne.s	lander5
	subi.b	#1,ostano
lander5:cmpi.w	#100,d2
	bcc.s	lander1
lander0:movea.l #o0.lander,a0
	bra	dren0
lander1:cmpi.w	#150,d2
	bcc.s	lander2
	movea.l #o1.lander,a0
	bra	dren0
lander2:movea.l #o2.lander,a0
	bra	dren0

fire.blaster:
	clr.l	d1
	clr.l	d2
	lea	enx,a1
	lea	eny,a2
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	addi.w	#2,d2
	cmpi.w	#184,d2
	bcs.s	fb00
	lea	exist,a1
	move.w	#5,0(a1,d7.w)
	bra	nexten
fb00:	movea.l #0,a0
	move.l	#624,d4
	move.l	#11,d5
	move.l	#25,d6
	jsr	mcplot
	bra	nexten

shuttle:jsr	movit

	btst	#left,dirflg
	beq.s	shu.1
	movea.l #sh.left,a0
	bra	dren0
shu.1:	btst	#right,dirflg
	beq.s	shu.2
	movea.l #sh.right,a0
	bra	dren0
shu.2:	movea.l #sh.down,a0
	bra	dren0

funny:	jsr	movit

	movea.l #o0.funny,a0
	bra	dren0

klingon:jsr	movit

	movea.l #o0.klingon,a0
	bra	dren0

enterprise:
	jsr	movit
	lea	killno,a5
	cmpi.w	#1,0(a5,d7.w)
	bne.s	ent1
	movea.l #o.uss.red,a0
	bra	dren0
ent1:	movea.l #o.uss.ent,a0
	bra	dren0

swastika:
	jsr	movit
	btst	#0,time4
	bne.s	sw1
	movea.l #o.sw,a0
	bra	dren0
sw1:	movea.l #o.sw45,a0
	bra	dren0

ufo2:	jsr	movit
	btst	#0,time4
	bne.s	u21
	movea.l #o0.ufo2,a0
	bra.s	u22
u21:	movea.l #o1.ufo2,a0
u22:	move.l	#160,d4
	move.l	#7,d5
	move.l	#9,d6
	jsr	mcplot
	bra	nexten

ship:	jsr	movit

	btst	#left,dirflg
	beq.s	shi.1
	movea.l #shi.left,a0
	bra	dren0
shi.1:	btst	#right,dirflg
	beq.s	shi.2
	movea.l #shi.right,a0
	bra	dren0
shi.2:	movea.l #shi.down,a0
	bra	dren0

eagtab: dc.l	o0.eagle
	dc.l	o1.eagle
	dc.l	o2.eagle
	dc.l	o1.eagle

eagle:	jsr	movit

	clr.l	d0
	move.b	time4,d0
	asl.w	#2,d0
	lea	eagtab,a0
	adda.l	d0,a0
	movea.l (a0),a0
dren1:	move.l	#384,d4
	move.l	#11,d5
	move.l	#15,d6
	jsr	mcplot
	bra	nexten

bomber: jsr	movit
	btst	#0,time4
	bne.s	bomb1
	movea.l #o0.bomber,a0
	bra	dren1
bomb1:	movea.l #o1.bomber,a0
	bra	dren1

tupoljev:
	jsr	movit
	lea	killno,a5
	cmpi.w	#1,0(a5,d7.w)
	bne.s	tup1
	cmpi.w	#4,time8
	bcc.s	tup1
	movea.l #o.cccp.red,a0
	bra.s	tup2
tup1:	movea.l #o.cccp.grey,a0
tup2:	move.l	#768,d4
	move.l	#11,d5
	move.l	#31,d6
	jsr	mcplot
	bra	nexten

movit:	lea	delay,a1
	tst.w	0(a1,d7.w)
	beq.s	movit3
	subi.w	#1,0(a1,d7.w)
	tst.l	(sp)+
	bra	nexten

movit3: clr.l	d1
	clr.l	d2
	clr.l	d0
	clr.b	dirflg
	lea	enx,a1
	lea	eny,a2
	lea	tables,a3
	lea	offset,a4
	lea	pathno,a0
	move.w	0(a0,d7.w),d0
	asl.l	#2,d0
	movea.l 0(a3,d0.w),a0
	lea	tables,a5
	adda.l	a5,a0
	move.w	0(a4,d7.w),d3
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	add.w	0(a0,d3.w),d1
	tst.w	0(a0,d3.w)
	beq.s	notx
	bpl.s	gr
	bset	#left,dirflg
	bra.s	notx
gr:	bset	#right,dirflg
notx:	add.w	2(a0,d3.w),d2
	tst.w	2(a0,d3.w)
	beq.s	noty
	bpl.s	gd
	bset	#up,dirflg
	bra.s	noty
gd:	bset	#down,dirflg
noty:	addi.w	#4,0(a4,d7.w)
	cmpi.w	#$ffff,4(a0,d3.w)
	bne.s	movit1
	move.w	#0,0(a4,d7.w)
movit1: rts

;!!!!!!!!!!!!!!!!!!!!!!!!!!!!ENEMY DRAWING ROUTINES

MCPLOT: LEA	ENX,A3
	LEA	ENY,A4
	MOVE.W	D1,0(A3,d7.w)
	MOVE.W	D2,0(A4,d7.w)
	LEA	CODOW,A3
	clr.l	d0
	move.w	0(A3,d7.w),d0
	beq	mclot31
	asl.w	#2,d0
	lea	exp.tab-4,a0
	LEA	EXIST,A1
	MOVE.W	0(a0,d0.w),0(A1,D7.w)
	move.w	2(a0,d0.w),0(a3,d7.w)
	asl.w	#6,d0
	movea.l #f.explosion-256,a0
	adda.l	d0,A0
	MOVEQ	#7,D5
	MOVEQ	#15,D6
	clr.l	d4
	LEA	TSW,A1
	LEA	TSL,A2
	LEA	TTW,A3
	LEA	TTL,A4
	MOVE.W	0(A1,d7.w),0(A3,d7.w)
	MOVE.W	0(A2,d7.w),0(A4,d7.w)
	JSR	mCLOT31
*	move.b	#4,fxtsno
*	move.b	#1,eflg
	CLR.L	D7
	MOVE.B	tempno,D7
	LEA	TSW,A1
	LEA	TSL,A2
	LEA	TTW,A3
	LEA	TTL,A4
	MOVE.W	0(A3,d7.w),0(A1,d7.w)
	MOVE.W	0(A4,d7.w),0(A2,d7.w)
	RTS

exp.tab:dc.w	7,2,7,3,7,4,7,5,7,6,7,7,7,8,6,0
	dc.w	6,0
	dc.w	7,11,7,12,7,13,6,0
	dc.w	7,15,7,16,7,17,6,0
	dc.w	7,19,7,20,7,21,6,0

MCLOT31:lea	enx,a3
	lea	eny,a4
	move.w	d1,0(a3,d7.w)
	move.w	d2,0(a4,d7.w)
	CLR.L	D0
	MOVE.L	D1,D0
	ANDI.L	#$F,D0
	LSR.W	#1,D0
	MULU	D4,D0
	ADDA.L	D0,A0
	lea	temploc,a3
	lea	plots,a4
	clr.l	d0
	move.l	d7,d0
	asl.l	#1,d0
	move.l	a0,0(a3,d0.w)
	LEA	TSX,A3
	LEA	TSY,A4
	MOVE.W	D1,0(A3,d7.w)
	MOVE.W	D2,0(A4,d7.w)
	LEA	TSM,A4
	MOVE.W	#1,0(A4,d7.w)
	LEA	TSW,A3
	MOVE.W	D5,0(A3,d7.w)
	LEA	TSL,A4
	MOVE.W	D6,0(A4,d7.w)
	JSR	MENDRAW
	RTS

;!!!!!!!!!!!!!!!!!! REDRAW	ALL MASKED ENEMIES

MCLRMSK CLR.L	D7
	CLR.L	D0
	MOVE.B	switch,D0
	MULU	#8000,D0
	MOVEA.L spmask,A5
	ADDA.L	D0,A5

METRO1: MOVE.B	D7,tempno
	CLR.L	D0
	MOVE.B	basno,D0
	asl.w	#1,D0
	CMP.B	D0,D7
	BEQ	ENDCLR
	LEA	EXIST,A1
	CMPI.W	#1,0(A1,D7.w)
	beq.s	hexa1
	tst.w	0(A1,D7.w)
	BEQ	NETCLR
	CMPI.W	#5,0(A1,D7.w)
	BNE.S	HEXANT
	clr.w	0(A1,D7.w)
	SUBI.B	#1,ostano
HEXANT: CMPI.W	#6,0(A1,D7.w)
	bNE.S	HEXA1
	MOVE.W	#5,0(A1,D7.w)
HEXA1	CMPI.B	#1,starflg
	BEQ	NETCLR1

	LEA	SPENCR1,A1
	CMPI.W	#1,0(A1,D7.w)
	BNE	NETCLR1
	LEA	TSM,A2
	MOVE.W	0(A2,D7.w),0(A1,D7.w)
	LEA	OX,A1
	LEA	OY,A2
	CLR.L	D2
	CLR.L	D1
	MOVE.W	0(A1,D7.w),D1
	MOVE.W	0(A2,D7.w),D2
	LEA	TSX,A3
	LEA	TSY,A4
	MOVE.W	0(A3,D7.w),0(A1,D7.w)
	MOVE.W	0(A4,D7.w),0(A2,D7.w)
	CLR.L	D5
	CLR.L	D6
	LEA	TSW,A1
	LEA	TSL,A2
	MOVE.W	0(A1,D7.w),D5
	MOVE.W	0(A2,D7.w),D6
	JSR	MERAEN
NETCLR	CLR.L	D7
	MOVE.B	tempno,D7
	lea	codow,a3
	tst.w	0(a3,d7.w)
	beq	netclr5
;
	lea	ttw,a3
	move.w #7,0(a3,d7.w)
	lea	ttl,a3
	move.w #15,0(a3,d7.w)
	lea	tsw,a3
	move.w #7,0(a3,d7.w)
	lea	tsl,a3
	move.w #15,0(a3,d7.w)
;
netclr5:ADDI.W	#2,D7
	BRA	METRO1
ENDCLR	clr.b	starflg
	RTS

NETCLR1 LEA	SPENCR1,A1
	LEA	TSM,A2
	MOVE.W	0(A2,D7.w),0(A1,D7.w)
	LEA	OX,A1
	LEA	OY,A2
	LEA	TSX,A3
	LEA	TSY,A4
	MOVE.W	0(A3,D7.w),0(A1,D7.w)
	MOVE.W	0(A4,D7.w),0(A2,D7.w)
	lea	temploc,a3
	lea	plots,a4
	clr.l	d0
	move.l	d7,d0
	asl.l	#1,d0
	move.l	0(a3,d0.w),0(a4,d0.w)
	BRA	NETCLR 

start_of_tab:
killno: ds.w	maxen
offset: ds.w	maxen
exflg:	ds.w	maxen
SPENCR1 DS.W	maxen
CODOW	DS.W	maxen
OX	DS.W	maxen
OY	DS.W	maxen
ENX	DS.W	maxen
ENY	DS.W	maxen
DELAY	DS.W	maxen
TSX	DS.W	maxen
TSY	DS.W	maxen
TSM	DS.W	maxen
TSW	DS.W	maxen
TTL	DS.W	maxen
TTW	DS.W	maxen
TSL	DS.W	maxen
temploc:ds.l	maxen
plots:	ds.l	maxen
end_of_tab:

pathno: ds.w	maxen
ENTYP	DS.W	maxen
EXIST	DS.W	maxen+1
CURMSK	DC.L	0
	DC.L	0
	DC.L	0
SPMASK	DC.L	0
BASNO	DC.L	0
TEMPNO	DC.L	0
STARFLG DC.L	0
adstor1:ds.l	8
adstor2:ds.l	8

ostano: dc.w	0
switch: dc.l	0

dirflg: ds.b	1

	end

