	opt	c-,l+
	section enbul,code

	xdef	enbul,clenbul,erbul

	xref	time4,oldx,enx,eny,edraw0,death
	xref	entyp,basno,exist,edraw1,shipy
	xref	tsm,spencr1,codow,kflg,oldx

maxen:	equ	40
bulspeed:equ	6

o1.double.bullet:	equ	106496
o2.double.bullet:	equ	107264
o1.single.bullet:	equ	108032
o2.single.bullet:	equ	108672
o.egg:			equ	118528
o.metak.bomber:		equ	139392
o.enemy.white:		equ	139776
b1.double.bullet:	equ	1
b2.double.bullet:	equ	2
b1.single.bullet:	equ	3
b2.single.bullet:	equ	4
b.egg:	 	 equ	5
b.metak.bomber:	 equ	6
b.enemy.white:		equ	7

x1.double:	equ	6	;	twoship
x2.double:	equ	7	;	lander
x3.double:	equ	9	;	funny enemy

clenbul:move.l	#2*maxen-1,d0
	lea	bulx,a0
ce0:	clr.w	(a0)+
	dbra	d0,ce0
	rts

enbul:	lea	bulx,a1
	lea	nb,a2
	move.l	#2*maxen-1,d0
eb0:	move.w	(a1)+,(a2)+
	dbra	d0,eb0

	clr.l	d7
	clr.l	d0
	clr.l	d1
	clr.l	d2
eb1:	lea	buly,a2
	tst.w	0(a2,d7.w)
	bne	move.bullet
	tst.b	time4		;	!!!
	bne	nxten		;	!!!

	LEA	EXIST,A1
	cmpi.w	#1,0(A1,D7.w)
	Bne	nxten

	LEA	TSM,A2
	tst.W	0(A2,D7.w)
	BEQ	nxten

	LEA	SPENCR1,A2
	tst.W	0(A2,D7.w)
	BEQ	nxten

	LEA	CODOW,A2
	tst.w	0(A2,d7.w)
	BNE	nxten

	CLR.L	D3
	LEA	ENTYP,A3
	MOVE.W	0(A3,d7.w),D3
	asl.w	#1,D3
	CLR.L	D5
	CLR.L	D6
	moveq	#bulspeed,d4
	lea	buldir,a4
	move.w	0(a4,d3.w),d3
	beq	nxten
	cmp.w	#1,d3
	bne.s	eb4
	clr.l	d1
	bra.s	eb2
eb4:	cmp.w	#2,d3
	beq.s	eb5
	moveq.l #bulspeed-2,d4
	cmp.w	#3,d3
	bne	nxten
eb5:	move.w	oldx,d1
	lea	enx,a5
	sub.w	0(a5,d7.w),d1
	beq.s	eb2
	bgt.s	eb3
	move.w	d4,d1
	neg.w	d1
	bra.s	eb2
eb3:	move.w	d4,d1
eb2:	lea	direc,a2
	cmp.w	#3,d3
	bne.s	eb6
	move.w	#$ffff,0(a2,d7.w)
	bra.s	eb7
eb6:	move.w	d1,0(a2,d7.w)
eb7:	lea	enx,a5
	add.w	0(a5,d7.w),d1
	lea	eny,a0
	move.w	0(a0,d7.w),d2
	add.w	d4,d2
	lea	bulx,a2
	move.w	d1,0(a2,d7.w)
	lea	buly,a2
	move.w	d2,0(a2,d7.w)
	bra.s	test.bullet
move.bullet:
	lea	direc,a2
	move.w	0(a2,d7.w),d0
	cmp.w	#$ffff,d0
	bne	mb1
	moveq	#bulspeed-2,d4
	move.w	oldx,d0
	lea	bulx,a2
	sub.w	0(a2,d7.w),d0
	beq.s	mb2
	bgt.s	mb3
	move.w	#-bulspeed+2,d0
	bra.s	mb2
mb3:	move.w	#bulspeed-2,d0
	bra.s	mb2

mb1:	lea	bulx,a2
	moveq	#bulspeed,d4
mb2:	add.w	d0,0(a2,d7.w)
	lea	buly,a2
	add.w	d4,0(a2,d7.w)
test.bullet:
	lea	bulx,a2
	tst.w	0(a2,d7.w)
	bmi.s	clr.bul
	cmpi.w	#320,0(a2,d7.w)
	bge.s	clr.bul
	lea	buly,a2
	cmpi.w	#190,0(a2,d7.w)
	blt.s	nxten
clr.bul:lea	bulx,a2
	clr.w	0(a2,d7.w)
	lea	buly,a2
	clr.w	0(a2,d7.w)
	lea	direc,a2
	clr.w	0(a2,d7.w)

nxten:	addi.w	#2,d7
	clr.l	d6
	move.b	basno,d6
	asl.w	#1,d6
	cmp.w	d6,d7
	bne	eb1

	clr.w	count
db0:	lea	bulx,a1
	LEA	buly,a2
	move.w	count,d7
	clr.l	d1
	clr.l	d2
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	beq.s	db1

	clr.l	d0
	lea	entyp,a1
	move.w	0(a1,d7.w),d0
	lea	bultyp,a1
	asl.w	#1,d0
	move.w	0(a1,d0.w),d0
	asl.w	#3,d0
	lea	bultab-8,a1
	movea.l 0(a1,d0.w),a0
	moveq.l #7,d5
	clr.l	d6
	move.w	4(a1,d0.w),d6
	move.l	d1,d4
	andi.l	#$f,d4
	lsr.w	#1,d4
	mulu	6(a1,d0.w),d4
	adda.l	d4,a0

	jsr	edraw0

db1:	addi.w	#2,count
	clr.l	d6
	move.b	basno,d6
	asl.w	#1,d6
	cmp.w	count,d6
	bne	db0

cb5:	clr.w	count
cb0:	lea	nbx,a1
	lea	nby,a2
	move.w	count,d7
	clr.l	d1
	clr.l	d2
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	beq	cb1

	clr.l	d0
	lea	entyp,a1
	move.w	0(a1,d7.w),d0
	lea	bultyp,a1
	asl.w	#1,d0
	move.w	0(a1,d0.w),d0
	asl.w	#3,d0
	lea	bultab-8,a1
	movea.l 0(a1,d0.w),a0
	moveq.l #7,d5
	clr.l	d6
	move.w	4(a1,d0.w),d6
	move.l	d1,d4
	andi.l	#$f,d4
	lsr.w	#1,d4
	mulu	6(a1,d0.w),d4
	adda.l	d4,a0

	jsr	edraw1

	lea	bulx,a1
	LEA	buly,a2
	lea	entyp,a3
	move.w	count,d7

	move.w	0(a2,d7.w),d1
	cmp.w	shipy,d1
	blt	cb1
	subi.w	#18,d1
	cmp.w	shipy,d1
	bge	cb1
	move.w	0(a1,d7.w),d1
	move.w	0(a3,d7.w),d0
	cmpi.w	#x1.double,d0
	beq.s	xxx
	cmpi.w	#x2.double,d0
	beq.s	xxx
	cmpi.w	#x3.double,d0
	bne.s	xxxx
xxx:	sub.w	oldx,d1
	bcc.s	xxx1
	addi.w	#8,d1
	bpl.s	krepaj
xxx1:	cmpi.w	#19,d1
	bcs.s	krepaj
	bra	cb1

xxxx:	cmp.w	oldx,d1
	blt.s	cb1
	subi.w	#19,d1
	cmp.w	oldx,d1
	bge.s	cb1

krepaj: lea	bulx,a1
	lea	buly,a2
	clr.l	d1
	clr.l	d2
	move.w	0(a1,d7.w),d1
	move.w	0(a2,d7.w),d2
	clr.l	d0
	lea	entyp,a1
	move.w	0(a1,d7.w),d0
	lea	bultyp,a1
	asl.w	#1,d0
	move.w	0(a1,d0.w),d0
	asl.w	#3,d0
	lea	bultab-8,a1
	movea.l 0(a1,d0.w),a0
	moveq.l #7,d5
	clr.l	d6
	move.w	4(a1,d0.w),d6
	move.l	d1,d4
	andi.l	#$f,d4
	lsr.w	#1,d4
	mulu	6(a1,d0.w),d4
	adda.l	d4,a0

	jsr	edraw0

	bra	death

cb1:	addi.w	#2,count
	clr.l	d6
	move.b	basno,d6
	asl.w	#1,d6
	cmp.w	count,d6
	bne	cb0

r0:	rts

erbul:	tst.b	basno
	beq.s	r0
	lea	bulx,a1
	lea	nb,a2
	move.l	#2*maxen-1,d0
er00:	move.w	(a1),(a2)+
	clr.w	(a1)+
	dbra	d0,er00
	bra	cb5

bultab: dc.l	o1.double.bullet
	dc.w	5,96
	dc.l	o2.double.bullet
	dc.w	5,96
	dc.l	o1.single.bullet
	dc.w	4,80
	dc.l	o2.single.bullet
	dc.w	4,80
	dc.l	o.egg
	dc.w	6,112
	dc.l	o.metak.bomber
	dc.w	2,48
	dc.l	o.enemy.white
	dc.w	1,32

bulx:	ds.w	maxen
buly:	ds.w	maxen
direc:	ds.w	maxen
nb:
nbx:	ds.w	maxen
nby:	ds.w	maxen

bultyp: dc.w	0	 		;	0 = cylon
	dc.w	0	 		;	1 = asteroid
	dc.w	b1.single.bullet	;	2 = headphones
	dc.w	b2.single.bullet	;	3 = atari ball
	dc.w	b.enemy.white		;	4 = ying
	dc.w	b1.single.bullet	;	5 = ufo # 1
	dc.w	b1.double.bullet	;	6 = twoship
	dc.w	b1.double.bullet	;	7 = lander
	dc.w	b2.single.bullet	;	8 = shuttle
	dc.w	b2.double.bullet	;	9 = funny enemy
	dc.w	b2.single.bullet	;	10 = klingon
	dc.w	b1.single.bullet	;	11 = eneterprise
	dc.w	b.enemy.white		;	12 = swastika
	dc.w	b2.single.bullet	;	13 = ufo # 2
	dc.w	b1.single.bullet	;	14 = ship
	dc.w	0
	dc.w	b.egg	 		;	16 = eagle
	dc.w	b.metak.bomber		;	17 = bomber
	dc.w	b.metak.bomber		;	18 = tupoljev

buldir: dc.w	0	 		;	0 = cylon
	dc.w	0	 		;	1 = asteroid
	dc.w	1	 		;	2 = headphones
	dc.w	3	 		;	3 = atari ball
	dc.w	3	 		;	4 = ying
	dc.w	2	 		;	5 = ufo # 1
	dc.w	1	 		;	6 = twoship
	dc.w	2	 		;	7 = lander
	dc.w	1	 		;	8 = shuttle
	dc.w	1	 		;	9 = funny enemy
	dc.w	2	 		;	10 = klingon
	dc.w	3	 		;	11 = eneterprise
	dc.w	3	 		;	12 = swastika
	dc.w	2	 		;	13 = ufo # 2
	dc.w	1	 		;	14 = ship
	dc.w	0
	dc.w	1	 		;	16 = eagle
	dc.w	1	 		;	17 = bomber
	dc.w	1	 		;	18 = tupoljev

count:	ds.l	1
tab:	ds.l	1
sub:	ds.l	1

	end

