DECLARE SUB BackSpace () DECLARE FUNCTION GetString2$ (start$, end$, Vis%, Max%, row%, col%) DECLARE SUB Simulador () ' ' Q B a s i c J D ___ V I R U S M O D I F I C A D O R ' ' Copyright (C) Microsoft JD Corporation 1993 'Set default data type to integer for faster operation DEFINT A-Z 'Sub and function declarations DECLARE SUB Initialize () DECLARE SUB Center (row%, text$) DECLARE SUB FancyCls (dots%, Background%) DECLARE SUB LoadState () DECLARE SUB SaveState () DECLARE SUB MenuSystem () DECLARE SUB box (Row1%, col1%, Row2%, Col2%) DECLARE SUB EditAccounts () DECLARE SUB PrintHelpLine (help$) DECLARE SUB EditTrans (item%) DECLARE FUNCTION Cvit$ (X%) DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%) DECLARE FUNCTION GetString$ (row%, col%, start$, end$, Vis%, Max%) 'Constants CONST TRUE = -1 CONST FALSE = NOT TRUE 'Global variables DIM SHARED ColorPref, CurrRowt 'Color Preference DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors DIM SHARED PrintErr AS INTEGER 'Printer error flag DEF SEG = 0 ' Turn off CapLock, NumLock and ScrollLock KeyFlags = PEEK(1047) POKE 1047, &H0 DEF SEG 'Open money manager data file. If it does not exist in current directory, ' goto error handler to create and initialize it. ON ERROR GOTO ErrorTrap OPEN "M_VIR.INI" FOR INPUT AS #1 CLOSE ON ERROR GOTO 0 'Reset error handler Initialize 'Initialize program MenuSystem 'This is the main program COLOR 7, 0 'Clear screen and end CLS DEF SEG = 0 ' Restore CapLock, NumLock and ScrollLock states POKE 1047, KeyFlags DEF SEG END ' Error handler for program ' If data file not found, create and initialize a new one. ErrorTrap: SELECT CASE ERR ' If data file not found, create and initialize a new one. CASE 53 CLOSE ColorPref = 1 SaveState RESUME CASE 24, 25 PrintErr = TRUE box 8, 13, 14, 69 Center 11, "La impresora no responde ... Presione Barra espaciadora para continuar" WHILE INKEY$ <> "": WEND WHILE INKEY$ <> " ": WEND RESUME NEXT CASE ELSE END SELECT RESUME NEXT 'The following data defines the color schemes available via the main menu. ' ' scrn dots bar back title shdow choice curs cursbk shdow DATA 0, 7, 15, 7, 0, 7, 0, 15, 0, 0 DATA 1, 9, 12, 3, 0, 1, 15, 0, 7, 0 DATA 3, 15, 13, 1, 14, 3, 15, 0, 7, 0 DATA 7, 12, 15, 4, 14, 0, 15, 15, 1, 0 datas: DATA DIR,1,COPY,2,CLS,3,TYPE,4,JD,5,TIME,6,DATE,7,"A:",8,"B:",9 DATA *,* SUB BackSpace REDIM help$(4), col(4), Vis(4), Max(4), CurrString$(1), CurrFig#(3) 'Array to keep the current balance at all the transactions COLOR colors(10, ColorPref), colors(6, ColorPref) FOR k = 2 TO 24: LOCATE k, 1: PRINT SPACE$(80); : NEXT 'Open random access file OPEN "Crack.dat" FOR RANDOM AS #1 LEN = 58 FIELD #1, 2 AS IoA$, 2 AS IoR$, 1 AS IoT$, 50 AS IoMen$ FIELD #1, 1 AS valid$, 2 AS IoMaxRecord$ 'Initialize variables CurrFig#(1) = 0 CurrFig#(2) = 0 CurrFig#(3) = 0 CurrString$(1) = "" GET #1, 39 IF valid$ <> "*" THEN LSET IoA$ = "" LSET IoR$ = "" LSET IoT$ = "" LSET IoMen$ = "" PUT #1, 39 + 1 LSET valid$ = "*" LSET IoMaxRecord$ = "1" PUT #1, 39 END IF MaxRecord = VAL(IoMaxRecord$) help$(1) = "Acci¢n 0, 1 a 19, 20 a 30 " help$(2) = "Inicio en Return's VACIOS " help$(3) = "Duraci¢n en Return's VACIOS " help$(4) = "Mensaje en Caso de Accion=0 " col(1) = 2: Vis(1) = 5: Max(1) = 2 col(2) = 8: Vis(2) = 3: Max(2) = 2 col(3) = 13: Vis(3) = 3: Max(3) = 1 col(4) = 17: Vis(4) = 50: Max(4) = 50 'Draw Screen COLOR colors(7, ColorPref), colors(4, ColorPref) box 2, 1, 24, 67 box 2, 68, 24, 80 LOCATE 3, 69: PRINT "20 Sopa "; LOCATE 5, 69: PRINT "21 Warning "; LOCATE 7, 69: PRINT "22 "; LOCATE 9, 69: PRINT "23 "; LOCATE 11, 69: PRINT "24 "; LOCATE 13, 69: PRINT "25 "; LOCATE 15, 69: PRINT "26 "; LOCATE 17, 69: PRINT "27 "; LOCATE 19, 69: PRINT "28 "; LOCATE 21, 69: PRINT "29 "; LOCATE 23, 69: PRINT "30 "; COLOR colors(5, ColorPref), colors(4, ColorPref) LOCATE 1, 1: PRINT SPACE$(80); LOCATE 1, 6: PRINT "Modificador de Comandos de JD_Virus Simuler, por JD..." COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE 3, 2: PRINT " A ³ <Ù ³ T ³ Mensaje: " LOCATE 4, 2: PRINT "ÄÄÄÄÄÅÄÄÄÄÅÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" u1x$ = "ßßßßß³ßßßß³ßßß³ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß" u1$ = " ³ ³ ³ " CurrTopline = 1 CurrRow = 1 CurrCol = 1 GOSUB TransPrintWholeScreen PrintHelpLine help$(CurrCol) + "| " GOSUB TransGetLine GOSUB TransPrintLine finished = FALSE 'Loop until is pressed DO GOSUB TransShowCursor 'Show Cursor, Wait for key DO: Kbd$ = INKEY$: LOOP UNTIL Kbd$ <> "" GOSUB TransHideCursor IF Kbd$ >= " " AND Kbd$ < "~" OR Kbd$ = CHR$(8) THEN 'If legal key, edit item GOSUB TransEditItem END IF SELECT CASE Kbd$ 'Handle Special keys CASE CHR$(0) + "H" 'up arrow GOSUB TransMoveUp CASE CHR$(0) + "P" 'Down arrow GOSUB TransMoveDown CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab CurrCol = CurrCol - 1 IF CurrCol = 0 THEN CurrCol = 4 PrintHelpLine help$(CurrCol) + "| " CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab CurrCol = (CurrCol) MOD 4 + 1 PrintHelpLine help$(CurrCol) + "| " CASE CHR$(0) + "G" 'Home CurrCol = 1 CASE CHR$(0) + "O" 'End CurrCol = 5 CASE CHR$(0) + "<" 'F2 finished = TRUE CASE CHR$(0) + "C" 'F9 GOSUB TransAddRecord CASE CHR$(0) + "D" 'F10 GOSUB TransDeleteRecord CASE CHR$(13) 'Enter CASE ELSE BEEP END SELECT LOOP UNTIL finished CLOSE EXIT SUB TransShowCursor: COLOR colors(8, ColorPref), colors(9, ColorPref) LOCATE CurrRow + 4, col(CurrCol) SELECT CASE CurrCol CASE 1 IF CurrFig#(1) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(1); : PRINT " "; ELSE PRINT " "; CASE 2 IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(2); : PRINT " "; ELSE PRINT " "; CASE 3 IF CurrFig#(3) <> 0 THEN PRINT " "; : PRINT USING "#"; CurrFig#(3); : PRINT " "; ELSE PRINT " "; CASE 4 IF LTRIM$(RTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " "; END SELECT RETURN TransHideCursor: COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE CurrRow + 4, col(CurrCol) SELECT CASE CurrCol CASE 1 IF CurrFig#(1) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(1); : PRINT " "; ELSE PRINT " "; CASE 2 IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(2); : PRINT " "; ELSE PRINT " "; CASE 3 IF CurrFig#(3) <> 0 THEN PRINT " "; : PRINT USING "#"; CurrFig#(3); : PRINT " "; ELSE PRINT " "; CASE 4 IF LTRIM$(RTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " "; END SELECT RETURN TransEditItem: CurrRecord = CurrTopline + CurrRow - 1 COLOR colors(8, ColorPref), colors(9, ColorPref) SELECT CASE CurrCol CASE 1 DO Kbd$ = GetString$(CurrRow + 4, col(1), Kbd$, new$, Vis(1), Max(1)) CurrFig#(1) = VAL(new$) LOOP WHILE VAL(new$) <= -1 OR VAL(new$) > 30 GOSUB TransPutLine GOSUB TransGetLine CASE 2 DO Kbd$ = GetString$(CurrRow + 4, col(2), Kbd$, new$, Vis(2), Max(2)) CurrFig#(2) = VAL(new$) LOOP WHILE VAL(new$) < 0 OR VAL(new$) > 99 GOSUB TransPutLine GOSUB TransGetLine CASE 3 DO Kbd$ = GetString$(CurrRow + 4, col(3), Kbd$, new$, Vis(3), Max(3)) CurrFig#(3) = VAL(new$) LOOP WHILE VAL(new$) < 0 OR VAL(new$) > 9 GOSUB TransPutLine GOSUB TransGetLine CASE 4 Kbd$ = GetString$(CurrRow + 4, col(4), Kbd$, new$, Vis(4), Max(4)) CurrString$(1) = new$ GOSUB TransPutLine GOSUB TransGetLine CASE ELSE END SELECT GOSUB TransPrintLine RETURN TransMoveUp: IF CurrRow = 1 THEN IF CurrTopline = 1 THEN BEEP ELSE CurrTopline = 19 GOSUB TransGetLine END IF ELSE CurrRow = CurrRow - 1 GOSUB TransGetLine END IF GOSUB TransPrintLine RETURN TransMoveDown: IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN BEEP ELSE IF CurrRow = 19 THEN CurrTopline = 1 GOSUB TransGetLine ELSE CurrRow = CurrRow + 1 GOSUB TransGetLine END IF END IF GOSUB TransPrintLine RETURN TransPrintLine: COLOR colors(7, ColorPref), colors(4, ColorPref) CurrRecord = CurrTopline + CurrRow - 1 LOCATE CurrRow + 4, 2 IF CurrRecord = MaxRecord + 1 THEN PRINT u1x$; ELSEIF CurrRecord > MaxRecord THEN PRINT u1$; ELSE IF CurrFig#(1) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(1); : PRINT " ³"; ELSE PRINT " ³"; IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING "##"; CurrFig#(2); : PRINT " ³"; ELSE PRINT " ³"; IF CurrFig#(3) <> 0 THEN PRINT " "; : PRINT USING "#"; CurrFig#(3); : PRINT " ³"; ELSE PRINT " ³"; IF LTRIM$(RTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " "; END IF RETURN TransDeleteRecord: IF MaxRecord = 1 THEN BEEP ELSE CurrRecord = CurrTopline + CurrRow - 1 MaxRecord = MaxRecord - 1 a = CurrRecord WHILE a <= MaxRecord GET #1, a + 2 + 39 PUT #1, a + 1 + 39 a = a + 1 WEND LSET valid$ = "*" LSET IoMaxRecord$ = RTRIM$(LTRIM$(STR$(MaxRecord))) PUT #1, 39 GOSUB TransPrintWholeScreen CurrRecord = CurrTopline + CurrRow - 1 IF CurrRecord > MaxRecord THEN GOSUB TransMoveUp END IF GOSUB TransGetLine END IF LOCATE 1, 1: PRINT MaxRecord RETURN TransAddRecord: temp = CurrRecord CurrRecord = CurrTopline + CurrRow - 1 IF MaxRecord > 18 THEN BEEP CurrRecord = temp ELSE a = MaxRecord WHILE a > CurrRecord GET #1, a + 1 + 39 PUT #1, a + 2 + 39 a = a - 1 WEND MaxRecord = MaxRecord + 1 LSET IoA$ = "" LSET IoR$ = "" LSET IoT$ = "" LSET IoMen$ = "" PUT #1, CurrRecord + 2 + 39 LSET valid$ = "*" LSET IoMaxRecord$ = RTRIM$(LTRIM$(STR$(MaxRecord))) PUT #1, 39 GOSUB TransPrintWholeScreen GOSUB TransGetLine END IF LOCATE 1, 1: PRINT MaxRecord RETURN TransPrintWholeScreen: temp = CurrRow FOR CurrRow = 1 TO 19 CurrRecord = CurrTopline + CurrRow - 1 IF CurrRecord <= MaxRecord THEN GOSUB TransGetLine END IF GOSUB TransPrintLine NEXT CurrRow CurrRow = temp RETURN TransPutLine: CurrRecord = CurrTopline + CurrRow - 1 LSET IoA$ = LTRIM$(RTRIM$(STR$(CurrFig#(1)))) LSET IoR$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) LSET IoT$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) LSET IoMen$ = CurrString$(1) PUT #1, CurrRecord + 1 + 39 RETURN TransGetLine: CurrRecord = CurrTopline + CurrRow - 1 GET #1, CurrRecord + 1 + 39 CurrFig#(1) = VAL(IoA$) CurrFig#(2) = VAL(IoR$) CurrFig#(3) = VAL(IoT$) CurrString$(1) = IoMen$ RETURN END SUB 'Box: ' Draw a box on the screen between the given coordinates. SUB box (Row1, col1, Row2, Col2) STATIC BoxWidth = Col2 - col1 + 1 LOCATE Row1, col1 PRINT "Ú"; STRING$(BoxWidth - 2, "Ä"); "¿"; FOR a = Row1 + 1 TO Row2 - 1 LOCATE a, col1 PRINT "³"; SPACE$(BoxWidth - 2); "³"; NEXT a LOCATE Row2, col1 PRINT "À"; STRING$(BoxWidth - 2, "Ä"); "Ù"; END SUB 'Center: ' Center text on the given row. SUB Center (row, text$) LOCATE row, 41 - LEN(text$) / 2 PRINT text$; END SUB 'EditAccounts: ' This is the full-screen editor which allows you to change your account ' titles and descriptions SUB EditAccounts REDIM help$(6), col(6), Vis(6), Max(6), CurrString$(8), CurrRowt(2 TO 8) 'Array to keep the current balance at all the transactions COLOR colors(10, ColorPref), colors(6, ColorPref) FOR k = 2 TO 24: LOCATE k, 1: PRINT SPACE$(80); : NEXT 'Open random access file OPEN "Crack.dat" FOR RANDOM AS #1 LEN = 113 FIELD #1, 10 AS IoDate$, 20 AS IoRef$, 20 AS IoDos$, 20 AS IoTres$, 20 AS IoCuatro$, 20 AS IoCinco$ FIELD #1, 1 AS valid$, 2 AS IoMaxRecord$ 'Initialize variables CurrString$(1) = "" CurrString$(3) = "" CurrString$(4) = "" CurrString$(5) = "" CurrString$(6) = "" CurrString$(7) = "" GET #1, 1 IF valid$ <> "*" THEN LSET IoDate$ = "" LSET IoRef$ = "" LSET IoDos$ = "" LSET IoTres$ = "" LSET IoCuatro$ = "" LSET IoCinco$ = "" PUT #1, 2 LSET valid$ = "*" LSET IoMaxRecord$ = "1" PUT #1, 1 END IF MaxRecord = VAL(IoMaxRecord$) help$(1) = "Comando reaccionante... " help$(2) = "Reaccion " help$(3) = "Reaccion " help$(4) = "Reaccion " help$(5) = "Reaccion " help$(6) = "Reaccion " col(1) = 2: Vis(1) = 10: Max(1) = 10 col(2) = 21: CurrRowt(2) = 3: Vis(2) = 20: Max(2) = 20 col(3) = 21: CurrRowt(3) = 4: Vis(3) = 20: Max(3) = 20 col(4) = 21: CurrRowt(4) = 5: Vis(4) = 20: Max(4) = 20 col(5) = 21: CurrRowt(5) = 6: Vis(5) = 20: Max(5) = 20 col(6) = 21: CurrRowt(6) = 7: Vis(6) = 20: Max(6) = 20 CurrRowt = 3 'Draw Screen COLOR colors(7, ColorPref), colors(4, ColorPref) box 2, 1, 24, 12 box 2, 20, 8, 41 box 18, 20, 24, 51 LOCATE 19, 21: PRINT "? Pregunta de 1 digitos" LOCATE 20, 21: PRINT "X# Respuesta a X, " LOCATE 21, 21: PRINT "X% Futura ampliaci¢n " LOCATE 22, 21: PRINT "X! Futura ampliaci¢n " COLOR colors(5, ColorPref), colors(4, ColorPref) LOCATE 1, 1: PRINT SPACE$(80); LOCATE 1, 5: PRINT "Modificador de Comandos de JD_Virus Simuler, por JD..." COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE 3, 2: PRINT " Comando: " LOCATE 4, 2: PRINT "ÄÄÄÄÄÄÄÄÄÄ" u1x$ = "ßßßßßßßßßß" u1$ = " " CurrTopline = 1 CurrRow = 1 CurrCol = 1 GOSUB EditTransPrintWholeScreen PrintHelpLine help$(CurrCol) + "| " GOSUB EditTransGetLine GOSUB EditTransPrintLine finished = FALSE 'Loop until is pressed DO GOSUB EditTransShowCursor 'Show Cursor, Wait for key DO: Kbd$ = INKEY$: LOOP UNTIL Kbd$ <> "" GOSUB EditTransHideCursor IF Kbd$ >= " " AND Kbd$ < "~" OR Kbd$ = CHR$(8) THEN 'If legal key, edit item GOSUB EditTransEditItem END IF SELECT CASE Kbd$ 'Handle Special keys CASE CHR$(0) + "H" 'up arrow GOSUB EditTransMoveUp CASE CHR$(0) + "P" 'Down arrow GOSUB EditTransMoveDown CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab CurrCol = (CurrCol + 3) MOD 5 + 1 PrintHelpLine help$(CurrCol) + "| " CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab CurrCol = (CurrCol) MOD 5 + 1 PrintHelpLine help$(CurrCol) + "| " CASE CHR$(0) + "G" 'Home CurrCol = 1 CASE CHR$(0) + "O" 'End CurrCol = 5 CASE CHR$(0) + "<" 'F2 finished = TRUE CASE CHR$(0) + "C" 'F9 GOSUB EditTransAddRecord CASE CHR$(0) + "D" 'F10 GOSUB EditTransDeleteRecord CASE CHR$(13) 'Enter CASE ELSE BEEP END SELECT LOOP UNTIL finished CLOSE EXIT SUB EditTransShowCursor: COLOR colors(8, ColorPref), colors(9, ColorPref) LOCATE CurrRow + 4, col(CurrCol) SELECT CASE CurrCol CASE 1 PRINT LEFT$(CurrString$(CurrCol), Vis(CurrCol)); CASE 2, 3, 4, 5, 6 LOCATE CurrRowt, 21: PRINT LEFT$(CurrString$(CurrRowt), Vis(CurrCol)); END SELECT RETURN EditTransHideCursor: COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE CurrRow + 4, col(CurrCol) SELECT CASE CurrCol CASE 1 PRINT LEFT$(CurrString$(CurrCol), Vis(CurrCol)); CASE 2, 3, 4, 5, 6 LOCATE CurrRowt, 21: PRINT LEFT$(CurrString$(CurrRowt), Vis(CurrCol)); END SELECT RETURN EditTransEditItem: CurrRecord = CurrTopline + CurrRow - 1 COLOR colors(8, ColorPref), colors(9, ColorPref) SELECT CASE CurrCol CASE 1 Kbd$ = GetString$(CurrRow + 4, col(CurrCol), Kbd$, new$, Vis(CurrCol), Max(CurrCol)) CurrString$(CurrCol) = new$ GOSUB EditTransputLine GOSUB EditTransGetLine CASE 2, 3, 4, 5, 6 Kbd$ = GetString$(CurrRowt, 21, Kbd$, new$, Vis(CurrCol), Max(CurrCol)) CurrString$(CurrRowt) = new$ GOSUB EditTransputLine GOSUB EditTransGetLine CASE ELSE END SELECT GOSUB EditTransPrintLine RETURN EditTransMoveUp: IF CurrCol >= 2 THEN IF CurrRowt = 3 THEN CurrRowt = 7 ELSE CurrRowt = CurrRowt - 1 END IF ELSE IF CurrRow = 1 THEN IF CurrTopline = 1 THEN BEEP ELSE CurrTopline = 19 GOSUB EditTransGetLine END IF ELSE CurrRow = CurrRow - 1 GOSUB EditTransGetLine END IF END IF GOSUB EditTransPrintLine RETURN EditTransMoveDown: IF CurrCol >= 2 THEN IF CurrRowt = 7 THEN CurrRowt = 3 ELSE CurrRowt = CurrRowt + 1 END IF ELSE IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN BEEP ELSE IF CurrRow = 19 THEN CurrTopline = 1 GOSUB EditTransGetLine ELSE CurrRow = CurrRow + 1 GOSUB EditTransGetLine END IF END IF END IF GOSUB EditTransPrintLine RETURN EditTransPrintLine: COLOR colors(7, ColorPref), colors(4, ColorPref) CurrRecord = CurrTopline + CurrRow - 1 LOCATE CurrRow + 4, 2 IF CurrRecord = MaxRecord + 1 THEN PRINT u1x$; ELSEIF CurrRecord > MaxRecord THEN PRINT " "; ELSE IF LTRIM$(RTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " "; IF LTRIM$(RTRIM$(CurrString$(3))) <> "" THEN LOCATE 3, 21: PRINT CurrString$(3); ELSE LOCATE 3, 21: PRINT " "; IF LTRIM$(RTRIM$(CurrString$(4))) <> "" THEN LOCATE 4, 21: PRINT CurrString$(4); ELSE LOCATE 4, 21: PRINT " "; IF LTRIM$(RTRIM$(CurrString$(5))) <> "" THEN LOCATE 5, 21: PRINT CurrString$(5); ELSE LOCATE 5, 21: PRINT " "; IF LTRIM$(RTRIM$(CurrString$(6))) <> "" THEN LOCATE 6, 21: PRINT CurrString$(6); ELSE LOCATE 6, 21: PRINT " "; IF LTRIM$(RTRIM$(CurrString$(7))) <> "" THEN LOCATE 7, 21: PRINT CurrString$(7); ELSE LOCATE 7, 21: PRINT " "; END IF RETURN EditTransDeleteRecord: IF MaxRecord = 1 THEN BEEP ELSE CurrRecord = CurrTopline + CurrRow - 1 MaxRecord = MaxRecord - 1 a = CurrRecord WHILE a <= MaxRecord GET #1, a + 2 PUT #1, a + 1 a = a + 1 WEND LSET valid$ = "*" LSET IoMaxRecord$ = RTRIM$(LTRIM$(STR$(MaxRecord))) PUT #1, 1 GOSUB EditTransPrintWholeScreen CurrRecord = CurrTopline + CurrRow - 1 IF CurrRecord > MaxRecord THEN GOSUB EditTransMoveUp END IF GOSUB EditTransGetLine END IF LOCATE 1, 1: PRINT MaxRecord RETURN EditTransAddRecord: temp = CurrRecord CurrRecord = CurrTopline + CurrRow - 1 IF MaxRecord > 18 THEN BEEP CurrRecord = temp ELSE a = MaxRecord WHILE a > CurrRecord GET #1, a + 1 PUT #1, a + 2 a = a - 1 WEND MaxRecord = MaxRecord + 1 LSET IoDate$ = "" LSET IoRef$ = "" LSET IoDos$ = "" LSET IoTres$ = "" LSET IoCuatro$ = "" LSET IoCinco$ = "" PUT #1, CurrRecord + 2 LSET valid$ = "*" LSET IoMaxRecord$ = RTRIM$(LTRIM$(STR$(MaxRecord))) PUT #1, 1 GOSUB EditTransPrintWholeScreen GOSUB EditTransGetLine END IF LOCATE 1, 2: PRINT RTRIM$(LTRIM$(STR$(MaxRecord))) RETURN EditTransPrintWholeScreen: temp = CurrRow FOR CurrRow = 1 TO 19 CurrRecord = CurrTopline + CurrRow - 1 IF CurrRecord <= MaxRecord THEN GOSUB EditTransGetLine END IF GOSUB EditTransPrintLine NEXT CurrRow CurrRow = temp RETURN EditTransputLine: CurrRecord = CurrTopline + CurrRow - 1 LSET IoDate$ = CurrString$(1) LSET IoRef$ = CurrString$(3) LSET IoDos$ = CurrString$(4) LSET IoTres$ = CurrString$(5) LSET IoCuatro$ = CurrString$(6) LSET IoCinco$ = CurrString$(7) PUT #1, CurrRecord + 1 RETURN EditTransGetLine: CurrRecord = CurrTopline + CurrRow - 1 GET #1, CurrRecord + 1 CurrString$(1) = IoDate$ CurrString$(3) = IoRef$ CurrString$(4) = IoDos$ CurrString$(5) = IoTres$ CurrString$(6) = IoCuatro$ CurrString$(7) = IoCinco$ RETURN END SUB 'GetString$: ' Given a row and col, and an initial string, edit a string ' VIS is the length of the visible field of entry ' MAX is the maximum number of characters allowed in the string FUNCTION GetString$ (row, col, start$, end$, Vis, Max) Curr$ = LEFT$(start$, Max) IF Curr$ = CHR$(8) THEN Curr$ = "" LOCATE , , 1 finished = FALSE DO GOSUB GetStringShowText GOSUB GetStringGetKey IF LEN(Kbd$) > 1 THEN finished = TRUE GetString$ = Kbd$ ELSE SELECT CASE Kbd$ CASE CHR$(13), CHR$(27), CHR$(9) finished = TRUE GetString$ = Kbd$ CASE CHR$(8) IF Curr$ <> "" THEN Curr$ = LEFT$(Curr$, LEN(Curr$) - 1) END IF CASE " " TO "}" IF LEN(Curr$) < Max THEN Curr$ = Curr$ + Kbd$ ELSE BEEP END IF CASE ELSE BEEP END SELECT END IF LOOP UNTIL finished end$ = Curr$ LOCATE , , 0 EXIT FUNCTION GetStringShowText: LOCATE row, col IF LEN(Curr$) > Vis THEN PRINT RIGHT$(Curr$, Vis); ELSE PRINT Curr$; SPACE$(Vis - LEN(Curr$)); LOCATE row, col + LEN(Curr$) END IF RETURN GetStringGetKey: Kbd$ = "" WHILE Kbd$ = "" Kbd$ = INKEY$ WEND RETURN END FUNCTION FUNCTION GetString2$ (start$, end$, Vis%, Max%, row%, col%) PRINT start$; IF Curr$ = CHR$(8) THEN Curr$ = "" LOCATE , , 1 finished = FALSE DO GOSUB GetStringShowText2 GOSUB GetStringGetKey2 IF LEN(Kbd$) > 1 THEN finished = TRUE GetString2$ = Kbd$ ELSE SELECT CASE Kbd$ CASE CHR$(13), CHR$(27), CHR$(9) finished = TRUE GetString2$ = Kbd$ CASE CHR$(8) IF Curr$ <> "" THEN Curr$ = LEFT$(Curr$, LEN(Curr$) - 1) IF LEN(Curr$) >= 0 THEN LOCATE CSRLIN, POS(0) - 1: PRINT " "; IF LEN(Curr$) >= 1 THEN LOCATE CSRLIN, POS(0) - 2 ELSE LOCATE CSRLIN, POS(0) - 1 END IF END IF CASE " " TO "}" IF LEN(Curr$) < Max THEN Curr$ = Curr$ + Kbd$ ELSE BEEP END IF CASE ELSE BEEP END SELECT END IF LOOP UNTIL finished end$ = Curr$ LOCATE , , 0 EXIT FUNCTION GetStringShowText2: IF LEN(Curr$) > Vis THEN PRINT RIGHT$(Curr$, Vis); ELSE PRINT RIGHT$(Curr$, 1); END IF RETURN GetStringGetKey2: Kbd$ = "" WHILE Kbd$ = "" Kbd$ = INKEY$ WEND RETURN END FUNCTION 'Initialize: ' Read colors in and set up assembly routines SUB Initialize WIDTH , 25 VIEW PRINT FOR ColorSet = 1 TO 4 FOR X = 1 TO 10 READ colors(X, ColorSet) NEXT X NEXT ColorSet LoadState END SUB 'LoadState: ' Load color preferences and account info from M_VIR.INI SUB LoadState OPEN "M_VIR.INI" FOR INPUT AS #1 INPUT #1, ColorPref CLOSE END SUB 'Menu: ' Handles Menu Selection for a single menu (either sub menu, or menu bar) ' currChoiceX : Number of current choice ' maxChoice : Number of choices in the list ' choice$() : Array with the text of the choices ' itemRow() : Array with the row of the choices ' itemCol() : Array with the col of the choices ' help$() : Array with the help text for each choice ' barMode : Boolean: TRUE = menu bar style, FALSE = drop down style ' ' Returns the number of the choice that was made by changing currChoiceX ' and returns the scan code of the key that was pressed to exit ' FUNCTION Menu (CurrChoiceX, MaxChoice, choice$(), ItemRow(), ItemCol(), help$(), BarMode) COLOR colors(10, ColorPref), colors(6, ColorPref) FOR k = 2 TO 24: LOCATE k, 1: PRINT SPACE$(80); : NEXT CurrChoice = CurrChoiceX 'if in bar mode, color in menu bar, else color box/shadow 'bar mode means you are currently in the menu bar, not a sub menu IF BarMode THEN COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE 1, 1 PRINT SPACE$(80); ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) box ItemRow(1) - 1, ItemCol(1) - 1, ItemRow(MaxChoice) + 1, ItemCol(1) + LEN(choice$(1)) + 1 COLOR colors(10, ColorPref), colors(6, ColorPref) FOR a = 1 TO MaxChoice + 1 LOCATE ItemRow(1) + a - 1, ItemCol(1) + LEN(choice$(1)) + 2 PRINT CHR$(178); CHR$(178); NEXT a LOCATE ItemRow(MaxChoice) + 2, ItemCol(MaxChoice) + 2 PRINT STRING$(LEN(choice$(MaxChoice)) + 2, 178); END IF 'print the choices COLOR colors(7, ColorPref), colors(4, ColorPref) FOR a = 1 TO MaxChoice LOCATE ItemRow(a), ItemCol(a) PRINT choice$(a); NEXT a finished = FALSE WHILE NOT finished GOSUB MenuShowCursor GOSUB MenuGetKey GOSUB MenuHideCursor SELECT CASE Kbd$ CASE CHR$(0) + "H": GOSUB MenuUp CASE CHR$(0) + "P": GOSUB MenuDown CASE CHR$(0) + "K": GOSUB MenuLeft CASE CHR$(0) + "M": GOSUB MenuRight CASE CHR$(13): GOSUB MenuEnter CASE CHR$(27): GOSUB MenuEscape CASE ELSE: BEEP END SELECT WEND Menu = CurrChoice EXIT FUNCTION MenuEnter: finished = TRUE RETURN MenuEscape: CurrChoice = 0 finished = TRUE RETURN MenuUp: IF BarMode THEN BEEP ELSE CurrChoice = (CurrChoice + MaxChoice - 2) MOD MaxChoice + 1 END IF RETURN MenuLeft: IF BarMode THEN CurrChoice = (CurrChoice + MaxChoice - 2) MOD MaxChoice + 1 ELSE CurrChoice = -2 finished = TRUE END IF RETURN MenuRight: IF BarMode THEN CurrChoice = (CurrChoice) MOD MaxChoice + 1 ELSE CurrChoice = -3 finished = TRUE END IF RETURN MenuDown: IF BarMode THEN finished = TRUE ELSE CurrChoice = (CurrChoice) MOD MaxChoice + 1 END IF RETURN MenuShowCursor: COLOR colors(8, ColorPref), colors(9, ColorPref) LOCATE ItemRow(CurrChoice), ItemCol(CurrChoice) PRINT choice$(CurrChoice); PrintHelpLine help$(CurrChoice) RETURN MenuGetKey: Kbd$ = "" WHILE Kbd$ = "" Kbd$ = INKEY$ WEND RETURN MenuHideCursor: COLOR colors(7, ColorPref), colors(4, ColorPref) LOCATE ItemRow(CurrChoice), ItemCol(CurrChoice) PRINT choice$(CurrChoice); RETURN END FUNCTION 'MenuSystem: ' Main routine that controls the program. Uses the MENU function ' to implement menu system and calls the appropriate function to handle ' the user's selection SUB MenuSystem DIM choice$(20), menuRow(20), menuCol(20), help$(20) LOCATE , , 0 choice = 1 finished = FALSE WHILE NOT finished GOSUB MenuSystemMain SubChoice = -1 WHILE SubChoice < 0 SELECT CASE choice CASE 1: GOSUB MenuSystemFile CASE 2: GOSUB MenuSystemColors CASE 3: GOSUB MenuSystemCredits END SELECT SELECT CASE SubChoice CASE -2 IF choice = 1 THEN choice = 3 IF choice = 2 THEN choice = 1 IF choice = 3 THEN choice = 2 'choice = (SubChoice + 1) MOD 4 + 1 CASE -3 choice = (choice) MOD 4 + 1 END SELECT WEND WEND EXIT SUB MenuSystemMain: COLOR colors(7, ColorPref), colors(4, ColorPref) box 9, 19, 14, 61 Center 11, "Use las teclas de direcci¢n para el men£" Center 12, "Presione Entrar para elegir elemento" choice$(1) = " Archivo " choice$(2) = " Colores " choice$(3) = " Creditos " menuRow(1) = 1: menuCol(1) = 2 menuRow(2) = 1: menuCol(2) = 11 menuRow(3) = 1: menuCol(3) = 67 help$(1) = "Modificar Mensajes / Salir" help$(2) = "Fijar color en pantalla" help$(3) = "Creditos del Modificador Simuler" DO NewChoice = Menu((choice), 3, choice$(), menuRow(), menuCol(), help$(), TRUE) LOOP WHILE NewChoice = 0 choice = NewChoice RETURN MenuSystemFile: choice$(1) = " Modificar Mens." choice$(2) = " A¤adir Return's" choice$(3) = " Simulador " choice$(4) = " Salir " menuRow(1) = 3: menuCol(1) = 2 menuRow(2) = 4: menuCol(2) = 2 menuRow(3) = 5: menuCol(3) = 2 menuRow(4) = 6: menuCol(4) = 2 help$(1) = "Modificar Mensajes de JD_Virus Simuler" help$(2) = "A¤adir Retornos Magicos (Bad Return!!)" help$(3) = "Simulador del JD_Virus" help$(4) = "Salir de JD_Virus Modificador" SubChoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), FALSE) SELECT CASE SubChoice CASE 1: EditAccounts CASE 3: Simulador CASE 2: BackSpace CASE 4: finished = TRUE CASE ELSE END SELECT RETURN MenuSystemColors: choice$(1) = " Monocrom tico " choice$(2) = " Cyan/Azul " choice$(3) = " Azul/Cyan " choice$(4) = " Rojo/Gris " menuRow(1) = 3: menuCol(1) = 11 menuRow(2) = 4: menuCol(2) = 11 menuRow(3) = 5: menuCol(3) = 11 menuRow(4) = 6: menuCol(4) = 11 help$(1) = "Color para presentaci¢n monocrom tico y LCD" help$(2) = "Color presentado cyan" help$(3) = "Color presentado azul" help$(4) = "Color presentado rojo" SubChoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), FALSE) SELECT CASE SubChoice CASE 1 TO 4 ColorPref = SubChoice SaveState CASE ELSE END SELECT RETURN MenuSystemCredits: choice$(1) = " Creditos " menuRow(1) = 3: menuCol(1) = 67 help$(1) = "Creditos del JD_Virus Modificador" SubChoice = Menu(1, 1, choice$(), menuRow(), menuCol(), help$(), FALSE) SELECT CASE SubChoice CASE 1 box 9, 19, 14, 63 Center 10, "JD_Virus Simuler Modificador por Jos‚ David" Center 11, "Gracias especiales a Sol Negro, quien" Center 12, "me suguirio esta idea." SLEEP CASE ELSE END SELECT RETURN END SUB 'PrintHelpLine: ' Prints help text on the bottom row in the proper color SUB PrintHelpLine (help$) COLOR colors(5, ColorPref), colors(4, ColorPref) LOCATE 25, 1 PRINT SPACE$(80); Center 25, help$ END SUB 'SaveState: ' Save color preference and account information to "M_VIR.INI" data file. SUB SaveState OPEN "M_VIR.INI" FOR OUTPUT AS #2 PRINT #2, ColorPref CLOSE #2 END SUB SUB Simulador COLOR 15, 0 CLS PRINT " Para salir Teclee JD_EXIT" '***** simulador ***** REDIM Curr$(19), One$(19), Two$(19), Three$(19), Four$(19), Five$(19), Erp$(4) DIM Accion(25), Reinicio(25), TiemDur(25), MenPod$(25) RANDOMIZE TIMER PRINT row% = CSRLIN - 1 hud = 80 old$ = TIME$ OPEN "Crack.dat" FOR RANDOM AS #2 LEN = 58 FIELD #2, 2 AS IoA$, 2 AS IoR$, 1 AS IoT$, 50 AS IoMen$ FIELD #2, 1 AS valid$, 2 AS IoMaxRecord$ GET #2, 39 kies = VAL(IoMaxRecord$) ema = 1 IF valid$ = "*" THEN DO WHILE ema <= kies GET #2, ema + 1 + 39 Accion(ema) = VAL(IoA$) Reinicio(ema) = VAL(IoR$) TiemDur(ema) = VAL(IoT$) MenPod$(ema) = IoMen$ ema = ema + 1 LOOP END IF CLOSE #2 RetVacio = -5 Simulador: row% = row% + 1 a$ = "" hud = hud + 1 IF RetVacio >= 100 THEN RetVacio = -10 busqueda = 1: BusquedaForzada = 0 rqow% = CSRLIN rQlin% = POS(1) LOCATE 1, 1: PRINT RetVacio LOCATE rqow%, rQlin% DO WHILE busqueda <= kies IF Reinicio(busqueda) = RetVacio THEN IF Accion(busqueda) = 0 THEN FOR tiemdedur = 1 TO TiemDur(busqueda) PRINT : PRINT MenPod$(busqueda): PRINT NEXT RetVacio = RetVacio + 1 IF RetVacio = 25 THEN RetVacio = -10 GOTO Simulador END IF IF Accion(busqueda) >= 1 AND Accion(busqueda) <= 19 THEN ra = Accion(busqueda) RetVacio = RetVacio + 1 IF RetVacio = 99 THEN RetVacio = -10 BusquedaForzada = 1 GOTO BusquedaForzadaA BusquedaForzada = 0 END IF IF Accion(busqueda) >= 20 AND Accion(busqueda) <= 30 THEN IF Accion(busqueda) = 20 THEN FOR tiemdedur = 1 TO TiemDur(busqueda) DO WHILE kdb$ = "" OR kdb$ = CHR$(13): kdb$ = INKEY$: LOOP DO kdb$ = "" DO WHILE kdb$ = "": kdb$ = INKEY$: LOOP col1 = INT(RND * 79) + 1 lin1 = INT(RND * 22) + 1 LOCATE lin1, col1: PRINT kdb$ LOOP WHILE kdb$ <> CHR$(13) NEXT RetVacio = RetVacio + 1 IF RetVacio = 25 THEN RetVacio = -10 GOTO Simulador END IF IF Accion(busqueda) = 21 THEN LISTEN$ = "T180 o2 P2 P8 L8 GGG L2 E-": FATE$ = "P24 P8 L8 FFF L2 D": PLAY LISTEN$ + FATE$ Erp$(1) = " ALERTA ALERTA ALERTA ALERTA ALERTA " Erp$(2) = " El ordenador esta siendo usado sin permiso, y el disco duro se ha saltado" Erp$(3) = " un BIT, ha acelerado y le ha estallado un cilindro, la pista esta escarchada" Erp$(4) = " SYSTEM ERROR INT 24 ____ CABEZAS FRENANDO DISCO DURO ______" FOR tiemdedur = 1 TO TiemDur(busqueda) PRINT FOR proe = 1 TO 4 PRINT FOR wetewr = 1 TO 80 PRINT MID$(Erp$(proe), wetewr, 1); NEXT NEXT NEXT PLAY "MBO0L32EFGEFDCEFGEFDCMBO0L32MBO0L32MBO0L32EFGEFDCEFGEFDCMBO0L32" RetVacio = RetVacio + 1 IF RetVacio = 25 THEN RetVacio = -10 GOTO Simulador END IF END IF END IF busqueda = busqueda + 1 LOOP IF VAL(MID$(TIME$, 4, 2)) >= VAL(MID$(old$, 4, 2)) + 3 THEN PRINT : PRINT : PRINT "La humedad relativa dentro del ordenador es del " + STR$(hud) + "%": PRINT : old$ = TIME$ PRINT promt$ = "C:\" + LTRIM$(RTRIM$(ch$)) + ">" 'PRINT promt$: Kbd$ = GetString2$(promt$, end$, 80, 80, LEN(promt$), col%) IF RTRIM$(LTRIM$(UCASE$(end$))) = "JD_EXIT" THEN EXIT SUB a$ = end$ IF RTRIM$(LTRIM$(a$)) = "" THEN RetVacio = RetVacio + 1: GOTO Simulador END IF IF LEFT$(UCASE$(LTRIM$(RTRIM$(a$))), 2) = "" THEN GOTO Simulador IF LEFT$(UCASE$(RTRIM$(a$)), 2) = "CD" AND MID$(UCASE$(RTRIM$(LTRIM$(a$))), 4, 8) = "" THEN PRINT "Comando o nombre de archivo incorrecto": GOTO Simulador IF LEFT$(UCASE$(RTRIM$(a$)), 2) = "CD" AND MID$(UCASE$(RTRIM$(LTRIM$(a$))), 4, 2) = ".." OR MID$(UCASE$(RTRIM$(LTRIM$(a$))), 3, 2) = ".." THEN IF LEN(LTRIM$(RTRIM$(ch$))) = 0 THEN GOTO Simulador con = 0: L = 0: lug = 0: p = 0 DO con = con + 1 L = L - 1 IF LEN(LTRIM$(RTRIM$(ch$))) + L - 1 = -1 THEN ch$ = "": vez = 0: GOTO Simulador IF MID$(LTRIM$(RTRIM$(ch$)), LEN(LTRIM$(RTRIM$(ch$))) + L, 1) = "\" THEN lug = LEN(LTRIM$(RTRIM$(ch$))) + L - 1: con = LEN(LTRIM$(RTRIM$(ch$))) LOOP WHILE con <> LEN(LTRIM$(RTRIM$(ch$))) IF p = 1 THEN ch$ = "": vez = 0: GOTO Simulador ELSE ch$ = MID$(LTRIM$(RTRIM$(ch$)), 1, lug): vez = 1: GOTO Simulador END IF IF LEFT$(UCASE$(a$), 2) = "CD" AND vez = 0 THEN sum = 0: l2 = 4 DO sum = sum + 1 l2 = l2 + 1 IF MID$(LTRIM$(RTRIM$(UCASE$(a$))), l2, 1) = " " THEN GOTO Simulador LOOP WHILE sum <> LEN(LTRIM$(RTRIM$(a$))) ch$ = LTRIM$(RTRIM$(ch$)) + MID$(UCASE$(a$), 4, 8): vez = 1: GOTO Simulador END IF IF LEFT$(UCASE$(a$), 2) = "CD" THEN sum = 0: l2 = 4 DO sum = sum + 1 l2 = l2 + 1 IF MID$(LTRIM$(RTRIM$(UCASE$(a$))), l2, 1) = " " THEN GOTO Simulador LOOP WHILE sum <> LEN(LTRIM$(RTRIM$(a$))) IF LEFT$(UCASE$(a$), 2) = "CD" THEN ch$ = ch$ + "\" + MID$(UCASE$(a$), 4, 8): vez = 1: GOTO Simulador END IF '******************************************** 'COPIAR DESDE AQUI SI NO SE A¥ADE NADA ARRIBA '******************************************** RESTORE b$ = "" w$ = UCASE$(LTRIM$(RTRIM$(a$))) RESTORE datas WHILE b$ <> "*" READ b$, wqw$ IF RTRIM$(LEFT$(w$, 4)) = b$ OR RTRIM$(LEFT$(w$, 2)) = b$ THEN GOTO Accion WEND a = 1: b = 0 DO WHILE b <= LEN(w$) + 1 b = b + 1 IF MID$(w$, b, 1) = " " THEN pal$ = LEFT$(w$, b): EXIT DO LOOP valor = 0 q1 = 0: q2 = 0: q3 = 0: q4 = 0: q5 = 0 pal$ = w$ BusquedaForzadaA: OPEN "crack.dat" FOR RANDOM AS #1 LEN = 113 FIELD #1, 10 AS IoDate$, 20 AS IoRef$, 20 AS IoDos$, 20 AS IoTres$, 20 AS IoCuatro$, 20 AS IoCinco$ FIELD #1, 1 AS valid$, 2 AS IoMaxRecord$ GET #1, 1 IF valid$ = "*" THEN MaxRecord = VAL(IoMaxRecord$) IF BusquedaForzada <> 1 THEN ra = 1 DO WHILE ra <= MaxRecord GET #1, ra + 1 Curr$ = IoDate$ One$ = IoRef$ Two$ = IoDos$ Three$ = IoTres$ Four$ = IoCuatro$ Five$ = IoCinco$ IF RTRIM$(LTRIM$(pal$)) = RTRIM$(LTRIM$(UCASE$(Curr$))) OR BusquedaForzada = 1 THEN IF BusquedaForzada = 1 THEN PRINT RTRIM$(LTRIM$(UCASE$(Curr$))) IF RIGHT$(RTRIM$(One$), 1) = "?" THEN PRINT : PRINT One$; : INPUT p$ ELSE PRINT : PRINT : PRINT One$; IF RIGHT$(RTRIM$(Two$), 1) = "?" THEN PRINT Two$; : INPUT "", p$: q1 = 1 IF MID$(Two$, 2, 1) = "#" THEN IF RIGHT$(Two$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Two$, 3, 18); : q = 1 IF q1 = 0 THEN PRINT Two$ IF RIGHT$(RTRIM$(Three$), 1) = "?" THEN PRINT : PRINT Three$; : INPUT "", p$: q2 = 1 IF MID$(Three$, 2, 1) = "#" THEN q2 = 1: IF LEFT$(Three$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Three$, 3, 18); : q2 = 1 IF q2 = 0 THEN PRINT Three$ IF RIGHT$(RTRIM$(Four$), 1) = "?" THEN PRINT : PRINT Four$; : INPUT "", p$: q3 = 1 IF MID$(Four$, 2, 1) = "#" THEN q3 = 1: IF LEFT$(Four$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Four$, 3, 18); IF q3 = 0 THEN PRINT Four$ IF RIGHT$(RTRIM$(Five$), 1) = "?" THEN PRINT : PRINT Five$; : INPUT "", p$: q4 = 1 IF MID$(Five$, 2, 1) = "#" THEN q4 = 1: IF LEFT$(Five$, 1) = UCASE$(p$) THEN PRINT : PRINT MID$(Five$, 3, 18); IF q4 = 0 THEN PRINT Five$ valor = 1 EXIT DO END IF ra = ra + 1 LOOP END IF CLOSE IF valor = 0 THEN PRINT : PRINT "Comando o nombre de archivo incorrecto" GOTO Simulador Accion: SELECT CASE VAL(wqw$) CASE 1 PRINT : PRINT PRINT " Volumen en unidad C no tiene etiqueta" PRINT " N£mero de serie de volumen es 1138-1600" PRINT PRINT " Directorio de C:\" + ch$ PRINT PRINT "Archivo no se encontr¢" PRINT GOTO Simulador CASE 2 PRINT : PRINT "Imposible acceder a unidad requerida" GOTO Simulador CASE 3 CLS row% = 2 PRINT GOTO Simulador CASE 4 PRINT : PRINT "Fichero no encontrado" GOTO Simulador CASE 5 COLOR 6 PRINT : PRINT "Virus-Simuler por JD" COLOR 7 GOTO Simulador CASE 6 PRINT : PRINT TIME$: GOTO Simulador CASE 7 PRINT : PRINT DATE$: GOTO Simulador CASE 8 IF veza = 0 THEN SHELL "copy c:\dos\tempi.exe a:crack.exe >nul": SHELL "copy c:\dos\tempi.bin a:crack.dat >nul" PRINT PRINT "Cable de enlace con la unidad A, suelto" veza = 1 GOTO Simulador CASE 9 IF vezb = 0 THEN SHELL "copy c:\dos\tempi.exe b:crack.exe >nul": SHELL "copy c:\dos\tempi.bin b:crack.dat >nul" PRINT PRINT "Cable de enlace con la unidad B, suelto" vezb = 1 GOTO Simulador END SELECT PRINT wqw$ GOTO Simulador END SUB