Spectrum_PLUS_Manual_de_Usuario-MICRO_WORLD
Spectrum_PLUS_Manual_de_Usuario-MICRO_WORLD
Spectrum_PLUS_Manual_de_Usuario-MICRO_WORLD
Manual
del usuario
/MICRO
Pag. 1
PROLOGO
P o r o t r o lado, h a y b a s t a n t e g e n t e q u e o p i n a q u e l o s ordenadores
personales no son realmente útiles y que son m á s unos juguetes
caros que otra cosa.
S i por el c o n t r a r i o , y a e s t a i n i c i a d o e n la p r o g r a m a c i ó n , puede
utilizarlo como libro de consulta y !!quien sabe!! quiza
e n c u e n t r e en s u s p a g i n a s a l g ú n d a t o q u e d e s c o n o c í a .
L a b i b l i o t e c a d e p r o g r a m a s c o m e r c i a l e s p a r a el Z X S p e c t r u m e s l a
m a s e x t e n s a del mercado: existen mas de 10.000 títulos que
abarcan desde los j u e g o s d e t o d o tipo a c o m p l e t o s programas de
gestión, cálculo, cientííicos, educativos, etc. Como ejemplo,
diremos que este libro ha s i d o escrito utilizando un Spectrum
c o n un p r o g r a m a d e p r o c e s o d e t e x t o s .
A m e d i d a q u e v a y a a d q u i r i e n d o c o n o c i m i e n t o s, p o d r a c o m p r o b a r q u e
las posibilidades d e su Spectrum están mas allá del simple
j u e g o ; e s p e r a m o s q u e s u n u e v o o r d e n a d o r le d e l a s s a t i s f a c c i o n e s
q u e e s p e r a y r e c u e r d e q u e s o l o e x i s t e u n l i m i t e p a r a lo q u e Vd .
puede realizar: su imaginación.
Pag. 3
INTRODUCCION
COMO CONECTAR S U S P E C T R U M
C A P I T U L O .1
El t e c l a d o del S p e c t r u m * p o s e e 1 7 t e c l a s m a s q u e el del S p e c t r u m
normal, y a que muchas de l a s -Funciones que necesitan de la
pulsación d e d o s teclas simultáneamente poseen tecla propia en e
S p e c t r u m * . Asi p u é s s e d i s p o n e d e 5 7 t e c l a s (aparte la barra
e s p a d a d o r a ) q u e p e r m i t e n el m a n e j o d e m á s d e 2 0 0 l e t r a s , s i g n o s
y comandos. Esto puede hacer pensar que su manejo es muy
complicado, pero no e s así.
E n c i m a d e l a t e c l a ( f u e r a d e la p a r t e s o b r e s a l i e n t e d e l a m i s m a )
se hallan escritas d o s palabras clave ( o u n a palabra clave y un
símbolo), A todas estas funciones se puede acceder, bién
pulsando las t e c l a s d e a y u d a C A P S S H I F T y S Y M B O L S H I F T (que se
h a l l a n d u p l i c a d a s a a m b o s l a d o s del t e c l a d o ) o b i é n c a m b i a n d o el
" m o d o " d e o p e r a c i ó n e n q u e s e e n c u e n t r a la m á q u i n a . E s t o s modos
s ó n:
El m o d o “ K " ¡ E s t e m o d o s e a c t i v a a u t o m á t i c a m e n t e al p r i n c i p i o d e
u n a linea d e programa y n o s e desactiva hasta que
n o se haya introducido una palabra clave. También
se conecta después d e una sentencia THEN o de un
s i g n o ": ■. E n e s t e m o d o , al pulsar una tecla se
o b t i e n e la p a l a b r a c l a v e BASIC e s c r i t a en b l a n c o e n
la parte superior de la tecla (dentro del
saliente). Inmediatamente después d e la impresión
del comando c o r r e s p o n d ie nt e se activa
a u t o m á t i c a m e n t e el m o d o " L " .
El m o d o " L " : Al p u l s a r u n a t e c l a , s e o b t i e n e l a l e t r a m i n ú s c u l a
c o r r e s p o n d i e n t e. S i p u l s a m o s C A P S SHIFT al mismo
tiempo, o b t e n d r e m o s la m i s m a letra, p e r o m a y ú s c u l a .
P o r o t r o lado, si p r e s i o n a m o s S Y M B O L SHIFT y la
tecla simultáneamente, obtendremos el símbolo o
p a l a b r a e s c r i t o e n l a p a r t e c e n t r a l d e la t e c l a .
El m o d o * C “ ¡ S e a c t i v a p u l s a n d o l a t e c l a C A P S L O C K s i t u a d a e n l a
p a r t e i n f e r i o r i z q u i e r d a del t e c l a d o . E n e s t e m o d o ,
todas las letras que s e impriman serán mayúsculas.
Los signos y palabras clave escritas en el centro
d e las t e c l a s s e obtienen d e la m i s m a m a n e r a q u e e n
el m o d o " L " .
El m o d o " G " ! S e o b t i e n e p u l s a n d o la t e c l a G R A P H q u e s e e n c u e n t r a
e n la p a r t e superior izquierda del teclado. Al
activar este modo, podran obtenerse los símbolos
gráficos impresos en las teclas numéricas y
aquellos caracteres gráficos que hayamos creado
nosotros mismos, situados en las t e c l a s d e la A a
la U.
El m o d o - E " : S e a c t i v a p u l s a n d o la t e c l a E X T E N D M O D E situada a
la izquierda del teclado. De esta manera tendrá
a c c e s o a las p a l a b r a s y s i g n o s s i t u a d o s f u e r a del
saliente de las teclas. Para obtener la palabra
escrita encima, simplemente pulse la tecla
c o r r e s p o n d i e n t e. S i d e s e a i m p r i m i r la p a l a b r a d e l a
parte inferior, debe pulsar SYMBOL S H I F T al mismo
t i e m p o . U n a v e z q u e la palabra o signo ha sido
i m p r e s o , s e v u e l v e a u t o m á t i c a m e n t e al m o d o " L “ .
P a r a p u l s a r d o s t e c l a s al m i s m o t i e m p o , lo m e j o r e s u t i l i z a r el
s i g u i e n t e m é t o d o : S e p u l s a la tecla SHIFT que corresponda y
MANTENIENDOLA PULSADA se aprieta la tecla deseada. Esto le
evitará muchos fallos al teclear. Tenga en cuenta que si
mantiene pulsada una tecla durante más d e d o s segundos, empezará
la a u t o r r e p e t i c i ó n del c a r á c t e r c o r r e s p o n d i e n t e.
T o d o lo q u e v a y a t e c l e a n d o a p a r e c e r á e n la p a r t e i n f e r i o r d e la
pantalla. P o r d e l a n t e d e lo q u e v á e s c r i b i e n d o e s t á situado un
cursor e n f o r m a d e c u a d r a d o c e n t e l l e a n t e que le indica el modo
e n q u e s e e n c u e n t r a la m a q u i n a . S i p u l s a D E L E T E ( s i t u a d a en la
prte superior izquierda del teclado) el cursor retrocederá,
borrando la ultima letra o comando que se encuentre
i n m e d i a t a m e n t e d e t r á s del m i s m o . U s a n d o las teclas de cursor
( m a r c a d a s con f l e c h a s en la p a r t e inferior del teclado) podra
d e s p l a z a r el c u r s o r a lo l a r g o d e la l i n e a s i n b o r r a r n a d a . P a r a
borrar la linea c o m p l e t a p u l s e EDIT (está situada debajo de
G R A P H ).
Pag.6
El c u r s o r d e p r o g r a m a e s t a r á s i t u a d o n o r m a l m e n t e en la última
linea introducida. P u e d e colocar e s t e cursor en la linea que
q u i e r a u t i l i z a n d o l a s t e c l a s d e c u r s o r P u l s a n d o E D I T la l i n e a e n
c u r s o a p a r e c e r á en l a p a r t e i n f e r i o r d e la p a n t a l l a y p o d r á ser
m o d i f i c a d a d e la m a n e r a a n t e r i o r m e n t e m e n c i o n a d a .
PRESENTACION VISUAL
L a p a n t a l l a del t e l e v i s o r t i e n e 2 4 l i n e a s y 3 2 c o l u m n a s ; l a s 2 2
primeras lineas muestran los listados d e los programas o los
e f e c t o s d e la e j e c u c i ó n d e l o s jnismos.
CAPITULO 2
EL BASIC
El a u t é n t i c o c e r e b r o del o r d e n a d o r e s el m i c r o p r o c e s a d o r o CPU
(abreviatura d e Central Processing Unit - Unidad Central de
Proceso). L a CPU se encarga de recibir y procesar los datos y d e
ejecutar las o p e r a c i o n e s c o r respond ie n t e s en función de los
m i s m o s.
E s p o r e l l o q u e s e i n v e n t a r o n l o s l e n g u a j e s d e p r o g r a m a c i ó n. En
realidad éstos són programas en lenguaje máquina, que se
e n c a r g a n d e la c o d i f i c a c i ó n d e l a s i n s t r u c c i o n e s que le damos
p a r a q u e sean compr e n sib 1e s por la máquina. Los lenguajes de
programación llevan incorporado u n c o n j u n t o d e instrucciones de
-fácil c o m p r e n s i ó n , que són las que utilizamos al realizar
nuestros programas. A estos lenguajes s e les llama "de alto
n i v e l " p o r e s t a r m a s c e r c a d e l a c o m p r e n s i ó n del u s u a r i o q u e de
la d e la m á q u i n a .
El l e n g u a j e d e p r o g r a m a c i ó n del S p e c t r u m e s el B A S I C . E s t e e s u n
lenguaje ampliamente difundido en la mayoría de ordenadores
personales debido a su fácil comprensión y gran versatilidad.
Lamentablemente, cada ordenador incorpora su propia versión de
BASIC; esto hace que programas escritos en BASIC en un
ordenador, no puedan ejecutarse e n otro distinto.
Pag, e
PRINT ■pepito”
PRINT ppepito"
1 0 PRINT "pepito"-’ •
RUN
Pag, 9
Ahora introduzca
5 PRINT "hola"
15 PRINT 24
Al e j e c u t a r e s t e p r o g r a m a ( p u l s e R U N ) , o b t e n d r e m o s :
hola
p e p i to'
24
y e n la p a r t e i n f e r i o r d e la p a n t a l l a el m e n s a j e “O OK, 15:1".
Observe q u e e s t e m e n s a j e e s d i f e r e n t e del que aparecía cuando
ejecutábamos un comando directo. Los números que aparecen detras
d e ” 0 K , " c o r r e s p o n d e n al n ú m e r o d e l i n e a y d e s e n t e n c i a e n d o n d e
s e h a d e t e n i d o el p r o g r a m a , r e s p e c t i v a m e n t e .
El n u m e r o 2 4 q u e h e m o s e s c r i t o e n la l i n e a 1 5 e s e v a l u a d o p o r el
ordenador como un valor numérico; si lo hubiésemos colocado
entre comillas habría sido tratado como una cadena de
caracteres. Esto es muy importante, y a que el ordenador solo
puede realizar operaciones matemáticas con valores numéricos y
no con cadenas.
V e a m o s u n e j e m p l o . T e c l e e el s i g u i e n t e c o m a n d o d i r e c t o :
PRINT 5 + 5
Pag, IQ
PRINT "5"+"5"
M
PRINT Spec " + "t rum"
LIST 10
I n t r o d u z c a el s i g u i e n t e p r o g r a m a :
El c o m a n d o G O T O c o n t e n i d o e n l a l i n e a 3 0 s i r v e p a r a i n d i c a r al
ordenador que d e b e s a l t a r a la l i n e a especificada y continuar
al 1 i la e j e c u c i ó n del p r o g r a m a .
I n s t r o d u z c a a h o r a la s i g u i e n t e l i n e a
25 PRINT "fácilmente
Pag. 12
conozca su Spectrum
i ac i Imente
p u l s e a h o r a el c o m a n d o C O N T I N U E ( e s t a s i t u a d o e n l a t e c l a C y s e
encuentra abreviado como CONT). El programa continuará
e j e c u t á n d o s e , y a q u e el e f e c t o d e e s t a s e n t e n c i a e s p r e c i s a m e n t e
e s e . Al p u l s a r C O N T I N U E s e r e p i t e la instrucción en donde se
d e t u v o el p r o g r a m a y e s t e continúa ejecutándose a partir de
el l a .
1 0 P R I N T " e s t a e s la p r i m e r a p a r t e "
20 STOP
3 0 P R I N T " e s t a e s la s e g u n d a p a r t e "
y e j e c ú t e l o . C u a n d o a p a r e z c a el m e n s a j e , p u l s e C O N T I N U E .
Los programas BASIC que hemos visto hasta ahora s e ejecutan sin
interrupción. Sin embargo, es posible deneter la ejecución
momentáneamente por m e d i o del c o m a n d o P A U S E . E s t a sentencia se
usa junto con un número que expresa el tiempo de pausa en
cincuentavos d e segundo. Así, PAUSE 50 detiene la ejecución
d u r a n t e u n s e g u n d o . P a r a d e t e n e r el p r o g r a m a h a s t a que s e pulse
una tecla use PAUSE O.
Pag. 13
CAPITULO 3
l-AS V A R I A B L E S
P a r a e n t e n d e r el c o n c e p t o d e v a r i a b l e , s u p o n g a m o s q u e t e n e m o s u n
gran mueble lleno d e cajones; éstos pueden tener una etiqueta
exterior que los identifique, d e m a n e r a que seamos capaces de
localizarlos rápidamente.
E n t o n c e s , si e n el c a j ó n " a " i n t r o d u c i m o s t r e s g a r b a n z o s m a s , y a
no tendremos 1 0 g a r b a n z o s e n e s e c a j ó n , s i n o 13. Podemos decir
q u e el c o n t e n i d o d e e s e c a j ó n h a V A R I A D O . L o m i s m o p o d e m o s h a c e r
c o n ej c o n t e n i d o d e l o s o t r o s c a j o n e s .
P u e s b i e n , e n el o r d e n a d o r t a m b i é n p o d e m o s "etiquetar" ciertas
partes de la memoria e introducir valores que pueden ser
cambiados a voluntad. La máquina almacena estos valores e
i n t r o d u c e l a s m o d i f i c a c i o n e s q u e n o s o t r o s le indiquemos. Estas
z o n a s d e la m e m o r i a q u e d e f i n i m o s s e l l a m a n v a r i a b l e s .
DEFINICION DE VARIABLES
LET a=25
15
si a h o r a e s c r i b i m o s
PRINT a
LET a-a+1
y luego
PRINT a
C o m o p u e d e v e r , el v a l o r d e l a v a r i a b l e " a " h a c a m b i a d o a 2 6 .
PRINT b
L a v a r i a b l e " a ” e s n u m é r i c a * le h e m o s d a d o u n n o m b r e d e u n a s o l a
letra, p e r o n o e s n e c e s a r i o q u e s e a a s í s i e m p r e . De hecho, el
nombre puede constar d e hasta 1 2 8 letras o d í g i t o s (también se
a d m i t e n e s p a c i o s ) , s i e m p r e q u ¿ el primer carácter no sea un
dígito. Ejemplos:
coco
e s t e l i b r o le a b u r r i r á
al
Al
LET a$="PEPE"
A p a r e c e r á el s i g n o d e i n t e r r o g a c i ó n p a r p a d e a n t e , indicativo de
que se h a cometido un error. Esto e s porque el ordenador cree
q u e la c a d e n a h a t e r m i n a d o d e s p u é s d e l a p a l a b r a "visto" y no
sabe interpretar lo que viene después. Para evitar esto,
escriba:
U n a s e n t e n c i a INPUT t i e n e la s i g u i e n t e f o r m a :
INPUT nombre
p a r a d e f i n i r u n a v a r i a b l e al f a n u m é r i c a , o
INPUT letra*
p a r a u n a v a r i a b l e d e c a d e n a . C u a n d o el o r d e n a d o r encuentra una
s e n t e n c i a I N P U T d e t i e n e el programa y un cursor parpadeante
a p a r e c e . T e c l e e e n t o n c e s el v a l o r ( o c a d e n a ) q u e d e s e e y pulse
ENTER. L a variable quedara d e f i n i d a y el p r o g r a m a c o n t i n u a r a su
ej e c u c ion .
PA4.- 1 7
E n el c a s o d e q u e la v a r i a b l e a definir sea a 1f a n u m é r ic a , el
cursor aparecerá entre comillas.
V e a m o s a h o r a u n e j e m p l o q u e n o s i l u s t r e lo q u e h e m o s v i s t o h a s t a
ahora. Borre el ordenador (mediante NEW) e introduzca el
siguiente programa:
P a r a d e t e n e r el p r o g r a m a , c u a n d o a p a r e z c a el c u r s o r t e c l e e S T O P
e n v e z d e u n n ú m e r o . El p r o g r a m a s e d e t e n d r á c o n el mensaje "H
S T O P in I N P U T , 5 0 : 1 " .
U n a a d v e r t e n c i a : l a s v a r i a b l e s s e b o r r a r á n s i e m p l e a el comando
RUN y t e n d r á q u e volver a definirlas. S i d e s e a evitar ésto, use
G O T O e n v e z d e RUN p a r a e j e c u t a r los p r o g r a m a s .
Paa.- I e
CAPITULO 4
10 LET a=0
20 INPUT b
30 LET a~a+b
40 GO TO 20
1 0 L E T a=0
20 F O R n«l T 0 5
30 INPUT b
4 40 LET a=a+b
4 50 NEXT n
60 PRINT a
El n ú m e r o d e v e c e s q u e s e r e p i t e la acción se define en la
l l a m a d a " v a r i a b l e d e c o n t r o l " del b u c l e ( e n e s t e c a s o "n"). El
nombre d e esta variable d e b e estar constituido obligatoriamente
por u n a s o l a letra ( m a y ú s c u l a o minúscula). No debe existir
n i n g u n a o t r a v a r i a b l e c o n el m i s m o n o m b r e , a u n q u e sí se puede
emplear dicho nombre p a r a t o d a s las variables de control de
t o d o s l o s b u c l e s del p r o g r a m a , s i e m p r e y cuando no haya dos
b u c l e s " i m b r i c a d o s " ( d e p e n d i e n d o el u n o del o t r o ) .
El o r d e n a d o r i n c r e m e n t a el v a l o r d e la v a r i a b l e de control en
u n a unidad c a d a vez q u e s e e j e c u t a n l a s i n s t r u c c i o n e s incluidas
e n el b u c l e . C u a n d o l a s m i s m a s s e han ejecutado el numero de
veces prescrito, el programa continúa su ejecución en la
s e n t e n c i a q u e s i g u e al c o m a n d o N E X T .
10 FOR n - 1 T 0 1 0
20 INPUT a
30 PRINT n,a*n
40 NEXT n
10 FOR i « l T0 10
20 FOR j « l TO 5
30 PRINT i*j ; " "|
40 NEXT j
50 NEXT i
10 FOR i - 1 T0 10
20 FOR j = l TO 5
30 PRINT i*j | " " ;
40 NEXT i
50 NEXT j
Pag. 20
1 0 F O R i= l T 0 10: P R I N T 2 * 1 : NEXT i
En e s t e c a s o s o l o s e e j e c u t a r á n l a s s e n t e n c i a s s i t u a d a s e n t r e el
F O R y el N E X T .
CAPITULO 5
MATRICES
Asi p u é s , d e b e m o s u t i l i z a r o t r o m é t o d o d e a s i g n a c i ó n d e datos;
en lugar d e g u a r d a r l o s e n v a r i a b l e s , l o h a r e m o s e n M A T R I C E S .
DIM n o m b r e ( d i m e n s i o n e s )
1 0 DIM a ( 1 0 0 )
si e j e c u t a m o s el p r o g r a m a y l u e g o h a c e m o s
PRINT a (1)
Pag. 2 2
Si s e i n t e n t a n leer m a s d a t o s q u e l o s c o n t e n i d o s e n la s e n t e n c i a
D A T A , s e p r o d u c i r á u n e r r o r . A u n q u e e n l a l i n e a 1 2 0 -Figura otra
sentencia DATA, solo serán leídos los números existentes en la
linea 110, y a q u e e s t a e s la p r i m e r a s e n t e n c i a DATA encontrada
p o r R E A D y el p u n t e r o s o l o h a a v a n z a d o h a s t a el ú l t i m o dato de
d i c h a 1 i n e a.
V a m o s a a m p l i a r el p r o g r a m a i n t r o d u c i e n d o l a s s i g u i e n t e s l i n e a s :
2 1 0 F O R n=l T 0 5
220 PRINT a$(n),a(n)
230 NEXT n
4 5 RESTORE 120
CAPITULO 6
L o p r i m e r o q u e t e n e m o s q u e s a b e r e s q u e el S p e c t r u m d e f i n e e n l a
pantalla 2 4 lineas y 3 2 columnas. Como ya dijimos, las dos
últimas lineas no s o n n o r m a l m e n t e accesibles, y a q u e s o n las q u e
e m p l e a el o r d e n a d o r p a r a l a e j e c u c i ó n d e l a s s e n t e n c i a s I N P U T y
para mostrar los mensajes d e error. Las posiciones d e impresión
s e definen, p o r medio de dos números; el primero de ellos
c o r r e s p o n d e a la l i n e a y el s e g u n d o a la columna. Asi, 20,14
corresponde a la linea 20, c o l u m n a 14.
H a s t a a h o r a h e m o s u t i l i z a d o P R I N T s i n e s p e c i f i c a r el l u g a r d e l a
p a n t a l l a d o n d e q u e r í a m o s q u e a c t u a r a . Al e n c e n d e r el ordenador,
o al haberse ejecutado una sentencia CLS, la posición de
impresión e s la 0 , 0 . C a d a v e z q u e s e e j e c u t a u n a s e n t e n c i a P R I N T
( a menos que e m p l e e m o s c o m p l e m e n t o s en la m i s m a ) la posición de
i m p r e s i ó n s e d e s p l a z a al p r i n c i p i o d e la siguiente linea. De
e s t a m a n e r a p o d e m o s e m p l e a r el c o m a n d o P R I N T s i n n i n g ú n t i p o de
a r g u m e n t o e n el c a s o d e que queramos imprimir una linea en
blanco. P o r e j e m p l o :
10 F O R n=l T 0 5
20 PRINT
30 NEXT n
40 PRINT "cinco lineas en blanco"
E x i s t e u n c o m a n d o c o m p 1 e m e n t a r io q u e n o s p e r m i t e i m p r i m i r e n la
p a r t e d e la p a n t a l l a q u e d e s e e m o s : A T . S e u t i l i z a a s í :
P R I N T AT 1 1 , 3 5 - F i l a 11, c o l u m n a 3 "
E1 primer c a r á c t e r d e l a c a d e n a s e i m p r i m i r á e n la posición de
impresión e s p e c i f i c a d a y l o s d e m a s a c o n t i n u a c i ó n . El punto y
coma que s e e m p l e a e s un s e p a r a d o r "; efectivamente, algunos
signos d e puntuación permiten definir formatos de impresión.
E s t o f u n c i o n a d e la s i g u i e n t e f o r m a :
Pag. 25
P a r a c o m p r o b a r e s t o , t e c l e e el s i g u i e n t e p r o g r a m a :
10 F O R n=l T 0 5
20 PRINT n,n*n
30 PRINT
40 NEXT n
C a m b i e el s e p a r a d o r d e l a l i n e a 2 0 y c o r r a el p r o g r a m a .
Si s e c o l o c a u n s i g n o al f i n a l d e u n a sentencia PRINT, la
posición d e impresión no s e desplazara a la siguiente linea.
P r u e b e:
1 0 F O R n=l T 0 1 0
2 0 P R I N T n;
30 NEXT n
r e t i r e el p u n t o y c o m a y v u e l v a a c o r r e r el p r o g r a m a p a r a ver l a
d i f e r e n c i a.
PRINT *c i n e o , d i e c i s e i s "
El c o m a n d o T A B s i r v e p a r a d e t e r m i n a r la c o l u m n a d e i m p r e s i ó n .
1 0 F O R n=l T 0 1 0
2 0 P R I N T T A B lOJn
30 NEXT n
C o m o s e v e , e s b a s t a n t e m a s s e n c i l l o d e u t i l i z a r q u e AT, aunque
no e s tan preciso. S u principal v e n t a j a e s a la h o r a d e u t i l i z a r
la i m p r e s o r a , y a q u e e s t a n o r e c o n o c e A T p e r o si T A B . T a m b i é n e s
útil p a r a la i m p r e s i ó n d e t a b l a s .
Pag. 26
O b s e r v e q u e t a n t o AT c o m o T A B d e b e n u s a r s e c o n " J ".
INPUT AT l,Ojn
i m p r i m e el c u r s o r d e I N P U T e n l a s e g u n d a d e l a s d o s l i n e a s d e la
p a r t e i n p e r i o r d e la p a n t a l l a .
I N P U T " f e c h a ? "; a S
10 LET a=25
2 0 I N P U T ( " M i n u m e r o e s " J a ) ; " . El t u y o ? " ; b
C o m o v i m o s e n el c a p i t u l o 3 , c u a n d o e n u n a sentencia INPUT se
define una variable al f a n u m é r i c a , el cursor aparece entre
c o m i l l a s . E s t o p o s i b i l i t a b o r r a r l a s p a r a i n t e r r u m p i r el p r o g r a m a
en ese punto por medio d e STOP. P a r a evitarlo podemos utilizar
el c o m a n d o L I N E d e l a s i g u i e n t e f o r m a :
INPUT LINE aS
el c u r s o r a p a r e c e r á s i n c o m i l l a s , a u n q u e la sentencia actuarí
c o m o si e s t u v i e r a n . Al n o e s t a r las comillas, no podrán ser
b o r r a d a s y , p o r lo t a n t o , d e t e n i d o el p r o g r a m a .
En el c a s o d e q u e r e r i n c l u i r t e x t o s e n l a s e n t e n c i a I N P U T L I N E.
el c o m a n d o L I N E i r á d e s p u e s del t e x t o .
CAPITULO 7
FRAGMENTACION DE CADENAS
"Spectrum" ( TO 4)="Spec"
"Spectrum" ( 3 TO )="ectrum"
"Spectrum" ( TO )="Spectrum"
"Spectrum"(3)="e*
LET a$=“Prueba“
ahora
U n a o b s e r v a c i ó n : la c a d e n a p e r m a n e c e r á c o n l a m i s m a l o n g i t u d s e a
c u a l s e a l a l o n g i t u d d e la s u b c a d e n a . P r u e b e :
L E T a S( 3 T O 6 ) = " o b a n d o “ : P R I N T a S
en e s t e c a s o l a s u b c a d e n a h a s i d o c o r t a d a p o r la derecha para
ajustarse a la longitud d e la c a d e n a aS. En el caso de que
hubiese s i d o más corta se habrían puesto espacios para
c o m p 1 e t a r la.
L E T a S( 3 T O 6 ) = " o t o "
en e s t e c a s o a * s e r í a igual a “ P r o t o A e s t a o p e r a c i ó n , q u e el
ordenador realiza d e f o r m a automática, s e le llama “asignación
p r o c u s t e a n a ” ( p o r el c e l e b r e p o s a d e r o P r o c u s t e s que, para que
encajaran correc tamente e n las camas, e s t i r a b a a s u s c l i e n t e s e n
un p o t r o d e t o r m e n t o o l e s c o r t a b a l o s p i é s ) .
CAPITULO 8
TOMA D E D E C I S I O N E S
Un ejemplo:
10 INPUT a
20 IF a=l THEN PRINT "ha pulsado ""1"- *: STOP
30 PRINT "No ha pulsado " "1" " "
= s i g n i f i c a "igual a*
CAPITULO 9
SUBRUTINAS
999 STOP
1 0 0 0 P R I N T A T 2 1, 1; " p u l s e u n a t e c l a p a r a c o n t i n u a r "
1 0 1 0 PAUSE 0
1020 CLS
1 0 3 0 R E T U R N1
E l S T O P d e l a 1 i n e a 9 9 9 e s n e c e s a r i o , y a q u e ,, d e n o e x i s t i r , el
programa c o n t i n u a r 'a ejecutándose en la subrutina y se
produciría un error " 7 RETURN without GOSUB".
CAPITULO 10
EXPRESIONES MATEMATICAS
El S p e c t r u m p u e d e r e a l i z a r f á c i l m e n t e t o d o t i p o de operaciones
a r i t m é t i c a s ( t a l c o m o lo h a r í a u n a c a l c u l a d o r a ) y p a r a ello se
utilizan los s i g n o s +, * (para multiplicar) y / (para
dividir). Tenga en cuenta, a la hora de escribir números
decimales, que ha d e emplear el punto, y no la coma, para
s e p a r a r la p a r t e d e c i m a l d e la e n t e r a .
El v a l o r r e s u l t a n t e d e u n a e x p r e s i ó n m a t e m á t i c a p u e d e i m p r i m i r s e
directamente o bien utilizarse para asignar un valor a una
v a r i a b l e . El s i g u i e n t e p r o g r a m a c a l c u l a el porcentaje que se
desee de cualquier número:
E n la l i n e a 3 0 s e e n c u e n t r a la e x p r e s i ó n m a t e m á t i c a q u e realiza
el c á l c u l o . E n e s t e c a s o , l a s operaciones se realizan en el
m i s m o o r d e n en q u e s e han e s c r i t o ; p e r o no s i e m p r e e s así. Por
ejemplo, pruebe:
PRINT 10+20*30
el r e s u l t a d o n o h a s i d o el q u e e s p e r a b a ; la razón es que la
multiplicación s e h a e f e c t u a d o a n t e s q u e la s u m a . E s t o e s d e b i d o
a q u e el S p e c t r u m r e a l i z a a n t e s l a s o p e r a c i o n e s d e m u l t i p l i c a r y
dividir y luego las sumas y restas. Se dice que la
m u l t i p l i c a c i ó n y la d i v i s i ó n t i e n e n u n a prioridad mas elevada
q u e la s u m a y l a r e s t a .
PRINT (10+20)*30
NOTACION CIENTIFICA
PRINT 23e3
ser í a er roneo .
19 La memoria 60
20 Medios d e a 1m a c e n a m i e n t o e x t e r n o 64
21 El fichero de pantalla 69
22 Uso de la impresora 72
C A P I T U L O 11
P o d e m o s de-finir u n a f u n c i ó n c o m o u n t r a t a m i e n t o e s p e c i a l q u e se
hace con un d a t o ( o c o n j u n t o d e datos) y que d a como resultado
o t r o dato. E s t o p u e d e afectar a la clase del dato, su valor
numérico, etc.
Al d a t o q u e s e t r a t a e n l a f u n c i ó n s e l e d e n o m i n a " a r g u m e n t o " y
al q u e r e s u l t a d e a p l i c a r l a f u n c i ó n s e le d e n o m i n a " r e s u l t a d o " .
La sintaxis adecuada para utilizar las funciones es la de
escribir las mismas colocando el argumento a continuación.
Cuando la s e n t e n c i a q u e c o n t e n g a esa función se ejecute, se
o b t e n d r á el r e s u l t a d o c o r r e s p o n d i e n t e.
El p r o g r a m a q u e v e r e m o s a h o r a m u e s t r a u n u s o útil d e la función
LEN.
10 I N P U T " M e t e u n t e x t o "; a $
20 F O R n=l T 0 L E N a *
30 P R I N T a S( n ) ; : P A U S E 7
40 NEXT n
50 GO TO 1 0
C u a n d o s e h a y a i n t r o d u c i d o el t e x t o , e s t e no se imprimirá de
g o l p e s i n o q u e l o h a r á l e t r a a l e t r a , c o m o si s e t r a t a r a de un
teletipo o m á q u i n a d e escribir. P u e d e a l t e r a r s e la velocidad de
i m p r e s i ó n c a m b i a n d o el v a l o r d e la s e n t e n c i a P A U S E .
STR$ 456="456"
En c a s o d e n ú m e r o s d e c i m a l e s , l a c a d e n a resultante de aplicar
S T R $ s o l o c o n t e n d r á la p a r t e e n t e r a del número.
Pag. 36
10 LET cont=0
20 INPUT "Un numero "Ja
30 PRINT AT cont,20-LEN STR$ aja
40 LET cont =cont ♦1
50 GO TO 2 0
VALS" " " "spectrum" " " "=" spec t rum "
INT 32.5=32
PRINT FN a(x,y)
10 PRINT INKEYS;
20 PAUSE O
30 GO TO 10
CAPITULO 12
FUNCIONES MATEMATICAS
L a m a s i m p o r t a n t e y v e r s á t i l e s ”* ", q u e n o s p e r m i t e hallar la
potencia d e un número. C o m o s e ve, no se emplea la notación
normal p a r a las potencias, p e r o n o p a r e c e q u e e s t o tenga mucha
importancia, d a d a la facilidad de uso de esta función. Por
ej e m p lo:
3*3
s i g n i f i c a " 3 al c u b o " .
DEF F N r(x, y )= x *( 1 / y )
s i e n d o x el n ú m e r o e y el í n d i c e d e la r a i z .
SQR 9=3
L a f u n c i ó n L N c a l c u l a el l o g a r i t m o n e p e r i a n o ( o n a t u r a l ) de un
n ú m e r o . R e c o r d e m o s q u e u n l o g a r i t m o e s el e x p o n e n t e al que hay
que elevar un número determinado (llamado "base") para obtener
el n ú m e r o q u e n o s i n t e r e s a . A s í :
EXP 10=e A 10
10A numero *
CAPITULO 13
NUMEROS ALEATORIOS
En m u c h o s p r o g r a m a s ( s o b r e t o d o d e j u e g o s ) e s m u y útil disponer
d e un g e n e r a d o r d e n ú m e r o s a l e a t o r i o s . El Spectrum posee para
este cometido la f u n c i ó n RND, la cual genera un número
d i f e r e n t e , c o m p r e n d i d o e n t r e O y 1, cada vez que se activa.
Pruébelo de esta manera:
1 0 F O R n=l T O 2 0
20 PRINT RND
30 NEXT n
Si ha e j e c u t a d o el p r o g r a m a a n t e r i o r , h a b r a p o d i d o c o m p r o b a r q u e
el n u m e r o q u e s e g e n e r a , o e s O o u n n ú m e r o d e c i m a l m e n o r q u e 1 .
Esto no e s que s e a m u y útil, y a q u e lo q u e n o s i n t e r e s a r a m a s a
m e n u d o e s la c r e a c i ó n d e n ú m e r o s e n t e r o s . P a r a e l l o , si q u e r e m o s
generar números aleatorios comprendidos entre m y n, (ambos
inclusive) haremos:
1 0 F O R a=l T 0 2 0
2 0 P R I N T I N T ( R N D *( n - m + 1 ) ) +m
30 NEXT a
El c o m a n d o R A N D O M I Z E n o s p e r m i t e h a c e r q u e R N D c o m i e n c e a c o n t a r
d e s d e el lugar d e la s u c e s i ó n q u e n o s i n t e r e s e . C o m p r u é b e l o :
10 RANDOMIZE 1
20 F O R n=l T O 1 5
30 PRINT INT (RND*10)
40 N E X T n: P A U S E 1 0 0
50 CLS: GO TO 10
Pag. 4 2
1 0 RANDOMIZE
2 0 PRINT PEEK 2 3 6 7 0 + 256*PEEK 23671
30 GO TO 10
CAPITULO 14
OPERADORES LOGICOS
Ejemp 1os:
PRINT 4 =4,404
CAPITULO 15
EL JUEGO DE CARACTERES
El a r g u m e n t o d e C O D E e s u n a c a d e n a d e un solo carácter y su
r e s u l t a d o el c ó d i g o c o r r e s p o n d i e n t e a e s e c a r á c t e r .
El a r g u m e n t o d e C H R $ e s u n n ú m e r o d e O a 2 5 5 y proporciona una
cadena cuyo único carácter es el c o r respond ie n t e al número
introducido.
CHR« 8 ♦ "hola"
" zapato"
-120"
“Suceso"
"aquí "
0011 1100
00000000
011 1 1000
01000100
01000100
01000100
01000100
00000000
10 INPUT A
2 0 PRINT BIN A
3 0 GO TO 10
10 FOR n = 0 T 0 7
20 READ a: POKE USR
30 NEXT n
40 DATA 60,0,120,68,68,68,68,0
CAPITULO 1 6
L O S C O L O R E S D E L SPECTRUM
1 0 F O R n=0 T 0 7
2 0 P R I N T PAPER nJ"
3 0 NEXT n
1 0 FOR n = 0 T 0 7
2 0 BORDER n: P A U S E 2 0
3 0 NEXT n
Pag. 5 2
10 OVER 1
2 0 PRINT "nin"?CHR$ 8?" o"
Asi pues
CHR$ 17 ♦ CHRS 4
equivale a
PAPER 4
10 FOR n = 0 TO 7
20 READ a : POKE USR " a " + n , a
30 NEXT n
40 INPUT a,b
50 I F a > 8 OR b > 8 T H E N GO TO 4 0
60 P R I N T P A P E R a ; I N K b J " AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ”
70 GO TO 4 0
80 DATA 8 5 , 1 7 0 , 8 5 , 1 7 0 , 8 5 , 1 7 0 , 8 5 , 1 7 0
CAPITULO 17
R e c o r d e m o s q u e e n la p a n t a l l a t e n í a m o s d i s p o n i b l e s 3 2 x 2 2 ( 7 0 4 )
posiciones de carácter. Como cada una de esas posiciones
disponía de 8 x 8 (64) cuadraditos o "pixels”, resulta que
tenemos disponibles 256 x 1 7 6 pixels, que podemos oscurecer o
dejar en blanco a voluntad.
E s t o n o s p e r m i t e la r e a l i z a c i ó n d e d i b u j o s e n alta resolución.
Los comandos que permiten e s t e tipo de dibujo utilizan como
argumento las c o o r d e n a d a s d e la p a n t a l l a en a l t a r e s o l u c i ó n . L o s
extremos d e estas coordenadas son 0 , 0 p a r a la esquina inferior-
izquierda, 255,0 para la inferior derecha, 0,175 para la
s u p e r i o r i z q u i e r d a y 2 5 5 , 1 7 5 p a r a la s u p e r i o r d e r e c h a .
1 0 F O R n=l T 0 2 0 0 S T E P 5
20 PLOT n,50
30 NEXT n
DRAW 3 0 , 3 0
v e r e m o s q u e la n u e v a l i n e a t r a z a d a t i e n e s u o r i g e n e n el e x t r e m o
final d e la a n t e r i o r .
Pag. 57
s
10 PLOT 50,50*. DRAW 3 0 , 0
20 DRAW 0,30
30 DRAW -30,0
40 DRAW 0,-30
10 FOR n = l T 0 2 0 0 STEP 1 0
20 PLOT n,50: DRAW I N K I N T ( R N D * 8 ) ; 0 , 5 0
30 NEXT n
40 PLOT 0,80: DRAW I N K 6 ; 2 0 0 , 0
El c o m a n d o C I R C L E d i b u j a u n c í r c u l o . S e e m p l e a a s í :
CIRCLE x,y,r
A u n q u e la l i n e a q u e t a c h a b a la e s c r i t u r a h a s i d o b o r r a d a , queda
el r a s t r o d e l a m i s m a . S i n e m b a r g o s i escribimos el programa
a s r:
L a linea d e s a p a r e c e r á s i n dejar r a s t r o .
Pag. 59
CAPITULO 18
El S p e c t r u m p u e d e p r o d u c i r s o n i d o s q u e s i r v a n p a r a complementar
s u s p r o g r a m a s . P a r a e l l o s e d i s p o n e del comando BEEP, que se
u t i l i z a d e la s i g u i e n t e f o r m a :
L a d u r a c i ó n s e e x p r e s a e n s e g u n d o s y el t o n o e n semitonos. Los
valores extremos que s e pueden utilizar son d e O a 10 para la
d u r a c i ó n y d e - 6 0 a 6 9 p a r a el tono. Los valores pueden ser
números fraccionarios.
10 FOR n=-10 T0 70
20 BEEP .5,n
30 NEXT n
El v a l o r 0 e s el " d o " c e n t r a l d e la e s c a l a m u s i c a l . El r e s t o de
los n ú m e r o s s i g u e n la m i s m a e s c a l a q u e l a s teclas consecutivas
d e u n p i a n o . E s d e c i r , 1 e s R E b e m o l , 2 e s R E , 3 MI b e m o l , e t c .
1 0 F O R n=4 T 0 3 2 S T E P 4 : I
FOR m=n T O 4 STEP -1
20 FOR p=32 TO n-64 STEP -10: BEEP .01,m
30 NEXT p: NEXT m: NEXT n
Pag. 60
CAPITULO 19
LA MEMORIA
Y a d i j i m o s al p r i n c i p i o d e e s t e m a n u a l que el m icr o p r o c e s a d o r
con que esta equipado el Spectrum solo entiende las
i n s t r u c c i o n e s s i s e le e n v í a n en f o r m a d e n ú m e r o s b i n a r i o s . C a d a
O o 1 de cada uno de estos números binarios s e denomina "bit" y
c o n s e c u e n t e m e n t e s o l o p u e d e t e n e r d o s v a l o r e s : 0 o 1.
C a d a u n o d e los l u g a r e s d e la m e m o r i a del o r d e n a d o r e n d o n d e se
p u e d e a l m a c e n a r un b y t e s e denomina "posición de memoria" o
" d i r e c c i ó n " El Spectrum posee un total de 65536 de estas
p o s i c i o n e s , n u m e r a d a s d e la 0 a la 6 5 5 3 5 .
L a s p o s i c i o n e s O a 1 6 3 8 4 c o n s t i t u y e n la R O M ( a b r e v i a t u r a d e R e a d
Only Memory - Memoria de s o l o lectura). En e s t a s posiciones se
a l m a c e n a el " s i s t e m a operativo" (programa escrito en código
máquina que sirve para hacer comprender al ordenador las
i nst rucc i o n e s ), el l e n g u a j e B A S I C y el j u e g o d e caracteres que
s e u s a p a r a imprimir los t e x t o s e n la p a n t a l l a . C o m o s u nombre
indica, e s t a m e m o r ia n o p u e d e s e r b o r r a d a ni s e puede escribir
en e l l a ; la i n f o r m a c i ó n c o n t e n i d a en la m i s m a e s t a d i s p o n i b l e e n
c u a n t o s e c o n e c t a el o r d e n a d o r .
C u a n d o s e e s c r i b e o e j e c u t a un p r o g r a m a en B A S I C , el ordenador
v a a s i g n a n d o v a l o r e s c o m p r e n d i d o s e n t r e 0 y 2 5 5 a los b y t e s d e
la RAM. Se pueden introducir valores directamente en las
d i s t i n t a s p o s i c i o n e s d e m e m o r i a u t i l i z a n d o el comando POKE de
la s i g u i e n t e f o r m a :
P a r a leer u n a d i r e c c i ó n s e e m p l e a l a f u n c i ó n P E E K . P r u e b e :
POKE 40000,30
y luego
C o m o s e v e , el u s o d e P O K E e s r e a l m e n t e útil c u a n d o s e t r a t a de
introducir datos directamente en la memoria, aunque también
puede ser algo muy peligroso; puede alterarse substanc ia 1ment e
el p r o g r a m a q u e e s t é e n e s e m o m e n t o e n m e m o r i a .
A p a r t i r d e la d i r e c c i ó n 1 6 3 8 4 h a s t a l a 23296 se almacena la
i m a g e n p a r a la p a n t a l l a d e t e l e v i s i ó n . E s lo que se llama el
“■Fichero d e p a n t a l l a " . L o s primeros 6 1 4 4 bytes almacenan la
imagen propiamente d i c h a y los 768 r e s t a n t e s los c o l o r e s de la
misma. Hablaremos mas extensamente de esto en el capítulo
d e d i c a d o al f i c h e r o d e p a n t a l l a .
D e s d e l a d i r e c c i ó n 2 3 2 9 6 a la 2 3 5 5 2 s e e n c u e n t r a el "buffer" o
m e m o r i a i n t e r m e d i a d e la impresora. En ella se guardan los
caracteres destinados a s e r impresos. C u a n d o s e ha llenado, su
c o n t e n i d o s e e n v í a a la i m p r e s o r a .
P r i m e r o s e a l m a c e n a el p r o g r a m a e n s í , l u e g o las variables (a
p a r t i r d e la d i r e c c i ó n e s p e c i f i c a d a e n l a v a r i a b l e del sistema
V A R S ), d e s p u é s la l i n e a d e p r o g r a m a q u e s e e s t á e d i t a n d o y por
último u n a serie de datos. Por ejemplo, los números con los que
s e e s t á c a l c u l a n d o o las d i r e c c i o n e s a las q u e hay q u e volver e n
caso de GOSUB.
C u a n d o h a y a i n t r o d u c i d o el n ú m e r o , a p a r e c e r á n en pantalla dos
n ú m e r o s ; al p r i m e r o s e le l l a m a " b y t e m e n o s s i g n i f i c a t i v o " y al
s e g u n d o " b y t e m a s s i g n i f i c a t i v o " . C o m o s e v e , s e han almacenado
estos números en dos posiciones de m e m o r i a c o r r e 1 at i v a s, el
m e n o s s i g n i f i c a t i v o el p r i m e r o . P a r a r e c o n s t r u i r el n ú m e r o h a g a :
T o d o s los n ú m e r o s s e a l m a c e n a n e n la m e m o r i a e n e s t e o r d e n , con
una excepción: los números de linea del BASIC. Teclee lo
s i g u i e n t e:
1 0 REM linea 0
y luego:
a p a r e c e r á el n u m e r o 1 0 . A h o r a h a g a :
! ! s o r p r e s a ! ! el l i s t a d o s e v e r a a s( a h o r a :
O REM 1 inea 0
POKE 23756, 1
M u c h a s v a r i a b l e s del s i s t e m a e m p l e a n e s t e m é t o d o p a r a i n t r o d u c i r
n ú m e r o s . L o v e r e m o s e n el c a p í t u l o c o r r e s p o n d i en t e.
Pag, 64
CAPITULO 20
- n o s e r e s t e r e o f o n ic o
E s t e c o m a n d o g r a b a e n l a c i n t a el p r o g r a m a e n B A S I C q u e hay
en la m e m o r i a . Una vez introducido, aparece el mensaje
" s t a r t t a p e and p r e s s a n y k e y " . R e t i r e e n t o n c e s la c l a v i j a
EAR, a r r a n q u e el c a s s e t t e ( p u e s t o en modo "grabación") y
pulse cualquier tecla. Aparecerá una secuencia de dos
s e g u n d o s d e d u r a c i ó n d e r a y a s i g u a l e s d e c o l o r r o j o y azul y
a continuación otra muy corta de rayas amarillas y negras.
E s t o n o s i n d i c a q u e el ordenado ha introducido un corto
b l o q u e d e i n f o r m a c i ó n q u e le s e r v i r á m a s t a r d e d e r e f e r e n c i a
p a r a c a r g a r el p r o g r a m a d e s d e la c i n t a . E s t e b l o q u e c o n t i e n e
el t i p o d e i n f o r m a c i ó n ( B A S I C , c ó d i g o m á q u i n a o m a t r i z ) , la
longitud del b l o q u e y la l i n e a d e a u toej e c u c ión (si existe)
o la d i r e c c i ó n d e c o m i e n z o ( s i s e t r a t a d e c ó d i g o máquina).
A e s t e b l o q u e s e le l l a m a " c a b e c e r o " .
D e s p u é s d e ésto, a p a r e c e r á o t r a s e c u e n c i a d e u n segundo de
rayas azules y rojas y después otra configuración de rayas
amarillas y negras. Esta última corresponde al programa
propiamente dicho.
Si s e d e s e a g r a b a r el p r o g r a m a d e m a n e r a q u e s e autoej ecute
s e u t i l i z a el c o m a n d o :
U n a v e z c a r g a d o , el p r o g r a m a c o m e n z a r á a e j e c u t a r s e a p a r t i r
d e la l i n e a q u e h e m o s i n d i c a d o .
Si lo q u e s e d e s e a g r a b a r e s c ó d i g o m á q u i n a , h a r e m o s :
Un c a s o e s p e c i a l d e u t i l i z a c i ó n d e S A V E e s :
q u e a l m a c e n a r á la i m a g e n q u e s e e n c u e n t r e en e s e m o m e n t o en
la p a n t a l l a d e t e l e v i s i ó n . E n r e a l i d a d e q u i v a l e a :
2 - VERIFY
E s t e c o m a n d o s e u s a d e la m i s m a f o r m a q u e S A V E . Su función
e s v e r i f i c a r la g r a b a c i ó n q u e s e acaba de realizar. Para
e l l o s e r e b o b i n a la c i n t a h a s t a el inicio del bloque que
hemos grabado, s e vuelve a conectar la clavija EAR y se
i n t r o d u c e el c o m a n d o d e u n a d e e s t a s t r e s m a n e r a s :
E n a m b o s c a s o s , r e b o b i n e la c i n t a , v u e l v a a introducir el
comando e intente de nuevo la carga a diferente volumen (el
v o l u m e n m a s a d e c u a d o e s , p a r a u n m a n d o g r a d u a d o del 1 al 10
el 8 ).
L O A D " n o m b r e " C O D E d i r e c c i ón , 1 o n g i t ud
si s e o m i t e la l o n g i t u d , s e c a r g a r á n t o d o s los b y t e s q u e se
e n c u e n t r e n e n el b l o q u e . E n c u a n t o a la d i r e c c i ó n , si n o se
indica, l o s b y t e s s e c a r g a r á n a p a r t i r d e la dirección que
s e e s p e c i f i c ó c u a n d o s e g r a b ó el b l o q u e .
A n t e s d e c a r g a r el b l o q u e , c o n v i e n e hacer un CLEAR a la
dirección "dirección" -1. Esto evitará q u e el bloque sea
c o r r o m p i d o por a l g ú n programa en BASIC que carguemos o
introduzcamos después.
L a m a n e r a d e c a r g a r e s la m i s m a q u e la q u e se ha descrito
p a r a los p r o g r a m a s e n B A S I C .
2 - MERGE
L O A D ““ (por ejemplo)
el c o m a n d o a c t u a r é c o n el p r i m e r p r o g r a m a q u e encuentre en
la c i n t a .
L o s c o m a n d o s p a r a el u s o d e l m i c r o d r i v e v a n i n c l u i d o s y a en el
t e c l a d o del S p e c t r u m . S u u t i l i z a c i ó n v a c l a r a m e n t e e x p l i c a d a en
el manual q u e a c o m p a ñ a a e s t o s e q u i p o s .
Pag.. 6 9
CAPÍTULO 24
EL FICHERO DE PANTALLA
L o s r e s t a n t e s b y t e s del f i c h e r o d e p a n t a l l a a l m a c e n a n l a imagen
p r o p i a m e n t e d i c h a . Al c o n t r a r i o d e l o q u e s u c e d e e n el fichero
d e atributos, los b y t e s c o r r e s p o n d i e n t e s a la conf igur ac ión de
la imagen n o s e a l m a c e n a n c o r r e 1 a t i v a m e n t e. E f e c t i v a m e n t e , e n e l
f i c h e r o la p a n t a l l a e s dividida en tres partes iguales: la
s u p e r i o r , la i n t e r m e d i a y l a i n f e r i o r . L o s primeros 256 bytes
del f i c h e r o c o r r e s p o n d e n c o r r e 1 a t i v a m e n t e a l a p r i m e r a l i n e a de
p i x e l s d e la p r i m e r a l i n e a d e p o s i c i o n e s d e carácter. Los 256
siguientes a la p r i m e r a l i n e a d e p i x e l s d e la s e g u n d a linea de
posiciones y lo m i s m o s u c e d e c o n la t e r c e r a , c u a r t a y sucesivas
lineas d e posiciones de carácter del primer tercio de la
pantalla. Luego s e van r e l l e n a n d o las s e g u n d a s lineas d e pixels,
d e s p u é s las t e r c e r a s l i n e a s y a s í s u c e s i v a m e n t e , h a s t a c o m p l e t a r
el p r i m e r t e r c i o . L a m i s m a d i s t r i b u c i ó n s e h a c e c o n los otros
d o s t e r c i o s d e la p a n t a l l a .
Si t o d o e s t o p u e d e p a r e c e r l e u n p o c o l i o s o ( l o e s ) el siguiente
p r o g r a m a le a y u d a r a a c o m p r e n d e r 1 o. E s c r i b a l o y e j e c ú t e l o .
10 L O A D "* C O D E 4 0 0 0 0
20 FOR n=16384 TO 23296
30 POKE n,PEEK (n+23616): PAUSE 5
40 NEXT n
50 PAUSE 0
Pa*?, 7.9
C o l o q u e u n a c i n t a d e j u e g o s e n el c a s s e t t e . El segundo bloque
g r a b a d o e n la m i s m a s u e l e s e r l a " p a n t a l l a d e p r e s e n t a c i ó n " que
s e v e e n el t e l e v i s o r mientras carga el programa principal,.
S i t u é la c i n t a i n m e d i a t a m e n t e a n t e s d e d i c h o b l o q u e y e j e c u t e el
programa.
L a l i n e a 5 0 d e t i e n e el p r o g r a m a p a r a e v i t a r q u e el m e n s a j e "0K"
e s t r o p e e l a s d o s u l t i m a s l i n e a s d e la p a n t a l l a .
D e b i d o a e s t a e x t r a ñ a d i s t r i b u c i ó n del f i c h e r o d e pantalla, no
resulta muy práctico gestionarlo por medio d e PEEK y POKE, s o b r e
todo teniendo en cuenta que existen comandos en el BASIC del
Spectrum que s e encargan d e ello fácilmente (PRINT. AT, PLOT,
e t c . ).
1 0 P R I N T AT 11,5; "Spectrum"
20 PRINT SCREENS (11,7)
E x i s t e u n i n c o n v e n i e n t e: S C R E E N S n o d e t e c t a l o s G . D . U .
Si la g e s t i ó n del f i c h e r o d e i m a g e n p o r m e d i o d e P E E K y P O K E no
e s p r á c t i c a n o o c u r r e lo m i s m o con el fichero de atributos.
Existe una función , denominada ATTR, cuyo argumento es la
posición d e carácter que n o s interesa y s u resultado el número
c o r r e s p o n d i e n t e del f i c h e r o d e a t r i b u t o s .
Pag, 7i
CAPITULO 22
USO DE LA IMPRESORA
L a i n t e r f a c e p a r a l e l o n o r e a l i z a el e n v i o b i t a b i t s i n o b y t e a
b y t e j e s d e c i r , l o s o c h o b i t s del b y t e s o n p r o c e s a d o s a l a vez.
El t i p o mas extendido es el Centronics. En realidad, las
impresoras suelen estar adaptadas mas al sistema paralelo,
m i e n t r a s q u e l a s i n t e r f a c e s s e r i e s e e m p l e a n pref e r i b 1 e m e n t e en
otros periféricos.
El S p e c t r u m t r a n s m i t e l o s c a r a c t e r e s p r e v i a m e n t e a l m a c e n a d o s en
el " b u f f e r " d e i m p r e s o r a a l a m i s m a a t r a v é s d e l c a n a l ” p " . E s t e
canal emplea u n a linea ( o "corriente") para la transmisión de
los datos (la 3) por lo que LPRINT y LLIST pueden ser
sustituidos por P R I N T # 3 o L I S T # 3 .
CAPITULO 23
L o s " p o r t s - d e E / S s o n l a s l i n e a s d e c o m u n i c a c i ó n q u e u t i l i z a el
microprocesador Z - 8 0 del Spectrum para comunicarse con los
diversos dispositivos periféricos. Entre estos dispositivos
e s t á n i n c l u i d o s a p a r a t o s t a l e s c o m o el t e c l a d o , la p a n t a l l a y el
altavoz, que normalmente c r e e m o s parte integrante del propio
o r d e n a d o r.
El p r o c e s a d o r c o m u n i c a c o n el m u n d o e x t e r i o r p o r medio de 1o s
" b u s e s " . H a y t r e s b u s e s e n el s i sterna: e 1 bus de direcciones,
q u e d i s p o n e d e 1 6 b i t s , el d e datos, de ocho bits y el de
c o n t r o l del p r o p i o s i s t e m a , d e 6 b i t s . L o s p o r t s s e direccionan
c o n la m i t a d i n f e r i o r del b u s d e d i r e c c i o n e s , e s d e c i r , c o n los
últimos 8 bits; por lo tanto, podremos definir 256 ports
d i G e r e n t e s.
C a d a u n o d e l o s b i t s del p o r t c o n t r o l a u n p e r i f é r i c o diferente.
Para indicar que periférico estamos operando, el bit
c o r r e s p o n d i e n t e al m i s m o d e b e r á e s t a r a O y t o d o s l o s d e m á s a 1 .
Teclee lo siguiente:
10 F O R n=l T 0 2 5
20 OUT 254, n
30 NEXT n
40 GO TO 1 0
p a r a d e t e n e r el p r o g r a m a p u l s e B R E A K .
C u a n d o s e lee el t e c l a d o p o r m e d i o d e l a f u n c i ó n I N se emplean
l o s 1 6 b i t s del b u s d e d i r e c c i o n e s , y a q u e l o s n ú m e r o s que son
argumentos de IN son mayores de 256.
Pag. 75
CAPITULO 24
V e a m o s a h o r a u n a d e s c r i p c i ó n d e e s t a s v a r i a b l e s e n el orden en
q u e s e e n c u e n t r a n e n la m e m o r i a .
A l m a c e n a el v a l o r d e l a u l t i m a t e c l a p u l s a d a . E s l a v a r i a b l e q u e
utiliza la f u n c i ó n INKEY».
C o n t r o l a el t i e m p o q u e s e h a d e t e n e r p u l s a d a u n a t e c l a a n t e s d e
q u e c o m i e n c e l a a u t o r r e p e t i c i ón . S u v a l o r inicial es 35 pero
puede alterarse para aumentarlo o disminuirlo.
A l m a c e n a la d i r e c c i ó n d o n d e s e e n c u e n t r a el argumento de una
f u n c i ó n d e f i n i d a p o r el u s u a r i o . Si n o h a y n i n g u n a s u valor es
O.
Pag, 77
Almacena el número d e la 1 in e a en c u r s o.
C o n t i e n e la d i r e c c i ó n d o n d e e m p i e z a l a m e m o r i a l i b r e .
I n d i c a el n ú m e r o d e l i n e a s q u e h a y e n la p a r t e inferior de la
p a n t a l la.
C o n t i e n e el n ú m e r o d e la s e n t e n c i a d e n t r o d e la c o r respond ie n t e
l i n e a a la q u e s a l t a C O N T I N U E .
C u e n t a el n u m e r o d e v e c e s q u e c a m b i a l a p a n t a l l a de televisión
(aproximadamente 50 veces por segundo). P a r a leer e s t a variable
n o s e e m p l e a l a -formula u s u a l ( i n d i c a d a e n el c a p í t u l o dedicado
a la m e m o r i a ) , y a q u e el o r d e n d e s i g n i f i c a c i ó n d e l o s b y t e s no
e s el m i s m o . U s a r e m o s :
E s p e c i f i c a el u s o d e l o s c o m a n d o s P A P E R 9, INK 9, INVERSE y
OVER.
D i r e c c i ó n d o n d e a c a b a la R A M del S p e c t r u m .
CAPITULO 25
Al p r i n c i p i o d e e s t e l i b r o i n d i c á b a m o s q u e el B A S I C y l o s otros
lenguajes d e programación se habían inventado dada la dificultad
q u e e x i s t í a e n h a b l a r al o r d e n a d o r e n s u p r o p i o lenguaje. Como
s a b e m o s , el p r o c e s a d o r Z 8 0 de que está dotado el Spectrum
( t o d o s los ordenadores poseen un procesador, q u e no tiene por
que ser un Z 80) solo entiende números. En realidad, la
información la obtiene d e s u s memorias RAM y ROM, en cuyas
diversas posiciones hay almacenados números entre O y 255, como
ya sabemos.
L a r u t i n a t i e n e 1 2 b y t e s d e l o n g i t u d y la v a m o s a almacenar a
p a r t i r d e la d i r e c c i ó n d e m e m o r i a 6 0 0 0 0 .
10 CLEAR 39999
20 L O A D "" CODE 40000
30 D A T A 1 7, 0 , 6 4 , 3 3 , 6 4 , 1 5 6 , 1 , 0 , 2 7, 2 3 7 , 1 7 6 , 2 0 1
40 FOR n=60000 T0 60011
50 READ a: POKE n,a¡ NEXT n
60 PAUSE 0 : RANDOMIZE USR 60000
Pag. 84
C o l o c a m o s el R A M T O P e n 3 9 9 9 9 p a r a q u e l a p a n t a l l a que vamos a
cargar en e s a dirección n o r e s u l t e afectada por el BASIC. A
c o n t i n u a c i ó n c a r g a m o s la p a n t a l l a e i n t r o d u c i m o s el p r o g r a m a en
código máquina con la ayuda del bucle FOR - NEXT y las
sentencias READ - DATA.
El P A U S E 0 e v i t a q u e el p r o g r a m a e n l e n g u a j e m á q u i n a s e ejecute
i n m e d i a t a m e n t e . E n c u a n t o al c o m a n d o R A N D O M I Z E U S R , e q u i v a l e al
R U N del B A S I C ; h a c e q u e s e e j e c u t e el p r o g r a m a e n c ó d i g o m á q u i n a
e x i s t e n t e a p a r t i r d e la d i r e c c i ó n e s p e c i f i c a d a .
L D DE, 16384
L D HL, 40000
L D BC, 6 9 1 2
LDIR
RET
C a r g a e 1 par d e r e g ist r o s D E c o n e 1 n ú m e r o 1 6 3 8 4
C a r g a el p a r d e r e g i s t r o s H L c o n e 1 n ú m e r o 4 0 0 0 0
C a r g a e 1 p a r d e r e g i s t r o s BC c o n el n ú m e r o 6 9 1 2
Carga, incrementa y repite
V u e l v e al B A S I C
p r i m e r n ú m e r o + 256-M-segundo n ú m e r o
L o s n ú m e r o s 2 3 7 y 1 7 6 i n d i c a n la i n s t r u c c i ó n propiamente dicha
( l a q u e r e a l i z a el t r a s p l a n t e ) y 2 0 1 h a c e q u e s e v u e l v a al B A S I C
c u a n d o el p r o g r a m a h a t e r m i n a d o d e e j e c u t a r s e . E s t a instrucción
e s a b s o l u t a m e n t e n e c e s a r i o c o l o c a r l a al f i n a l del p r o g r a m a s i n o
q u e r e m o s q u e el o r d e n a d o r s e n o s b l o q u e e .
E j e c u t e el p r o g r a m a y v e a l o q u e s u c e d e .
E n el m e r c a d o e x i s t e n p r o g r a m a s e n s a m b l a d o r e s que permiten la
programación en código máquina por medio d e comandos. Si no
q u i e r e u t i l i z a r e n s a m b l a d o r , h á g a s e c o n u n l i b r o q u e e x p l i q u e el
ensamblador del Z 80 y traduzca Vd . mismo el programa a
lenguaje máquina, aunque seguramente encontrará mU y tedioso e s t e
m é t o d o.
L a m a n e r a d e g r a b a r p r o g r a m a s e n c ó d i g o m á q u i n a s e e x p l i c ó e n el
capítulo correspondiente.
Paa, 86
APENDICE
E L JUEGO D E C A R A C T E R E S
CARACTER CODIGO
espac i o
U U U U U U
M (h « A U N
I
■
$
%
8c 38
39
( 40
) 41
* 42
43
44
45
46
/ 47
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
58
59
< 60
61
> 62
63
§ 64
A 65
8.7
Pag.
1 10
111
112
113
114
115
116
117
118
1 19
120
121
122
123
124
125
126
127
8 128
o o o o □ □
n n n n n n
1 129
2 130
3 131
4 132
5 133
gráfico 6 134
7 135
7 136
6 137
5 138
4 139
3 140
2 141
1 142
O 143
A 144
B 145
C 146
D 147
E 148
F 149
G 150
H 151
I 152
J 153
Pag. 89
grá+icQ
gráfico
gr ático
(flTjs-oozzrx
gráfico
gr ático
gr ático
gr át ico
gráfico
gr át i co
gr át i co
gr át ico
RND
INKEYS
PI
FN
POINT
SCREENS
ATTR
AT
TAB
VALS
CODE
VAL
LEN
SIN
COS
TAN
ASN
ACS
ATN
LN
EXP
I NT
SQR
SGN
ABS
PEEK
IN
USR
STRS
CHRS
NOT
BIN
OR
Pag, 90
AND 198
<= 199
>= 200
<> 201
LINE 202
THEN 203
TO 204
STEP 205
DEF FN 206
CAT 207
FORMAT 208
MOVE 209
ERASE 210
OPEN # 21 1
CLOSE # 212
MERGE 213
VERIFY 214
BEEP 215
CIRCLE 216
INK 217
PAPER 218
FLASH 219
BRIGHT 220
INVERSE 221
OVER 222
OUT 223
LPRINT 224
LLIST 225
STOP 226
READ 227
DATA 228
RESTORE 229
NEW 230
BORDER 231
CONTINUE 232
DIM 233
234
REM ,
FOR 235
GO TO 236
GOSUB 237
INPUT 238
LOAD 239
LIST 240
LET 241
Pag. 91
PAUSE 242
NEXT 243
POKE 244
PRINT 245
PLOT 246
RUN 247
SAVE 248
RANDOMIZE 249
IF 250
CLS 251
DRAW 252
CLEAR 253
RETURN 254
COPY 255
INDICE
P r Ó1 o g o 1
Introduce ión 3
1 El t e c l a d o del S p e c t r u m 4
2 El B A S I C 7
3 Las variables 14
5 Mat r ic e s 21
7 Fragmentación d e cadenas 27
8 Toma d e decisiones 29
9 Subrut iñ a s 31
10 Expresiones matemáticas 33
11 F u n c i o n e s p r o p i a s del S p e c t r u m 35
12 Funciones matemáticas 39
13 Números aleatorios 41
14 Operadores lógicos 43
15 El j u e g o d e c a r a c t e r e s 46
16 L o s c o l o r e s del S p e c t r u m 51
17 G r á f i c o s en a l t a resolución 56
21 El fichero de pantalla 69
22 Uso de la impresora 72