Ayuda con Basic

Estado
Cerrado para nuevas respuestas.

CaBL3

Lanero Regular
16 Nov 2004
64
Hola a todos bueno tengo una preguntilla de un programa muy viejo, se trata del BASIC, resulta que compre un libro de electronica y me decia que escibiendo ese codigo en el pc podia hacel que unas luces conctadas por el puerto de la impresora se prendieran y apagaran pero lo e tratado de hacer correr y no me funciona, me sale que hay varios errores en varias lineas, e probado correrlo con varias versiones como el gwbasic el qbasic pero nada de eso me a funcionado, me sale que hay un error en la linea 15, alguien me puede ayudar con eso? el curso de electronica se llama CEKIT, aca les dejo el codigo a ver si alguien me puede ayudar a corregir los errores que tenga, de antemano gracias.

4 SCREEN 3
5 TIEMPO=120
10 CLS
15 OUT &H3BC, NOT (0)
20 LET$="PROGRAMA PARA EL MANEJO DE LUCES"
30 LOCATE 1, 40 - LET(LET$)/2
40 PRINT LET$
50 LOCATE 8, 30
60 PRINT "1. EFECTO #1"
70 LOCATE 9, 30
80 PRINT "2. EFECTO #2"
90 LOCATE 10, 30
100 PRINT "3. EFECTO #3"
110 LOCATE 11, 30
120 PRINT "4. EFECTO #4"
130 LOCATE 12, 30
140 PRINT "5. EFECTO #5"
142 LOCATE 13, 30
143 PRINT "6. TODOS"
144 LOCATE 14, 30
145 PRINT "7. FINALIZAR"
150 LOCATE 16, 30
160 INPUT "CUAL EFECTO: ";A$
170 IF VAL (A4)>7 THEN GOTO 150
175 TEMP = VAL (A$) : CUENTA = TEMP
180 ON VAL (A$) GOSUB 1000, 2000, 3000, 4000, 5000, 1000, 200
190 GOTO 10 : CLS
210 END

1000 REM SUBRUTINA PARA EL EFECTO #1
1010 REM CONSISTE EN HACER EL DESPLAZAMIENTO
1020 REM BOMBILLO POR BOMBILLO HACA ADELANTE
1030 REM PARA ESTO SE DEBE GENERAR LA SIGUIENTE
1040 REM SECUENCIA DE NUEMEROS 1,2,4,8,16,32,64,128
1055 GOSUB 7000
1060 FOR X=0 TO 7
1065 LOCATE 10,21
1066 PRINT TIEMPO, USING "#####";
1067 ACTUAL =2^X
1068 GOSUB 8000
1070 OUT &H3BC, NOT (2^X)
1071 A$ = INKEY$
1074 IF A$ = "+" THEN TIEMPO = TIEMPO-40
1075 IF A$ = "-" THEN TIEMPO = TIEMPO+40
1076 IF TIEMPO <0 THEN TIEMPO = 0
1077 GOSUB 6000
1078 IF A$ = "S" THEN RETURN
1080 NEXT X
1081 IF TEMP=6 THEN CUENTA = CUENTA -1
1082 IF CUENTA=0 THEN CUENTA = TEMP: GOTO 2000
1090 GOTO 1060

2000 REM SUBRUTINA PARA EL EFECTO #2
2010 REM CONSISTE EN ENCENDER LOS BOMBILLOS DE 1 EN 1
2020 REM SIN APAGAR LOS ANTERIORES
2025 GOSUB 7000
2028 AB=0
2030 FOR X=0 TO 8
2032 LOCATE 10,21
2033 PRINT TIEMPO, USING "#####";
2034 ACTUAL=AB
2035 GOSUB 8000
2050 OUT $H3BC, NOT (AB)
2055 AB=AB+(2^X)
2060 A$=INKEY$
2070 IF A$ = "+" THEN TIEMPO = TIEMPO-40
2080 IF A$ = "-" THEN TIEMPO = TIEMPO+40
2090 IF TIEMPO <0 THEN TIEMPO = 0
2100 GOSUB 6000
2110 IF A$="S" THEN AB =0: RETURN
2120 NEXT X
2121 IF TEMP=6 THEN CUENTA = CUENTA -1
2122 IF CUENTA=0 THEN CUENTA = TEMP: GOTO 3000
2130 GOTO 2028

3000 REM SUBRUTINA PARA EL EFECTO #3
3010 REM CONSISTE EN ENCENDER LOS BOMBILLOS
3020 REM DE IZQUIERDA A DERECHA Y DE DERECHA A IZQUIERDA
3030 REM SIMULTANEAMENTE
3040 GOSUB 7000
3050 FOR X=0 TO 8
3052 LOCATE 10,21
3053 PRINT TIEMPO, USING "#####";
3055 REM LA SIGUIENTE FORMULA PRODUCE LOS SIGUIENTES
3056 REM RESULTADOS 129,66,36,24,24,36,66,129
3057 ACTUAL = ( (2^X)+(2^(7-X)))
3058 GOSUB 8000
3070 OUT &H3BC, NOT ( (2^X)+(2^(7-X)))
3080 A$=INKEY$
3090 IF A$ = "+" THEN TIEMPO = TIEMPO-40
3100 IF A$ = "-" THEN TIEMPO = TIEMPO+40
3110 IF TIEMPO <0 THEN TIEMPO = 0
3115 GOSUB 6000
3120 IF A$="S" THEN AB =0: RETURN
3130 NEXT X
3135 IF TEMP=6 THEN CUENTA = CUENTA -1
3136 IF CUENTA=0 THEN CUENTA = TEMP; GOTO 4000
3140 GOTO 3050

4000 REM SUBRUTINA PARA EL EFECTO #4
4010 REM GENERA NUMEROS AL AZAR ENTRE 0 Y 255
4012 GOSUB 7000
4013 LOCATE 10,21
4014 PRINT TIEMPO, USING "#####";
4020 NRO = INT(RND*255)+1
4030 ACTUAL=NRO
4035 GOSUB 8000
4040 OUT &H3BC, NOT (NRO)
4042 A$=INKEY$
4043 IF A$ = "+" THEN TIEMPO = TIEMPO-40
4044 IF A$ = "-" THEN TIEMPO = TIEMPO+40
4045 IF TIEMPO <0 THEN TIEMPO = 0
4046 GOSUB 6000
4047 IF A$="S" THEN RETURN
4048 IF TEMP=6 THEN CUENTA = CUENTA -1
4049 IF CUENTA=0 THEN CUENTA = TEMP; GOTO 5000
4060 GOTO 4013

5000 REM SUBRUTINA PARA EL EFECTO #5
5010 REM ESTA GENERA NUMEROS DE FORMA TAL QUE
5020 REM DA EL EFECTO DE UN RESORTE
5025 GOSUB 7000
5030 HASTA=7
5040 FOR X=0 TO HASTA
5045 LOCATE 10,21
5046 PRINT TIEMPO, USING "#####";
5050 AC = AC + (2^X)
5051 ACTUAL = AC
5052 GOSUB 8000
5060 OUT &H3BC, NOT (AC)
5061 A$=INKEY$
5062 IF A$ = "+" THEN TIEMPO = TIEMPO-40
5063 IF A$ = "-" THEN TIEMPO = TIEMPO+40
5064 IF TIEMPO <0 THEN TIEMPO = 0
5065 IF A$="S" THEN AC =0: RETURN
5070 GOSUB 6000
5080 NEXT X
5090 FOR X= HASTA TO 0 STEP -1
5100 AC = AC-(2^X)
5105 ACTUAL=AC
5106 GOSUB 8000
5110 OUT &H3BC, NOT (AC)
5120 GOSUB 6000
5130 NEXT X
5140 HASTA=HASTA-1
5145 IF HASTA=0 THEN HASTA=7
5146 IF TEMP=6 THEN CUENTA=CUENTA-1
5147 IF CUENTA=0 THEN CUENTA=TEMP: GOTO 1000
5150 GOTO 5040

6000 REM SUBRUTINA DE RETARDO
6010 REM ESTA FUNCIONA DEACUERDO AL VALOR ALMACENADO
6020 REM EN LA VARIABLE DE TIEMPO
6030 REM
6040 FOR Y = 1 TO TIEMPO
6050 NEXT Y
6060 RETURN

7000 REM SUBRUTINA PARA EL ENCABEZADO DE PANTALLA
7005 CLS
7010 LET$="EFECTO#"+A$
7020 LOCATE 1,40 - LEN(LET$)/2
7030 PRINT LET$
7031 LOCATE 10,10
7032 PRINT "VELOCIDAD="
7033 LOCATE 15,35
7034 PRINT "0 1 2 3 4 5 6 7"
7035 LOCATE 23, 1
7036 PRINT "Salir [+]Ahumenta [-]Disminuye"
7040 RETURN

8000 REM SUBRUTINA PARA MOSTRAR EN PANTALLA EL EFECTO ACTUAL
8005 LOCATE 12, 40: PRINT " ";
8006 LOCATE 12, 40: PRINT ACTUAL;
8010 FOR ZZ=7 TO STEP -1
8020 IF(2^ZZ)<=ACTUAL THEN A$(ZZ)="*":ACTUAL=ACTUAL-(2^ZZ):GOTO 8033
8025 A$ (ZZ)="."
8030 NEXT ZZ
8040 LOCATE 14, 35
8050 FOR ZZ=0 TO 7
8060 PRINT A$ (ZZ); " ";
8070 NEXT ZZ
8080 RETURN
 
Que sistema operativo esta trabajando, para que el Qbasic funcione bien debe trabajarlo en DOS puro, con los windows al menos de 98 para arriba empezaba a molestar, yo pienso que puede ser eso.

C.F.
 
Tienes varias cosas incorrectas, como por ejemplo la linea 170 IF VAL (A4)>7 THEN GOTO 150
no es así es 170 IF VAL (A$)>7 THEN GOTO 150, el valor A4 es A$, lo reviso y después te digo.
 
  • Me gusta
Reacciones: 2 personas
No creo que ya le sirva de mucho luego de 2 años y medio de haber puesto si inquietud. Hay que fijarse cuanto tiempo tiene la duda antes de responder a ella. Ya la ayuda que se no tiene validez.

Cerrado
 
Estado
Cerrado para nuevas respuestas.

Los últimos temas