*** Bootblock spécial: MEGABOOT 1.30 by PIQ of VORTEX 42
* An old utility boot (it was great with kickstart 1.3)
* Won't work under 2.0+

Start:
	dc.b	"DOS",0
	dc.b	"SUM "
val:	dc.l	1

Main:
	move.l	4.w,a6
	MOVEM.L	D0-A6,-(A7)
	LEA	val(PC),A0
	LEA	$DFF000,A5
	CMP	#33,$14(A6)	;kickstart 1.2 ?
	BEQ.B	LB_0028
	TST.L	(A0)
	BNE.B	LB_003A
	BRA.B	LB_0030
LB_0028	LEA	val(PC),A0
	TST.L	(A0)
	BEQ.B	LB_003A
LB_0030	MOVE	#$0F00,$0180(A5)
	BRA.W	LB_0100
LB_003A	MOVE	#$0008,$0180(A5)
	MOVE.L	#$BFEC01,$010C.W
	BTST	#6,$00BFE001
	BNE.W	LB_00DC
	LEA	LB_02A6(PC),A0
	TST.L	$004E(A6)
	BEQ.B	LB_0060
	CLR.B	(A0)
LB_0060	BSR.W	LB_0110
	MOVE.L	#$00078000,$0108.W
	move.l	$9c(a6),a0	;execbase->gfxbase
	MOVE.L	A0,$0100.W
	MOVE.L	$26(A0),$0104.W		;old coplist
	BSR.W	LB_01AA
	BSR.W	LB_01BA
	LEA	CopList(PC),A0
	MOVE.L	A0,$0080(A5)
	MOVE.W	#$8380,$0096(A5)
	BSR.W	LB_019A
LB_0094	LEA	$00BFD100,A0
	ORI.B	#$80,(A0)
	ANDI.B	#$F7,(A0)
	BSR.W	LB_0140
	CMPI.B	#$5F,D0
	BEQ.W	LB_015E
	CMPI.B	#$5D,D0
	BEQ.W	LB_035C
	CMPI.B	#$5B,D0
	BEQ.W	LB_0148
	CMPI.B	#$59,D0
	BEQ.B	LB_00FC
	CMPI.B	#$57,D0
	BEQ.B	LB_010A
	CMPI.B	#$55,D0
	BNE.B	LB_0094
LB_00D0	MOVE.L	$0104.W,$0080(A5)
	MOVE.W	#$0100,$0096(A5)
LB_00DC	MOVE.L	#$FF01FF07,$008E(A5)
	MOVEM.L	(A7)+,D0-A6
	LEA	dosname(pc),A1
	JSR	-96(A6)
	MOVE.L	D0,A0
	MOVE.L	22(A0),A0
	MOVEQ	#0,D0
	RTS
LB_00FC	CLR.L	$26(A6)
LB_0100	MOVE.L	#$F800D2,$80.W
	TRAP	#0
LB_010A	CLR.L	$0026(A6)
	BRA.B	LB_00D0
LB_0110	MOVEM.L	A0/A1/A6,-(A7)
	LEA	diskname(pc),A1
	moveq	#0,D0
	JSR	-$01F2(A6)
	MOVE.L	D0,A6
	MOVEQ	#2,D0
	JSR	-$001E(A6)
	BEQ.B	LB_013A
	MOVEQ	#1,D0
	JSR	-$001E(A6)
	BEQ.B	LB_013A
	LEA	LB_02C0(PC),A0
	MOVE.B	#4,(A0)
LB_013A	MOVEM.L	(A7)+,A0/A1/A6
	RTS	
LB_0140	MOVE.L	$010C.W,A0
	MOVE.B	(A0),D0
	RTS	
LB_0148
	suba.l	a0,a0
	LEA	$40000,A1
	MOVE	#$BFFF,D0
	BSR.W	LB_0354
	BRA.W	LB_0094
LB_015E	LEA	LB_02A6(PC),A0
	TST.B	(A0)
	BNE.W	LB_0094
	LEA	$00FC0136,A0
	LEA	$0166.W,A1
	MOVE.W	#$4E75,-(A1)
	MOVEq	#$18,D0
LB_017A	MOVE.L	-(A0),-(A1)
	DBF	D0,LB_017A
	JSR	$013C.W
	LEA	$40000,A7
	SUBA.L	A4,A4
	LEA	$0676.W,A6
	MOVE.L	#$FC0208,$80.W
	TRAP	#0
LB_019A	LEA	$0180(A5),A0
	MOVEQ	#$1F,D0
LB_01A0	MOVE.W	#$0008,(A0)+
	DBF	D0,LB_01A0
	RTS	
LB_01AA	MOVE.L	$0108.W,A0
	MOVE.W	#$0BFF,D0
LB_01B2	CLR.L	(A0)+
	DBF	D0,LB_01B2
	RTS	
LB_01BA	MOVE.L	$0100.W,A6
	LEA	-$1000(A0),A1
	JSR	-$00C6(A6)	;InitRastport()
	MOVE.L	$94(A6),$34(A1)
	MOVE	#8,$3A(A1)
	MOVE	#4,$1C(A1)
	LEA	$80(A1),A0
	MOVE.L	A0,4(A1)
	MOVEQ	#1,D0
	MOVE	#640,D1
	MOVE	#200,D2
	JSR	-$0186(A6)	;InitBitMap()
	MOVE.L	$0108.W,$0088(A1)
	LEA	Mega.txt(PC),A0
LB_01F8	CLR	D0
	CLR	$24(A1)
	MOVE.B	(A0)+,$38(A1)
	MOVE.B	(A0)+,D0
	MOVE.B	(A0)+,$25(A1)
	MOVE.B	(A0)+,$27(A1)
	BSR.B	LB_0232
	CLR	$24(A1)
	MOVE.B	-2(A0),$25(A1)
	ADD	#320,$24(A1)
	BSR.B	LB_0232
	ADD	D0,A0
	TST.B	1(A0)
	BNE.B	LB_01F8
	MOVE.L	4.W,A6
	RTS	
LB_0232	MOVEM.L	D0/A0/A1,-(A7)
	JSR	-$003C(A6)
	MOVEM.L	(A7)+,D0/A0/A1
	RTS	
CopList:
 DC.w $0100,$2200,$0102,$0020
 DC.w $0104,$0000,$008E,$2C81
 DC.w $0090,$F4C1,$0092,$0038
 DC.w $0094,$00D0,$00E0,$0007
 DC.w $00E2,$8028,$00E4,$0007
 DC.w $00E6,$8000,$0180,$0008
 DC.w $0182,$0CC0,$0184,$0000
 DC.w $0186,$0CC0,$FFFF,$FFFE

dosname:dc.b "dos.library",0
diskname:dc.b "disk.resource",0

Mega.txt:
	DC.B	$00
	DC.B	'"',$18,$0A
	DC.B	'MegaBoot 1.30'
LB_02A6
	DC.B	$04,$16,'2',$1C,'F1. Remove f'
LB_02B6
	DC.B	'ast memory'
LB_02C0
	DC.B	$00
	DC.B	$1A,'2&F2. Remove external drives',$00
	DC.B	$09,'20F3. Copy*',$00
	DC.B	$0E,'2:F4. Hard '
LB_02F8
	DC.B	'reset',$00
	DC.B	$16,'2DF5. No dead-end reset*',$00
LB_0318
	DC.B	$0F,'2NF6. Normal bo'
LB_0328
	DC.B	'ot',$00
	DC.B	'"',$18,'a  All coding by PIQ of V'
LB_0346
	DC.B	'ortex '
LB_034C
	DC.B	'42  ',$00

	even	
LB_0354	MOVE.L	(A0)+,(A1)+
	DBF	D0,LB_0354
	RTS	
LB_035C	LEA	LB_02C0(PC),A0
	CMP.B	#4,(A0)
	BEQ.W	LB_0094
LB_0368	MOVEQ	#$3F,D0
	LEA	LB_0382(PC),A0
	LEA	$0300.W,A1
	MOVE.L	A1,$002E(A6)
	BSR.B	LB_0354
	BSR.B	LB_03A8
	BRA.W	LB_0100
LB_0382	MOVEM.L	D0-A6,-(A7)
	LEA	$0300.W,A0
LB_038A	MOVE.L	A0,$002E(A6)
	BSR.B	LB_03A8
	LEA	LB_0400(PC),A0
	MOVE.L	-$0064(A6),(A0)
	LEA	LB_03BC(PC),A0
LB_039E	MOVE.L	A0,-$0064(A6)
	MOVEM.L	(A7)+,D0-A6
	RTS	
LB_03A8	CLR	D0
LB_03AA	LEA	$22(A6),A0
	MOVEQ	#$17,D1
LB_03B0	ADD	(A0)+,D0
	DBF	D1,LB_03B0
	NOT	D0
	MOVE	D0,(A0)
LB_03BA	RTS	
LB_03BC	CMPA.L	#$00FC47FC,a1
	BNE.B	LB_03FE
	LEA	$00FC47FC,A1
	MOVEM.L	D0/D1/A0,-(A7)
	LEA	$0100.W,A0
	MOVEQ	#$73,D1
LB_03D6	MOVE.L	(A1)+,(A0)+
	DBF	D1,LB_03D6
	LEA	$0100.W,A0
	LEA	$44(A0),A1
	MOVE.L	A1,$16(A0)
	MOVE.L	#$26FCFFFF,$0188(A0)
	MOVE.L	#$FFFF4E75,$018C(A0)
	MOVE.L	A0,A1
	MOVEM.L	(A7)+,D0/D1/A0
LB_03FE	dc.w	$4ef9
LB_0400	dc.l	0

End:
	dcb.b	512*2,0
