_a
_/|\_
ATARI
B.A.S.I.C.
Por ZZT
En esta sección repasaremos el lenguaje BASIC, que no significa básico, sino Beginner's All-purpose Symbolic Instruction Code o Código de instrucciones simbolicas de porpósito general para principiantes. Leyendo esa descripción, podemos afirmar que es un lenguaje orientado principalmente a estudiantes o personas autodidactas.
Hay que aclarar que Basic no es exclusivo de Atari, ya que muchas marcas de microcomputadores lo incluían de fábrica. Con algunas sutiles diferencias, todos hacían casi lo mismo. Lo importante aquí es la SINTAXIS, que es orden de como se ingresan los nombres y datos, osea, como debemos comunicarnos con la máquina. Esto no es como en la película WarGames donde le preguntan directamente a la computadora WORP "si quiere jugar o como la está pasando" o como cuando en Viaje a las Estrellas IV, Scotty trata de comunicarse hablandole a la computadora en la fábrica de plexiglás, que era una Apple. :D
Dicho esto, debemos dejar bien claro que esta sección solo pretende ayudarnos a recordar esos maravillosos años en que eramos jovenes, o niños, y enfrentabamos nuestro Atari más allá de jugar Montezuma. Ahora si ud. aprende a programar, bienvenido sea. :)
CAPITULO 1
Matemáticas/Calculadora
Quizas una de las funciones más desconocidas y simples de los Atari es que se pueden realizar operaciones matemáticas sin necesidad de hacer un programa ni tener conocimientos avanzados de programación, incluso de uso de microcomputadores.
La sintaxis para utilizar esta funciones son: primero se debe escribir PRINT, seguido de la función y entre paréntesis el número. Para ejecutar y obtener el resultado presionar [RETURN]
A continuación veremos ejemplos:
I-Matemática básica
PRINT (2+2)
4
PRINT 2+2
4
PRINT 2-2
0
PRINT 2*2
4
PRINT 2/2
1
Como vemos en el primer ejemplo se usa paréntesis para los operandos y en los siguentes no. En el caso de matemáticas básicas no son necesarios, pero para cálculos más complejos o como veremos más adelante con funciones aritméticas y trigonométricas son obligatorios.
TIP: Recomiendo a los que tiene hijos menores de 10 años repasen estas básicas instrucciones con ellos. Es muy entretenido y les acercaran un pasito al mundo de la informática.
TIP: también existen los operadores < (menor que), > (mayor que) y ^ (elevado a). Los veremos más adelante.
II-Funciones aritméticas
ABS
ABSolute, entrega el valor absoluto de un número sin importar si es positivo o negativo
PRINT ABS(-45)
Resultado 45
CLOG
Common LOGarithm (logaritmo común). Entrega el valor logarítmico del número ingresado
PRINT CLOG (2)
Resultado 0.301029995
EXP
EXPonential, (exponencial). Entrega el valor de 2.71828179 elevado a la potencia indicada entre paréntesis
PRINT EXP(2)
Resultado 7.38905599
INT
INTeger, entrega un número entero, si éste contiene decimales los elimina. El redondeo siempre es hacia abajo.
PRINT INT(3.1416)
Resultado 3
LOG
LOGaritmo natural, entrega el logaritmo del valor indicado entre paréntesis
PRINT LOG(10)
Resultado 2.30258509
RND
RaNDomize, entrega un número al azar. Su sintaxis es un poco más compleja que las anteriores RND(0)*X, donde X es el número máximo al cual deseamos llegar.
PRINT RND(0)*10
Resultado: un número entre 0 y 10 con decimales. Para eliminar los decimales o redondear (o enterar) se usa INT(RND(0)*10)
SGN
SiGN. Entrega el signo -1 si el resultado será negativo, un 0 si será cero y 1 si será positivo
PRINT SGN(-7) PRINT SGN(7) PRINT SGN(7-7)
Resultado -1 Resultado 1 Resultado 0
SQR
SQuaRe root, entrega la raiz cuadrada del número entre paréntesis
PRINT SQR(10)
Resultado 3.16227766
Tip: Recordemos que el punto decimal es el punto, no la coma.
III-Funciones trigonométricas
ATN
ArcTanGent (arcotangente). Entrega el valor arcotangente del número entre paréntesis
PRINT ATN(10)
Resultado 1.47112767
COS
COSine (coseno). Entrega el coseno del número entre paréntesis
PRINT COS(10)
Resultado -0.83907215
SIN
SINe (seno). Entrega el seno del número entre paréntesis
PRINT SIN(10)
Resultado -0.544020157
DEG Y RAD
DEGrees - RADians. permite indicarle al Atari se deseamos que calcule en grados o radianes. Se utiliza en modo directo.
Para grados
DEG [RETURN]
Para radianes
RAD [RETURN]
El Atari esta seteado para radianes por defecto. Si se especifica RAD, quedará así hasta que se ingrese DEG nuevamente.
¿Quién dijo que la matemática era fácil o entretenida? Bueno, lamentablemente es necesario repasar esto primero, ya que la idea es ir escalando dificultades, lo cual permite acometer tareas más complejas a futuro.
CAPITULO 2
Comandos
Ahora revisaremos algunos comandos que son de vital importancia para programar.
I-Comandos básicos
LIST
Muestra el listado del programa.
NEW
Borra el programa que escribimos (cuidado con este comando!Atarinotiene papelera de reciclaje).
RUN
Una vez tenemos un programa listo, para que funcione debemos escribir RUN (correr).
BYE
Se va al SELF TEST y se borra el programa, sin posibilidad de recuperación.
II-Comandos especiales
PRINT FRE(0)
Indica la cantidad de memoria RAM que queda disponible.
PEEK(X)
Entrega el valor de la posición de memoria indicada entre paréntesis
PEEK(710)
148
La posición 710 controla el color de fondo de la pantalla, en este caso 148 es el azul que todos recordamos
POKE A,B
Guarda en la posición de memoria A el valor B
POKE 710,0 [RETURN]
Después de ejecutar veremos que la pantalla se a puesto negra, pues al ingresar el cero en la posición 710 corresponde al color negro.
Si desea explorar o divertirse, ingrese otros valores y vea los colores generados. El Nº debe ser entre 0 y 255.
No tenga miedo de usar el comando POKE! Las direcciones de memoria modificadas están grabadas en la ROM del Atari y cada vez que se apague y encienda volveran a la normalidad.
TIP: El color de las letras se controla con la posición 709 y el margen la 712. Si desea volver a la pantalla original pero no recuerda los valores originales, escriba GR.0 o simplemente presione [RESET].
NOTA: Si ud. no posee casetera, disketera o impresora, salte al CAPITULO 3.
III- Comandos de casetera y disketera
TIP: Para utilizar la disketera debe tener un diskete que contenga los programas DOS.SYS y DUP.SYS. El orden correcto es:
Encender la disketera==> Ingresar el disco con DOS (cerrar el pasador)==> Encender el Atari. Con eso el Atari sabrá comunicarse con la disketera, ya que su sistema operativo contenido en la ROM no puede hacerlo por si solo. Solo la casetera puede operarse sin sistema operativo ya que la ROM si tiene las rutinas de comunicación con ella.
CSAVE
Graba el programa en la casetera
CLOAD
Carga un programa desde la casetera
SAVE"D:ATARI.BAS"
Graba en la disketera el programa que hemos tipeado y le pone el nombre ATARI.BAS. El nombre puede contener solo letras mayúsculas y un número pero no comenzar con número.
ATARI1.BAS = válido
1ATARI.BAS = error
1aTaRi.Bas = error
La extensión (.BAS) puede contener números o letras sin importar el orden, incluso no es necesaria. Claro que a veces ocho caracteres eran muy pocos para detallar claramente que hace el programa que grabamos. Por ejemplo, si a nuestro programa que ordena palabras le ponemos "HOLA1" .... y después de un tiempo revisamos el diskete y .... ¿que diablos hará HOLA1? En ese caso es mejor "ORDENA.PAL".
¿no?
TIP: El Atari puede manejar hasta 4 disketeras. Cuando hay una sola no es necesario especificar D1: pero es igual de válido que D:
La extención se utiliza para recordar si el archivo es BASIC=BAS ASSEMBLER=ASM COMPILADO=COM EXECUTABLE=EXE. No hay asociación de archivos como en windows!
LOAD"D:ATARI.BAS
Carga desde la disketera el programa ATARI.BAS. Los programas grabados en diskete no se pueden alterar a menos de sobreescribirlos (grabando un nuevo programa con el mismo nombre). Claro que también existen los terribles CRC, errores físicos de escritura que dejan inutilizable el disco. Por eso siempre era una buena medida de seguridad grabar el programa en otro disco.
TIP: Si ud. quiere cargar un programa previamente grabado y no recuerda el nombre, escriba DOS y se ejecutará el menú contenido en el diskete. Ahi encontrará multiples funciones, como ver el directorio (opción A). Para volver al Basic la opción B. Más adelante revisaremos en extenso todas las opciones del DOS.
*Recuerde que iralDOS automáticamente borra el programa que esta escribiendo (guárdelo antes!).
LPRINT
Indica a la impresora (si es que esta conectada) que imprima el listado del programa.
CAPITULO 3
Instrucciones
Bien, revisamos lo más básicoy comenzaremos a revisar instrucciones de programación. No las veremos en orden alfabético, sino de menor a mayor complejidad. Recordemos que después de cada instrucción hay que presionar [RETURN], sino, el Atari hará nada.
REMember (recuerda). Es una instrución muy importante y sin embargo hace nada! Solo nos recuerda que es lo que hace cierta parte del programa o un mensaje.
10 REM PROGRAMADO JULIO 2013
10 REM INICIO DE PROGRAMA
REM es un recordatorio que nos permite mantener un programa ordenado y entendible por cualquiera, pero ojo: consume memoria.
PRINT "" (Imprime). Esta instrucción imprime en la pantalla lo que se encuentre entre comillas.
PRINT "ATARI"
Esto imprime la palabra Atari inmediatamente. Si queremos que la palabra aparezca en un lugar especifico debemos usar la instrucción POSITION.
PRINT X
Si dentro de un programa hay una variable llamada X, se imprimirá su valor numérico.
POSITION X,Y (posición). Con position se asignan coordenadas depantalla donde queremos ubicar el cursor, una palabra o texto. La X equivale a las columnas y la Y a las filas. La pantalla se divide en 40 columnas por 24 filas, por lo tanto los valores deben estar entre 0 y 39 para X y entre 0 y 23 para Y.
POSITION
1,5: PRINT ¨HOLA¨
Esto imprimirá la palabra HOLA en la columna 1 fila 5.
TIP: Cuando se desean juntar dos (o más) instrucciones en una misma linea se haceseparandolas con el simbolo dos puntos (:).
GRAPHICS (gráficos) El Atari posee 15 modos graficos, la mayoría orientado a juegos. El modo normal de texto es el GRAPHICS 0 ó gráfico 0 ó simplemete GR.0.
GR.0
Borra todo lo que hay en pantalla. Es muy útil ya que si tenemos la pantalla llena de textos y queremos limpiarla éste el método más fácil. Estainstrucción NO borra el programa de la memoria, solo deja limpia la pantalla.
SOUND A,B,C,D (sonido). El Atari puede generar muchos sonidos, pero hay que saber como obtenerlos. Lo más básico es ésta instrucción, la cual con los valores A,B,C,D generará sonidos.
-A es uno de los cuatro canales disponibles valor entre (0 y 3)
-B es la nota, valor entre 0 y 255
-C es la distorsión que se le puede asiganar a la nota, valor entre 0 y 14
-D es el volumen al que sonará la nota, valor entre 1 y 15 (1 es el más despacio, 15 el más fuerte)
SOUND 1,100,10,10
Esto causará que el Atari comienze a emitir un pitido. Para terminarlo escriba SOUND 1,0,10,10 ó END ó presione [RESET]
END (fin) Finaliza lo que el Atari esté ejecutando. Si hay sonido, lo apaga. Si hay ejecución de programa, lo detiene, etc.
CONT (continuar). En el caso que un programa se haya detenido por el uso de la tecla [BREAK] o por algún error de programación, con esta instrucción se puede forzar la reanudación a pesar de los errores.
FOR / NEXT (para / siguiente). For next es lo que se conoce como un loop, osea, un lazo o circulo cerradoquenofinaliza hasta que se complete el ciclo.
FOR X=A TO B:NEXT X
Crea un contador: para X asigne el valor desde A hasta B antes de parar.
FOR X=1 TO 200:NEXT X
Si lo ejecutamos, veremos que el Atari demora alrededor de un segundo en devolver READY, indicando que ejecutó la instrucción (contar desde 1 hasta 200).
Agreguemos un PRINT:
FOR X=1 TO 200:PRINT X: NEXT X
Si lo ejecutamos, veremos que el Atari imprime un listado con el valor de X, osea, desde 1 a 200.
FOR X=1 TO 200:PRINT X,: NEXT X
Aca en la instrucción PRINT X agregamos una coma después de PRINTX y veremos los numeros tabulados.
FOR X=1 TO 200:PRINT X;: NEXT X
Si en vez de la coma ponemos punto y coma, los numeros saldrán pegados unos con otros.
Estas sencillas modificaciones pueden ser triviales, pero tienen importancia. Al ir aumentando la complejidad más habilidad se gana.
TIP: En el caso de repetir un ciclo FOR/NEXT el primer valor para X vuelve a ser el primero (1 en este caso)
IF / THEN (si / entonces) If /then son super importantes para capturar condiciones y derivar el programa por distintos caminos.
IF X=200 THEN END
SI X es igual a 200entonces finalize.
GOTO (vaya a). Es una manera de desviar el programa por distintas opciones.
IF X=200 THEN GOTO 1000
SI X es igual a 200entonces vaya a la línea 1000.
GOSUB (vaya a subrutina). Es otra manera de desviar el programa, pero en este caso es más útil cuandoes una rutina que se ocupe varias veces, asi no tenemos que repetir código que nos consuma más memoria. En la subrutina, después de la última instrucción, se debe escribir RETURN, para que el Atari vuelva a la línea de donde se hizo el GOSUB.
10 FOR X=1 TO 200
20 IF X=100 THEN GOSUB 1000
30 NEXT X
40 GOTO 10
1000 PRINT ¨LLEGUE A 100"
1001 RETURN
READ/DATA (lee/datos). Read lee los datos almacenados en una línea bajo la instrucción DATA. Si no hay una instrucción RESTORE que indique una línea específica el Atari tomará los datos desde la primera línea disponible.
TRAP (trampa). Esta instrucción se coloca en una línea donde pueden suceder errores, por ejemplo si se necesita ingresar datos numéricos y se ingresa un caracter (letra) se produce un error, que sin TRAP hará que el programa se detenga.
TRAP 100
Enviara el programa a la línea 100 si se produjo un error.
Vamos progresando, en el siguiente capítulo veremos ejemplos más concretos de FOR/NEXT IF/THEN GOTO GOSUB
CAPITULO 4
Programación
Cuando se tipea un programa se debe asignar un Nº de línea, que puede estar entre 0 y 65535.Ademássedebe escribir con mayúsculas (minúsculas o caracteres inversos son rechazados)y por supuesto no olvidar [RETURN] para que la línea sea ingresada a la RAM.
Aca veremos una serie de ejemplos de uso de las instrucciones REM FOR/NEXT IF/THEN GOTO GOSUB/RETURN
1 REM PROGRAMADO POR ZZTOP 2013 |
Mensaje del autor |
1 REM PROGRAMADO POR ZZTOP 2013 |
Mensaje del autor |
1 REM PROGRAMADO POR ZZTOP 2013
6 END |
Mensaje del autor Para finalizar presionar [BREAK] |
1 REM PROGRAMADO POR ZZTOP 2013
6 GR.0 |
Mensaje del autor Para finalizar presionar [BREAK] |
1 REM PROGRAMADO POR ZZTOP 2013 |
Mensaje del autor Para finalizar presionar [BREAK] |
1 REM PROGRAMADO POR ZZTOP 2013 |
Mensaje del autor |
Continuará...............
PEEK(764) teclado, PEEK(53279) teclas consola
POKE 82 borde de la pantalla, POKE 709 color de las letras, POKE 710 color del fondo, POKE 712 color del margen, 752 cursor
¿Alguna duda? Puedes consultar en el foro.