La orden EVERY permite que el programa de BASIC ejecute subrutinas a intervalos de tiempo
regulares. También en este caso se dispone de cuatro temporizadores, a cada uno de los cuales
se puede asignar una subrutina distinta.
Los temporizadores tienen prioridades de interrupción diferentes, lo que tiene importancia
cuando varios de ellos compiten por interrumpir el programa en un momento dado. El
temporizador 3 tiene la máxima prioridad, y el 0 la mínima (véase el capítulo 'Para su refe-
rencia...').
10
MODE
1:n=14:x=RND*400
20
AFTER
x,3
GOSUB
30
EVERY
25,2
GOSUB
40
EVERY
10,1
GOSUB
50
PRINT"Pruebe sus reflejos:"
60
PRINT"pulse la barra espaciadora"
70
PRINT"cuando yo le diga."
80
IF
ind=1
THEN END ELSE
90
x=REMAIN(2)
100
IF
INKEY(47)=-1
110
SOUND 1,900:PRINT"Tramposo!":GOTO
120
SOUND 129,20:PRINT"AHORA":t=TIME
130
IF
INKEY(47)=-1
150
PRINT(TIME-t)/300;"segundos"
160
CLEAR INPUT:ind=1:RETURN
170
SOUND 1,0,50:PRINT".";:RETURN
180
n=n+1:IF
n>26
190
INK 1,n:RETURN
Las órdenes AFTER y EVERY se pueden ejecutar en cualquier lugar del programa. Su efecto es
reelegir la rutina asociada y poner a cero el temporizador correspondiente. Los temporizadores
están compartidos por AFTER y EVERY, de modo que una orden AFTER cancela la anterior
EVERY referida al mismo temporizador, y viceversa.
Las órdenes DI y EI inhiben y habilitan, respectivamente, las interrupciones. Esto sirve para
permitir que cierta interrupción se procese sin ser interrumpida por otra más prioritaria. La
orden REMAIN da el tiempo que queda en un temporizador y lo desactiva.
Listas de datos
Si un programa necesita que se le suministre siempre la misma información cada vez que se lo
ejecuta, es preferible hacer que esa información esté contenida en el propio programa para no
tener que teclearla con cada ejecución. Esto es posible gracias al par de instrucciones
READ/DATA. La orden READ es similar a INPUT en el sentido de que asigna valores a variables,
pero en lugar de captar los valores por el teclado los lee en listas encabezadas por la palabra
DATA. Los dos ejemplos siguientes ilustran la diferencia:
10
"escriba 3 numeros separados por comas:
INPUT
20
PRINT"los numeros
run
10
READ a,b,c
20
PRINT"los numeros
30
DATA
12,14,21
run
90
170
180
80
THEN
120
THEN
130 140
PRINT"Ha
THEN
n=14
son";a;"y";b;"y";c
son";a;"y";b;"y";c
Manual de Amstrad CPC 6128 (revisión 2008) - Página 345
160
tardado";
",a,b,c