Files
bas/BAS/M_VIRUS.BAS
2021-09-03 17:42:07 +02:00

1625 lines
47 KiB
QBasic
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
GOSUB TransGetLine
GOSUB TransPrintLine
finished = FALSE
'Loop until <F2> 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) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
CurrCol = (CurrCol) MOD 4 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
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) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
GOSUB EditTransGetLine
GOSUB EditTransPrintLine
finished = FALSE
'Loop until <F2> 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) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab
CurrCol = (CurrCol) MOD 5 + 1
PrintHelpLine help$(CurrCol) + "| <F2=Guardar y Salir> <F9=Insert> <F10=Supr>"
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