
START:	BRA	START2

	DC.B	' SYSTEM Z VIRUS '
	DC.B	' PROTECTOR V4.0 ' 

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)

	move.w	#$0f90,$DFF180
	MOVE.W	#$0f90,$DFF182

	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.s	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.s	verder
	addq.l	#1,d0
verder:	dbra	d1,chksumloop
	not.l	d0
	move.l	$7f404,d1
	add.l	d0,d1
	bcc.s	ok3
	addq.l	#$1,d1
ok3:	cmp.l	#'PVL.',d1
	beq.s	sound	;chksum klopt, Doorgaan 

	;GEEN ALERT MEER BIJ CHECKSUM ERROR

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	#$08cf,$dff180	;kleur goed zetten
;	move.w	#$08cf,$dff182	;Kleur goed zetten
 	move	#2,$dff0a4	;start geluid routine
	lea	wave(pc),a1	
	move.l	a1,$dff0a0
	move	#$440,$dff0a6
	move	#$2f,$dff0a8
	move	#$8201,$dff096
	lea	ton(pc),a0
tonp:	move	#$1c00,d1
pause:	move.b	$dff006,d7
	move.b	d7,$dff180
	move.b	d7,$dff182
	dbf	d1,pause
	move	(a0)+,$dff0a6
	bne.s	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.S	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.s	END		;Nee, stop
	MOVEM.L	D0-D7/A0-A6,-(SP)
	MOVE.L	$7F40C + OLDDOIO + 2,-454(A6)	;DOIO WEER IN ORGINELE

	btst	#6,$bfe001	;IS LINKER-MUIS KNOP INGEDRUKT
	bne.S	Volgende1		;NEE, VOLGENDE
	bsr.L	CopyBB		;JA GEBRUIK EN COPIEER DIT BB
	bra.L	InstallBB
Volgende1:
	cmpi.w	#$0013,$94(a4)	;Is BB NorthStar
	bne.s	CheckBB
	lea	alert2(pc),a0
	bra.s	xx
CheckBB:
	move.w	#[eindtabel-tabel/6]-1,d3
	lea	tabel(pc),a0
CheckLoop:
	move.w	(a0)+,d0
	move.w	#$7fff,d4
	and.w	d0,d4
	move.l	(a0)+,d1
	move.l	0(a4,d4.w),d2
	cmp.l	d2,d1		;als B15 van d0 = 1 dan iets dat 
				;overgeslagen moet worden
	bne.s	NietBekend	;Dit BootBlock is niet bekend
	tst.w	d0		;BB wel bekend. Virus ??
	bmi.s	GeenVirus	;Nee
	LEA	ALERT(PC),A0
	bra.s	xx
GeenVirus:
	lea	alert3(pc),a0	;BB is een oude virusprotector
	Bra.s	xx		;Geef Alert
NietBekend:
	dbra	d3,CheckLoop

Stop:
	MOVEM.L	(SP)+,D0-D7/A0-A6
END:	RTS

xx:	BSR.s	CopyBB
	BSR.S	ALERTPROG
	TST.B	D0
	BEQ.S	Stop		;Rechter MUIS, DOE NIETS
	bra.s	INSTALLBB	;SCHRIJF DIT BB OP DISK WEG



	
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 Virus-Protector
	MOVE.W	#$3FF,D0	; # bytes - 1 van Virus-Protector
CPYBB2:	MOVE.b	(A2)+,(A3)+	
	DBRA	D0,CPYBB2	;Copieer ASS-Protector naar BB
	RTS			;Einde Copieeeren

INSTALLBB:
	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)
	bra.L	Stop		;Na het installen kan gestopt worden



Alert:
	dc.w	90
	dc.b	16
	dc.b	'Warning: This disk is infected with a '
	dc.b	'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

	EVEN
Alert2:	dc.w	20
	dc.b	30	
	dc.b	'This disk is infected with the '
	dc.b	"'ANTI'Virus of NorthStar",0
	dc.b	0

Alert3:
	dc.w	110
	dc.b	30
	dc.b	'This disk contains an old VirusProtector.',0
	dc.b	0
	even
Tabel:
	dc.w	$1ae		;ByteBandit $1ae(a4),$4eae fd9c
	dc.l	$4eaefd9c	;Check op jsr -612(a6)

	dc.w	$96		;ByteWarrior
	dc.l	$4eaefd9c	;Check op jsr -612(a6)

	dc.w	$56		;SCA-Virus
	dc.l	$4bf900df	;lea	$DFF000,a5

	dc.w	$24!$8000	;ASSPROTECTOR 0.9
	dc.l	'otec'

	dc.w	$46!$8000	;ASSPROTECTOR 2.5
	DC.L	$4eaefd9c

	dc.w	$2c!$8000	;SYSTEM-Z virusprotector V3.0
	dc.l	'3.0 '

EindTabel:
	dc.b	'Send new Viruses to: P. van Leuven '
	dc.b	'Koestraat 47, 5688 AG Oirschot, Holland'

	even

antitellertje:	
;	dc.l	'PVL.'
	dc.l	$10b0c0ac
	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


