START:	BRA	START2

	DC.B	'ASS PROTECT V2.5' 

START2:	LEA	[START-$0C](PC),A0
	LEA	$7F400,A1
	MOVE.W	#$100,D0
COPY:	MOVE.L	(A0)+,(A1)+
	DBRA	D0,COPY

	MOVE.L	$4,A6
	CLR.L	46(A6)
	MOVE.L	#[$7F40C + RESPOINTER],550(A6)
	JSR	-612(A6)
	MOVE.L	D0,554(A6)

	LEA	DOSNAME(PC),A1
	JSR	-96(A6)
	MOVE.L	D0,A0
	MOVE.L	22(A0),A0
	MOVEQ	#$0,D0
	RTS			;EINDE BOOT PROCES
DOSNAME:
	DC.B	'dos.library',0
RESPROG:
	movem.l	d0-d7/a0-a6,-(sp)
	btst	#2,$dff016	;IS RECHTER-MUIS KNOP INGEDRUKT
	beq	AVoff		;JA STOP DIT RESIDENT PROGRAMMA

	lea	$7f400,a0	;CONTROLEER OF CHECKSUM = 'PVL.'
	move.w	#$ff,d1
	clr.l	d0
chksumloop:
	add.l	(a0)+,d0
	bcc	verder
	addq.l	#1,d0
verder:	dbra	d1,chksumloop
	not.l	d0
	move.l	$7f404,d1
	add.l	d0,d1
	bcc.l	ok3
	addq.l	#$1,d1
ok3:	cmp.l	#'PVL.',d1
	beq	sound	;chksum klopt, Doorgaan
	lea	alert3(pc),a0
	bsr	alertprog	;checksum klopt niet

AVoff:	clr.l	550(a6)	;resident uitschakelen 
	jsr	-612(a6)
	move.l	d0,554(a6)
	movem.l	(sp)+,d0-d7/a0-a6
	rts			

	
RESPOINTER:
	DC.L	$7F40C + RESSTRUCT
	DC.L	0
RESSTRUCT:
	DC.W	$4AFC
	DC.L	$7F40C + RESSTRUCT
	DC.L	$7F40C + 26 + RESSTRUCT
	DC.B	$01
	DC.B	$21
	DC.B	$00
	DC.B	$F6
	DC.L	$7F40C + 18 + RESSTRUCT
	DC.L	0
	DC.L	$7F40C + RESPROG
		


sound:
	move.w	#$0fc8,$dff180	;kleur goed zetten
;	move.w	#$0fc8,$dff182	;Kleur goed zetten (bij 3.x)
 	move	#2,$dff0a4	;start geluid routine
	lea	wave(pc),a1	
	move.l	a1,$dff0a0
	move	#$440,$dff0a6
	move	#$3f,$dff0a8
	move	#$8201,$dff096
	lea	ton(pc),a0
tonp:	move	#$8000,d1
pause:	nop
	dbf	d1,pause
	move	(a0)+,$dff0a6
	bne	tonp
	move.w	#$0001,$dff096		;

	MOVE.L	$4,A6
	CMPI.L	#$7f40c+newdoio,-454(A6);WIJST DOIO NAAR NEWDOIO ?
	BEQ.S	OK		;JA
	MOVE.L	-454(A6),$7F40C+OLDDOIO+2	;NEE
	MOVE.L	#$7F40C+NEWDOIO,-454(A6)
OK:	movem.l	(sp)+,d0-d7/a0-a6
	RTS
ton:	dc.w	440,1200,850,1088,0
	even
wave:	dc.b	127,-127
	even
	

NEWDOIO:
	CMPI.L	#$400,36(A1)
	BNE.S	NOBB		;GEEN BOOTBLOK
	CMPA.L	40(A1),A4	;AANGEROEPEN DOOR BOOT-ROUTINE
	BEQ	OK2		;JA
NOBB:	JMP	$7F40C + OLDDOIO
OK2:	CLR.L	(A4)		;Eventueel aanwezige 'DOS',0 weghalen
	JSR	$7F40C + OLDDOIO
	CMPI.L	#$444f5300,(A4)	;Is het een DOS-Disk
	BNE	END		;Nee, stop
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	$7F40C + OLDDOIO + 2,-454(A6)	;DOIO WEER IN ORGINELE

	CLR.L	$7F40C + OLDDOIO + 2		;Niet Nodig (Weg V3.x

	CMPI.L	#$7EC00,18(A4)	;IS BOOT BLOCK SCA-VIRUS?
	BNE	VOLGENDE1	;NEE
	BSR	COPYBB		;VERANDER HUIDIGE BB DOOR DIT BB
	LEA	ALERT1(PC),A0
	BSR	ALERTPROG
	TST.B	D0
	Beq	VOLGENDE1	;Rechter MUIS, DOE NIETS
	BSR	INSTALLBB	;SCHRIJF DIT BB OP DISK WEG
VOLGENDE1:
	CMPI.W	#$4AFC,368(A4)	;IS BOOT BLOCK BYTEBANDIT-VIRUS?
	BNE	VOLGENDE2
	BSR	COPYBB		;VERANDER HUIDIGE BB DOOR DIT BB
	LEA	ALERT2(PC),A0
	BSR	ALERTPROG
	TST.B	D0
	BEQ	VOLGENDE2	;Rechter MUIS, DOE NIETS
	BSR	INSTALLBB

VOLGENDE2:
	CMPI.W	#$4AFC,$ea(A4)	;IS BOOT BLOCK VIRUSPROTECTOR 1.0?
	BNE	VOLGENDE3
	BSR	COPYBB		;VERANDER HUIDIGE BB DOOR DIT BB

VOLGENDE3:
	btst	#6,$bfe001	;IS LINKER-MUIS KNOP INGEDRUKT
	bne 	volgende4	;NEE, VOLGENDE
	bsr 	CopyBB		;JA GEBRUIK EN COPIEER DIT BB
	bsr 	InstallBB
VOLGENDE4:

	MOVEM.L	(SP)+,D0-D7/A0-A6
END:	RTS
	
ALERTPROG:	;A0 MOET ALERT STRUCT BEVATTEN
	MOVEM.L	D1-D7/A0-A6,-(SP)	;Registers op stack 
	MOVE.l	A0,-(SP)	;ZET POINTER NAAR ALERT OP STACK
	LEA	INTUITIONNAME(PC),A1	
	CLR.L	D0		;Version = 0
	JSR	-$228(A6)	;Open intuition library
	MOVE.L	D0,A6		;A6 -> IntuitionBase
	MOVE.L	#60,D1		;Hoogte van alert
	CLR.L	D0		;Recoverble Alert
	MOVE.L	(SP)+,A0	;HAAL POINTER NAAR ALERT VAN STACK
	JSR	-90(A6)		;Display alert
	MOVE.L	D0,-(SP)	;RETURN WAARDE OP STACK
	MOVE.L	A6,A1		;IntuitionBase --> A1
	MOVE.L	$4,A6		;ExecBase naar A6
	JSR	-414(A6)	;CloseLibrary
	MOVE.L	(SP)+,D0	;RETURN WAARDE VAN DISPLAY ALERT
	MOVEM.L	(SP)+,D1-D7/A0-A6	;VAN STACK
	RTS			;EINDE ALERTPROG
IntuitionName:
	dc.b	'intuition.library',0
	even

COPYBB:				;COPIEER DIT BOOTBLOK NAAR A4.
	MOVE.L	A4,A3		;A3 Start uit te voeren BB
	LEA	$7F400,A2	;A2 Start ASS-Protector
	MOVE.W	#$3FF,D0	; # bytes - 1 van ASS-Protector
CPYBB2:	MOVE.b	(A2)+,(A3)+	
	DBRA	D0,CPYBB2	;Copieer ASS-Protector naar BB
	RTS			;Einde Copieeeren

INSTALLBB:
	ADDQ.L	#1,TELLERTJE+$7F40C	;Weer een generatie erbij
	SUBQ.L	#1,ANTITELLERTJE+$7F40C	;CheckSum compensatie
	MOVE.L	A1,A5		;IoStruct naar A5
	MOVE.W	#$1,28(A1)	;Reset Commando
	JSR	-456(A6)	;Voeruit
	MOVE.L	A5,A1		;IOStruct naar A1
	MOVE.W	#$3,28(A1)	;WRITE COMMAND
	MOVE.L	#$400,36(A1)	;$400 BYTES
	MOVE.L	#$7f400,40(A1)	;BEGIN BOOTBLOK
	CLR.L	44(A1)		;ADRES 0 OP DISK
	JSR	-456(A6)
	MOVE.L	A5,A1	
	MOVE.W	#$4,28(A1)	;UPDATE COMMAND
	JSR	-456(A6)
	SUBQ.L	#1,TELLERTJE+$7F40C
	ADDQ.L	#1,ANTITELLERTJE+$7F40C
	RTS



Alert2:
	dc.w	38
	dc.b	16
	dc.b	'Warning: This disk is infected with the '
	dc.b	'ByteBandit-Virus!',0
	dc.b	1
	dc.w	18
	dc.b	32
	dc.b	'Left MouseButton: Kill the Virus,'
	dc.b    ' Right MouseButton: Continue',0
	dc.b	0

	even


Alert1:
	dc.w	52
	dc.b	16
	dc.b	'Warning: This disk is infected by the SCA-Virus',0
	dc.b	1
	dc.w	18
	dc.b	32
	dc.b	'Left MouseButton: Kill the Virus,'
	dc.b    ' Right MouseButton: Continue',0
	dc.b	0

	even
Alert3:
	dc.w	50
	dc.b	32
	dc.b	'ASS VirusProtector has a checksum error.'
	dc.b	' Exiting System',0
	dc.b	0
tellertje:	
	dc.l	$00000000
antitellertje:	
	dc.l    $c2358811
	dc.w	$4a53	
OLDDOIO:
	JMP	$00000000	;De nullen staan niet in het BB
				;Zodat er CheckSum error ontstaat 
				;Als hier iets anders komt te staan

