Logo Computer Systems Inc, más conocidos como LCSI, fue fundada en el año 1981 por Seymour Papert, el inventor en 1968 del lenguaje Logo.
No es de extrañar en programaran Apple Logo, y el IBM Personal Logo de 1983, que al final acabaría siendo LogoWriter.
Aunque empecé con Sinclair Logo, y después pasaría a Logo SB de los españoles Software de base, admito que LogoWriter fue el intérprete de más avanzado de lenguaje Logo en aquella época.
Estaba disponible en 4 idiomas: inglés, francés, portugués y castellano; lo que debido a las particularidades del lenguaje no incluía solamente el entorno de programa, sino también las primitivas del lenguaje usando por ejemplo adelante en vez de forward. Se hicieron variantes que aprovechaban el adaptador gráfico del que dispusiéramos, ya fuera CGA (4 colores), EGA (16 colores), o VGA (256 colores).
Hasta 1988 con la versión 2.01 para DOS, siguieron en franca superioridad tecnológica, y una loable eficiencia, pues pese a la cantidad de primitivas disponibles, el ejecutable del programa eran solamente 57 Kb.
A partir de ahí, irían estancándose hasta que por fin en 1993 lanzarían MicroMundos (MicroWorlds, una versión con intefaz gráfica para DOS y MacOS, y que posteriormente añadiría una versión Windows. En la actualidad, MicroMundos Ex, ofrece por ejemplo un entorno basado en Logo con multitarea y ejecución paralela.
La siguiente lista que encontré en mi ordenador, es un inventario de las primitivas que soportaba el LogoWriter 2 de 1987, y que en gran medida nos dan una idea de la gran potencia que ya tenía.
Comando | Descripción |
* | Operador de multiplicación |
+ | Operador de suma |
– | Operador de resta |
.dentro | |
.deposita | |
.examina | |
.fuera | |
.primitivas | Responde la lista de primitivas |
.version | Responde la versión de Logo Writer actual |
/ | Operador «dividir» |
< | Operador «menor que» |
= | Operador «igual a» |
> | Operador «mayor que» |
activa ([lista de procedimientos]) | Ejecuta el o los procedimientos, ordenes ó cálculos indicados en su argumento |
adelante, ad (número) | La tortuga adelanta los pasos indicados en el argumento |
alto | Detiene un procedimiento |
altotodo | Detiene un procedimiento y todos los procedimientos que lo contienen |
anotador | Reporta una lista con el texto «cortado» o «copiado» almacenado en el «buffer» de memoria |
arctan (a/b) | Responde el ángulo correspondiente a un triángulo rectángulo de catetos a, b |
ascii («carácter) | Responde el número ASCII del carácter indicado en su argumento |
atras, at (número) | La o las tortugas activas retroceden el número de pasos indicado en el argumento |
azar (número) | Responde un número al azar entre 0 y el número indicado menos 1 |
beventos | Borra los eventos definidos |
bg | Borra los gráficos |
bm | Borra los mandos |
bnombre («nom) | Borra la variable del nombre indicado |
bnombres | Borra todas las variables |
borra | Suprime el caracter debajo del cursor |
boton? | Responde cierto si el botón del Joystick ha sido pulsado |
bpag («pag) | Borra una página |
bt | Borra el texto |
busca («pal) | Busca la palabra indicada |
butiles | Borra los útiles cargados |
cada ([lista de acciones]) | Cada una de las tortugas ejecuta las acciones indicadas. Por ejemplo: CADA [FCOLOR QUIEN * 2] |
cambiadir («dir) | |
car (número) | Reporta el caracter correspondiente al código ASCII indicado en el argumento |
cardebajo | Reporta el caracter «texto» debajo de la tortuga |
cardebajocursor | Reporta el caracter «texto» debajo del cursor |
carga («página) | Carga en el revés de la página actual los programas de la página indicada en su argumento |
cargadib («dib) | Carga el gráfico del nombre indicado guardado con GUARDADIB |
cargatexto («texto) | Carga el texto del nombre indicado guardado con GUARDATEXTO o con cualquier formato ASCII de otros programas |
cierra | Cierra una página para impedir que sea borrada |
color | Responde el color de la o las tortugas activas |
colordebajo | Responde el color debajo de la tortuga activa |
colorf | Responde el color del fondo |
colortexto | Responde el color del texto |
contenido | Abandona la página |
coorx | Reporta el valor de la coordenada X de la tortuga activa. En caso de haber más de una tortuga activa, responde la coordenada de la de menor número |
coory | Idem coorx, con la coordenada Y |
copia | Copia un texto seleccionado |
copiaarch («discoorigen\dir\nomarchivo) («discodestino\dir\nomarchivo) | |
corta | Corta un texto seleccionado |
cos (angulo) | Responde el coseno del ángulo indicado |
cosa («nombre.de.una.variable) | Responde el valor de la variable indicada, si esta existiese |
cp | Con pluma |
creadir («nombre.directorio) | Crea un directorio con el nombre indicado dentro del directorio activo |
cuab | Cursor abajo. El cursor del texto baja una línea |
cuad | Cursor adelante. El cursor del texto adelanta un espacio |
cuando («letra) ([lista de acciones]) | Permite definir un «macro», de manera que al pulsarse CTRL y la letra indicada se ejecuta la lista de acciones. |
cuar | Cursor arriba. El cursor del texto sube una línea |
cuat | Cursor atrás. El cursor del texto retrocede un espacio |
cuenta («palabra o [lista]) | Responde el número de caracteres de la palabra indicada o el número de palabras de una lista |
da («nom.var) (valor) | Define una variable con el nombre indicado en el primer argumento con el valor del segundo argumento |
davuelta | Da vuelta la página |
derecha, de (número) | La tortuga gira a la derecha el número de grados indicado |
dejapag | Abandona la página sin definir los cambios efectuados |
descierra | Anula el efecto del comando CIERRA |
desmarca | Desmarca un texto seleccionado |
dile (número [lista de números]) | Activa a la o las tortugas indicadas |
diractual | Responde el directorio actual |
directorios | Responde los directorios incluídos en el directorio actual |
disco | Responde el disco activo |
distancia ([x y]) | Responde la distancia entre la tortuga activa y el punto indicado |
dos | Sale al DOS |
elarch, eliminara («nomarch.ext) | Elimina el archivo indicado. Debe especificarse la extensión del mismo) |
eliminadir («nomdirectorio) | Elimina el directorio indicado |
eliminapag, elpag («nompag) | Elimina la página indicada |
encontrado? | Responde cierto si el comando busca encuentra la palabra indicada en su argumento y falso si no lo hace |
entero («número) | Reporta la parte entera del número |
escribe, es («palabra o [lista]) | Escribe el argumento y el cursor pasa a la línea siguiente |
esnombres | Escribe los nombres de las variables existentes |
espacio | Reporta el espacio libre de la página |
espaciod | |
espera (número) | Detiene la acción durante un lapso de tiempo determinado por su argumento. 100 es aproximadamente 5 segundos. |
estampa | Estampa la figura de la tortuga activa |
et | Esconde la tortuga |
fcolor (número) | Fija el color de la tortuga |
fcolorf (número) | Fija el color del fondo |
fcolortexto (número) | Fija el color de un texto cuando éste está seleccionado con F1 o dentro de un programa lo que se escriba con el comando ES |
fcoma | En los decimales reemplaza el punto decimal por la coma |
fdisco («letra) | Activa el drive indicado |
fdl | Fin de línea. Lleva el cursor de texto al final de la línea |
ffig («número) | Fija en la o las tortugas activas, el número de figura indicado |
fig | Reporta el número de la figura de la tortuga activa |
figuras | Trae la página de figuras |
finpag | Fin de página. Lleva el cursor de texto al final de la página |
fpos ([x y]) | Lleva a la tortuga activa al punto indicado por las coordenadas |
fpostexto (número) | Lleva el cursor del texto a la posición indicada por número |
fpunto | En los decimales reemplaza la coma decimal por el punto |
frase, fr (argu1 argu2) | Reporta una frase formada por los argumentos indicados dentro de los corchetes. Estos pueden obviarse si sólo hay dos argumentos |
frente? | Responde cierto si se está en el frente de la página |
frumbo (número) | Fija el rumbo de la tortuga activa |
fx (coorx) | Fija la tortuga activa en la coordenada X indicada |
fy (número) | Fija la tortuga activa en la coordenada Y indicada |
guardadib («nomdib) | Guarda el dibujo de la pantalla con el nombre indicado |
guardapag («nompag) | Guarda la página con el nombre indicado |
guardatexto («nomtexto) | Guarda el texto de la página (frente o revés) con el nombre indicado |
hacia ([x y]) | Reporta el rumbo a colocar a la tortuga para que mire el punto indicado. Se usa con el mando FRUMBO. Por ejemplo: FRUMBO HACIA [90 54] hazlista (argu1) (argu2) |
identico? (argu1) (argu2) | Reporta cierto si el argumento 1 es igual al argumento 2 |
igual? (argu1) (argu2) | Reporta cierto si el argumento 1 es igual al argumento 2 |
imppant | Imprime la pantalla en el modo gráfico |
imptexto | Imprime la pantalla en el modo texto |
imptexto80 | Idem imptexto pero en 80 columnas |
incm, insertacm («texto) |
Inserta centro mandos. Inserta el texto indicado en la zona de mandos |
inserta («texto) | Escribe el texto indicado pero el cursor no baja a la línea siguiente |
item (número) (palabra ó lista) | Reporta el elemento de orden, número de la palabra o lista indicada |
izquierda, iz (número) | Gira el ángulo indicado en el número a la izquierda |
leecar | Lee y reporta un caracter del teclado |
leelista | Lee y reporta una lista de caracteres o palabras del teclado |
leelistacm | Lee y reporta una lista de caracteres o palabras del teclado desde la zona de mandos |
limpia | Limpia la pantalla gráfica pero sin modificar la posición y el rumbo de la tortuga |
lista (argu1) (argu2) | Forma y reporta una lista formada por los argumentos |
lista? («argu1) | Reporta cierto si el argumento es una lista |
listaarch | Reporta la lista de todos los archivos del directorio activo |
listapag | Reporta la lista de páginas del directorio activo |
listautiles | Reporta la lista de útiles cargados |
ll | Leelista. Lee y reporta una lista del teclado |
llcm | Leelista centro mandos. Lee y reporta una lista del teclado pero desde el centro de mandos |
longtexto | Reporta la longitud del texto desde el principio hasta el final |
marca | Indica el comienzo de selección de un texto |
marcado | Reporta el texto marcado |
menos (número) | Reporta el número indicado con el signo cambiado. |
menosprimero, mpr (argumento) | Reporta el argumento indicado sin el primer elemento |
menosultimo, mul (argumento) | Reporta el argumento indicado sin el último elemento |
miembro? (argu1) (argu2) | Reporta cierto si el argumento 1 pertenece al argumento 2 |
mt | Muestra tortuga |
muestra (texto) | Escribe el texto indicado en la zona de mandos |
muestranombres, mn | Escribe los nombres y los valores de las variables definidas en la zona de mandos |
no (comparación) | Responde falso si la comparación es cierta y cierto si ésta es falsa |
nombra (valor) (nombre de la variable) | Define una variable con el valor indicado en el primer argumento. Es similar a DA |
nombrapag, np («nompag) | Nombra a la página actual |
nombre? («palabra) | Responde cierto si la palabra indicada es una variable |
nuevapag | Abandona la página actual y trae una nueva página |
número? (argu) | Responde cierto si el argumento es un número |
(o comparación1 comparación2 …) | Disyuntivo lógico. Responde cierto si al menos una de las comparaciones es cierta |
origen | Lleva la tortuga al centro con rumbo 0 |
palabra («pal1 «pal2 …) | Forma una palabra «pegando» sus argumentos) |
palabra? («pal) | Reporta cierto si su argumento es una palabra |
paleta (n) | Responde el valor del joystick indicado en n |
pantprev | |
pantsig | |
para (nombre) | Indica que comienza un programa con el nombre indicado |
pb | Pluma de borrar |
pdl | Principio de línea. lleva el cursor del texto al principio de la línea |
pega | Pega un texto copiado o «cortado» |
pi | Pluma inversa |
pide (num.tortuga) [lista de acciones] | Fuerza a la tortuga o a las tortugas indicadas que realicen las acciones especificadas en el segundo argumento |
pinta | Rellena una superficie cerrada con el color activo |
ponprimero, ppr (argu1) ([lista]) | Forma y reporta una lista con argu1 en primer lugar. Ejemplo: ESCRIBE PONPRIMERO 12 [30 56] [12 30 56] |
ponultimo, pul (argu1) ([lista]) | Forma y reporta una lista con argu1 en último lugar. Ejemplo: ESCRIBE PONULTIMO 12 [30 56] [30 56 12] |
pos | Reporta la lista de coordenadas X Y de la tortuga activa |
poscursor | Reporta la posición del cursor de texto en el sistema cartesiano |
postexto | Reporta la posición del cursor de texto tomando como 0 el principio de la página |
primero, pr (argumento) | Primero. Reporta el primer elemento del argumento |
prinpag | Lleva el cursor de texto al principio de la página |
quien | Reporta el número de la tortuga activa |
rc (número) | Reporta la raíz cuadrada del número |
reporta, re | Dentro de un programa permite que éste reporte un valor. Ejemplo: PARA duplo :num RE :num * 2 FIN |
recicla | Recupera la memoria ocupada |
recobra | Recobra la página en su estado anterior, perdiéndose los cambios |
redondeo (número) | Si el argumento numérico es un número decimal, y la parte decimal es menor que 0,5 redondea hacia «abajo». En caso contrario redondea hacia arriba |
reemplaza (argu1) (argu2) | Reemplaza el argumento 1 por el argumento 2 |
renombra (nom1) (nom2) | Permite renombrar un archivo |
repite (número) [lista de acciones] | |
resto (número 1) (número 2) | Reporta el resto del cociente entre el número 1 y el número 2 |
rg | Restaura gráficos. Borra la pantalla y la tortuga adopta su forma y color inicial |
rotulo (texto) | El texto indicado se escribe en la pantalla en modo «gráfico» a partir de la posición de la tortuga |
rumbo | Reporta el rumbo de la tortuga activa |
sen (ángulo) | Reporta el seno del ángulo indicado |
si (comparación) [lista de acciones] | Condicional simple. Si la comparación es cierta se ejecuta la lista de acciones |
siotro (comparación) [lista 1 de acciones][lista 2 de acciones] | Condicional doble. Si la comparación es cierta se ejecuta la lista 1 de acciones y si es falsa la lista 2 de acciones |
sombrea | Rellena una superficie cerrada con la «figura» de la tortuga activa |
sp | Sin pluma |
tab | Desplaza al cursor de texto hasta la próxima estación de tabulación. Estas están ubicadas cada 10 caracteres |
tecla? | Reporta cierto si una tecla es pulsada |
todas | Reporta una lista con los números de las cuatro tortugas |
tono (número 1) (número 2) | Toca un sonido con la frecuencia indicada en su primer argumento y con la duración especificada por el segundo. |
tortugalenta | Fuerza a la tortuga a trabajar «lentamente». |
tortugarapida | Devuelve a la tortuga su velocidad «normal». |
traepag, tp («nombre) | Trae la página del nombre indicado |
traefigs | Carga las figuras del directorio y disco activos |
traeutiles («nompag) | Instala los programas de la página indicada en la página activa pero en forma «oculta» |
ultimo, ul (argu) | Reporta el último elemento del argumento |
unespacio | |
vacia? (argu) | Reporta cierto si el argumento está vacío |
(y comparación1 comparación2 …) | Conjuntivo lógico. Responde cierto si todas las comparaciones son ciertas |
Para que servía este programa?, no lo conozco.
Simplemente un intérprete del lenguaje de programación Logo, Manuel.
Si tienes curiosidad, échale un vistazo al actual FMSLogo.
ahhhh…te agradezco tu explicación 🙂
Se puede conseguir aún una copia del loco writer para vga?
Por supuesto Virgilio Fernández. Como ves en el artículo, las capturas son precisamente de la versión VGA, y en el texto se indica que soportaba ese adaptador gráfico, además de EGA y CGA.
Me imagino que ya lo has visto, pero en el Internet Archive de ScratchUpload lo tienes para descargar en español.
Muchas gracias Guti!
HOLA GUTI….te hago una consulta: diaculpas… puede ser que el logo mio tenga 4 colores para las tortugas, (negro, blanco, rojo y verde) y para el fondo tenga hasta 16 colores? eso es un error?
virgilio fernandez no recuerdo muy bien, pero me suena que las tortugas podían tener más de 4 colores también. Quizás no tengas la versión EGA/VGA/MCGA, cuando lo reseñé creo que podrías configurarlo en base a diferentes drivers. En todo caso, abre la ayuda, y mira a ver si te muestra más de 4 colores de primer plano como aquí:
Hola…. no! eso jamas lo ví!, y no se como se puede lograr….! me faltará algun archivo? o es el logo writer el que logra eso? Muchas gracias!
Debe ser eso Virgilio Fernandez. La versión de aquí sí que tiene los drivers:
https://neoparaiso.com/logo/taller-tortuga.html
Pruébalo y nos cuentas.
Hola. Comunidad LOGO. consulta está la.posoblidad q logo funcione c otro Windows q no sea el XP O Windows 98!? Hay alguna nueva versión!?
marinapouso@gmail.com
Bienvenida Marina. Puesto que Logo Writer es una aplicación para DOS, la puedes correr en Windows usando DOSBox por ejemplo. Yo mismo lo hago sobre Windows 11 con DOSBox-X.
Por otro lado si no quieres que te abrasen a spam, yo evitaría ir poniendo direcciones de email en público.