
FILESTART=$50000
DECRUNCHAREA=$60056

;팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎팎

DE:	MOVE.L	#HOPPADDR,A6
	MOVE.L	#FILESTART,A0
	MOVE.L	#$1B850006,D0
	CLR.L	D1
	BSR.L	HEJSAN
	MOVE.L	D0,HOPPADDR+2

	MOVE.L	#$60056*37+$1E400,D0
	BSR	GOTIT
	MOVE.L	D7,A1

		MOVE.L	(A0)+,D0
		MOVE.L	(A0)+,D1
		MOVE.L	(A0)+,D5
		MOVE.L	A1,A2
		ADD.L	D0,A0
		ADD.L	D1,A2
		MOVE.L	-(A0),D0
		EOR.L	D0,D5

NOTFINISHED:			BSR.L	COLOUR
		LSR.L	#1,D0
		BNE.S	NOTEMPTY1
		BSR.L	GETNEXTLWD
NOTEMPTY1:	BCS.S	BIGONE
		MOVEQ	#8,D1
		MOVEQ	#1,D3
				BSR.L	COLOUR
		LSR.L	#1,D0
		BNE.S	NOTEMPTY2
		BSR	GETNEXTLWD
NOTEMPTY2:	BCS.S	DODUPL
		MOVEQ	#3,D1
		CLR.W	D4	

DOJMP:		BSR	RDD1BITS
		MOVE.W	D2,D3
		ADD.W	D4,D3

GETD3CHR:	MOVEQ	#7,D1
GET8BITS:			BSR.L	COLOUR
		LSR.L	#1,D0
		BNE.S	NOTEMPTY3
		BSR	GETNEXTLWD
NOTEMPTY3:	ROXL.L	#1,D2
		DBF	D1,GET8BITS
		MOVE.B	D2,-(A2)
		DBF	D3,GETD3CHR
		BRA	NEXTCMD

BIGJMP:		MOVEQ	#8,D1
		MOVEQ	#8,D4	
		BRA	DOJMP

BIGONE:		MOVEQ	#2,D1
		BSR	RDD1BITS
		CMP.B	#2,D2
		BLT.S	MIDJUMPS
		CMP.B	#3,D2
		BEQ.S	BIGJMP

		MOVEQ	#8,D1
		BSR	RDD1BITS
		MOVE.W	D2,D3
		MOVE.W	#12,D1
		BRA	DODUPL

MIDJUMPS:	MOVE.W	#9,D1
		ADD.W	D2,D1
		ADDQ	#2,D2
		MOVE.W	D2,D3

DODUPL:				BSR.L	COLOUR
		BSR	RDD1BITS

COPYD3BYTES:	SUBQ	#1,A2
		MOVE.B	(A2,D2.W),(A2)
		DBF	D3,COPYD3BYTES

NEXTCMD:	CMP.L	A2,A1
		BLT.L	NOTFINISHED
		TST.L	D5
		BNE.S	DAMAGE
		BSR.S	HEJSAN
		MOVE.L	2(A6),A6
		JMP	(A6)

HOPPADDR:	DC.W	'HE'
		DC.L	'JSAN'

HEJSAN:	TST.B	D0
	SWAP	D0
	ADD.W	#$111,D0
	SUB.W	#$111,D1
	RTS

DAMAGE:		MOVE.L	#$FE7C,D0
DAMLOOP:	MOVE.B	D0,$DFF180		;RASTER FLICKER
		SUBI.L	#1,D0			;WHEN ERROR
		BNE.S	DAMLOOP
		JMP	RTS

GETNEXTLWD:			BSR.S	COLOUR
		MOVE.L	-(A0),D0
		EOR.L	D0,D5
		MOVE.W	#$10,CCR
		ROXR.L	#1,D0
		RTS

GOTIT:	MOVE.L	D0,D7
	SUB.L	#$D9F018,D7
	LSR.L	#$7,D0
	RTS

RDD1BITS:	SUBQ.W	#1,D1
		CLR.W	D2

GETBITS:			BSR.S	COLOUR
		LSR.L	#1,D0
		BNE.S	NOTEMPTY
		MOVE.L	-(A0),D0
		EOR.L	D0,D5
		MOVE.W	#$10,CCR
		ROXR.L	#1,D0

NOTEMPTY:	ROXL.L	#1,D2
		DBF	D1,GETBITS
RTS:		RTS

COLOUR:	MOVE.W	$DFF006,D6
	EOR.W	#$F0F0,D6
	LSR.W	#$4,D6
	MOVE.W	D6,$DFF180
	RTS

