
 ;VIRUS-KILLER V1.0; by SM'87

start:
 move.l 4,a6      ;EXECBASE dans A6
 moveq #0,d1      ;Flags: Pas de virus à cet endroit
 tst.l 46(a6)     ;Test sur altération de Cool-Capture
 beq.s noSCA      ;Ce n'était pas un virus SCA
 clr.l 46(a6)     ;Initialisation de Cool-Capture
 addq.b #1,d1     ;Bit 0 positionné
noSCA:
   cmpi.w #$FC,148(a6) ;Interruption de temps mort vertical
   beq.s noVBI      ;non?
   addq.b #2,d1     ;Bit 1 positionné
   bra.s ClearTag   ;Initialisation de KickTag-Pointer
noVBI:
   tst.l 550(a6)    ;KickTag-Pointer modifié?
   beq.s GoOn       ;non?
   addq.b #4,d1     ;Bit 2 positionné
ClearTag:
   clr.l 550(a6)    ;Pointeur initialisé
   clr.l 554(a6)    ;Pointeur initialisé
GoOn:
   move.b d1,Virusflag ;Drapeau réservé
   lea dosname,a1      ;Adresse des noms de bibliothèques
   moveq #0,d0         ;La version est la même
   jsr -552(a6)        ;OpenLibrary
   move.l d0,dosbase   ;Réserve Library-Base
   beq errfix          ;Branchement sur erreur
   move.l d0,a6        ;Preparation pour appel au DOS
   jsr -60(a6)         ;Lecture Output-handle
   move.l d0,Outputhandle ;et enregistrement
   beq errfix          ;Branchement si erreur
   move.l #title,d2    ;Titre dans d2
   move.l #titleend-title,d3 ;Long. du texte
   jsr writeout        ;Sortie du texte
   tst.b Virusflag     ;Test du drapeau de virus
   bne.s Virusfound    ;Branchement sur virus
   move.l #clean,d2    ;Suppression du message
   move.l #cleanend-clean,d3 ;Longueur
   jsr writeout        ;Sortie du texte
   bra errfix          ;Fin du programme
Virusfound:          ;Virus est actif
   btst #0,Virusflag   ;Cool-Capture?
   beq.s notsca        ;Non
   move.l #scaV,d2     ;Message
   move.l #scaVend-scaV,d3 ;Longueur
   jsr writeout        ;Sortie du texte
notsca:
   btst #1,Virusflag   ;Interruption de temps mort vertical?
   beq.s notvbi        ;Non
   move.l #bbVvbi,d2   ;Message
   move.l #bbVvbiend-bbVvbi,d3 ;Longueur
   jsr writeout        ;sortie
   bra.s bbfound       ;Message suivant
notvbi:
   btst #2,Virusflag   ;Kicktag?
   beq.s errfix        ;Non
   move.l #bbVtag,d2   ;Message
   move.l #bbVtagend-bbVtag,d3 ;Longueur
   jsr writeout        ;sortie
bbfound:
   move.l #bbV,d2      ;message
   move.l #bbVend-bbV,d3 ;Longueur
   jsr writeout        ;sortie
errfix:
   move.l 4,a6
   move.l dosbase,d0
   beq.s quit
   move.l d0,a1
   jsr -414(a6)
quit:
   moveq #0,d0
   rts
writeout:
   move.l Outputhandle,d1
   jmp -48(a6)
dosname:dc.b "dos.library",0
title:dc.b $c,$9b,"1;31;42m - Virus-Killer"
      dc.b " V1.0 - ",10,13
      dc.b "(c)  1988 par S. Maelger",10,13,10
      dc.b $9b,"0;31;40m"
titleend:even
clean:dc.b "Pas de symptôme de virus"
      dc.b "-Infection trouvée!",10,13,10
cleanend:even
scaV:dc.b "Reset-Vector Cool-Capture a"
     dc.b " été utilisé!",10,13
     dc.b "Virus SCA suspecté !",10,13
     dc.b "Virus en mémoire détruit.",10,13,10
scaVend:even
bbVvbi:dc.b "Vertical Blank Interrupt a "
       dc.b "été utilisé!",10,13
bbVvbiend:even
bbV:dc.b "Virus Byte-Bandit suspecté!",10,13
    dc.b "Virus en mémoire détruit.",10,13,10
bbVend:even
bbVtag:dc.b "KickTagPointer n'est plus"
       dc.b " dans le système d'exploitation!",10,13
bbVtagend:even
dosbase:dc.l 0
Outputhandle:dc.l 0
Virusflag:dc.b 0
   end
