org	$60000
load	$60000

j:	dc.b	'DOS',0
	dc.l	0
	dc.l	$370
	move.w	#$2,28(A1)
	move.l	#$70000,40(A1)
	move.l	#[$200*79],36(A1)
	move.l	#[$2c00*54],44(A1)
	move.l	4.w,a6
	jsr	-456(a6)
	movem.l	d0-d7/a0-a6,-(a7)
	jsr	$70000
	movem.l	(a7)+,d0-d7/a0-a6
	LEA	$DFF000,A6
	MOVE.W	#$7FFF,D0
	MOVE.W	D0,$96(A6)
	MOVE.W	D0,$9A(A6)
	LEA	C016(PC),A0
	MOVE.L	A0,$80
	TRAP	#0
C016:	MOVE	#$2000,SR
	LEA	$7cd00,SP
	LEA	C04C(PC),A0
	LEA	$75000,A1
	MOVE.W	#$100,D7
C040:	MOVE.L	(A0)+,(A1)+
	DBRA	D7,C040
	JMP	$75000

C04C:	CLR.W	$1F6
	ST	$1F8
	CLR.W	$1FA
	MOVE.W	#$83d0,$96(A6)
	LEA	$60000,A0
	MOVE.W	#3,D0
	MOVE.W	#7,D1
	BSR.L	C194
	BMI.S	C08E
	JSR	$60000
	LEA	$800,A0
	MOVE.W	#10,D0
	MOVE.W	#$2C,D1
	BSR.L	C194
	BMI.S	C08E
	JMP	$800

C08E:	MOVE.W	#$F00,$DFF180
	MOVE.W	#$F0,$DFF180
	MOVE.W	#15,$DFF180
	BRA.S	C08E

C0A8:	LEA	$BFD000,A4
	MOVE.L	#$55555555,D5
	MOVE.W	$1F6,D2
	MOVEQ	#0,D3
	ADD.W	#3,D2
	BSET	D2,D3
	MOVE.W	$1FA,D2
	BEQ.S	C0CA
	BSET	#2,D3
C0CA:	MOVE.B	D3,$1FC
	MOVE.B	#$FF,$100(A4)
	MOVE.B	#$7F,$100(A4)
	OR.B	#$80,D3
	NOT.B	D3
	MOVE.B	D3,$100(A4)
	MOVE.W	#$C000,D2
C0E8:	MOVE.W	D2,D4
	MULU	D4,D4
	MULU	D4,D4
	BTST	#5,$1001(A4)
	DBEQ	D2,C0E8
	BNE.L	C23A
	MOVEQ	#0,D4
	RTS
C100:	MOVE.B	#$FF,$100(A4)
	MOVE.B	#$BF,$100(A4)
	MOVE.B	#$DF,$100(A4)
	MOVE.B	#$EF,$100(A4)
	MOVE.B	#$F7,$100(A4)
	MOVE.B	#$FF,$100(A4)
	RTS
C126:	BTST	#4,$1001(A4)
	BEQ.S	C136
	MOVEQ	#1,D0
	BSR.S	C156
	BRA.S	C126

C136:	CLR.W	$1F8
	RTS
C13C:	MOVE.W	D0,D6
	TST.W	$1F8
	BPL.S	C146
	BSR.S	C126
C146:	SUB.W	$1F8,D6
	BEQ.S	C192
	ADD.W	D6,$1F8
	MOVE.W	D6,D0
	BPL.S	C160
	NEG.W	D0
C156:	MOVE.B	$1FC.w,D1
	OR.B	#$80,D1
	BRA.S	C168

C160:	MOVE.B	$1FC,D1
	OR.B	#$82,D1
C168:	MOVE.B	D1,D2
	OR.B	#1,D2
	NOT.B	D1
	NOT.B	D2
	SUBQ.W	#1,D0
C174:	MOVE.B	D2,$100(A4)
	nop
	nop
C180:	MOVE.B	D1,$100(A4)
	MOVE.W	#$208,D3
C188:	MULU	D4,D4
	DBRA	D3,C188
	DBRA	D0,C174
C192:	RTS
C194:	SUBQ.W	#1,D1
	BMI.S	C1C8
	BSR.L	C0A8
	BMI.S	C1CA
C19E:	MOVE.W	#10,$1F4
C1A4:	MOVEM.W	D0/D1,-(SP)
	MOVE.L	A0,-(SP)
	BSR.S	C13C
	BSR.S	C1E6
	BMI.S	C1D2
	MOVE.L	A0,A5
	BSR.L	C23E
	BMI.S	C1D2
	MOVE.L	A5,A0
	ADDQ.W	#4,SP
	MOVEM.W	(SP)+,D0/D1
	ADDQ.W	#1,D0
	DBRA	D1,C19E
C1C8:	MOVEQ	#0,D4
C1CA:	BSR.L	C100
	TST.W	D4
	RTS
C1D2:	MOVE.L	(SP)+,A0
	MOVEM.W	(SP)+,D0/D1
	SUBQ.W	#1,$1F4
	BMI.S	C1CA
	BNE.S	C1A4
	ST 	$1F8.w
	BRA.S	C1A4

C1E6:	MOVE.W	#$4000,$24(A6)
	MOVE.l	#$27f00,$9C(A6)
	MOVE.L	#$7cd00,$20(A6)
	MOVE.W	#$9500,$9E(A6)
	MOVE.W	#$4489,$7E(A6)
	MOVE.W	#$9960,$24(A6)
	MOVE.W	#$9960,$24(A6)
	MOVEQ	#-1,D0
C21A:	MULU	D4,D4
	MOVE.W	$1E(A6),D4
	AND.W	#2,D4
	DBNE	D0,C21A
	BEQ.S	C234
	MOVE.W	#$4000,$24(A6)
	MOVEQ	#0,D4
	RTS
C234:	MOVE.W	#$4000,$24(A6)
C23A:	MOVEQ	#-1,D4
	RTS
C23E:		moveq	#10,d0
		lea	$7cd00,a2
decode_loop1:	cmp.w	#$4489,(a2)+
		bne.s	decode_loop1
		cmp.w	#$4489,(a2)+
		beq.s	cont
		subq.w	#2,a2
cont:		move.w	#$ff,d1
		bsr.S	Checksum
		bne.s	Error
		bsr.S	chkSEC
		bne.s	Error
		lea	$38(a2),a2
		moveq	#$7f,d1
decode_loop2:	move.l	512(a2),d7
		move.l	(a2)+,d2
		bsr.S	convbit
		move.l	d2,(a1)+
		dbf	d1,decode_loop2
noconv:		lea	$1f8(a2),a2
		dbf	d0,decode_loop1
		add.w	#$1400,a5
		moveq	#0,d4
uji:		tst.l	d4
		rts
error:		moveq	#-1,d4
		bra.s	uji
checksum:	lea	48(a2),a1
		movem.l	(A1)+,d2/d7
		bsr.S	convbit
		moveq	#0,d3
checksum_loop:	move.l	(a1)+,d7
		eor.l	d7,d3
		dbf	d1,checksum_loop
		and.l	d5,d3
		cmp.l	d2,d3
		rts
chkSec:		movem.l	(a2),d2/d7
		bsr.S	convbit
		and.w	#$ff00,d2
		cmp.w	#$a00,d2
		bne.s	okh
		add.w	#$238,a2
		addq.w	#4,a7
		bra.s	noconv
okh:		add.w	d2,d2
		move.l	a5,a1
		add.w	d2,a1
		swap	d2
		MOVE.W	$1f8,D1		;trk
		ADD.W	D1,D1
		MOVE.W	$1fa,D7		;side
		and.w	#1,d7
		ADD.W	d7,D1
		cmp.b	d2,d1
		rts
convbit:	and.l	d5,d2
		and.l	d5,d7
		asl.l	#1,d2
		or.l	d7,d2
		rts
dc.b	'TIME WARRIOR... CRACKED by Black Hawk of PARADOX',0
dc.b	'...this is NOT a VIRUS!!!!!!!!!!',0
j1:
