Retro El reto del Spectrum: ¡Semana 6!

Aunque el post ya es antiguo y probablemente el compañero Henry ya esté ocupado con otras cosas, por si no es así, no te calientes la cabeza, en este blog estamos preservando (bueno, estoy, que practicamente me he quedado solo), todos los listados de la revista microhobby , basic y codigo maquina, escritos a mano, y con unas horas de trabajo por listado, ardua tarea pero todo sea por su preservacion:
Proyecto BASIC ZX

Lejos de dejar de interesarme, sigo en ello, incluso tengo empezado un conversacional (puro y duro, eso sí, ni un gráfico, todo hecho en BASIC) además, imprimí hace poco un libro sobre código máquina para leerlo y practicar con tranquilidad. Pero entre el curro y los exámenes, no creo que pueda tocar nada hasta julio :sudor

Interesantísima iniciativa el blog! :ok De ahí puedo sacar un montón de ejercicios, y es infinitamente más cómodo que leer de las revistas escaneadas, que no siempre están en la mejor condición posible y a veces resulta una tortura identificar alguna letra, número o símbolo. ¿Tenéis por ahí algún programa de Ensamblador para listas, que no sea el del 3+? :pensativo
 
Subo para comentar una duda...

Lejos de haberme "olvidado" del Spectrum, y aunque ya no tengo (ni de coña) tiempo para el reto semanal, cuando puedo cojo el spectrum por banda y escribo algún programa o leo algún libro.

Ayer estaba copiando un programa mítico: el Cargador Universal de Código Máquina o CUCM como se le conoció, que proporcionó la revista Microhobby. Tú escribías el código en BASIC y tenías el programa.

El caso es que ya hace tiempo quise copiar ese código y me dio error. En su día estaba todavía empezando y lo dejé pasar. Hoy me ha pasado lo mismo en el mismo lugar. Se trata, concretamente, de la línea 1004:

MH031_30.jpg



1004 Next n: LET line = VAL l$

Esa línea el Spectrum no me la da por válida, y no me la acepta. He hecho una depuración casi letra por letra de lo que llevo escrito y no parece existir ningún error. El caso es que esa asignación LET no me parece que esté bien hecha. Lo más lógico es pensar que al pasar el código se comieran una palabra, pero el caso es que el CUCM fue uno de los programas más famosos de la revista, y lo volvieron a reproducir en varios números. He consultado cada número donde se reimprimió y la línea no cambia.

¿Alguna idea? :pensativo
 
No es que dé error, es que directamente, no me coge la línea, es decir, al escribir la línea 1004, le doy a INTRO, y me la rechaza, como si estuviera sintácticamente mal escrita o no tuviera sentido. No me deja continuar hasta que borro la línea.

Mañana volveré a repasar todo otra vez, a ver si hay algún error tonto que se me haya colado por ahí y ya contaré :ok
 
No es que dé error, es que directamente, no me coge la línea, es decir, al escribir la línea 1004, le doy a INTRO, y me la rechaza, como si estuviera sintácticamente mal escrita o no tuviera sentido. No me deja continuar hasta que borro la línea.

Mañana volveré a repasar todo otra vez, a ver si hay algún error tonto que se me haya colado por ahí y ya contaré :ok
En qué máquina lo estás tecleando? Si es un +2 o +3, lo estás tecleando en modo 48k?

Enviado desde mi LG-H850 mediante Tapatalk
 
En un +2A, uso el modo 128, con el 48k nunca me acostumbré a escribir.

Hoy he vuelto a comprobarlo dos veces, y he comprobado una tercera vez la línea 15, que los DATAs con muchos números a veces hay errores... nada.

Lo curioso es que hace ya años intenté copiarlo y me salió el mismo error en la misma línea. Es raro que un simple descuido, una letra o número mal puesto, te pase exactamente igual tiempo después... en cualquier caso, he hecho una foto de la "criatura" a ver si alguien puede aportar algo.

37604310046_873292c0a3_k.jpg


:hola
 
En un +2A, uso el modo 128, con el 48k nunca me acostumbré a escribir.

Hoy he vuelto a comprobarlo dos veces, y he comprobado una tercera vez la línea 15, que los DATAs con muchos números a veces hay errores... nada.

Lo curioso es que hace ya años intenté copiarlo y me salió el mismo error en la misma línea. Es raro que un simple descuido, una letra o número mal puesto, te pase exactamente igual tiempo después... en cualquier caso, he hecho una foto de la "criatura" a ver si alguien puede aportar algo.

37604310046_873292c0a3_k.jpg


:hola
Prueba a grabar lo que llevas y cargarlo en modo 48k, a ver si te acepta la línea.

Enviado desde mi LG-H850 mediante Tapatalk
 
En un +2A, uso el modo 128, con el 48k nunca me acostumbré a escribir.

Hoy he vuelto a comprobarlo dos veces, y he comprobado una tercera vez la línea 15, que los DATAs con muchos números a veces hay errores... nada.

Lo curioso es que hace ya años intenté copiarlo y me salió el mismo error en la misma línea. Es raro que un simple descuido, una letra o número mal puesto, te pase exactamente igual tiempo después... en cualquier caso, he hecho una foto de la "criatura" a ver si alguien puede aportar algo.

37604310046_873292c0a3_k.jpg


:hola
Prueba a grabar lo que llevas y cargarlo en modo 48k, a ver si te acepta la línea.

Enviado desde mi LG-H850 mediante Tapatalk

Probado, y nada... me sigue rechazando la línea aún en modo 48k. :inaudito

Lo que voy a intentar es copiar de cero el código en modo 48k a ver si así...


El 48k nunca llegué a cogerle el tranquillo... pero vamos, con el BASIC +3 tampoco nunca he tenido problemas de este tipo :lol
 
Sabes que el CUCM está para descargar ya tecleado, no?

Me están entrando ganas de instalarme un emulador y teclear hasta esa línea. Tengo 2 spectrums reales, pero no tengo donde conectarlos.

Enviado desde mi LG-H850 mediante Tapatalk
 
Alucinante, Gatuso... entonces, todo parece indicar que es algún problema de mi máquina... ayer copié y guardé media docena de los trucos que solía traer la MicroHobby, sin ningún problema, y hace apenas una semana copié alguno del curso de BASIC de la revista MH. Así que no sé exactamente "qué" es lo que pasa.

Sabes que el CUCM está para descargar ya tecleado, no?
emoji28.png

Sí, mi idea era teclearlo yo por praticar... ahora ya, por alucinar pepinillos :mmmh
 
Creo que el problema que está presentándose es que el intérprete de Basic +3 está entendiendo el "comando" LINE (en mayúsculas), por la variable line (en minúsculas), lo que daría lugar a un error de sintaxis.

Prueba a introducir otro nombre de variable en la 1004, por ejemplo linea (en vez de line), a ver si te lo admite así.

1004 NEXT n: LET linea = VAL l$

En caso afirmativo, si quieres continuar desde el Basic +3 tendrás que sustituir toda mención a line (en minúsculas) por linea.

En modo 48K no debería ocurrir, a no ser que en vez de ponerse line, se ponga LINE (con Symbol Shift + 3)
 
Última edición:
Pues he de decir que el amigo Zepu ha dado con la clave :hail:hail cambiando "líne" por "línea" sí la acepta. Seguiré escribiendo y cambiando line por línea cuando aparezca. Eso sí, siempre quedará el misterio:

-En modo 48k no me coge line, ni escribiéndolo en minúsculas. Aquí tenéis una captura, como veis está en minúscula y aún así, tras escribir la línea y darle a INTRO, me sale un símbolo de interrogación, y ya no me deja continuar si no borro.

37430000110_e1d5db617e_k.jpg


-Y el misterio más misterioso, a Gatuso sí le ha aceptado poner "line" tal cual :inaudito
 
En esa última captura creo que el error es por el VAL, que parece que lo has teclado letra por letra en lugar de usar el token de la J. ¿Puede ser?
 
Al final el problema viene por no usar el modo 48K por qué @Henry Morrison no se sabe los comandos del teclado. :juas

Es que yo, Hinomura, el 48k siempre lo he visto cosa de viejos :juas El Spectrum que tuve (bueno, era de mi hermano mayor pero yo le di bastante uso) era ya un +2 con el BASIC +3 ya incorporado, y es el que siempre usábamos para copiar cosas de la Microhobby o dibujar penes con el plot y el draw :garrulo

De todas formas, sustituyendo LINE por línea como bien aconseja el compañero Zepu, es la solución. :ok

Lo que no quita que (algún día) me tengo que aprender como usar el 48k
 
Es que yo, Hinomura, el 48k siempre lo he visto cosa de viejos :juas El Spectrum que tuve (bueno, era de mi hermano mayor pero yo le di bastante uso) era ya un +2 con el BASIC +3 ya incorporado, y es el que siempre usábamos para copiar cosas de la Microhobby o dibujar penes con el plot y el draw :garrulo

De todas formas, sustituyendo LINE por línea como bien aconseja el compañero Zepu, es la solución. :ok

Lo que no quita que (algún día) me tengo que aprender como usar el 48k
Es que el +2 no lleva los comandos en las teclas como los gomas, + y +128k, no?

Enviado desde mi LG-H850 mediante Tapatalk
 
Por si interesa, en la última época de Microhobby se publicó una versión 2.0 del CUCM, que añadía mejoras y comodidades para la introducción del código.

Nuevo Cargador Universal de Codigo Maquina - World of Spectrum
Ojo que esa versión 2.0 no permite cargar ficheros generados con la versión original.

En el número 210 se publicó una mejora para el CUCM (el original), que intercalando el listado con el original permite editar líneas previas de CM introducidas con algún error.

http://microhobby.speccy.cz/mhf/210/MH210_16.jpg
 
Última edición:
Bueno, os traigo un "reto" o curiosidad, a ver que os parece.

Cuando no estoy enredando en el código máquina, me gusta meterme en el Spectrum, tanto en el real como en emulador (uso ZX Spin) y voy probando en BASIC rutinas, gráficos, beeps y mil cosillas que me mantienen entretenido.

Probando los comandos PEEK y POKE escribo la siguiente rutina:

10 Print peek 40000
20 Poke 40000,128

Le doy al "RUN" y obtengo un bonito 0, cero.

Es perfectamente comprensible. La línea 10 "pinta" el dato que, al iniciar el programa, contenga la celdilla de memoria 40000. La línea 20 modifica esa línea y le pone un dato concreto, 128, en lugar del dato que contuviera.

Si añadimos una línea 30:

30 Print peek 40000

Obtenemos al darle al "RUN" lo siguiente:

128
128

En lugar de

0
128

Que sería lo esperado. Es decir, en la línea 10 "pintas" lo que haya en la celdilla 40000 (un dato aleatorio y desconocido) en la 20 lo modificas, en la 30 "pintas" de nuevo. Supongo que se me escapa algo relacionado con la forma que tiene el Spectrum de manejar la memoria, a ver si alguien da con la clave del porqué.
 
Última edición:
¿Esto ocurre si ejecutas solamente la versión con 3 instrucciones o solo si ejecutas la 2º versión después de la primera? No conozco como funciona el Spectrum, pero a priori lo que me parece más lógico es que cuando ejecutas la 2º versión después de haber ejecutado la anterior alguna vez, el valor que tendrás en esa posición de memoria no habrá cambiado. A no ser que la memoria se esté inicializando de manera automática al arrancar el programa, el valor que tendrás ahí guardado será el último que se haya escrito.
 
¿Esto ocurre si ejecutas solamente la versión con 3 instrucciones o solo si ejecutas la 2º versión después de la primera? No conozco como funciona el Spectrum, pero a priori lo que me parece más lógico es que cuando ejecutas la 2º versión después de haber ejecutado la anterior alguna vez, el valor que tendrás en esa posición de memoria no habrá cambiado. A no ser que la memoria se esté inicializando de manera automática al arrancar el programa, el valor que tendrás ahí guardado será el último que se haya escrito.

This.
 
Arriba Pie