Aqua-LOGO para Mattel Aquarius

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 22 Abr 2015 23:28

20150419_231304.jpg


EL PROGRAMA
Este programa es un pequeño intérprete de lenguaje LOGO, listo para ser ejecutado en la versión básica del Mattel Aquarius.
Controlamos una tortuga que se mueve por la pantalla según los comandos que le indicamos.

Los comandos se pueden introducir de uno en uno, o varios a la vez. Tanto los comandos como los valores numéricos deben ocupar dos caracteres, y deben estar separados por un espacio.

Para reiniciar el intérprete y borrar el contenido de la pantalla se debe pulsar ENTER con la línea de comandos vacía.

Esta versión de LOGO reconoce los siguientes comandos:

SUbir
Sube la tortuga y no dibuja nada mientras se mueve.

BAjar
Baja la tortuga y dibuja mientras se mueve. Activado por defecto.

DErecha grados
Gira la tortuga a la derecha el número de grados indicados.

IZquierda grados
Gira la tortuga a la izquierda el número de grados indicados.

AVanza pasos
La tortuga avanza el número de pasos indicado.

>> pasos
Incrementa el último número de pasos realizados en la cantidad indicada.

REpite veces
Repite las siguientes instrucciones el número de veces indicado.
Solo puede haber una repetición por línea de comandos.


Ejemplos:
Dibujar un cuadrado en pantalla:
RE 04 AV 10 DE 90

Dibujar una espiral:
AV 01 RE 20 IZ 90 >> 01

Dibujar un círculo:
RE 36 AV 02 DE 10

Comentarios y recomendaciones:
- Los valores numéricos deben tener dos cifras, o una cifra y un espacio.
- Para valores numéricos superiores a 99 se deberán añadir dos comandos que sumen el valor deseado.
- Los comandos deben tener dos caracteres aunque solo se tiene en cuenta el primero.
- El contenido de la pantalla se conserva durante la ejecución de los distintos comandos.


BLOQUES
He dividido el listado en 3 bloques:

- Inicializar variables principales.
- Procesar la línea de comandos.
- Ejecutar el comando LOGO.


COMO FUNCIONA
A continuación detallo, línea por línea, el funcionamiento del programa.

Se utilizan las siguientes variables:
U – Variable que contiene el valor “1”.
X – Posición horizontal de la tortuga.
Y – Posición vertical de la tortuga.
D – Posición de la tortuga (0 – Arriba, 1 – Abajo).
M – Dirección de la tortuga.
C – Valor del comando REpite.
E – Posición de retorno del comando REpite.
P – Posición en la línea de comandos.
N – Valor del valor numérico de un comando.
F – Control de bucles y otros.
A – Posición X durante el PSET. También se usa como variable auxiliar para calcular el giro de la tortuga.
B – Posición Y durante el PSET. Al finalizar guarda el número de pasos realizados.
A$ - Variable donde se guarda la línea que se está procesando.

El programa ocupa un total de 40 líneas:
4 – Inicializamos las principales variables y declaramos el valor de PI.
8 – Borramos la pantalla y ponemos un punto indicando donde está la tortuga.
10 – Introducimos una línea de comandos en A$, y comprobamos que se ha escrito algo. Sino vuelve a la línea 8.
14 – Inicio del bucle que intenta reconocer el comando a ejecutar.
16 – Comprueba la primera línea del comando, y si lo localiza se guarda el valor de “I” en “F” y acaba el bucle.
18 – Final de bucle que reconoce los comandos.
20 – Si el ID del comando es igual o superior de 3 incrementa el valor de “P”, y en “N” el valor del comando.
26 – Saltamos a una línea en función del valor de “F”.
28 – Se incrementa “P” y si su valor es inferior a la longitud de “A$” vuelve a la línea 14.
30 – Se decrementa “C”, que controla las repeticiones de comandos, y si es inferior a 1 es que ha finalizado la repetición.
34 – Asignamos a la variable “P”, usada por el bucle que revisa la línea de comandos, el punto donde debe volver.
36 – Saltamos a la línea 14 para continuar con el bucle.
100 – Guardamos en “D” el estado de la tortuga. Si “F=1” baja y sino sube.
102 – Volvemos de la subrutina.
200 – Guardamos en “A” el giro a realizar, y si “F=3” se cambia el signo de “A”.
204 – Restamos a “M” el giro a realizar, dando como resultado un valor de 360 grados.
206 – Volvemos de la subrutina.
250 – Sumamos al número de pasos “N”, el último número realizado “B”.
300 – Inicio del bucle que dibuja el desplazamiento de la tortuga.
302 – Guardar en “A” la posición horizontal, y en “B” la posición vertical.
306 – Si la tortuga está bajada (D=1) se pone un punto en la posición de la pantalla.
308 – Final del bucle que dibuja el desplazamiento de la tortuga.
310 – Guardamos en “X” la última posición horizontal, en “Y” la última posición vertical y en “B” los pasos realizados.
312 – Volvemos de la subrutina.
350 – Guardamos en “C” el valor de la repetición y en “E” la posición de la línea de comandos a la que volver.
352 – Volvemos de la subrutina.

EL PROGRAMA

Código: Seleccionar todo

 Inicializar Variables y Pantalla
  4 X=39:Y=35:D=1:M=0:C=M:PI=3.1415927
  8 PRINT CHR$(11):PSET(X,Y)

     Entrada y Análisis de las Instrucciones
 10 P=1:A$="":INPUTA$:IF A$="" THEN 4
 14 FOR I=1 TO 7
 16 IF MID$(A$,P,1)=MID$("bsdi>ar",I,1) THEN F=I:I=7
 18 NEXT I
 20 IF F>=3 THEN P=P+3:N=VAL(MID$(A$,P,2))
 26 ON F GOSUB 100,100,200,200,250,300,350
 28 P=P+3:IF P<LEN(A$) THEN 14
 30 C=C-1:IF C<1 THEN 10
 34 P=E
 36 GOTO 14

     Instrucción: Subir/Bajar
100 D=(F=1)
102 RETURN

     Instrucción: Derecha/Izquierda
200 A=N*PI/180:IF F=3 THEN A=-A
202 M=M-A
204 RETURN

     Instrucción: >> (Incrementar Avanzar)
250 N=N+B

     Instrucción: Avanzar
300 FOR F=1 TO N
302 A=X+F*COS(M):B=Y+F*SIN(M)
306 IF D THEN PSET(A,B)
308 NEXT F
310 X=A:Y=B:B=N
312 RETURN

     Instrucción: Repetir
350 C=N:E=P+3
352 RETURN


APUNTES FINALES
Esta versión de LOGO es una conversión directa de la versión realizada previamente para el Sinclair ZX-81.

Aunque por el hecho de disponer de más memoria (casi el triple, hasta los 1,7 KB), podría haber realizado algunas mejoras, pero el hecho de no disponer de un editor que permita modificar las líneas me ha provocado pereza…

De todas formas, la gracia de esta versión era hacer una adaptación en otro equipo que tampoco tiene modo gráfico, y los pixels los emula a partir de gráficos predefinidos.

Así, si en el ZX-81 caben 2x2 pixels gráficos en un carácter de 8x8 pixels reales, dando una resolución de 48x64 puntos.

En el AQUARIUS caben 3x2 pixels en el mismo carácter de 8x8, provocando unas gráficas un poco “deformadas” ya que, verticalmente, dos puntos tienen 3 pixels de alto, pero el tercero solo tiene 2.

Moviendo la tortuga
La tortuga aparece centrada en la pantalla, orientada hacia la derecha y lista para empezar a dibujar a medida que se mueva.

Los comandos se deben introducir en minúscula, ya que es el modo por el que viene por defecto el AQUARIUS.

Los sentencias son 100% compatibles con la versión del ZX-81, aunque se puede comprobar que está versión es una 7 veces más rápida.

A diferencia de la versión del ZX-81, en ésta aparece el punto inicial donde está situada la tortuga. En la del ZX-81 se quitó para ahorrar memoria.

En la versión del ZX-81 nos podemos quedar sin memoria si realizamos un gráfico muy grande en el equipo básico con 1 KB. En esta versión esto no puede suceder ya que la memoria de pantalla tiene un tamaño fijo.

El único “sorpresa” ha sido comprobar que en el AQUARIUS no viene predefinido el valor de PI, con lo que he definido una variable con el mismo nombre y le he asignado el valor por defecto que viene en el ZX-81.

Por otra parte, he detectado un “problema” al trazar líneas rectas después de hacer giros, provocando que “a veces” la línea no sea perfectamente recta. Ignoro si el problema es mío o del AQUARIUS, pero no lo entiendo.

20150419_231949.jpg

20150419_231625.jpg

20150419_231411.jpg

20150419_231205.jpg


Os invito a probarlo.

Avatar de Usuario
ron
Mensajes: 18407
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1578 veces
Agradecimiento recibido: 1317 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor ron » 22 Abr 2015 23:39

jajajaj le pegas hasta al aquarius ! ... de Mattel

El Aquarius no fue realmente producido por Mattel, pero si por Radofin, ¿ el Dragon MSX también ?

Así que: Es tan "especial" que todo buen coleccionista lo debería tener. Me lo dijo dancresp.

Pero bueno, dentro de lo malo es un Z80 a 4 Mhz, si el interprete de Basic es medio normal debería ir como un cohete.

aquarius.png
aquarius.png (11.98 KiB) Visto 1609 veces


Y gracias por el programa, he de probarlo.

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 22 Abr 2015 23:51

ron escribió:Pero bueno, dentro de lo malo es un Z80 a 4 Mhz, si el interprete de Basic es medio normal debería ir como un cohete.

Tiene uno de los intérpretes de BASIC más rápidos que he visto en un sistema de 8 bits.
Lástima de todo el resto...

Pero bueno, tiene su encanto. -grin

Avatar de Usuario
ron
Mensajes: 18407
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1578 veces
Agradecimiento recibido: 1317 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor ron » 23 Abr 2015 00:04

Mira, duramente !

mattelcartridge-logo.jpg
mattelcartridge-logo.jpg (81.12 KiB) Visto 1601 veces


Mattelogo.jpg
Mattelogo.jpg (68.19 KiB) Visto 1601 veces


Resulta que 30 años después a los de Mattel les sale un competidor ! -rofl

Pero ojo, estuvieron listos. Sabían que el LOGO servía para introducir la programación a los niños, sobre todo en USA hubo cierto boom en el uso del LOGO como lenguaje para empezar a interactuar con un ordenador. Mediante el mismo se van aprendiendo comandos y el uso de la tortuga y todo el chascarrillo... Y aunque el micro fuera casi de juguete las ventas son las ventas y Mattel sabía bien que tipo de "jueguetes" comercializar.- Sin duda no iban a entrar a saco frente a Coleco, Tandy, Apple, Commodore, Texas Instruments y Atari. Buscaban el mercado un poco más infantil quizá. Por eso tiene esa pinta de juguete. Este micro es de esas excepciones que se dan, me acuerdo que se vendía aquí en España y que incluso hay anuncios en revistas.

Además Mattel lo presentó en forma de cartucho, enchufar y a darle al LOGO. Más rápido imposible.

Habría que mirar que cosas hace el comercial que no haga el tuyo.

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 23 Abr 2015 12:44

Pues no tenía ni idea que existía un LOGO para el Aquarius, pero visto el vídeo, parece más completo que el mío, que es una adaptación de la versión de ZX-81 con 1K.

https://www.youtube.com/watch?v=2qePhvQnCeI

Avatar de Usuario
ron
Mensajes: 18407
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1578 veces
Agradecimiento recibido: 1317 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor ron » 23 Abr 2015 19:08

Ya sabes que lo he puesto en plan de cachondeo, porque en serio, se me vino a la mente la imagen del Aquarius corriendo el cartucho de LOGO. La tengo grabada en la retina y es de esas cosas que son detalles que no se olvidan. De aquella además es que se prodigaban en el ámbito infantil y el LOGO era el arma secreta, pero es que hubo un momento que lo del LOGO se intentó catapultar y no se pudo seguir adelante porque no estaba ni pensado ni diseñado para hacer otra cosa que lo que tenía que hacer. Pintar según las normas del LOGO y de las instrucciones del usuario.

Con tu permiso, esto da para un post del LOGO en condiciones. Sin querer has abierto la puerta de par en par. Viva el LOGO y Viva dancresp. Ya me lo curro yo y el post queda como que lo has abierto tu. Es decir, te dejo el post ahí en stand by para que hagas la introducción. Yo voy a saco a buscar los cartuchos de LOGO que quedaron ahí pintando de por vida.

viewtopic.php?f=83&t=200032059

Avatar de Usuario
ron
Mensajes: 18407
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1578 veces
Agradecimiento recibido: 1317 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor ron » 24 Abr 2015 20:58

Dancresp, sigues teniendo un post encabezando el hilo que ha salido de este por lo del LOGO y parece que ha gustado. Cuando le pongas la intro va a quedar nickelado.

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 24 Abr 2015 21:34

Dame tiempo, que el ORIC me está consumiendo más tiempo del que pensaba...

Pero si, realmente es un lenguaje que tiene mucha más miga de lo que parece.

Con lo que cuenta mcleod estoy flipando.

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 24 Abr 2015 21:40

.

Avatar de Usuario
carlosjuliopr
Mensajes: 423
Registrado: 20 Ago 2012 22:13
Ubicación: Puerto Rico
Agradecido : 13 veces
Agradecimiento recibido: 18 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor carlosjuliopr » 05 May 2015 20:47

tuve un aquarius, creo que aun esta en la retro cueva, no sabia que vino el logo para aquarius de mattel, esta version de dancresp es excelente gracias ! ! !, me recuerda mucho el super expander vic 20 con sus pseudos modos graficos redefiniendo caracteres.
"We need to build computers for the masses, not the classes",Jack Tramiel -cocbm1

dancresp
Mensajes: 5339
Registrado: 13 Nov 2010 02:08
Agradecido : 151 veces
Agradecimiento recibido: 288 veces

Re: Aqua-LOGO para Mattel Aquarius

Mensajepor dancresp » 05 May 2015 22:59

carlosjuliopr escribió:... esta version de dancresp es excelente gracias !!!

Es simplemente una simple versión... para pasar un ratito...


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados