' DECLARATION DES SOUS-PROGRAMMES
DECLARE SUB MESSAGE (M$, C)
DECLARE SUB INFO ()
DECLARE SUB MERCI (T$)

' KEYS SPECIALS
   KEY 1, "WIN WIN WIN" + CHR$(13): 'F1 FAIT "WIN WIN WIN" AVEC UN [ENTER]

' DEBUT DU PROGRAMME NOBREAK.BAS
   KEY 15, CHR$(4 + 128 + 32 + 64) + CHR$(70)
   ON KEY(15) GOSUB NoBreak: KEY(15) ON
   KEY 16, CHR$(4 + 128) + CHR$(70): ON KEY(16) GOSUB NoBreak: KEY(16) ON
   KEY 17, CHR$(4 + 128 + 32) + CHR$(70): ON KEY(17) GOSUB NoBreak
   KEY(17) ON: KEY 18, CHR$(4 + 128 + 64) + CHR$(70): ON KEY(18) GOSUB NoBreak
   KEY(18) ON: KEY 19, CHR$(4) + CHR$(70): ON KEY(21) GOSUB NoBreak
   KEY(21) ON: KEY 22, CHR$(4 + 64) + CHR$(70)
   ON KEY(22) GOSUB NoBreak: KEY(22) ON: KEY 23, CHR$(4 + 32) + CHR$(46)
   ON KEY(23) GOSUB NoBreak: KEY(23) ON: KEY 24, CHR$(4 + 64) + CHR$(46)
   ON KEY(24) GOSUB NoBreak: KEY(24) ON
   KEY 25, CHR$(4 + 32 + 64) + CHR$(46): ON KEY(25) GOSUB NoBreak: KEY(25) ON
' FIN DU PROGRAMME NOBREAK.BAS

' LA VARIABLE DU NOM DU FAUX-VIRUS SERT PARTOUT
DIM SHARED NV$

' HAZARD     
RANDOMIZE TIMER

' SI UN PARAMETTRE "?" : FAIRE FONCTIONNER LE SOUS PROGRAMME INFO
SH$ = COMMAND$
IF SH$ = "?" THEN CALL INFO

' INITIALISATION DU PROMPT
P$ = "L:": ' LECTEUR
SU$ = "\": ' SOUS-DIRECTORY
L$ = "": ' L$ EST ENTRE LE SOUS-REPERTOIRE ET LE ">"

' INITIALISATION D'AUTRES VARIABLES
CC = 0: ' COMPTEUR DE LIGNES DE COMMANDES
NV$ = "[FAUX]": 'NOM DE CE FAUX VIRUS
OK$ = "VRAI": 'C'EST VRAI S'IL Y A EU UNE COMMANDE (INITIALEMENT VRAI)

NV$ = NV$ + "-VIRUS"

'AFFICHAGE DE LA LIGNE DE COMMANDE

LIGNE:
IF OK$ = "VRAI" THEN PRINT
PRINT P$; SU$; L$; ">";
LINE INPUT T$
T$ = UCASE$(T$)

' ENLEVER LES VIDES AVANT LES COMMANDES

VIDE:
IF LEFT$(T$, 1) = " " THEN T$ = RIGHT$(T$, LEN(T$) - 1): GOTO VIDE

' SI AUCUNE COMMANDE ALORS CONTINUER SANS ESPACER D'UNE LIGNE
IF T$ = "" THEN
 OK$ = "FAUX"
ELSE
 OK$ = "VRAI"
END IF

' COMMANDE : QQUIT (POUR QUITTER CE FAUX VIRUS)
IF LEFT$(T$, 5) = "QQUIT" THEN E = 0: T$ = "": END

' AFFICHAGE DU NOM DU VIRUS APRES 5 COMMANDES
E = 1
CC = CC + 1
IF CC = 5 THEN CC = 0: Y = CSRLIN: FOR K = 0 TO 1: FOR COUL = 7 TO 1 + 6 * K STEP -1: COLOR COUL: SOUND COUL * 51 + 256, .5: FOR YY = 24 TO 1 STEP -1: LOCATE YY, 1: PRINT STRING$(80, 219 - 187 * K); : NEXT YY, COUL, K: LOCATE Y, 1: COLOR 4: FOR K =  _
1 TO 4: PRINT NV$; " * "; : NEXT K: COLOR 7

WIN:

' COMMANDE : WIN

IF LEFT$(T$, 3) = "WIN" THEN E = 0: T$ = RIGHT$(T$, LEN(T$) - 4 + ABS(LEN(T$) < 4)): CALL MESSAGE("Not enough memory le TWIT!", 7): SOUND 440, 2: SOUND 659, 2: GOTO WIN

' COMMANDE : ECHO

IF LEFT$(T$, 4) = "ECHO" THEN E = 0: T$ = "": CALL MESSAGE("ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ECHO ...", 11)

' COMMANDE : COPY

IF LEFT$(T$, 4) = "COPY" OR MID$(T$, 2, 4) = "COPY" OR T$ = "DISKCOPY" THEN E = 0: T$ = "": CALL MESSAGE("Qu'ess-tu veux copier hein!  Pas d'affaire!", 14)

' COMMANDE : VER

IF T$ = "VER" THEN
 E = 0: T$ = ""
 PRINT
 PRINT NV$; " Version (NIL)"
 PRINT
END IF

' COMMANDE : DEL & ERASE

IF LEFT$(T$, 3) = "DEL" OR LEFT$(T$, 5) = "ERASE" THEN E = 0: T$ = "": CALL MESSAGE("Ok, je vais effacer le BOOT SECTOR.", 9)

' COMMANDE : DIR

IF T$ = "DIR" OR LEFT$(T$, 4) = "DIR " THEN
 E = 0
 PRINT
 PRINT " Le volume dans l'unit "; LEFT$(P$, LEN(P$) - 1); " s'appelle "; NV$
 PRINT " Rpertoire de "; P$; LEFT$(SU$, LEN(SU$) - 1)
 PRINT
 PRINT ".            <REP>     32-01-01    1:01"
 FOR K = 1 TO 8: YY = INT(RND * 10): FOR XX = 1 TO 35 + YY: PRINT CHR$(INT(RND * 128 + 33)); : NEXT XX: PRINT : NEXT K
 PRINT "       0 fichier(s)     -99999 octets"
 PRINT "                    -987654321 octets libres"
END IF

' COMMANDE : SCAN

IF LEFT$(T$, 4) = "SCAN" THEN
 E = 0: T$ = ""
 COLOR 23: PRINT "DONUT PANICK!"; : COLOR 14
 WHILE INKEY$ = "": WEND
 PRINT "  Ok! You can panic NOW!!!": COLOR 7
 PRINT NV$; "-SCAN SUPER VIRULANT"
 LINE INPUT "VOULEZ-VOUS CONTINUER (O/N)"; Y$
 Y$ = UCASE$(Y$)
 IF LEFT$(Y$, 1) = "N" THEN
  PRINT : PRINT "COUDONC! T'AS ENFIN COMPRIS QU'YA UN VIRUS ICITTE TO!": PRINT ""
  FOR K = 0 TO 9
  PRINT TAB(52 - K * 5); "T'ES BEN INTELLIGENT?"
  NEXT K
 ELSE
  PRINT "PENSAIS-TU VRAIMENT QUE TU POUVAIS M'ARRETER COMME CA? MAUDIT DEUX DE PIQUE!"
 END IF
END IF

' COMMANDE : CHKDSK

IF LEFT$(T$, 6) = "CHKDSK" THEN
 E = 0: T$ = ""
 PRINT "CHKDSK impossible ... "; NV$; " Activ"
 FOR K = 0 TO 9: PRINT TAB(K * 4); "*"; NV$; "*": NEXT K
 PRINT "Pis  part a, ... ya rien  checker."
END IF

' COMMANDE : CLS

IF T$ = "CLS" THEN E = 0: T$ = "": CLS

' COMMANDE : CD

IF LEFT$(T$, 2) = "CD" THEN
 E = 0
 G$ = RIGHT$(T$, LEN(T$) - 2)
 T$ = ""
 IF (G$ = ".." OR G$ = " ..") AND LEN(SU$) > 1 THEN
 G$ = ""
  DO
   SU$ = LEFT$(SU$, LEN(SU$) - 1)
   M$ = RIGHT$(SU$, 1)
  LOOP UNTIL M$ = "\"
 END IF
 IF LEFT$(G$, 1) = "\" THEN IF LEN(G$) > 1 THEN SU$ = G$ + "\" ELSE SU$ = "\"
 IF LEFT$(G$, 1) = " " THEN
 WHILE LEFT$(G$, 1) = " "
  G$ = RIGHT$(G$, LEN(G$) - 1)
 WEND
  SU$ = SU$ + G$ + "\"
 END IF
END IF

'****************************************************************************
'* AJOUTER DES COMMANDES A PARTIR D'ICI : S'INSPIRER DES AUTRES DEJA FAITES *
'****************************************************************************

' CHANGER DE LECTEUR
IF RIGHT$(T$, 1) = ":" AND LEN(T$) > 1 THEN E = 0: P$ = T$

' APPEL DU SOUS-PROGRAMME INFO AVEC "?"
IF T$ = "?" THEN E = 0: CALL INFO

' SI LA COMMANDE N'EST PAS RECONNUE PAR CE FAUX-VIRUS IL AFFICHE "WRONG"
IF E = 1 AND T$ <> "" THEN
CC$ = "": IF VAL(T$) > 0 THEN CC$ = " CHOICE"
PRINT "WRONG"; CC$; "! TRY AGAIN!"
END IF

GOTO LIGNE

NoBreak: RETURN

SUB INFO
 CLS
 PRINT
 COLOR 20: PRINT "CECI EST LE "; NV$
 COLOR 7: PRINT "VOUS DEVEZ FAIRE TRES ATTENTION!!! CAR LE MOINDRE RETURN PEUT CREER"
 PRINT "UN INCENDIE DANS TOUTE LA PIECE OU VOUS VOUS TROUVEZ..."
 PRINT : PRINT "BONNE CHANCE!"
 PRINT
END SUB

SUB MERCI (T$)
PRINT : PRINT "Merci d'avoir jou  "; T$; : PRINT
END SUB

SUB MESSAGE (M$, C)
PRINT : COLOR C
PRINT SPC(40 - LEN(M$) \ 2); M$
COLOR 7: PRINT
END SUB

