	include	intuition/intuition.i
	include intuition/intuition_lib.i

	IFND	EXEC_EXEC_I
	include	"exec/exec.i"
	ENDC
	IFND	LIBRARIES_DOSEXTENS_I
	include	"libraries/dosextens.i
	ENDC
	movem.l	d0/a0,-(sp)		save initial values
	clr.l	returnMsg
	sub.l	a1,a1
	CALLEXEC FindTask		find us
	move.l	d0,a4
	tst.l	pr_CLI(a4)
	beq.s	fromWorkbench
	movem.l	(sp)+,d0/a0		restore regs
	bra	end_startup		and run the user prog
fromWorkbench
	lea	pr_MsgPort(a4),a0
	CALLEXEC WaitPort		wait for a message
	lea	pr_MsgPort(a4),a0
	CALLEXEC GetMsg			then get it
	move.l	d0,returnMsg		save it for later reply
	nop
	movem.l	(sp)+,d0/a0		restore
end_startup
	bsr.s	_main			call our program
	move.l	d0,-(sp)		save it
	tst.l	returnMsg
	beq.s	exitToDOS		if I was a CLI
	CALLEXEC Forbid
	move.l	returnMsg(pc),a1
	CALLEXEC ReplyMsg
exitToDOS
	move.l	(sp)+,d0		exit code
	rts
returnMsg	dc.l	0
	even
_main	

	move.l	#162000,d0
	move.l	#$00010003,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq	NOMEM
	move.l	d0,_BckGrnd1
	
	move.l	#162000,d0
	move.l	#$00010003,d1
	CALLEXEC AllocMem
	tst.l	d0
	beq	NOMEM
	move.l	d0,_BckGrnd2

	lea	backname,a1
	moveq	#0,d0
	CALLEXEC OpenLibrary
	tst.l	d0
	beq	QUIT
	move.l	d0,_BackBase		OpenLibrary(backstab.library)
	move.l	_BackBase,a6		+ 	
	moveq	#1,d0			|
	jsr	-30(a6)			| Turns off the OS
	tst.l	d0			|
	bne	QUIT			+
		
	lea	ColBlck,a1
	jsr	NEWPAL

	jsr	mt_init		
	lea	mt_music,a1
	move.l	a1,$6c
	move.w	#$C020,$DFF09A

SETUP	move.w	#32,$DFF1DC		Force 50hz
	move.l	#$52000000,$DFF100	Display Setup
	move.l	#$00520052,$DFF108	
	move.l	#$002000D0,$DFF092
	move.l	#$34811CC1,$DFF08E
	
MOVECOP	lea	CList1,a1
	move.l	a1,$DFF080
	move.w	#$FFFF,$DFF088		COPJMP1
	move.w	#$83C0,$DFF096

RESTART	jsr	CLRBACK
	lea	CList1,a0
	move.w	#0,2(a0)
	move.w	#0,KillAud
	move.l	_BckGrnd1,a1
	add.l	#1798,a1
	lea	Title,a0
	move.l	#30000,d5
	move.w	#199,d0
	moveq	#40,d6
	move.w	#128,d7
	jsr	SEEIFF
	move.l	_BckGrnd2,a1
	add.l	#1798,a1
	lea	Title2,a0
	move.l	#30000,d5
	move.w	#199,d0
	moveq	#40,d6
	move.w	#128,d7
	jsr	SEEIFF

wlp0	btst.b	#7,$BFE001
	beq	wlp0
	move.w	#120,Count
		
wlp	lea	ColTit,a1
	jsr	NEWPAL
	lea	CList1,a2	
	move.l	_BckGrnd1,d0
	jsr	PUTBMAP
wlp1	move.w	#1,d0
	jsr	WAIT
	jsr	READKEY
	cmp.b	#$45,Key
	beq	QUIT
	cmp.b	#$40,Key
	beq	START
	btst.b	#7,$BFE001
	beq	START
	cmp.b	#0,Key
	beq	wlp3
	jsr	HELP
wlp3	jmp     wlp1

		
START	jsr	DARK
	jsr	MVSONG
		
	move.w	#1,KillAud
	move.l	_BckGrnd1,d0
	move.l	_BckGrnd2,d1
	move.l	d0,_BitMapY
	move.l	d1,_BitMapN
	lea	Lev1Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
	move.w	#3600,PervD
	move.w	#0,PervY
	move.w	#0,BervY
	move.w	#1,PervSp
	move.w	#1,BervSp
	move.w	#1,Level
REDO	move.w	#30,BabeX
	move.w	#160,BabeY
	move.w	#0,BabeD
	move.w	#1,Cock
	move.w	#0,Distance
	move.w	#0,ObjOff
	move.w	#15,BMapOff
PREMAIN	move.w	#0,PervY
	move.w	#0,BervY
	add.w	#50,PervE
	add.w	#50,BervE
			
***************************************************************************
MAIN	cmp.b	#$45,Key
	beq	QUIT
	cmp.w	#195,BabeY
	bgt	DEAD
	cmp.w	#212,Distance
	bge	S1ANIM
	jsr	SHOOT
	jsr	DOMAIN
	cmp.b	#255,Help
	beq	mn6
	cmp.w	#18,PervA
	bge	mn5
	move.w	PervX,d0
	move.w	PervY,d1
	sub.w	BabeX,d0
	bpl	mn1
	neg.w	d0
mn1	sub.w	BabeY,d1
	bpl	mn2
	neg.w	d1
mn2	add.w	d0,d1
	cmp.w	#12,d1
	ble	TOUCH
mn5	cmp.w	#18,BervA
	bge	mn6
	move.w	BervX,d0
	move.w	BervY,d1
	sub.w	BabeX,d0
	bpl	mn3
	neg.w	d0
mn3	sub.w	BabeY,d1
	bpl	mn4
	neg.w	d1
mn4	add.w	d0,d1
	cmp.w	#12,d1
	ble	TOUCH
mn6	jmp	MAIN
	
***************************************************************************
TOUCH	move.w	#45,Count
	move.w	#3600,BabeD
	move.w	#36,BabeA
	move.w	#15,BabeS
t1	jsr	DOMAIN
	sub.w	#1,BabeS
	bpl	t2
	move.w	#6,BabeS
	add.w	#1800,BabeD	
t2	sub.w	#1,Count
	bpl	t1

	jsr	DRAWOVR
tp1	jsr	READKEY
	cmp.b	#$40,Key
	beq	tp2
	cmp.b	#$45,Key
	beq	QUIT
	jsr	DOMAIN
	btst.b	#7,$BFE001
	bne	tp1
tp2	move.b	#0,Key
	jsr	DARK
	jsr	MVSONG
	jmp	RESTART 
	
***************************************************************************
THEND	move.w	#$4020,$DFF09A
	jsr	mt_end
	lea	CList1,a0
	move.w	#0,2(a0)
	move.w	#0,KillAud
	jsr	DARK
	jsr	CLRBACK
	jsr	LIGHT
	move.w	#0,BabeYA
	move.w	#0,BabeY
end1	jsr	DRWBABE
	jsr	MVBACK
	jsr	CLEANUP
	cmp.w	#195,BabeY
	blt	end1
	jsr	MVBACK
	jsr	CLEANUP
	jsr	DARK
	jsr	CLRBACK
	move.w	#-2,Distance
	move.w	#0,BabeY
	lea	TheEnd,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
end2	jsr	DRWBABE
	jsr	MVBACK
	jsr	CLEANUP
	tst.w	BabeYA
	bne	end2
	move.w	#172,BabeY
	jsr	DRWBABE
	jsr	MVBACK
	
	jsr	MVSONG
	move.l	_BitMapN,a0
	jsr	DRAWEND
	move.l	_BitMapY,a0
	jsr	DRAWEND
dlp1	jsr	READKEY
	cmp.b	#$40,Key
	beq	dlp2
	cmp.b	#$45,Key
	beq	QUIT
	move.w	#1,d0
	jsr	WAIT
	btst.b	#7,$BFE001
	bne	dlp1
dlp2	move.b	#0,Key
	jsr	DARK
	jmp	RESTART
	
***************************************************************************	
HELP	move.b	Help,d0
	cmp.b	Key,d0
	bne	h5
	move.b	#0,Key
	cmp.b	#$25,Help
	bne	hp1
	move.b	#$12,Help
	rts
hp1	cmp.b	#$12,Help
	bne	hp2
	move.b	#$28,Help
	rts	
hp2	cmp.b	#$28,Help
	bne	hp3
	move.b	#$19,Help
hp4	rts	
hp3	cmp.b	#$19,Help
	bne	hp4
	move.b	#255,Help
	move.w	#$FFFF,$DFF180
	move.w	#2,d0
	jsr	WAIT
	move.w	#$0000,$DFF180
	rts	
h5	move.b	#$25,Help
	move.b	#0,Key
	rts
***************************************************************************
DEAD	cmp.w	#9,Level
	bne	de0
	cmp.w	#200,Distance
	bge	THEND
de0	cmp.b	#255,Help
	bne	de1
	jsr	CLRBACK
	jsr	MAKEMAP
	jmp	REDO
de1	jsr	DRAWOVR
	
dp1	move.l	#215,BabeX
	jsr	READKEY
	cmp.b	#$40,Key
	beq	dp2
	cmp.b	#$45,Key
	beq	QUIT
	jsr	DOMAIN
	btst.b	#7,$BFE001
	bne	dp1
dp2	move.b	#0,Key
	jsr	DARK
	jsr	MVSONG
	jmp	RESTART

****************************************************************************
READKEY	move.b	$BFEC01,d0
	not.b	d0
	lsr.b	#1,d0
	bcs.s	keyup
	move.b	d0,Key
	cmp.b	#$4E,d0
	bne	rk1
	move.b	#1,Right
rk1	cmp.b	#$4F,d0
	bne	rk2
	move.b	#1,Left
rk2	cmp.b	#$4D,d0
	bne	rk3
	move.b	#1,Down
rk3	cmp.b	#$4C,d0
	bne	rk4
	move.b	#1,Up
rk4	bra	hndshk
keyup	cmp.b	#$4E,d0
	bne	rk5
	move.b	#0,Right
rk5	cmp.b	#$4F,d0
	bne	rk6
	move.b	#0,Left
rk6	cmp.b	#$4D,d0
	bne	rk7
	move.b	#0,Down
rk7	cmp.b	#$4C,d0
	bne	rk8
	move.b	#0,Up
rk8
hndshk	bset	#6,$BFEE01
	clr.b	$BFEC01
	move.w	#4,d0
l1	move.b	$DFF006,d1
l2	cmp.b	$DFF006,d1
	beq	l2
	dbra	d0,l2
	bclr	#6,$BFEE01
	rts
	
****************************************************************************
	
DRAWOVR	move.l	_BitMapN,a0
	jsr	over
	jsr	DOMAIN	
	move.l	_BitMapN,a0
	jmp	over
over	add.w	#11538,a0
	add.w	Distance,a0
	lea	BabeMap,a1
	add.w	#14400,a1
	move.l	a1,a2	
	add.l	#80000,a2
	moveq	#4,d4
dd1	jsr	BLTWAIT
	move.l	#$FFFF0000,$DFF044	BLTAFWM
	move.w	#0,$DFF042		BLTCON1
	move.w	#$0FCA,$DFF040		BLTCON0
	move.l	#$006D0014,$DFF060	BLTxMOD
	move.l	#$0014006D,$DFF064	BLTxMOD
	move.l	a2,$DFF050		BLTAPT
	move.l	a1,$DFF04C		BLTBPT
	move.l	a0,$DFF048		BLTCPT
	move.l	a0,$DFF054		BLTDPT
	move.w	#$080A,$DFF058		BLTSIZE	
	add.l	#30000,a0
	add.l	#16000,a1
	dbf	d4,dd1
	rts
****************************************************************************
	
DRAWEND	add.w	#11538,a0
	add.w	Distance,a0
	lea	BabeMap,a1
	add.w	#14420,a1
	move.l	a1,a2	
	add.l	#80000,a2
	moveq	#4,d4
den1	jsr	BLTWAIT
	move.l	#$FFFF0000,$DFF044	BLTAFWM
	move.w	#0,$DFF042		BLTCON1
	move.w	#$0FCA,$DFF040		BLTCON0
	move.l	#$006D0014,$DFF060	BLTxMOD
	move.l	#$0014006D,$DFF064	BLTxMOD
	move.l	a2,$DFF050		BLTAPT
	move.l	a1,$DFF04C		BLTBPT
	move.l	a0,$DFF048		BLTCPT
	move.l	a0,$DFF054		BLTDPT
	move.w	#$080A,$DFF058		BLTSIZE	
	add.l	#30000,a0
	add.l	#16000,a1
	dbf	d4,den1
	rts
		
***************************************************************************
S1ANIM	add.w	#1,Level
	cmp.w	#2,Level
	bne	S2ANIM
s1	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	s1
	jsr	DARK
	jsr	CLRBACK
	move.w	#7200,PervD
	move.w	#0,Distance
	move.w	#30,BabeX
	move.w	#160,BabeY
	lea	Lev2Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
	jmp	PREMAIN
***************************************************************************	
S2ANIM	cmp.w	#3,Level
	bne	S3ANIM
s2	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#240,BabeX
	ble	s2
	lea	BeamSd,a1
	move.l	a1,$DFF0C0
	move.w	#22000,$DFF0C4	Length
	move.w	#64,$DFF0C8
	move.w	#350,$DFF0C6	Period
	move.w	#$8104,$DFF096
	move.w	#185,AudDel2

	move.w	#50,Count
sa1	jsr	DOMAIN
	sub.w	#1,Count
	bpl	sa1
	move.w	#50,Count
sa2	jsr	MVPERV
	jsr	DRWBERV
	jsr	DRWPERV
	jsr	MVBACK
	jsr	CLEANUP	
	sub.w	#1,Count
	bpl	sa2

	jsr	DARK
	jsr	CLRBACK
	lea	Lev3Map,a0
	move.l	a0,CurMap
	move.w	#9000,PervD
	move.w	#0,BervSp
	move.w	#2,PervSp
	move.w	#0,Distance
	move.w	#32,BabeX
	move.w	#80,BabeY
	jsr	MAKEMAP
	lea	ColLev1,a1
	jsr	NEWPAL
	jmp	PREMAIN

***************************************************************************
S3ANIM	cmp.w	#4,Level
	bne	S4ANIM
s3	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#240,BabeX
	ble	s3
	lea	BeamSd,a1
	move.l	a1,$DFF0C0
	move.w	#22000,$DFF0C4	Length
	move.w	#64,$DFF0C8
	move.w	#350,$DFF0C6	Period
	move.w	#$8104,$DFF096
	move.w	#185,AudDel2

	move.w	#50,Count
sa3	jsr	DOMAIN
	sub.w	#1,Count
	bpl	sa3
	move.w	#50,Count
sa4	jsr	MVPERV
	jsr	DRWBERV
	jsr	DRWPERV
	jsr	MVBACK
	jsr	CLEANUP	
	sub.w	#1,Count
	bpl	sa4

	jsr	DARK
	jsr	CLRBACK
	lea	Lev4Map,a0
	move.l	a0,CurMap
	move.w	#10800,PervD		
	move.w	#0,BervSp
	move.w	#2,PervSp
	move.w	#0,Distance
	move.w	#32,BabeX
	move.w	#80,BabeY
	jsr	MAKEMAP
	jsr	LIGHT
	jmp	PREMAIN
***************************************************************************
S4ANIM	cmp.w	#5,Level
	bne	S5ANIM
s4	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	s4
	jsr	DARK
	jsr	CLRBACK
	move.w	#2,BervSp
	move.w	#2,PervSp
	move.w	#3600,PervD
	move.w	#0,Distance
	move.w	#30,BabeX
	move.w	#160,BabeY
	lea	Lev5Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
	jmp	PREMAIN

***************************************************************************
S5ANIM	cmp.w	#6,Level
	bne	S6ANIM
s5	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	s5
	jsr	DARK
	jsr	CLRBACK
	move.w	#12600,PervD
	move.w	#0,BervSp
	move.w	#1,PervSp
	move.w	#0,Distance
	move.w	#30,BabeX
	move.w	#160,BabeY
	lea	Lev6Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
	jmp	PREMAIN
***************************************************************************
S6ANIM	cmp.w	#7,Level
	bne	S7ANIM
s6	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	s6
	jsr	DARK
	jsr	CLRBACK
	move.w	#10800,PervD
	move.w	#0,BervSp
	move.w	#2,PervSp
	move.w	#0,Distance
	move.w	#30,BabeX
	move.w	#160,BabeY
	lea	Lev7Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	lea	ColLev1,a1
	jsr	NEWPAL
	jmp	PREMAIN
***************************************************************************
S7ANIM	cmp.w	#8,Level
	bne	S8ANIM
s7	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	s7
	jsr	DARK
	jsr	CLRBACK
	move.w	#0,BervSp
	move.w	#0,PervSp
	move.w	#0,Distance
	move.w	#85,BabeX
	move.w	#172,BabeY
	lea	Lev8Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	lea	ColLev1,a1
	jsr	NEWPAL
	jmp	PREMAIN
***************************************************************************
S8ANIM	jsr	gj15
	jsr	DOMAIN
	add.w	#1,BabeX
	cmp.w	#320,BabeX
	ble	S8ANIM
	jsr	DARK
	jsr	CLRBACK
	move.w	#12600,PervD
	move.w	#2,BervSp
	move.w	#1,PervSp
	move.w	#0,Distance
	move.w	#40,BabeX
	move.w	#172,BabeY
	lea	Lev9Map,a0
	move.l	a0,CurMap
	jsr	MAKEMAP
	jsr	LIGHT
	jmp	PREMAIN

***************************************************************************
MVPERV	tst.w	PervY
	bne	mvp1
	tst.w	PervSp
	beq	mvp4
	sub.w	#1,PervE
	bpl	mvp4
	move.w	#125,PervE
	move.w	#340,PervX
	move.w	#170,PervY
	cmp.w	#4,Level
	bne	not1	
	move.w	#80,PervY
not1	move.w	#0,PervA
mvp1	cmp.w	#18,PervA
	bge	mvp2
	
	move.w	PervJ,d0
	beq	mvp11
	sub.w	d0,PervY
	sub.w	#1,PervJ

mvp11	move.w	PervSp,d0
	sub.w	d0,PervX
	cmp.w	#16,PervX
	bgt	mvp2
	move.l	#0,PervX
mvp2	sub.w	#1,PervS
	bpl	mvp4
	move.w	#6,PervS
	add.w	#6,PervA
	cmp.w	#12,PervA
	ble	mvp4
	cmp.w	#18,PervA
	ble	mvp3
	cmp.w	#30,PervA
	ble	mvp4
	move.w	#0,PervY	Reset to 0 PervY
mvp3	move.w	#0,PervA	

mvp4	tst.w	BervY
	bne	mvb1
	tst.w	BervSp
	beq	mvb4
	cmp.w	#0,BervY
	bne	mvb1
	sub.w	#1,BervE
	bpl	mvb4
	move.w	#255,BervE
	move.w	#18,BervX
	move.w	#170,BervY
	move.w	#0,BervA
mvb1	cmp.w	#18,BervA
	bge	mvb2
	move.w	BervSp,d0
	add.w	d0,BervX
	cmp.w	#320,BervX
	blt	mvb2
	move.w	#0,BervY
mvb2	sub.w	#1,BervS
	bpl	mvb4
	move.w	#6,BervS
	add.w	#6,BervA
	cmp.w	#12,BervA
	ble	mvb4
	cmp.w	#18,BervA
	ble	mvb3
	cmp.w	#30,BervA
	ble	mvb4
	move.l	#0,BervX	Reset to 0 PervY
mvb3	move.w	#0,BervA	
mvb4	rts
		
**************************************************************************
DRWSHOT	lea	ShotX,a6
	move.l	_BitMapN,a3
	add.l	#160000,a3
db0	move.l	#0,(a3)
	move.l	_BitMapN,a0
	move.w	2(a6),d1
	move.l	-2(a6),d0
	beq	bc6			
	move.w	4(a6),d2			
	add.w	ObjOff,d0
	ror.l	#3,d0
	lsl.w	#7,d1
	add.w	d1,a0
	add.w	d0,a0
	add.w	Distance,a0
	ror.l	#1,d0
	swap	d0

	move.l	a0,(a3)
	lea	4(a3),a5
	lea	BabeMap,a1
	add.w	d2,a1 
	move.l	a1,a2	
	add.l	#80000,a2
	move.w	#$0FCA,d1
	or.w	d0,d1
	jsr	BLTDEAD
	
db2	move.w	6(a6),d1
	add.w	d1,(a6)		
	move.w	(a6),d1
	cmp.w	#330,d1
	bgt	db5
	cmp.w	#0,d1
	bgt	ENMCOL
db5	move.l	#0,(a6)		*** This was MOVESHT ***

***************************************************************************
ENMCOL	move.w	ShotX,d0
	move.w	PervX,d1
	move.w	ShotY,d2
	move.w	PervY,d3
	sub.w	d0,d1
	bpl	ec2
	neg.w	d1
ec2	sub.w	d2,d3
	bpl	ec4
	neg.w	d3
ec4	add.w	d1,d3
	cmp.w	#30,d3
	bgt	ec6
	move.w	#18,PervA
	move.w	#0,ShotX
	move.w	#0,PervJ
	rts
ec6	move.w	ShotX,d0
	move.w	BervX,d1
	move.w	ShotY,d2
	move.w	BervY,d3
	sub.w	d0,d1
	bpl	bc2
	neg.w	d1
bc2	sub.w	d2,d3
	bpl	bc4
	neg.w	d3
bc4	add.w	d1,d3
	cmp.w	#30,d3
	bgt	bc6
	move.w	#18,BervA
	move.w	#0,ShotX
bc6	rts	
	
***************************************************************************
SHOOT	lea	ShotX,a0
	cmp.w	#1800,BabeA
	blt	sht1
	sub.w	#1,BabeS
	bpl	gj20
	add.w	#8,BabeS
	add.w	#6,BabeA
	cmp.w	#1812,BabeA
	ble	gj20	
	move.w	#0,BabeA
	bra	gj20

sht1	btst.b	#7,$BFE001
	beq	ButDwn
	cmp.b	#1,Down
	beq	ButDwn
	move.b	#1,Reload
	bra	GETJOY
ButDwn	tst.b	Reload
	beq	GETJOY
	move.w	#0,Reload
	cmp.w	#0,Cock
	beq	fire
shtok	cmp.w	#0,(a0)
	bne	GETJOY
intsht	lea	CockSd,a1
	move.l	a1,$DFF0D0
	move.w	#6540,$DFF0D4	Length
	move.w	#64,$DFF0D8
	move.w	#125,$DFF0D6	Period
	move.w	#$8108,$DFF096
	move.w	#22,AudDel3
	move.w	#1800,BabeA
	move.w	#0,Cock
bye	rts
	
fire	move.w	#1,Cock
	lea	BoomSd,a1
	move.l	a1,$DFF0C0
	move.w	#6650,$DFF0C4	Length
	move.w	#64,$DFF0C8
	move.w	#125,$DFF0C6	Period
	move.w	#$8104,$DFF096
	move.w	#23,AudDel2
	move.w	BabeX,d0
	move.w	d0,(a0)
	move.w	BabeY,d0
	move.w	d0,2(a0)
	move.w	BabeD,d0
	beq	srght
	add.w	#-32,(a0)
	move.w	#-8,6(a0)
	move.w	#1836,4(a0)	
	bra	GETJOY
srght	add.w	#48,(a0)
	move.w	#8,6(a0)
	move.w	#36,4(a0)
	
GETJOY	jsr	READKEY
	move.w	$DFF00C,d2
	moveq	#0,d0
	moveq	#1,d1
gj1	btst.l	#9,d2
	bne	gj4
	cmp.b	#1,Left
	bne	gj2	
gj4	move.w	#18,BabeD
	moveq	#-2,d0
	bra	gj3
gj2	btst.l	#1,d2
	bne	gj0
	cmp.b	#1,Right
	bne	gj3
gj0	move.w	#0,BabeD
	move.w	#2,d0

gj3	cmp.b	#1,Up
	beq	gj6
	move.w	d2,d3
	and.w	#$0100,d3
	move.w	d2,d4
	and.w	#$0200,d4
	lsr.w	#1,d4
	eor.w	d4,d3
	beq	gj7

gj6	cmp.w	#0,BabeJ
	bne	gj7
	cmp.w	#0,BabeYA
	bne	gj7
	move.w	#9,BabeJ
	
gj7	add.w	d0,BabeX
	cmp.w	#10,BabeX
	bge	gj8
	move.w	#10,BabeX
	bra	gj15	
gj8	cmp.w	#180,BabeX
	ble	gj15
	move.w	#180,BabeX
	
	cmp.w	#18,BervA
	blt	nmb
	sub.w	#1,BervX	
nmb	sub.w	#1,BervX
	sub.w	#2,PervX
	bpl	gj9
	move.w	#0,PervY
gj9	add.w	d0,ObjOff
	sub.w	d0,BMapOff
	bpl	gj15
	sub.w	#16,ObjOff	
	add.w	#16,BMapOff
	add.w	#2,Distance

gj15	sub.w	#1,BabeS
	bpl	gj20
	move.w	#6,BabeS
gj16	cmp.w	#0,d0
	beq	gj18
	add.w	#6,BabeA
	cmp.w	#12,BabeA
	ble	gj20
	move.w	#0,BabeA
gj20	cmp.w	#0,BabeJ
 	bne	gj17
gj19	rts
gj18	move.w	#0,BabeA
	move.w	#0,BabeS
	cmp.w	#0,BabeJ
 	beq	gj19
gj17 	move.w	BabeJ,d1
 	sub.w	d1,BabeY
	bpl	jok
	move.w	#0,BabeY	
jok 	sub.w	#1,BabeJ
	rts	

****************************************************************************
MVBACK	btst.b	#0,$DFF005
	beq	MVBACK
mb0	cmp.b	#$30,$DFF006	Wait for VBlank
	bne	mb0			
	move.l	_BitMapY,d1	Switch bit map pointers
	move.l	_BitMapN,d0
	move.l	d1,_BitMapN
	move.l	d0,_BitMapY	

pb2	lea	CList1,a1
	move.w	BMapOff,d2
	move.w	d2,2(a1)
	lsl.w	#4,d2
	or.w	d2,2(a1)
	lea	CList1,a2	
	move.l	_BitMapY,d0
	add.w	Distance,d0
	jsr	PUTBMAP
	move.l	_BckGrnd1,a1
	jsr	ADDMAP
	move.l	_BckGrnd2,a1
	
ADDMAP	move.w	#1,d1
ap1	move.l	a1,a3
	move.l	CurMap,a0
	lea	BackMap,a4
	move.w	BMapOff,d7
	sub.w	d1,d7	
	cmp.w	#13,d7
	bge	ap5
	cmp.w	#0,d7
	blt	ap5
	move.w	Distance,d6
	move.w	BMapOff,d7
	sub.w	d1,d7
				
ap3	lea	64(a3,d6),a3	PutMap Computation
	move.w	d7,d0		PutMap Computation
	mulu	#2304,d0	PutMap Computation
	lea	64(a3,d0),a3	PutMap Computation

	lsr.w	#1,d6		LevMap Computation
	add.w	d6,a0		LevMap Computation
	lsl.w	#7,d7		LevMap Computation
	lea	64(a0,d7),a0	LevMap Computation
	
	moveq	#0,d0		GetMap Computation
	move.b	(a0)+,d0	GetMap Computation
	divu	#20,d0		GetMap Computation
	swap	d0		GetMap Computation
	lsl.w	#1,d0		GetMap Computation
	add.w	d0,a4		GetMap Computation
	swap	d0		GetMap Computation
	mulu	#720,d0		GetMap Computation
	add.w	d0,a4		GetMap Computation

	moveq	#4,d5	
	jsr	BLTWAIT
	move.l	#$FFFFFFFF,$DFF044	BLTAFWM
	move.l	#$0026007E,$DFF064	BLTA&DMOD
	move.l	#$09F00000,$DFF040	BLTCON0&1 
ap4	move.l	a4,$DFF050		BLTAPT
	move.l	a3,$DFF054		BLTDPT
	move.w	#$0481,$DFF058		BLTSIZE	
	add.l	#30000,a3
	add.w	#8000,a4
	jsr	BLTWAIT
	dbf	d5,ap4
ap5	dbf	d1,ap1
	rts
***************************************************************************
CLEANUP	move.l	_BitMapN,a5
	add.l	#158000,a5
	move.l	(a5)+,a0
	jsr	CLNDUDE
	
cu2	move.l	_BitMapN,a5
	add.l	#160000,a5
cb2	move.l	(a5)+,a0
	jsr	CLNDUDE

cb6	move.l	_BitMapN,a5
	add.l	#156000,a5
	move.l	(a5),a0
	move.l	#0,(a5)+
	jsr	CLNDUDE
	
cu8	move.l	_BitMapN,a5
	add.l	#154000,a5
	move.l	(a5),a0
	move.l	#0,(a5)+
	jmp	CLNDUDE

***************************************************************************
CALCIT	add.w	ObjOff,d0
	ror.l	#3,d0
	lsl.w	#7,d1
	add.w	d1,a0
	add.w	Distance,a0
	add.w	d0,a0
	move.l	a0,(a5)+
	ror.l	#1,d0
	swap	d0
	rts
***************************************************************************	
DRWBABE	move.l	_BitMapN,a0
	move.l	a0,a5
	add.l	#158000,a5
	move.l	BabeXl,d0
	move.w	BabeY,d1
	jsr	CALCIT
	
	lea	BabeMap,a1
	add.w	BabeA,a1 
	add.w	BabeD,a1
	cmp.w	#0,BabeI
	beq	dmn1
	add.w	#28,a1
dmn1	move.l	a1,a2	
	add.l	#80000,a2
	move.w	#$0FCA,d1
	or.w	d0,d1
	cmp.w	#36,BabeA
	beq	bid
	jsr	BLTDUDE
	jmp	bind
bid	jsr	BLTDEAD
		
bind  	cmp.w	#0,BabeJ
	bne	dm3
	move.w	BabeYA,d0
	sub.l	#24365,a0
flck	cmp.b	#0,(a0)
	bne	dm4
	add.w	#1,BabeY
	add.w	#128,a0
	dbf	d0,flck		
	add.w	#1,BabeYA
dm3	rts
dm4	move.w	#0,BabeYA
	rts
***************************************************************************
DRWPERV	move.l	_BitMapN,a0
	move.l	a0,a5
	add.l	#156000,a5
	move.l	PervXl,d0
	move.w	PervY,d1
	beq	pm3
	jsr	CALCIT
	
	tst.w	PervYA
	bne	nocu
	cmp.w	#30,PervA
	bne	nocu
	move.l	#0,-4(a5)

nocu	lea	BabeMap,a1
	add.w	PervA,a1 
	add.w	PervD,a1
	cmp.w	#0,PervI
	beq	pmn1
	add.w	#28,a1
pmn1	move.l	a1,a2	
	add.l	#80000,a2
	move.w	#$0FCA,d1
	or.w	d0,d1
	jsr	BLTDUDE
	
	tst.w	PervJ
	bne	pm3
	move.w	PervYA,d0
	move.w	#127,d1
	sub.l	#24366,a0
	cmp.w	#10800,PervD
	bne	plck
	cmp.b	#0,(a0,d1)
	bne	plck	
	cmp.b	#0,(a0)
	beq	plck
	move.w	#8,PervJ
	rts
plck	cmp.b	#0,(a0)
	bne	pm4
	add.w	#1,PervY
	add.w	#128,a0
	dbf	d0,plck		
	add.w	#1,PervYA
	cmp.w	#205,PervY
	blt	pm3
	move.w	#0,PervY
pm3	rts
pm4	move.w	#0,PervYA
	rts

****************************************************************************	
DRWBERV	move.l	_BitMapN,a0
	move.l	a0,a5
	add.l	#154000,a5
	move.l	BervXl,d0
	move.w	BervY,d1
	beq	bm3
	jsr	CALCIT
	
	cmp.w	#30,BervA
	bne	bocu
	move.l	#0,-4(a5)

bocu	lea	BabeMap,a1
	add.w	BervA,a1 
	add.w	BervD,a1
	cmp.w	#0,BervI
	beq	bmn1
	add.w	#28,a1
bmn1	move.l	a1,a2	
	add.l	#80000,a2
	move.w	#$0FCA,d1
	or.w	d0,d1
	moveq	#4,d4
	jsr	BLTDUDE
	
	move.w	BervYA,d0
	sub.l	#24366,a0
blck	cmp.b	#0,(a0)
	bne	bm4
	add.w	#1,BervY
	add.w	#128,a0
	dbf	d0,blck		
	add.w	#1,BervYA
	cmp.w	#205,BervY
	ble	bm3
	move.w	#0,BervY
bm3	rts
bm4	move.w	#0,BervYA
bm5	rts
	
***************************************************************************	
NOMEM	
OPENINT	lea	intname,a1		Open the Intuition library
	moveq.l	#0,d0				
	CALLEXEC OpenLibrary
	tst.l	d0
	beq	QUIT
	move.l	d0,_IntuitionBase		
	
	lea	NewWin,a0
OPENWIN	CALLINT OpenWindow
	tst.l	d0
	beq	CLOSE1
	move.l	d0,_Window
	
	move.l	_Window,a0
	add.w	#50,a0
	move.l	(a0),a0	
	lea	MemErr,a1
	move.w	#5,d0
	move.w	#20,d1
	CALLINT PrintIText
	move.w	#150,d0
	jsr	WAIT
			
	move.l	_Window,a0
	CALLINT	CloseWindow
CLOSE1	move.l	_IntuitionBase,a1
	CALLEXEC CloseLibrary	

QUIT	tst.l	_BackBase
	beq	q1
	jsr	mt_end
	move.l	_BackBase,a6		Turns on the OS
	jsr	-36(a6)
q1	tst.l	_BckGrnd1
	beq	q2
	move.l	_BckGrnd1,a1
	move.l	#162000,d0
	CALLEXEC FreeMem
q2	tst.l	_BckGrnd2
	beq	q3
	move.l	_BckGrnd2,a1
	move.l	#162000,d0
	CALLEXEC FreeMem
q3	move.l	#0,d0
	rts
***************************************************************************
	include	misc.i
	include ProPlayInt.i
Lev1Map	include	Map.i
Title	include	Title.i
BMusic	include	Death.i

backname	dc.b	'backstab.library',0,0

intname		INTNAME				

NewWin		dc.w 	15,15,220,60
		dc.b	0,1
		dc.l	0,WBENCHWINDOW!ACTIVATE!WINDOWDRAG
		dc.l	0,0,0,0,0
		dc.w	220,60,220,60,WBENCHSCREEN

MemErr	dc.b	1,0,0,0
	dc.w	0,0
	dc.l	0,ErrText,0,0
	
ErrText	dc.b	' Not enough chip ram...',0
		
_IntuitionBase	dc.l	0			
_Window		dc.l	0	

_BackBase	dc.l	0
_BckGrnd1	dc.l	0
_BckGrnd2	dc.l	0
_BitMapY	dc.l	0
_BitMapN	dc.l	0
_Music		dc.l	0

BabeXl		dc.w	0
BabeX		dc.w	30
BabeY		dc.w	80
BabeA		dc.w	0
BabeI		dc.w	0
BabeD		dc.w	0
BabeS		dc.w	0
BabeJ		dc.w	0
BabeYA		dc.w	0
ShotXl		dc.w	0
ShotX		dc.w	0
ShotY		dc.w	0,0,0
PervXl		dc.w	0
PervX		dc.w	320
PervY		dc.w	100
PervA		dc.w	0
PervI		dc.w	0
PervD		dc.w	10800
PervE		dc.w	10
PervS		dc.w	0
PervJ		dc.w	0
PervYA		dc.w	0
PervSp		dc.w	1

BervXl		dc.w	0
BervX		dc.w	320
BervY		dc.w	0
BervA		dc.w	0
BervI		dc.w	0
BervD		dc.w	5400
BervE		dc.w	175
BervS		dc.w	0
BervYA		dc.w	0
BervSp		dc.w	0

BMapOff		dc.w	15
ObjOff		dc.w	0
Distance	dc.w	0
KillAud		dc.w	0
CurMap		dc.w	0
GenDel		dc.w	0
Reload		dc.w	0
Level		dc.w	1
Cock		dc.w	1
Key		dc.b	0
Right		dc.b	0
Left		dc.b	0
Up		dc.b	0
Down		dc.b	0
Help		dc.b	$25
AudDel2		dc.w	0
AudDel3		dc.w	0
Count		dc.w	0

ColBlck	dc.w	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	
ColTit	dc.w	$0000,$0344,$0000,$0000,$0000,$0455,$0233,$0344
	dc.w	$0110,$0210,$0111,$0600,$0311,$0611,$0332,$0900
	dc.w	$0432,$0444,$0444,$0643,$0932,$0555,$0C32,$0666
	dc.w	$0777,$0D54,$0976,$0C76,$0D76,$0E87,$0E98,$0EBA
	
ColTit2	dc.w	$0000,$0666,$0005,$0004,$0003,$0002,$0555,$0444
	dc.w	$0333,$0800,$0700,$0600,$0500,$0645,$0534,$0423
	dc.w	$0432,$0321,$0211,$0154,$0043,$0032,$0405,$0303
	dc.w	$0045,$0044,$033,$0F80,$0E70,$0D60,$0C50,$0B50	

ColLev1	dc.w	$0000,$0A65,$0B76,$0800,$0CB0,$0FE0,$0520,$0040
	dc.w	$0444,$0555,$0777,$0888,$0AAA,$0504,$0605,$0030
	dc.w	$0305,$0600,$0B76,$0A65,$0235,$0333,$0FFF,$0520
	dc.w	$0410,$0030,$0777,$0C80,$0C80,$0222,$0230,$0743

	section mydata,data_c

	include Sounds.i
TMusic	include Song.i
BackMap	include	Back.i
BabeMap	include	Babe.i
	
CList1	dc.w	$102,$0000
	dc.w	$E0,$0000
	dc.w	$E2,$0000
	dc.w	$E4,$0000
	dc.w	$E6,$0000
	dc.w	$E8,$0000
	dc.w	$EA,$0000
	dc.w	$EC,$0000
	dc.w	$EE,$0000
	dc.w	$F0,$0000
	dc.w	$F2,$0000
	dc.w	$FFFF,$FFFE
	dc.w	$1001,$FF00
	dc.w	$180,$000F
	dc.w	$2001,$FF00
	dc.w	$180,$000E
	dc.w	$3001,$FF00
	dc.w	$180,$000D
	dc.w	$4001,$FF00
	dc.w	$180,$000C
	dc.w	$5001,$FF00
	dc.w	$180,$000B
	dc.w	$6001,$FF00
	dc.w	$180,$000A
	dc.w	$7001,$FF00
	dc.w	$180,$0009
	dc.w	$8001,$FF00
	dc.w	$180,$0008
	dc.w	$9001,$FF00
	dc.w	$180,$0007
	dc.w	$A001,$FF00
	dc.w	$180,$0006
	dc.w	$B001,$FF00
	dc.w	$180,$0005
	dc.w	$C001,$FF00
	dc.w	$180,$0004
	dc.w	$D001,$FF00
	dc.w	$180,$0003
	dc.w	$E001,$FF00
	dc.w	$180,$0002
	dc.w	$F001,$FF00
	dc.w	$180,$0001
	dc.w	$FF01,$FF00
	dc.w	$180,$0000
	dc.w	$FFFF,$FFFE

	
