
	org	$40000
	load	$40000

j	move.w	#$4000,$dff09a
	bsr.b	c128
	move.w	#$c000,$dff09a
	move.l	#$c80000,a0
	move.l	a0,a1
	add.l	len(pc),a1
	rts
len	dc.l	0
; to read formatted tracks
;d0 = 4
;d1 = start trk
;d2 = length
;d3 = data adr
; to write formatted tracks

;d0 = 2
;d1 = start trk
;d2 = length
;d3 = data adr



writeit	moveq	#2,d0		;2,5 write
	move.l	#[$1858*1],d1
	move.l	#[$1858*121],d2
	move.l	#$c70000,d3
	moveq	#0,d4		;drive
	BSR.B	C146
	rts

readit	moveq	#4,d0
	move.l	#[$1600*1],d1
	move.l	#[$1858*1],d2
	move.l	#$c70000,d3
	moveq	#0,d4		;drive
	BSR.B	C146
	rts


C128	lea	buf(pc),a0
	MOVE.L	#3,D0
	MOVE.L	#'PLIB',D1
	MOVE.L	#'PD2A',D2
	BSR.B	C146
	rts

ostack	dc.l	0
tu	dc.l	buf

c146	move.l	tu(pc),a0
	lea	-$30(a0),a0
	move.l	a0,tu
	MOVEM.L	D1-d7/a1-A6,-(SP)
	MOVEM.L	L106C,A1/A5/A6
	MOVE.W	#$8210,$96(A5)
	CMP.B	#$FF,(A1)
	BNE.S	C170
	CLR.B	(A1)
	MOVE.L	D0,-(SP)
	MOVEQ	#0,D0
	BSR.B	C146
	MOVE.L	(SP)+,D0
C170	CLR.W	-12(A0)
	CLR.B	-$1D(A0)
	CLR.B	$36(A1)
	CLR.B	-$1E(A0)
	MOVE.L	$100.w,$2A(A1)
	MOVE.W	#$1600,-10(A0)
	CMP.W	#8,D0
	BCS.S	C198
	MOVEQ	#7,D0
	BRA.S	C1B2

C198	LEA	W01BE,A2
	ADD.W	D0,D0
	MOVE.W	0(A2,D0.W),D0
	PEA	C1B2
	PEA	0(A2,D0.W)
	MOVEQ	#0,D0
	RTS

C1B2	ST	$32(A1)
	MOVEM.L	(SP)+,D1-d7/a1-A6
	lea	$30(a0),a0
	move.l	a0,tu
	rts


W01BE	dc.w	C1CC-W01BE,C258-W01BE
	dc.w	C29A-W01BE,C3C0-W01BE
	dc.w	C1F6-W01BE,C300-W01BE
	dc.w	C362-W01BE

C1CC	BSR.W	CD50
	BRA.S	C1E0

C1D4	BSR.W	CDDC
	TST.W	-2(A0)
	BEQ.S	C1F4
C1E0	BSR.W	CC00
	BSR.W	CAC8
	BSR.W	CC16
	BRA.S	C1D4

C1F4	RTS

C1F6	DIVU	-10(A0),D1
	MOVE.W	D1,-8(A0)
	SWAP	D1
	AND.W	#$FFFE,D1
	MOVE.W	D1,-6(A0)
	MOVE.L	D2,$16(A1)
	MOVE.L	D3,-$1C(A0)
	CMP.L	#3,D4
	BLS.S	C228
	MOVE.L	D4,-$14(A0)
	BSR.W	CDF2
	TST.L	D0
	BNE.S	C256
	BRA.S	C22C

C228	MOVE.W	D4,-2(A0)
C22C	CLR.B	-$1D(A0)
	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	MOVE.W	#5,-12(A0)
	BSR.W	C50C
	BSR.W	CC16
C256	RTS

C258	MOVE.L	D1,-$10(A0)
	MOVE.L	D2,-$14(A0)
	MOVE.L	D3,-$1C(A0)
	BSR.W	CDF2
	BSR.W	CCB6
	TST.L	D0
	BNE.S	C298
	CLR.B	-$1D(A0)
	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	BSR.W	C41C
	BSR.W	CC16
C298	RTS

C29A	DIVU	-10(A0),D1
	MOVE.W	D1,-8(A0)
	SWAP	D1
	TST.W	D1
	BNE.S	C2FC
	MOVE.L	D2,$16(A1)
	MOVE.L	D3,$1A(A1)
	CMP.L	#3,D4
	BLS.S	C2C8
	MOVE.L	D4,-$14(A0)
	BSR.W	CDF2
	TST.L	D0
	BNE.S	C2FE
	BRA.S	C2CC

C2C8	MOVE.W	D4,-2(A0)
C2CC	BSR.W	CC00
	BSR.W	CA38
	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	BSR.W	C728
	BNE.S	C2FE
	BSR.W	CC16
	RTS

C2FC	MOVEQ	#1,D0
C2FE	RTS

C300	DIVU	-10(A0),D1
	MOVE.W	D1,-8(A0)
	SWAP	D1
	TST.W	D1
	BNE.S	C2FC
	MOVE.L	D2,$16(A1)
	CMP.L	#3,D4
	BLS.S	C32A
	MOVE.L	D4,-$14(A0)
	BSR.W	CDF2
	TST.L	D0
	BNE.S	C2FE
	BRA.S	C32E

C32A	MOVE.W	D4,-2(A0)
C32E	BSR.W	CC00
	BSR.W	CA38
	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	ST	$36(A1)
	BSR.W	C728
	BNE.S	C2FE
	BSR.W	CC16
	RTS

C362	ST	-$1E(A0)
	DIVU	-10(A0),D1
	MOVE.W	D1,-8(A0)
	SWAP	D1
	AND.W	#$FFFE,D1
	MOVE.W	D1,-6(A0)
	MOVE.L	D2,$16(A1)
	CMP.L	#3,D4
	BLS.S	C394
	MOVE.L	D4,-$14(A0)
	BSR.W	CDF2
	TST.L	D0
	BNE.S	C3BE
	BRA.S	C398

C394	MOVE.W	D4,-2(A0)
C398	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	MOVE.W	#5,-12(A0)
	BSR.W	C50C
	BSR.W	CC16
C3BE	RTS

C3C0	MOVE.L	D1,-$10(A0)
	CMP.L	#$4449534B,D1
	BEQ.S	C3EC
	CMP.L	#$524F4F54,D1
	BEQ.S	C3EC
	MOVE.L	D2,-$14(A0)
	BSR.W	CC88
	TST.B	-$1D(A0)
	BNE.S	C3FA
	BSR.W	CDF2
	BRA.S	C3F0

C3EC	MOVE.W	D2,-2(A0)
C3F0	BSR.W	CCB6
	TST.L	D0
	BNE.S	C41A
C3FA	BSR.W	CC00
	BSR.W	CB0C
	BSR.W	CC34
	MOVEQ	#0,D0
	BSR.W	C50C
	BSR.W	CC16
C41A	RTS

C41C	TST.L	D0
	BNE.W	C4D2
C422	MOVE.W	-12(A0),D2
	BNE.S	C442
	MOVE.L	#2,$16(A1)
	BSR.W	C698
	MOVE.L	-$1C(A0),A2
	MOVE.W	-2(A2),-12(A0)
	BRA.S	C422

C442	CMP.W	#8,D2
	BCC.B	C4D0
	CMP.W	#4,D2
	BEQ.S	C48E
	CMP.W	#6,D2
	BEQ.S	C49E
	LSL.W	#3,D2
	LEA	L04D4,A3
	MOVE.L	0(A3,D2.W),$16(A1)
	MOVE.L	-$1C(A0),A2
	MOVEM.L	D2/A2/A3,-(SP)
	BSR.W	C698
	MOVEM.L	(SP)+,D2/A2/A3
	MOVE.L	4(A3,D2.W),D2
	BMI.S	C488
	MOVE.L	0(A2,D2.W),$16(A1)
	BSR.W	C698
C488	CLR.W	-12(A0)
	BRA.S	C41C

C48E	MOVE.L	#4,$16(A1)
	BSR.W	C698
	RTS

C49E	MOVE.L	-$1C(A0),A2
	MOVE.L	#8,$16(A1)
	BSR.W	C698
C4B0	MOVE.L	#8,$16(A1)
	BSR.W	C698
	CMP.L	#$FFFFFFFF,-8(A2)
	BNE.S	C4B0
	CLR.W	-12(A0)
	BRA.W	C41C

C4D0	MOVEQ	#8,D0
C4D2	RTS

L04D4	dc.l	2,$FFFFFFFF,8,4,8,$FFFFFFFF,4,$FFFFFFFF,4
	dc.l	$FFFFFFFF,8,$FFFFFFFF,8,$FFFFFFFF

C50C	TST.L	D0
	BNE.S	C532
	MOVE.W	-12(A0),D2
	CMP.W	#8,D2
	BCC.S	C530
	ADD.W	D2,D2
	LEA	W0534,A3
	MOVE.W	0(A3,D2.W),D2
	PEA	C50C
	JMP	0(A3,D2.W)

C530	MOVEQ	#8,D0
C532	RTS

W0534	dc.w	C544-W0534,C55A-W0534
	dc.w	C596-W0534,C606-W0534
	dc.w	C63C-W0534,C660-W0534
	dc.w	C66A-W0534,C5B6-W0534

C544	MOVE.L	#2,$16(A1)
	PEA	-12(A0)
	MOVE.L	(SP)+,-$1C(A0)
	JMP	C698

C55A	MOVE.L	#8,$16(A1)
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	BSR.W	C698
	MOVE.L	$1E(A1),-$1C(A0)
	BCLR	#7,$1E(A1)
	BEQ.S	C586
	MOVE.L	$2A(A1),D1
	ADD.L	D1,-$1C(A0)
C586	MOVE.L	$22(A1),$16(A1)
	CLR.W	-12(A0)
	;move.l	#$c80000,-$1c(a0)
	;move.l	$16(a1),len
	JMP	C698

C596	MOVE.L	#8,$16(A1)
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	PEA	CF0A
	CLR.W	-12(A0)
	JMP	C698

C5B6	MOVE.L	#8,$16(A1)
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	BSR.W	C698
	CLR.W	-12(A0)
	LEA	L10AC,A2
	MOVEQ	#7,D1
C5D8	ADDQ.L	#4,A2
	MOVE.L	#8,$16(A1)
	MOVE.L	A2,-$1C(A0)
	MOVEM.L	D1/A2,-(SP)
	BSR.W	C698
	MOVEM.L	(SP)+,D1/A2
	CMP.L	#$FFFFFFFF,(A2)+
	DBEQ	D1,C5D8
	PEA	CF44
	RTS

C606	MOVE.L	#4,$16(A1)
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	BSR.W	C698
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	$1E(A1),A0
	JSR	(A0)
	MOVEM.L	(SP)+,D0-D7/A0-A6
	BSR.W	CAC8
	BSR.W	CB0C
	CLR.W	-12(A0)
	RTS

C63C	MOVE.L	#4,$16(A1)
	ADDQ.L	#4,SP
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	BSR.B	C698
	MOVE.L	$1E(A1),D0
	BEQ.S	C65E
	MOVE.L	D0,4(A0)
C65E	RTS

C660	BSR.B	C698
	ADDQ.L	#4,a7
	RTS

C66A	MOVE.L	#4,$16(A1)
	PEA	$1E(A1)
	MOVE.L	(SP)+,-$1C(A0)
	BSR.B	C698
	movem.l	d0-d2,-(A7)
	moveq	#0,d0
	moveq	#0,d2
	move.w	$1e(a1),d2
	subq.w	#1,d2
	mulu	#$1858,d2
	move.w	$20(a1),d0
	add.l	d0,d2
	divu	#$1600,d2
	addq.w	#1,d2
	move.w	d2,-8(a0)
	swap	d2
	move.w	d2,-6(a0)
	movem.l	(A7)+,d0-d2
	;MOVE.W	$1E(A1),-8(A0)
	;MOVE.W	$20(A1),-6(A0)
	CLR.W	-12(A0)
	BSR.W	CB0C
	RTS

C698	TST.B	-$1D(A0)
	BNE.B	C710
	MOVE.W	#2,$14(A1)
	TST.B	$32(A1)
	BEQ.S	C6C4
C6AC	MOVEQ	#0,D0
	BSR.W	C952
	BSR.W	C970
	BSR.W	CA06
	TST.L	D0
	BNE.S	C6F6
C6C4	BSR.W	C76C
	TST.L	D0
	BNE.S	C6F6
	CLR.B	$32(A1)
	TST.L	$16(A1)
	BEQ.S	C70A
	MOVE.W	-10(A0),D1
	CMP.W	-6(A0),D1
	BCS.S	C6F0
	BSR.W	CBB8
	ADDQ.W	#1,-8(A0)
	CLR.W	-6(A0)
C6F0	MOVE.L	A2,-$1C(A0)
	BRA.S	C698

C6F6	BSR.W	CAC8
	BSR.W	CB0C
	SUBQ.W	#1,$14(A1)
	BPL.S	C6AC
	RTS

C70A	MOVE.L	A2,-$1C(A0)
	RTS

C710	MOVEQ	#0,D0
	MOVE.L	-$18(A0),A2
	MOVE.L	-$1C(A0),A3
C71A	MOVE.B	(A2)+,(A3)+
	SUBQ.L	#1,$16(A1)
	BNE.S	C71A
	MOVE.L	A2,-$18(A0)
	RTS

C728	MOVEQ	#0,D0
	BSR.W	C952
	BSR.W	C844
	BSR.W	C9AA
	BSR.W	CA06
	TST.L	D0
	BNE.S	C76A
	MOVEQ	#0,D1
	MOVE.W	-10(A0),D1
	SUB.L	D1,$16(A1)
	BMI.S	C76A
	BEQ.S	C76A
	BSR.W	CBB8
	ADDQ.W	#1,-8(A0)
	TST.B	$36(A1)
	BNE.S	C768
	MOVE.L	A4,$1A(A1)
C768	BRA.S	C728

C76A	RTS

oe		dc.w	0

C76C		move.l	#$55555555,d5
		move.l	-$1c(a0),a3
		move.w	-2(a3),oe
decode_loop1a	moveq	#10,d0
		lea	$7c000,a2
decode_loop1	cmp.l	#$7c000+[$1b00*2],a2
		bge.w	error3
		cmp.w	#$4489,(a2)+
		bne.s	decode_loop1
		cmp.w	#$4489,(a2)+
		beq.s	cont
		subq.w	#2,a2
cont:		bsr.w	Checksuma
		bne.w	Error3
		tst.b	-$1e(a0)
		bne.w	uji1
		movem.l	(a2),d2/d7
		bsr.w	convbit
		and.w	#$ff00,d2
		add.w	d2,d2
		add.w	#$38,a2
		move.w	-6(a0),d1
		and.w	#$fe00,d1
		cmp.w	d1,d2
		bne.s	noconv
		move.w	-6(a0),d2
		and.w	#$1fe,d2
		bne.s	.t
		moveq	#$7f,d1
		bra.s	.w
.t		move.w	d2,d1
		and.w	#$fffc,d1
		lea	(a2,d1.w),a2
		move.w	#$200,d7
		sub.w	d1,d7
		move.w	d7,d1
		lsr.w	#2,d1
		subq.w	#1,d1
.t1		and.w	#$2,d2
		beq.s	.w
		subq.w	#2,-6(a0)
		addq.l	#2,$16(a1)
		subq.w	#2,a3
.w
decode_loop2	move.l	512(a2),d7
		move.l	(a2)+,d2
		bsr.b	convbit
		SWAP	D2
		MOVE.W	D2,(A3)+
		addq.w	#2,-6(a0)
		SUBQ.L	#2,$16(A1)
		BEQ.S	exi
		SWAP	D2
		MOVE.W	D2,(A3)+
		addq.w	#2,-6(a0)
		SUBQ.L	#2,$16(A1)
		BEQ.S	exi
		dbf	d1,decode_loop2
		bra.w	decode_loop1a
noconv:		add.w	#$1f8,a2
		dbf	d0,decode_loop1
		cmp.w	#$1600,-6(a0)
		bne.w	decode_loop1a
exi		move.l	a3,a2
		move.l	-$1c(a0),a3
		move.w	oe,-2(A3)
		moveq	#0,d0
		rts

uji1		sub.l	#$1600,$16(a1)
		moveq	#0,d0
		rts
error3		moveq	#3,d0
		rts
error11		moveq	#11,d0
		rts

checksuma	move.l	a2,-(A7)
		lea	48(a2),a2
		movem.l	(A2)+,d2/d7
		bsr.b	convbit
		moveq	#0,d6
		move.w	#$ff,d1
checksum_loop1:	move.l	(a2)+,d7
		eor.l	d7,d6
		dbf	d1,checksum_loop1
		and.l	d5,d6
		move.l	(A7)+,a2
		cmp.l	d2,d6
		rts
convbit:	and.l	d5,d2
		and.l	d5,d7
		asl.l	#1,d2
		or.l	d7,d2
		rts


C844
code_track:	movem.l	d0-d3/a2/a3,-(a7)
		lea	$7c000,a2
		move.w	#$38c0/4-1,d0
fill_loop:	move.l	#$aaaaaaaa,(a2)+
		dbf	d0,fill_loop
		lea	$7c000,a2
		add.w	#$340,a2
		move.l	$1a(a1),a3
		moveq	#11,d0
		moveq	#0,d1
		move.w	-8(a0),d2
		moveq	#0,d4
		sf	wtdat
code_loop	tst.b	wtdat
		bne.s	.t
		move.w	-10(a0),d5
		and.w	#$fe00,d5
		cmp.w	d5,d4
		blt.s	.t
		st	wtdat
.t		move.w	#$ff00,d3
		or.w	d2,d3
		swap	d3
		move.b	d1,d3
		lsl.w	#8,d3
		move.b	d0,d3
		bsr.s	code_sector
		add.w	#$440,a2
		add.w	#$200,d4
		addq.w	#1,d1
		subq.w	#1,d0
		bne.s	code_loop
		movem.l	(a7)+,d0-d3/a2/a3
		rts
rest		dc.w	0
wtdat		dc.w	0


code_sector:	movem.l	d0/d1/d4/a0/a3/a4,-(a7)
		move.l	#$44894489,4(a2)
		lea	8(a2),a0
		move.l	d3,d0
		bsr.w	to_MFM
		lea	8(a2),a0
		moveq	#9,d1
		bsr.s	checksum
		lea	48(a2),a0
		bsr.s	to_MFM
		lea	buffer(pc),a0
		lea	64(a2),a4
		moveq	#$7f,d1
MFM_loop	moveq	#0,d0
		tst.b	wtdat
		beq.s	.tr
		move.l	(a3)+,d0
.tr		bsr.s	to_MFM
		lea	buffer(pc),a0
		move.l	(a0),(a4)
		move.l	4(a0),$200(a4)
		addq.w	#4,a4
		dbf	d1,MFM_loop
		lea	64(a2),a0
		move.w	#$ff,d1
check_loop:	bsr.s	check_next
		addq.w	#4,a0
		dbf	d1,check_loop
		lea	64(a2),a0
		move.w	#$ff,d1
		bsr.s	checksum
		lea	56(a2),a0
		bsr.s	to_MFM
		movem.l	(a7)+,d0/d1/d4/a0/a3/a4
		rts
		dc.l	0
buffer		dc.l	0,0

checksum:	move.l	d2,-(a7)
		moveq	#0,d0
checksum_loop:	move.l	(a0)+,d2
		eor.l	d2,d0
		dbf	d1,checksum_loop
		and.l	#$55555555,d0
		move.l	(a7)+,d2
		rts

to_MFM:		movem.l	d0-d3,-(a7)
		move.l	d0,d3
		lsr.l	#1,d0
		bsr.s	get_taktbits
		move.l	d3,d0
		bsr.s	get_taktbits
		movem.l	(a7)+,d0-d3
		rts
get_taktbits:	and.l	d5,d0
		move.l	d0,d2
		eor.l	d5,d2
		move.l	d2,d1
		lsl.l	#1,d2
		lsr.l	#1,d1
		bset	#31,d1
		and.l	d2,d1
		or.l	d1,d0
		btst	#0,-1(a0)
		beq.s	its_a_zero
		bclr	#31,d0
its_a_zero:	move.l	d0,(a0)+
		rts

check_next:	move.b	(a0),d0
		btst	#0,-1(a0)
		bne.s	clear_7
		btst	#6,d0
		bne.s	ok
		bset	#7,d0
		bra.s	write_d0
clear_7:	bclr	#7,d0
write_d0:	move.b	d0,(a0)
ok:		rts



C952	MOVE.W	#$4489,-4(A0)
	RTS

C970	MOVE.L	#$7C000,$20(A5)
	MOVE.W	#$4000,$24(A5)
	MOVE.W	#$7F00,$9E(A5)
	MOVE.W	#$9500,$9E(A5)
	MOVE.W	#$4489,$7E(A5)
	MOVE.W	#2,$9C(A5)
	btst	#4,$bfdd00
.r	btst	#4,$bfdd00
	beq.s	.r
	;BSR.W	CC34
	MOVE.W	#$9b00,D1
	MOVE.W	D1,$24(A5)
	MOVE.W	D1,$24(A5)
	RTS

C9AA	MOVE.W	#2,$9C(A5)
	MOVE.L	#$7C000,$20(A5)
	MOVE.W	#$7F00,$9E(A5)
	MOVE.W	#$4000,$24(A5)
	MOVE.W	#$9100,$9E(A5)
	BSR.W	CC34
	MOVE.W	#$D902,D1
	MOVE.W	D1,$24(A5)
	MOVE.W	D1,$24(A5)
	RTS

CA06	MOVE.L	#$61A80,D0
CA0C	SUBQ.L	#1,D0
	BNE.S	CA14
	MOVEQ	#2,D0
	BRA.S	CA20

CA14	MOVE.W	$1E(A5),D2
	BTST	#1,D2
	BEQ.S	CA0C
	MOVEQ	#0,D0
CA20	MOVE.W	#2,$9C(A5)
	MOVE.W	#$4000,$24(A5)
	MOVE.W	#$53B,D7
	BSR.W	CC3E
	RTS

CA38	BTST	#6,$1001(A6)
	BEQ.S	CA62
	BTST	#3,$1001(A6)
	BNE.S	CA4A
	BRA.S	CA38

CA4A	BSR.B	CA66
	MOVEQ	#14,D7
	BSR.W	CC6C
	BTST	#3,$1001(A6)
	BNE.S	CA64
	BRA.S	CA38

CA62	MOVEQ	#9,D0
CA64	RTS

CA66	MOVEQ	#0,D2
	BRA.S	CA72

CA6A	BSR.W	CC16
	NOT.B	D2
CA72	BSR.W	CC00
	TST.B	D2
	BEQ.S	CAA0
	BSR.W	CBB8
	BSR.W	CC16
	MOVEQ	#$1D,D7
	BSR.W	CC6C
	BSR.W	CC00
	BTST	#2,$1001(A6)
	BNE.S	CAC6
	BRA.S	CA6A

CAA0	BSR.W	CB58
	BSR.W	CC16
	MOVEQ	#14,D7
	BSR.W	CC6C
	BSR.W	CC00
	BTST	#2,$1001(A6)
	BNE.S	CAC6
	BRA.B	CA6A

CAC6	RTS

CAC8	BSET	#2,$100(A6)
	BSET	#1,$100(A6)
CAD4	BTST	#4,$1001(A6)
	BEQ.S	CAF6
	BCLR	#0,$100(A6)
	NOP
	NOP
	BSET	#0,$100(A6)
	MOVE.W	#$7C4,D7
	BSR.W	CC3E
	BRA.S	CAD4

CAF6	MOVE.W	#$3A98,D7
	BSR.W	CC3E
	MOVE.W	-2(A0),D6
	CLR.B	0(A1,D6.W)
	ST	$32(A1)
	RTS

CB0C	MOVE.W	-8(A0),D3
	MOVE.W	-2(A0),D6
	CMP.B	0(A1,D6.W),D3
	BEQ.S	CB3A
CB1A	PEA	CB1A
	MOVE.W	-2(A0),D6
	CMP.B	0(A1,D6.W),D3
	BHI.W	CBB8
	BCS.S	CB58
	ADDQ.L	#4,SP
CB30	MOVE.W	#$3A98,D7
	BSR.W	CC3E
	RTS

CB3A	MOVE.W	-2(A0),D6
	MOVE.B	0(A1,D6.W),D3
	BTST	#0,D3
	BEQ.S	CB50
	BCLR	#2,$100(A6)
	BRA.S	CB30

CB50	BSET	#2,$100(A6)
	BRA.S	CB30

CB58	MOVE.W	-2(A0),D6
	BTST	#4,$1001(A6)
	BEQ.S	CBA8
	SUBQ.B	#1,0(A1,D6.W)
	MOVE.B	0(A1,D6.W),D7
	BTST	#0,D7
	BEQ.S	CB94
	BSET	#1,$100(A6)
	NOP
	NOP
	BCLR	#0,$100(A6)
	NOP
	NOP
	BSET	#0,$100(A6)
	BCLR	#2,$100(A6)
	BRA.S	CB9A

CB94	BSET	#2,$100(A6)
CB9A	MOVE.W	#$9C4,D7
	BSR.W	CC3E
	ST	$32(A1)
	RTS

CBA8	BSET	#2,$100(A6)
	CLR.B	0(A1,D6.W)
	ST	$32(A1)
	RTS

CBB8	MOVE.W	-2(A0),D6
	ADDQ.B	#1,0(A1,D6.W)
	MOVE.B	0(A1,D6.W),D7
	BTST	#0,D7
	BNE.S	CBEC
	BCLR	#1,$100(A6)
	NOP
	NOP
	BCLR	#0,$100(A6)
	NOP
	NOP
	BSET	#0,$100(A6)
	BSET	#2,$100(A6)
	BRA.S	CBF2

CBEC	BCLR	#2,$100(A6)
CBF2	MOVE.W	#$9C4,D7
	BSR.B	CC3E
	ST	$32(A1)
	RTS

CC00	MOVE.W	-2(A0),D7
	ADDQ.W	#3,D7
	MOVE.B	#$79,$100(A6)
	NOP
	NOP
	BCLR	D7,$100(A6)
	RTS

CC16	MOVE.W	-2(A0),D7
	ADDQ.W	#3,D7
	MOVE.B	#$F9,$100(A6)
	NOP
	NOP
	BCLR	D7,$100(A6)
	NOP
	NOP
	BSET	D7,$100(A6)
	RTS

CC34	BTST	#5,$1001(A6)
	BNE.S	CC34
	RTS

CC3E	MOVE.B	#$7F,$D00(A6)
	MOVE.B	D7,$400(A6)
	LSR.W	#8,D7
	MOVE.B	D7,$500(A6)
	MOVE.B	#$81,$D00(A6)
	MOVE.B	#$11,$E00(A6)
CC5A	BTST	#0,$D00(A6)
	BEQ.S	CC5A
	MOVE.B	#$7F,$D00(A6)
	RTS

	MOVEQ	#$18,D7
CC6C	LEA	$DFF000,A5
CC72	CMP.B	#$A0,6(A5)
	BNE.S	CC72
CC7A	CMP.B	#$A0,6(A5)
	BEQ.S	CC7A
	DBRA	D7,CC72
	RTS

CC88	LEA	L1200,A2
	MOVE.L	-$10(A0),D1
	MOVE.L	-$14(A0),D2
CC96	TST.L	(A2)
	BEQ.S	CCB4
	CMP.L	(A2),D1
	BNE.S	CCA4
	CMP.L	4(A2),D2
	BEQ.S	CCAA
CCA4	LEA	12(A2),A2
	BRA.S	CC96

CCAA	ST	-$1D(A0)
	MOVE.L	8(A2),-$18(A0)
CCB4	RTS

CCB6	LEA	L1100,A2
	MOVE.L	-$10(A0),D1
	CMP.L	#$4449534B,D1
	BEQ.S	CCFC
	CMP.L	#$524F4F54,D1
	BEQ.S	CCDE
CCD0	TST.L	(A2)
	BEQ.W	CD2C
	CMP.L	(A2),D1
	BEQ.S	CD1E
	LEA	8(A2),A2
	BRA.S	CCD0

CCDE	LEA	ROOT,A2
	MOVE.L	#L1100,-$1C(A0)
	MOVE.L	#$100,$16(A1)
	MOVE.W	#5,-12(A0)
	BRA.S	CD1E

CCFC	LEA	DISK,A2
	MOVE.W	-2(A0),D2
	LSL.W	#2,D2
	PEA	4(A1,D2.W)
	MOVE.L	(SP)+,-$1C(A0)
	MOVE.L	#4,$16(A1)
	MOVE.W	#5,-12(A0)
CD1E	cmp.w	#1,4(a2)
	beq.s	.t
	movem.l	d0-d2,-(A7)
	moveq	#0,d0
	moveq	#0,d2
	move.w	4(a2),d2
	subq.w	#1,d2
	mulu	#$1858,d2
	move.w	6(a2),d0
	add.l	d0,d2
	divu	#$1600,d2
	add.w	#1,d2
	move.w	d2,-8(a0)
	swap	d2
	move.w	d2,-6(a0)
	movem.l	(A7)+,d0-d2
	RTS
.t	MOVE.W	4(A2),-8(A0)
	MOVE.W	6(A2),-6(A0)
	rts
CD2C	MOVEQ	#4,D0
	RTS

CD30	MOVEM.L	D0-D2,-(SP)
	MOVE.L	#3,D0
	MOVE.L	#$4449534B,D1
	MOVE.W	-2(A0),D2
	BSR.W	C146
	MOVEM.L	(SP)+,D0-D2
	RTS

CD50	MOVE.B	#1,$33(A1)
	MOVE.W	#0,-2(A0)
	MOVEQ	#4,D6
	BSR.B	CDAC
	ADDQ.W	#1,-2(A0)
	CMP.W	#$FFFF,D1
	BNE.S	CD74
	BSET	#1,$33(A1)
CD74	MOVEQ	#5,D6
	BSR.B	CDAC
	ADDQ.W	#1,-2(A0)
	CMP.W	#$FFFF,D1
	BNE.S	CD8C
	BSET	#2,$33(A1)
CD8C	MOVEQ	#6,D6
	BSR.B	CDAC
	ADDQ.W	#1,-2(A0)
	CMP.W	#$FFFF,D1
	BNE.S	CDA4
	BSET	#3,$33(A1)
CDA4	MOVE.W	#0,-2(A0)
	RTS

CDAC	BSR.W	CC00
	BSR.W	CC16
	MOVEQ	#0,D1
	MOVEQ	#15,D2
CDBC	LSL.W	#1,D1
	BCLR	D6,$100(A6)
	NOP
	NOP
	BTST	#5,$1001(A6)
	BNE.S	CDD2
	OR.B	#1,D1
CDD2	BSET	D6,$100(A6)
	DBRA	D2,CDBC
	RTS

CDDC	ADDQ.W	#1,-2(A0)
	AND.W	#3,-2(A0)
	MOVE.W	-2(A0),D2
	BTST	D2,$33(A1)
	BEQ.S	CDDC
	RTS

CDF2	ST	$34(A1)
	CLR.B	$35(A1)
	MOVE.L	-$14(A0),D1
	MOVEQ	#0,D2
	CLR.W	-2(A0)
	BRA.S	CE24

CE06	BSR.W	CC16
	BSR.B	CDDC
	TST.W	-2(A0)
	BNE.S	CE24
	NOT.B	D2
	MOVE.B	$34(A1),$35(A1)
	ST	$34(A1)
CE24	BSR.W	CC00
	TST.B	D2
	BEQ.S	CE60
	BSR.W	CBB8
	BSR.W	CC16
	MOVEQ	#14,D7
	BSR.W	CC6C
	BSR.W	CC00
	BTST	#2,$1001(A6)
	BNE.S	CE94
	MOVE.W	-2(A0),D3
	BCLR	D3,$34(A1)
	LSL.W	#2,D3
	CLR.L	4(A1,D3.W)
	BRA.S	CE06

CE60	BSR.W	CB58
	BSR.W	CC16
	MOVEQ	#7,D7
	BSR.W	CC6C
	BSR.W	CC00
	BTST	#2,$1001(A6)
	BNE.S	CE94
	MOVE.W	-2(A0),D3
	BCLR	D3,$34(A1)
	LSL.W	#2,D3
	CLR.L	4(A1,D3.W)
	BRA.B	CE06

CE94	MOVE.W	-2(A0),D3
	BTST	D3,$35(A1)
	BNE.B	CE06
	BSR.W	CD30
	LSL.W	#2,D3
	CMP.L	4(A1,D3.W),D1
	BNE.W	CE06
	CMP.L	$26(A1),D1
	BEQ.S	CED8
	MOVEM.L	D0-D2,-(SP)
	MOVE.L	#3,D0
	MOVE.L	#$524F4F54,D1
	MOVE.W	-2(A0),D2
	BSR.W	C146
	TST.L	D0
	BNE.S	CEDE
	MOVEM.L	(SP)+,D0-D2
CED8	MOVE.L	D1,$26(A1)
	RTS

CEDE	MOVEM.L	(SP)+,D0-D2
	MOVE.L	D1,$26(A1)
	MOVEQ	#10,D0
	RTS

CF0A	BSR.W	CC16
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	$1E(A1),D0
	BPL.S	CF22
	BCLR	#$1F,D0
	ADD.L	$2A(A1),D0
CF22	MOVE.L	D0,A2
	MOVE.L	$22(A1),D1
	LEA	4(A2),A5
	LEA	8(A2),A3
	LEA	0(A2,D1.L),A0
	BSR.W	CFCC
	MOVEM.L	(SP)+,D0-D7/A0-A6
	BSR.W	CC00
	RTS

CF44	BSR.W	CC16
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	$1E(A1),A2
	MOVE.L	$22(A1),D1
	LEA	4(A2),A5
	LEA	8(A2),A3
	LEA	0(A2,D1.L),A0
	LEA	L10B0,A4
	BSR.S	CF76
	MOVEM.L	(SP)+,D0-D7/A0-A6
	BSR.W	CC00
	RTS

CF76	MOVEQ	#3,D6
	MOVEQ	#7,D7
	MOVEQ	#1,D5
	MOVE.L	-(A0),D1
	TST.B	D1
	BEQ.S	CF8A
	BSR.W	C100A
	SUBQ.B	#1,D1
	LSR.L	D1,D5
CF8A	LSR.L	#8,D1
	MOVE.L	D1,$2E(A1)
	MOVE.L	A3,-(SP)
	LEA	CFE4,A6
CF98	PEA	CF98
	MOVE.L	(A4)+,A2
	MOVE.L	(A4)+,A3
	CMP.L	#$FFFFFFFF,A2
	BEQ.S	CFBC
	MOVEM.L	D0/A3,-(SP)
	SUB.L	A2,A3
	MOVE.L	A3,D0
	SUB.L	D0,$2E(A1)
	MOVEM.L	(SP)+,D0/A3
	JMP	(A6)

CFBC	ADDQ.L	#4,SP
	MOVE.L	(SP)+,A2
	ADD.L	$2A(A1),A2
	MOVE.L	A2,A3
	ADD.L	$2E(A1),A3
	JMP	(A6)

CFCC	MOVEQ	#3,D6
	MOVEQ	#7,D7
	MOVE.L	A3,A2
	MOVEQ	#1,D5
	MOVE.L	-(A0),D1
	TST.B	D1
	BEQ.S	CFE0
	BSR.S	C100A
	SUBQ.B	#1,D1
	LSR.L	D1,D5
CFE0	LSR.L	#8,D1
	ADD.L	D1,A3
CFE4	BSR.S	C100A
	BCS.S	C102C
	MOVEQ	#0,D2
CFEA	MOVEQ	#1,D0
	BSR.S	C1018
	ADD.W	D1,D2
	CMP.W	D6,D1
	BEQ.S	CFEA
CFF4	MOVEQ	#7,D0
	BSR.S	C1018
	MOVE.B	D1,-(A3)
	DBRA	D2,CFF4
	CMP.L	A3,A2
	BCS.S	C102C
	MOVE.L	#C102C,A6
	RTS

C100A	LSR.L	#1,D5
	BEQ.S	C1010
	RTS

C1010	MOVE.L	-(A0),D5
	ROXR.L	#1,D5
	RTS

C1016	SUBQ.W	#1,D0
C1018	MOVEQ	#0,D1
C101A	LSR.L	#1,D5
	BEQ.S	C1026
C101E	ROXL.L	#1,D1
	DBRA	D0,C101A
	RTS

C1026	MOVE.L	-(A0),D5
	ROXR.L	#1,D5
	BRA.S	C101E

C102C	MOVEQ	#1,D0
	BSR.S	C1018
	MOVEQ	#0,D0
	MOVE.B	0(A5,D1.W),D0
	MOVE.W	D1,D2
	CMP.W	D6,D2
	BNE.S	C1052
	BSR.S	C100A
	BCS.S	C1042
	MOVEQ	#7,D0
C1042	BSR.S	C1016
	MOVE.W	D1,D3
C1046	MOVEQ	#2,D0
	BSR.S	C1018
	ADD.W	D1,D2
	CMP.W	D7,D1
	BEQ.S	C1046
	BRA.S	C1056

C1052	BSR.S	C1016
	MOVE.W	D1,D3
C1056	ADDQ.W	#1,D2
C1058	MOVE.B	0(A3,D3.W),-(A3)
	DBRA	D2,C1058
	CMP.L	A3,A2
	BCS.S	CFE4
	MOVE.L	#CFE4,A6
	RTS
	blk.b	$f0,0
buf	dc.l	0,0,0

L106C	dc.l	L1078,$DFF000,$BFD000
L1078	dc.l	$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
	dc.l	$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
	dc.l	$FFFFFFFF,$FFFFFFFF,$FFFFFFFF
L10AC	dc.l	$FFFFFFFF
L10B0	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

ROOT	dc.b	'ROOT'
	dc.w	1
	dc.w	4
DISK	dc.b	'DISK'
	dc.w	1
	dc.w	0

L1100	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0
L1200	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
	dc.l	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
L1380	dc.w	0
jend
