
; Boot-O-Matic Disk-Installation
; Coded by Nekron ...  (10-11,15/07/90)
; Improved on 26/08/1990.

;V1.11

************************** Library-Funktionen ********************

Execbase=	4
OldopenLib=	-408
CloseLib=	-414
FindTask=	-294
FindName=	-276
AddPort=	-354
RemPort=	-360
OpenDevice=	-444
CloseDevice=	-450
DoIO=		-456
Execute=	-222
Output=		-60
Write=		-48

************************** Kickstart-Adressen ********************

DOIOADR=	$fc06dc
LAMER=		$fe9fbe

************************** Programmstart *************************

	SECTION	MenuChoice,CODE

Begin
	move.l	a0,a5			Parameter sichern
	move.l	d0,d5
	move.l	(Execbase).w,a6
	lea	DosName,a1		Dos.Lib. öffnen!
	jsr	OldopenLib(a6)
	move.l	d0,DosBase
	move.l	d0,a6

	jsr	Output(a6)		Outputhandle lesen
	move.l	d0,d4
	subq	#1,d5			Keine Driveangabe?
	beq	ussage
driveloop
	cmpi.b	#"d",(a5)
	beq	drfound
	cmpi.b	#"D",(a5)		Teste ´Dx0´
	beq	drfound
	adda.w	#1,a5
	dbf	d5,driveloop
drfound
	clr.l	d0
	move.b	2(a5),d0
	subi.b	#$30,d0			Berechne Wert
	cmpi.b	#4,d0
	bhi	ussage
	move.l	d0,Drive
	bra	copyright
ussage
	move.l	d4,d1
	move.l	#Tx5,d2
	move.w	#Tx5E-Tx5,d3		Falsch = Gebe Ussage!
	jsr	Write(a6)
	bra	Cli
copyright
	move.l	d4,d1
	move.l	#Tx1,d2			Setze Copyright
	move.w	#Tx1E-Tx1,d3		
	jsr	Write(a6)
	
	bsr	Check

	clr.l	d0
	move.b	$00c8.w,d0
	lea	AdrTab,a0
	subi.w	#$50,d0
	cmpi.b	#3,d0			Welcher Menüpunkt?
	beq	Cli
	asl.l	#2,d0
	move.l	(a0,d0.w),d1
	clr.l	d2
	clr.l	d3
	jsr	Execute(a6)		Führe Programm aus...

**********************
* Programm verlassen *
**********************

Cli
	move.l	a6,a1
	move.l	Execbase,a6
	jsr	CloseLib(a6)
	clr.b	$00c8.w
	rts

****************
* Virus Check! *
****************

Check
	move.l	(Execbase).w,a6
	tst.l	42(a6)
	bne	reset
	tst.l	46(a6)			Verschiedene ...
	bne	reset			... Vektoren überprüfen!
	tst.l	546(a6)
	bne	reset
	tst.l	550(a6)
	bne	reset
	cmpi.b	#1,$00c8.w
	bne	cancel			Überprüfe ob ein 2.mal
	clr.b	$00c8.w			ohne Erfolg gebootet wurde!
cancel
	tst.b	$00c8.w
	beq	Install
cancel2
	move.l	DosBase,a6
	rts
reset
	cmpi.b	#1,$00c8.w
	bne	reset2			Virus immer noch da?
	beq	warning
reset2
	move.l	DosBase,a6
	move.l	d4,d1
	move.l	#Tx2,d2
	move.w	#Tx2E-Tx2,d3
	jsr	Write(a6)
mloop
	btst	#10,$dff016		[MR] = Cancel
	beq	cancel2
	btst	#6,$bfe001		[ML] = Install
	bne	mloop	
	move.l	(Execbase).w,a6
	move.l	#DOIOADR,-454(a6)	Kickstart 1.2 & 1.3
	lea	TrackDisk,a1		From LAMER Ex.!
	lea	$15e(a6),a0			"
	jsr	FindName(a6)		 	"
	move.l	d0,a0			 	"
	move.l	#LAMER,-$1c(a0)		 	"
	move.b	#$01,$00c8.w		Nur ein Install-Versuch!
	bra	Install

********************************
* Reset um Virus zu vernichten *
********************************

Exit
	move.l	#Trapy,$0080.w
	trap	#0
Trapy
	move.w	#$7fff,d0
	move.w	d0,$dff096
	move.w	d0,$dff09a
	move.w	d0,$dff09c
	clr.l	38(a6)
	jmp	$f80002

***************************
* Installiere Boot-Block! *
***************************

Install
	move.l	DosBase,a6
	move.l	d4,d1
	move.l	#Tx3,d2
	move.w	#Tx3E-Tx3,d3
	jsr	Write(a6)
	
;  TrackDisk Device Routine aus Amiga Intern Bnd.I (debuged!)

	move.l	(Execbase).w,a6
	sub.l	a1,a1
	jsr	FindTask(a6)
	move.l	d0,ReplyPort+$10
	lea	ReplyPort,a1
	jsr	AddPort(a6)
	move.l	(Execbase).w,a6
	lea	DiskIO,a1
	move.l	Drive,d0
	clr.l	d1
	lea	TrackDisk,a0
	jsr	OpenDevice(a6)
	lea	DiskIO,a1
	move.l	#ReplyPort,14(a1)
	move.w	#3,28(a1)
	move.l	#BootBlock,40(a1)
	move.l	#2*512,36(a1)
	move.l	#0,44(a1)
	move.l	(Execbase).w,a6
	jsr	DoIO(a6)
	lea	DiskIO,a1
	move.w	#4,28(a1)	;sonst saved er nicht!
	jsr	DoIO(a6)
	lea	DiskIO,a1
	move	#9,28(a1)
	move.l	#0,36(a1)
	jsr	DoIO(a6)
	lea	ReplyPort,a1
	jsr	RemPort(a6)
	lea	DiskIO,a1
	jsr	CloseDevice(a6)
	bra	Exit

warning
	move.l	DosBase,a6		Warnung ausgeben!,daß ...
	jsr	Output(a6)		... der Viru noch da ist!
	move.l	d0,d1
	move.l	#Tx4,d2
	move.w	#Tx4E-Tx4,d3
	jsr	Write(a6)
mloop2
	btst	#6,$bfe001
	beq	Exit			Auf Mausbuttons warten!
	btst	#10,$dff016
	beq	Exit
	bra	mloop2

************************** Texte und Daten ***********************

DosBase		ds.l	1
Drive		ds.l	1
DosName		dc.b	"dos.library",0
TrackDisk	dc.b	"trackdisk.device",0
		EVEN

	SECTION	TrackIO,BSS

DiskIO		dcb.l	20,0
ReplyPort	dcb.l	8,0

	SECTION	TextAdr,DATA

AdrTab		dc.l	Name1,Name2,Name3

Name1		dc.b	"FileName 1"
		dcb.b	30
Name2		dc.b	"FileName 2"
		dcb.b	30	
Name3		dc.b	"FileName 3"
		dcb.b	30	


Tx1		dc.b	$0a,$9b,"1;33;40m"
		dc.b	" BOOM v1.1  (Boot-O-Matic)"
		dc.b	$0a,$9b,"0;31;40m"
		dc.b	" Coded by Nekron.  Serial: 098062",$0a
		dc.b	" (C) by PROTON.",$0a,$0a
Tx1E
Tx2		dc.b	$0a,$9b,"1;33;40m"
		dc.b	" GREAT DANGER!, GREAT DANGER!! "
		dc.b	$0a,$9b,"0;31;40m",$9b,"3;31;40m"
		dc.b	" There is some kind of Virus on your"
		dc.b	" Boot-O-Matic Disk!"
		dc.b	$0a,$0a,$9b,"0;31;40m"
		dc.b	" <LEFT MOUSEBUTTON> =  Dead... or  "
		dc.b	"<RIGHT MOUSEBUTTON> =  alive... ???"
		dc.b	$0a,$0a
Tx2E
Tx3		dc.b	$0a,$0a
		dc.b	"Installing and Rebooting your Disk"
		dc.b	", please wait..."
		dc.b	$0a,$0a
Tx3E
Tx4		dc.b	$0a,$0a,$9b,"1;33;40m"
		dc.b	"- #1 Virus on BootBlock Error!"
		dc.b	$0a,$0a,$9b,"0;31;40m"
		dc.b	"- Remove this Disk and install manual,"
		dc.b	$0a
		dc.b	"- ... then Boot the Disk again!"
		dc.b	$0a,$0a
		dc.b	"* Neither Mousebutton to continue *"
		dc.b	$0a
Tx4E

Tx5		dc.b	$0a
		dc.b	" Boot-O-Matic v1.1 / Disk-Installation"
		dc.b	$0a,$9b,"0;33;40m"
		dc.b	" USSAGE: Boom <SPACE> dfx:"
		dc.b	$0a,$0a,$9b,"0;31;40m"
Tx5E

	SECTION	BootData,CODE_C

BootBlock	INCBIN	"Boot.Obj"

