Ver el código de Logo Atari

((https://www.atariware.cl/archivos/logo/logo.webp align=center))

Desarrollado por: Logo Computer Systems, Inc.
Publicado en: 1983
Traducido por: MultiSoft
Distribuido por: Coelsa
Medio: Cartucho y Disco

{{toc numerate=1}}
===Introducción===

Logo es un lenguaje de programación de alto nivel, de muy fácil aprendizaje, razón por la cual suele ser el lenguaje de programación preferido para trabajar con niños y jóvenes. Fue diseñado con fines didácticos por Danny Bobrow, Wally Feurzeig y Seymour Papert. A pesar de que Logo no fue creado con la finalidad de usarlo para enseñar programación, puede usarse para enseñar la mayoría de los principales conceptos de la programación, ya que proporciona soporte para manejo de listas, archivos y entrada/salida. Logo es uno de los pocos lenguajes de programación con instrucciones en español en algunas de sus versiones.

El Logo Atari que comprende:

  * 45 instrucciones para manejo de la geometría LOGO Incluye 4 tortugas con manejo de 16 formas, 126 colores y movimiento dinámico
  * 19 instrucciones para un poderoso manejo de listados
  * 3 instrucciones para manejo de variables
  * 17 instrucciones para operaciones aritméticas
  * 4 instrucciones de edición de procedimientos, variables y tareas
  * 11 instrucciones de condicionalidad y control de flujo
  * 3 instrucciones para operaciones lógicas
  * 17 instrucciones para comunicación
  * 15 instrucciones para manejo de memorias
  * 8 instrucciones para manejo de archivo
  * 5 instrucciones especiales para bajar a nivel de lenguaje de máquina

===Equipamiento===

El equipamiento mínimo para comenzar es un computador ATARI 600 XL o superior. Puede grabar y cargar archivos en casete usando la ATARI 1010 o también puede usar la disquetera ATARI 1050.

===Forma de Trabajar===

En el lenguaje Logo existen dos formas de trabajar para lograr los resultados deseados, es decir, para lograr que la tortuga haga lo que deseamos:

La primera es ingresar las primitivas o instrucciones a través de la línea de comandos.
((https://www.atariware.cl/archivos/logo/logoinstr.gif align=center))
La segunda es crear un procedimiento o pequeño programa en donde digitamos las instrucciones necesarias. 
((https://www.atariware.cl/archivos/logo/logoprod.gif align=center))

===Instrucciones===

A continuación un listado con los comandos en español y su símil en ingles con la descripción de que función realiza :

#|
*|Español|Ingles|Descripción|*
||⋕YL pred1 pred2|⋕AND|Las salidas son verdaderas si todas sus entradas son verdaderas||
||COD? car|ASCII|Responde con el código ASCII del caracter||
||PI ntortuga lista|ASK|Pide el número de tortuga para que ejecute las instrucciones en la lista||
||RT distancia|BACK, BK |Mueve la distancia de la tortuga hacia atrás||
||FD|BG|Muestra un número que representa el color de fondo||
||SINPRIME, SP obj|BUTFIRST, BF|Envía todos los elementos de obj menos el primero||
||SINULTI obj|BUTLAST, BL|Envía todos los elementos de obj menos el último||
||LLAMA n|.CALL|Transfiere el control a una subrutina de lenguaje de máquina que comienza en la dirección n (decimal)||
||CATA unidad:|CATALOG|Muestra los nombres de todos los archivos en el disquete. En el casete, imprime las definiciones de los procedimientos y los nombres del archivo||
||CAR? n|CHAR|Da salida al carácter cuyo código ASCII es n||
||BORRA|CLEAN|Elimina la pantalla de gráficos sin afectar el estado de la tortuga||
||COLOR|COLOR|Muestra un número que representa el color de la tortuga||
||COND ncond|COND|Da como resultado verdadero si la condición condnumber está ocurriendo||
||COS n|COS|Da como resultado el coseno de n grados||
||CUENT obj|COUNT|Muestra el número de elementos en objecto||
||LM|CS|Borra la pantalla, mueve la tortuga a la posición [0 0]. Establece el rumbo a 0||
||LT|CT|Borra la pantalla de texto||
||COLOCA n byte|.DEPOSIT|Escribe un byte en la dirección n (decimal)||
||CADA lista|EACH|Hace que cada tortuga ejecute por separado los comandos de la lista||
||ED nombre(s)|EDIT, ED|Inicia el logo editor con procedimientos nombrados||
||EMON|EDNS|Inicia el logo editor con todas las variables del área de trabajo||
||EFOR número de forma|EDSH|Inicia el editor de formas del logo, mostrando el número de la forma.||
||NADA? obj|EMPTYP|Da como resultado verdadero si obj está vacío||
||FIN|END|Termina la definición del procedimiento iniciado por CR||
||IGUAL? obj1 obj2|EQUALP|Da como resultado verdadero si sus entradas son iguales||
||ELTOD|ERALL|Borra todo del espacio de trabajo||
||EL nombre(s)|ERASE, ER|Borra todos los procedimientos nombrados||
||DES unidad:archivo|ERF|Borra el nombre del archivo del dispositivo||
||ELN nombre(s)|ERN|Borra todas las variables con nombre||
||ELNS|ERNS|Borra las variables del espacio de trabajo||
||ELTA|ERPS|Borra todos los procedimientos del área de trabajo||
||EXAMINA n|.EXAMINE|Muesta el contenido de la dirección n (decimal)||
||FALSO|FALSE|Entrada especial para y, si, no y o||
||PRIM obj|FIRST obj|Da salida al primer elemento de objecto|| 
||AV distancia|FORWARD, FD|Mueve a la tortuga pasos de distancia hacia adelante||
||POMP obj lista|FPUT|Sale una lista formada por la colocación de obj en el frente de la lista||
||GR (CTRL+F)|FS|Dedica toda la pantalla a los gráficos||
||LEFF número de forma|GETSH|Devuelve una lista de 16 números; estos números corresponden a los bits de la forma||
||RUMBO?|HEADING|Muestra el rumbo de la tortuga||
||CON|HOME|Mueve la tortuga a [0 0] y establece el rumbo a 0||
||ST|HT|Hace que la tortuga sea invisible||
||SI pred lista1 (lista2)|IF|Si pred es verdadero, ejecuta lista1, de lo contrario lista2||
||ENT n|INT|Pone la parte entera de n||
||BA? njoy|JOY|Muestra la posición actual del número del joystick||
||BBA? bjoy|JOYB|Da como resultado verdadero si se pulsa el botón del número del joystick||
||TEC?|KEYP|Da como resultado verdadero si una tecla ha sido tecleada pero aún no ha sido leída||
||ULTI|LAST Obj|Da salida al último elemento del objeto||
||IZ grados|LEFT, LT|Gira la tortuga grados a la izquierda (en sentido contrario a las agujas del reloj)||
||LIST obj1 obj2|LIST|Sale la lista de sus entradas||
||LISTP obj|LISTP|Da como resultado verdadero si obj es una lista||
||CARG unidad:archivo|LOAD|Carga el archivo llamado filename desde el dispositivo en el ordenador||
||PONU obj lista|LPUT|Sale una lista formada por la colocación de obj al final de la lista.||
||HAZ nombre obj|MAKE |Hace que el nombre se refiera al objeto||
||ELEM? obj lista|MEMBERP|Da como resultado verdadero si el objeto está incluido en la lista||
||VAL? nombre|NAMEP|Da como resultado verdadero si el nombre tiene un valor||
||NUDOS|NODES|Muestra el número de nodos libres||
||NOT pred|NOT|Da como resultado verdadero si pred es FALSE||
||NUMERO? obj|NUMBERP|Da como resultado verdadero si el objeto es un número||
||⋕OL predl pred2|#OR|Da como resultado TRUE si alguna de sus entradas es verdadera||
||SALIDA obj|OUTPUT, OP|Devuelve el control a la persona que llama, con el objeto como salida||
||SOB? ntorguta npen|OVER|Muestra un número que simboliza la colisión entre el número de la tortuga y el número del lápiz||
||PER? npaddle|PADDLE|Da salida a la rotación en el dial del número de paddle||
||BPER? bpaddle|PADDLEB|Emite verdadero si se presiona el botón en el número de paddle||
||CL npen|PC|Muestra un número que representa el color de la pluma del número del lápiz||
||LG|PE|Deja el borrador del bolígrafo||
||LA?|PEN|Salidas del estado del lápiz (LA, SL, LG o PI)||
||LAPIZ, LA|PENDOWN, PD|Baja el lápiz a la tortuga||
||SINLA, SL|PENUP, PU|Levanta el lápiz de la tortuga||
||LN|PN|Muestra el número del lápiz (0, 1 o 2) que se está utilizando||
||LI nombre|PO|Imprime las definiciones de los procedimientos con nombre||
||LITO|POALL|Imprime las definiciones de los procedimientos y los nombres (variables)||
||LID ncond|POD|Imprime cuando el demonio ncond actualmente en acción||
||LIDS|PODS|Imprime todos los activos cuando los demonios||
||LNS|PONS|Imprime los nombres y valores de todas las variables||
||LITA|POPS|Imprime las definiciones de todos los procedimientos||
||POS|POS|Muestra las coordenadas de la posición de la tortuga||
||LITI|POTS|Imprime las líneas de título de los procedimientos||
||PRIMITIVAS|.PRIMITIVES|Imprime la lista de primitivas de Logo||
||⋕IM obj|⋕PRINT, PR|Imprime objeto seguido de retorno de carro (elimina los paréntesis exteriores de las listas)||
||⋕PRODUC a b|⋕PRODUCT|Salidas producto de sus entradas||
||HAZF nshape sshape|PUTSH|Da a nshape la forma de sshape, la red de bits||
||LO|PX|Deja el lapiz reversible||
||AZAR n|RANDOM |Produce un número entero aleatorio entre 0 y n -1||
||LC|RC|Pemite el carácter leído por el dispositivo actual (por defecto es el teclado). Espera si es necesario||
||RECICLA|RECYCLE|Realiza una recogida de basura||
||REMANENTE d b|REMAINDER|Muestra el resto de a dividido por b||
||REPITE n lista|REPEAT|Ejecuta la lista n veces||
||REAZAR|RERANDOM|Maker random se comportan de forma reproducible||
||DE grados|RIGHT, RT|Gira la tortuga grados a la derecha (en el sentido de las agujas del reloj)||
||LL|RL|Da salida a la línea leída por el dispositivo actual (por defecto es el teclado). Espera si es necesario||
||REDOM n|ROUND|La salida de n se redondea al número entero más cercano||
||EJE lista|RUN|Ejecuta la lista, produce lo que produce la lista||
||GRA unidad:archivo|SAVE|Guarda el espacio de trabajo en el dispositivo||
||⋕FR obj1 obj2|⋕SE|Sale la lista de sus entradas||
||PONFD ncolor|SETBG|Establece el fondo como un número de color||
||PONC ncolor|SETC|Establece el número de color de la tortuga||
||PONCURSOR pos|SETCURSOR|Pone el cursor en la posición||
||REDUCE voz duracion|SETENV|Establece la envolvente de la voz para el toot de modo que el volumen se reduce en una unidad cada duración||
||PONR grados|SETH|Establece el rumbo de la tortuga en grados||
||PONLC npen ncolor|SETPC|Establece el número de lápiz (0, 1 o 2) en el número de columna||
||PONNL npen|SETPN|Establece la lápiz como número de lápiz (0,1 o 2)||
||PONXY pos|SETPOS|Mueve la tortuga a su posición||
||PARALE unidad:archivo|SETREAD|Establece el nombre del dispositivo del que se leerá la salida de LC y LL||
||PARALE [ ] |SETREAD|Cierra el archivo que se abrió con PARALE||
||PONFAC m|.SETSCR|Establece la relación de aspecto a n||
||PONFR nshape|SETSH|Establece la forma de la tortuga en el número de forma||
||PONV speed|SETSP|Establece la velocidad de la tortuga||
||PARAES unidad:archivo|SETWRITE|Inicia el proceso de envío de una copia de todos los caracteres mostrados en la pantalla a unidad:archivo||
||PARAES [ ]|SETWRITE|Cierra el archivo que se abrió con PARAES||
||PONX x|SETX|Mueve la tortuga horizontalmente a la coordenada x en x||
||PONY y|SETY|Mueve la tortuga verticalmente a la coordenada y en y||
||FORMA|SHAPE|Muestra un número que representa la forma de la tortuga actual||
||MUES obj|SHOW|Imprime el objeto seguido de un retorno con paréntesis para la lista||
||TG?|SHOWNP|Da como resultado verdadero si se muestra la tortuga||
||SEN n|SIN|Produce un seno de n grados||
||VELOC|SPEED|Muestra la velocidad actual de la tortuga||
||RAIZ n|SORT|Produce la raíz cuadrada de n||
||MX (CTRL+S)|SS|Divide la pantalla: arriba para los gráficos, abajo para el texto||
||TG|ST|Hace que la(s) tortuga(s) sea(n) visible(s).||
||PARA|STOP|Detiene el procedimiento y devuelve el control a la persona que llama||
||SUM a b|SUM|Hace la suma de sus entradas.||
||DILE ntortuga|TELL|Dirige todos los comandos siguientes al número de tortuga||
||VALOR nombre|THING|Muesta el objeto referido por el nombre||
||CR nombre|TO|Comienza a definir el nombre del procedimiento||
||SON voz freq vol duración|TOOT|Produce sonido en la voz de la frecuencia y el volumen de la duración||
||TOCA? ntortuga1 ntortuga2|TOUCHING|Muestra un número que simboliza la colisión entre el número de tortuga 1 y el número de tortuga 2||
||VER|TRUE|Entrada especial para y, si, no y o||
||TE (CTRL+T)|TS|Dedica toda la pantalla al texto||
||⋕ES obj|⋕TYPE|Imprime el objeto dejando el cursor al final de la línea impresa||
||ALTO n|WAIT|Hace una pausa de n/60 de segundo||
||CUAN ncond lista|WHEN|Establece cuando el demonio para que cada vez que la condición ncond ocurre, la lista se ejecuta||
||CUAN ncord [ ]|WHEN|Se borra (se detiene) cuando el demonio para el ncond||
||QT?|WHO|Muestra el número de la tortuga actual.||
||SALE|WINDOW|Hace que la pantalla de gráficos sea una ventana de un campo de tortuga expandido. Borra la pantalla||
||⋕PLBR palabra1 palabra2|⋕WORD|La palabra de salida se compone de sus entradas||
||PLBR? obj|WORDP|Da como resultado verdadero si el objeto es una palabra||
||VUEL|WRAP|Hace que el campo de la tortuga envuelva los bordes de la pantalla. Borra la pantalla||
||XCO?|XCOR|Muestra la coordenada x de la posición de la tortuga||
||XYO?|YCOR|Muestra la coordenada y de la posición de la tortuga||
|#

===Aritmética===

#|
*|Operación|Descripción|*
||a + b|Responde con a más b||
||a - b|Responde con a menos b||
||a * b|Responde con a multiplicado por b||
||a / b|Responde con a dividido por b||
||a < b|Responde con VER si a es menor que b||
||a > b|Responde con VER si a es mayor que b||
||obj1 = obj2|Responde con un VER si a es igual a b||
|#

===Glosario===

#|
*| Palabra | Significado|*
||byte|Unidad de datos utilizada por el ordenador. Un número entero de 0 a 255||
||car|Letras del alfabeto, números y signos de puntuación||
||ncolor|Un número entero de 0 a 127||
||ncond|Un número entero de 0 a 21||
||archivo|Un nombre de archivo||
||grados|Grados de un ángulo. Un número real entre -9999.9999 y 9999.9999. Se puede utilizar el comando repetir para superar este límite||
||unidad|Un nombre de dispositivo. "C: es Cassette. "D: es Disco, y "P: es Impresora. Los símbolos " (comillas) y : (dos puntos) son necesarios en todo momento||
||distancia|Un número desde -9999.9999 hasta 9999.9999. Se puede utilizar el comando repetir para superar este límite||
||duración|Un número entero de 0 a 255||
||freq|Un número entero de 14 a 64.000 en Hz||
||entrada|Palabras con dos puntos delante. Se utiliza junto con CR||
||instlista|Una lista de procedimientos que Logo puede ejecutar||
||njoy|Un entero de 0 a 3||
||lista|Información encerrada entre corchetes []||
||n, a, b, x, y|Un número||
||nombre|Una palabra que nombra un procedimiento o una variable||
||nomlista|Una lista de nombres||
||objecto|Un objeto Logo (una palabra, una lista o un número)||
||npaddle|Un número entero de 0 a 7||
||npen|Un número entero de 0 a 2||
||pos|Una lista de dos números que dan las coordenadas de la tortuga o del cursor||
||pred|Un predicado, que es una operación que produce la palabra verdadera o la palabra falsa||
||nshape|Un número entero de 0 a 15||
||sshape|Una lista de 16 números que representan la cuadrícula de la forma||
||ntortuga|Un número entero de 0 a 3||
||voz|Un número entero, ya sea 0 o 1||
||volume|Un número entero de 0 a 15||
||secuen|Una secuencia de caracteres (sin incluir un espacio)||
|#

===Demostraciones ===
{{embed url="https://www.youtube-nocookie.com/embed/dECHOyL3Odg" width=480 height=360 align=center}}
%%(wacko wrapper=text wrapper_align=center)**Bandera Chilena**
Publicado en revista ((https://archive.org/details/MundoAtari05/page/n29/mode/2up MundoAtari numero 5)) octubre del 1987, página 29.%%
{{embed url="https://www.youtube-nocookie.com/embed/1RzrFAaE-Zc" width=480 height=360 align=center}}
%%(wacko wrapper=text wrapper_align=center)**Atrape la tortuga**
Publicado en ((https://archive.org/details/boletin-informativo-centro-atari-1985-02-03/page/8/mode/2up boletín informativo centro Atari volumen 3 y numero 2)), Febrero/Marzo 1985, página 8.%%
{{embed url="https://www.youtube-nocookie.com/embed/bmtjFr21KyQ" width=480 height=360 align=center}}
%%(wacko wrapper=text wrapper_align=center)**Dragón**
Publicado en ((https://archive.org/details/boletin-informativo-centro-atari-1985-04/page/6/mode/2up boletín informativo centro Atari volumen 3, numero 3)) de Abril del 1985, página 6.%%
{{embed url="https://www.youtube-nocookie.com/embed/8eDUJF8kgAQ" width=480 height=360 align=center}}
%%(wacko wrapper=text wrapper_align=center)**Carrera de autos**
Publicado en el libro ((http://www.atarimania.com/documents/Atari_LOGO_Introduction_to_Programming_Through_Turtle_Graphics.pdf Atari LOGO Introduction To Programing Through Turtle Graphics)), Apéndice C página 147.
Adaptado por mi usando este artículo.%%
===Descarga===

Este ((https://www.atariware.cl/archivos/logo/Logo.atr ATR)) incluye los archivos fuentes de la demostración que se presentaron :

  * **BANDERA.LOG :** Dibuja la bandera Chilena, tipea **BANDERA** y presiona RETURN para ejecutar.
  * **ATRAPE.LOG :** Juego Atrape la tortuga debes ubicar las coordinadas X e Y para atrapar a la tortuga, tipea **ATRAPE** y presiona RETURN para ejecutar.
  * **DRAGON.LOG :** Dibujo de un dragón con animación que escupe fuego, tipea **DRAGON** y presiona RETURN para ejecutar.
  * **CARRERA.LOG :** Juego de carrera de autos de dos player use los joystick para automentar la velocidad y el botón para volver a empezar. Tipea **CARRERA** y presiona RETURN para ejecutar.

También compartimos el ((https://www.atariware.cl/archivos/logo/Logo.car cartucho)) para descarga.

===Agradecimientos===

  * **Guillermo Fuenzalida** por facilitar una foto de este cartucho de Multisoft.