Como algunos sabréis, en Navidades me regalaron (¡al fin!) aquel viejo trasto de mi infancia con el que muchas noches soñaba, inconfesablemente. Un spectrum +2 con 128 kb de memoria. Y, aunque no pongo nada en el post, raro es el día en que no lo enciendo, por lo menos para cargar un juego y echar aunque sean 10 minutos de partida, o trastear con el BASIC.
Y no todo se limita al toqueteo del bicho; he leído artículos en páginas españolas e inglesas, he descargado juegos y utilidades y los voy probando... y he descargado todos los números y cintas de Microhobby que he encontrado.
Como la mayoría de los amantes del retro sabemos, estos trastos se pedían a los padres, o en su defecto a sus Majestades, los Tres Reyes Magos de Oriente, "para estudiar, aprender, y mejorar en el colegio". Y los padres nos los compraban. ¿Quien era el tonto?
En cualquier caso, y aunque jugar ya me ha procurado muchísimas horas de diversión (sobre todo desde que descubrí a usar apropiadamente el comando MERGE"" y pude pasar de la primera pantalla del Army Moves).
Pero yo SÍ quiero usarlo para "aprender". Siempre quise aprender a programar en estos tratos, y a través de todos los textos, podcasts, entrevistas.. que he visto, leído y escuchado por internet, ese deseo no ha hecho más que aumentar.
Aunque en su día "toqueteé" BASIC, realizando algunas aventuras conversacionales muy simples, y alguna que otra aplicación doméstica chorra que jamás llegué a usar, nunca lo dominé en profundidad (ni mucho menos como para PROGRAMAR un juego de Spectrum). A esto hay que añadir que el BASIC que pudiera llevar el MS-DOS de un ordenador (QuickBasic era) no es el BASIC del Spectrum. Y por añadidura, que muchos de estos juegos estaban solo parcialmente programados en BASIC, o directamente, programados en Código Máquina.
El "reto" del que hablo en el título del post tiene que ver con aprender a programar en Spectrum, con aprender a programar en BASIC, sí, y después (en un futuro) aprender a programar en Código máquina. No tengo como objetivo programar un juego o programa concreto, solo alcanzar las habilidades, disciplinas y paciencia necesarias para poder hacerlo, tal y como se hacía antes.
Y cuando hablo de "programar en Spectrum" me refiero a eso precisamente; programar en el cacharro directamente; sin emuladores, sin aplicaciones que se cargan en un PC, sin más ayuda que cintas de casette para grabar los progresos, y un crucifijo para pedir a Dios que en mi casa nunca haya un corte de luz mientras programo...
Estas son las "armas" con las que cuento para llevar a cabo mi empresa:
El amado aparato, imprescindible para la tarea
El imprescindible manual de Usuario, que además de ser una lectura obligada para empezar, contiene multitud de códigos e incluso programas completos.
Muchas como esta...
TODO Microhobby
El cursillo de BASIC de Microhobby, escrito por Rafael Prades, pieza ineludible de los retos; auténtica hoja de ruta, una obra maestra que contiene todo lo que necesita un aprendiz como yo para conocer los entresijos del lenguaje y la máquina. Más adelante, daremos el salto al otro gran libro: Código máquina.
Para programar, comenzaré leyendo los Microhobbys, leyendo el libro Microbasic, y copiando los pequeños juegos que las revistas incorporaban como un código que debía ser copiado, listado y ejecutado. Creo, por experiencia, que la mejor manera de aprender a programar es leyendo y escribiendo código.
El reto consistirá en intentar copiar, entender, ejecutar y depurar fallos, de forma que consiga una ejecución final completamente exitosa, de uno de los juegos de cada revista, empezando por el número 1 y hasta el final. El reto será semanal. Por lo que veo, los primeros juegos son sencillos, una o dos columnitas de código, pero conforme avanza, nos podemos encontrar perfectamente con dos páginas de revista a dos caras llenos de columnas a toda página con cientos de líneas de código, símbolos gráficos y virguerías varias. Los primeros retos es predecible que se pueden completar en dos o tres horas; los otros llevarán días, o incluso semanas de quebraderos de cabeza.
La idea es ir poniendo, semana a semana, un reto, y poco a poco ir atreviéndome a modificar los programas y a crear los míos. Cuando pueda hacer esto en BASIC con cierta confianza, me embarcaré en el reto de programar algún juego (cosas sencillas, nada de grandes ambiciones, si acaso conversacionales con dibujitos o alguno con gráficos pero muuuuy simple). Y una vez terminada esa odisea, me metería con Código Máquina.
El reto de esta semana, sacado del Nº 1 de Microhobby:
Creo que en unas horas lo habré acabado, depende de lo que pueda dedicarle, quizás mañana lo termine... colgaré un par de fotos con las primeras y últimas líneas de código, el resultado, etc. De esta forma me obligo a cierta constancia y comparto el proceso con todos los retro-chiflados
EDITO:
INTRODUCCIÓN AL MUNDO DE LOS 8 BITS
Esta introducción es solo para gente que en su vida haya oído hablar de orenadores de 8 bits. Por lo tanto está lleno de datos que, para los habituales, serán obvios.
Lor ordenadores de 8 bits fueron las primeras computadoras domésticas que se acercaban a lo que hoy llamamos "ordenadores". Eran máquinas muy limitadas, sin un sistema operativo como hoy lo entendemos, pero a pesar de sus limitaciones, hubo algunos magos de la informática que demostraron poder sacarles un partido insospechado. No eran videoconsolas, pues una videoconsola solo te permite jugar. Los ordenadores de 8 bits te permitían jugar a videojuegos, sí, pero también programar, no solo juegos sino cualquier cosa, dentro de sus capacidades, que pudieras imaginar. Podías crear aplicaciones de gestión, del hogar, dirigidos a oficinas, y a casi todos los empleos que puedas imaginar: enseñanza / educativos, ingeniería, ventas... solo hay que pasarse por la web "World of spectrum" para ver todo lo que se hacía.
Me centro ya en el Spectrum:
-Cuando conectabas el Spectrum tenías un menú donde podías elegir el Cargador de cintas, el entorno de programación del lenguaje BASIC en 128 kb, una bonita Calculadora, o el entorno de BASIC DE 48 kB.
-La memoria RAM era de 16,48 o 128 kilobytes (el mío es el de 128). Para comparar, hoy en día un ordenador normalito tiene 3 o 4 gigabytes. Para que nos entendamos, un gigabyte tiene 1.024 megabytes. Y 1 megabyte contiene 1.025 Kilobytes. Comparad. Los ordenadores de hoy son Skynet comparados con las viejas máquinas de 8 bytes.
El ordenador no almacenaba los datos que le dabas, él no se los "quedaba". Si, por ejemplo, te pasabas toda la noche programando algo, y apagabas sin querer, o se te cortaba la luz... habías perdido, sin posibilidad de recuperarlo, todo lo hecho. En cuanto el ordenador se apagaba, todo lo que habías hecho se borraba para siempre. Para conservar esos datos, programas, o lo que fuera, se grababan en cintas de casette (sí, cintas de coche).
Para programar, como ya he dicho, te venía un entorno de BASIC donde tecleabas el código en ese lenguaje de programación. BASIC significa Beginner's All-purpose Symbolic Instruction Code. Como ventajas, era muy fácil de aprender, tenía relativamente pocos comandos, y era de propósito general (igual te servía para un roto que para un descosido; para programar un juego o para escribir un programa que te llevase la contabilidad).
A día de hoy BASIC está obsoleto, debido a sus inconvenientes: es muy leeeeeento, y su sencillez lo hace algo limitado. Es por eso que el otro gran lenguaje de programación es el Código Máquina, un código mucho menos "humano" y comprensible, más cerca de lo que el ordenador entiende.
Un ejemplo:
-Programar un mensaje que diga "Hola, Nosolohd" en lenguaje BASIC de Spectrum:
10 PRINT "Hola, Nosolohd"
run
-Programar un mensaje que diga "Hola, Nosolohd" en Código Máquina para Spectrum:
CALL SPRINT
DEFM Hello Nosolohd.
DEFB FF
RET
SPRINT POP HL
LD A,(HL)
INC HL
PUSH HL
CP FF
RET Z
CALL PRINT
JR SPRINT
Claro que, para escribir un mensaje, es mucho más fácil BASIC. Pero cuando se trata de juegos o programas con centenares de líneas de código, BASIC podría ser desesperante la ejecutarse, Código máquina es mucho más rápido y ágil, ahorra tiempo. En programas pequeños, la diferencia no vale la pena. En programas grandes, es cuando realmente se nota.
Espero haber sido claro, no soy ni mucho menos un experto, así que si alguien quiere hacer alguna corrección o añadir algo, bienvenido sea.
Y no todo se limita al toqueteo del bicho; he leído artículos en páginas españolas e inglesas, he descargado juegos y utilidades y los voy probando... y he descargado todos los números y cintas de Microhobby que he encontrado.
Como la mayoría de los amantes del retro sabemos, estos trastos se pedían a los padres, o en su defecto a sus Majestades, los Tres Reyes Magos de Oriente, "para estudiar, aprender, y mejorar en el colegio". Y los padres nos los compraban. ¿Quien era el tonto?
En cualquier caso, y aunque jugar ya me ha procurado muchísimas horas de diversión (sobre todo desde que descubrí a usar apropiadamente el comando MERGE"" y pude pasar de la primera pantalla del Army Moves).
Pero yo SÍ quiero usarlo para "aprender". Siempre quise aprender a programar en estos tratos, y a través de todos los textos, podcasts, entrevistas.. que he visto, leído y escuchado por internet, ese deseo no ha hecho más que aumentar.
Aunque en su día "toqueteé" BASIC, realizando algunas aventuras conversacionales muy simples, y alguna que otra aplicación doméstica chorra que jamás llegué a usar, nunca lo dominé en profundidad (ni mucho menos como para PROGRAMAR un juego de Spectrum). A esto hay que añadir que el BASIC que pudiera llevar el MS-DOS de un ordenador (QuickBasic era) no es el BASIC del Spectrum. Y por añadidura, que muchos de estos juegos estaban solo parcialmente programados en BASIC, o directamente, programados en Código Máquina.
El "reto" del que hablo en el título del post tiene que ver con aprender a programar en Spectrum, con aprender a programar en BASIC, sí, y después (en un futuro) aprender a programar en Código máquina. No tengo como objetivo programar un juego o programa concreto, solo alcanzar las habilidades, disciplinas y paciencia necesarias para poder hacerlo, tal y como se hacía antes.
Y cuando hablo de "programar en Spectrum" me refiero a eso precisamente; programar en el cacharro directamente; sin emuladores, sin aplicaciones que se cargan en un PC, sin más ayuda que cintas de casette para grabar los progresos, y un crucifijo para pedir a Dios que en mi casa nunca haya un corte de luz mientras programo...
Estas son las "armas" con las que cuento para llevar a cabo mi empresa:
El amado aparato, imprescindible para la tarea
El imprescindible manual de Usuario, que además de ser una lectura obligada para empezar, contiene multitud de códigos e incluso programas completos.
Muchas como esta...
TODO Microhobby
El cursillo de BASIC de Microhobby, escrito por Rafael Prades, pieza ineludible de los retos; auténtica hoja de ruta, una obra maestra que contiene todo lo que necesita un aprendiz como yo para conocer los entresijos del lenguaje y la máquina. Más adelante, daremos el salto al otro gran libro: Código máquina.
Para programar, comenzaré leyendo los Microhobbys, leyendo el libro Microbasic, y copiando los pequeños juegos que las revistas incorporaban como un código que debía ser copiado, listado y ejecutado. Creo, por experiencia, que la mejor manera de aprender a programar es leyendo y escribiendo código.
El reto consistirá en intentar copiar, entender, ejecutar y depurar fallos, de forma que consiga una ejecución final completamente exitosa, de uno de los juegos de cada revista, empezando por el número 1 y hasta el final. El reto será semanal. Por lo que veo, los primeros juegos son sencillos, una o dos columnitas de código, pero conforme avanza, nos podemos encontrar perfectamente con dos páginas de revista a dos caras llenos de columnas a toda página con cientos de líneas de código, símbolos gráficos y virguerías varias. Los primeros retos es predecible que se pueden completar en dos o tres horas; los otros llevarán días, o incluso semanas de quebraderos de cabeza.
La idea es ir poniendo, semana a semana, un reto, y poco a poco ir atreviéndome a modificar los programas y a crear los míos. Cuando pueda hacer esto en BASIC con cierta confianza, me embarcaré en el reto de programar algún juego (cosas sencillas, nada de grandes ambiciones, si acaso conversacionales con dibujitos o alguno con gráficos pero muuuuy simple). Y una vez terminada esa odisea, me metería con Código Máquina.
El reto de esta semana, sacado del Nº 1 de Microhobby:
Creo que en unas horas lo habré acabado, depende de lo que pueda dedicarle, quizás mañana lo termine... colgaré un par de fotos con las primeras y últimas líneas de código, el resultado, etc. De esta forma me obligo a cierta constancia y comparto el proceso con todos los retro-chiflados
EDITO:
INTRODUCCIÓN AL MUNDO DE LOS 8 BITS
Esta introducción es solo para gente que en su vida haya oído hablar de orenadores de 8 bits. Por lo tanto está lleno de datos que, para los habituales, serán obvios.
Lor ordenadores de 8 bits fueron las primeras computadoras domésticas que se acercaban a lo que hoy llamamos "ordenadores". Eran máquinas muy limitadas, sin un sistema operativo como hoy lo entendemos, pero a pesar de sus limitaciones, hubo algunos magos de la informática que demostraron poder sacarles un partido insospechado. No eran videoconsolas, pues una videoconsola solo te permite jugar. Los ordenadores de 8 bits te permitían jugar a videojuegos, sí, pero también programar, no solo juegos sino cualquier cosa, dentro de sus capacidades, que pudieras imaginar. Podías crear aplicaciones de gestión, del hogar, dirigidos a oficinas, y a casi todos los empleos que puedas imaginar: enseñanza / educativos, ingeniería, ventas... solo hay que pasarse por la web "World of spectrum" para ver todo lo que se hacía.
Me centro ya en el Spectrum:
-Cuando conectabas el Spectrum tenías un menú donde podías elegir el Cargador de cintas, el entorno de programación del lenguaje BASIC en 128 kb, una bonita Calculadora, o el entorno de BASIC DE 48 kB.
-La memoria RAM era de 16,48 o 128 kilobytes (el mío es el de 128). Para comparar, hoy en día un ordenador normalito tiene 3 o 4 gigabytes. Para que nos entendamos, un gigabyte tiene 1.024 megabytes. Y 1 megabyte contiene 1.025 Kilobytes. Comparad. Los ordenadores de hoy son Skynet comparados con las viejas máquinas de 8 bytes.
El ordenador no almacenaba los datos que le dabas, él no se los "quedaba". Si, por ejemplo, te pasabas toda la noche programando algo, y apagabas sin querer, o se te cortaba la luz... habías perdido, sin posibilidad de recuperarlo, todo lo hecho. En cuanto el ordenador se apagaba, todo lo que habías hecho se borraba para siempre. Para conservar esos datos, programas, o lo que fuera, se grababan en cintas de casette (sí, cintas de coche).
Para programar, como ya he dicho, te venía un entorno de BASIC donde tecleabas el código en ese lenguaje de programación. BASIC significa Beginner's All-purpose Symbolic Instruction Code. Como ventajas, era muy fácil de aprender, tenía relativamente pocos comandos, y era de propósito general (igual te servía para un roto que para un descosido; para programar un juego o para escribir un programa que te llevase la contabilidad).
A día de hoy BASIC está obsoleto, debido a sus inconvenientes: es muy leeeeeento, y su sencillez lo hace algo limitado. Es por eso que el otro gran lenguaje de programación es el Código Máquina, un código mucho menos "humano" y comprensible, más cerca de lo que el ordenador entiende.
Un ejemplo:
-Programar un mensaje que diga "Hola, Nosolohd" en lenguaje BASIC de Spectrum:
10 PRINT "Hola, Nosolohd"
run
-Programar un mensaje que diga "Hola, Nosolohd" en Código Máquina para Spectrum:
CALL SPRINT
DEFM Hello Nosolohd.
DEFB FF
RET
SPRINT POP HL
LD A,(HL)
INC HL
PUSH HL
CP FF
RET Z
CALL PRINT
JR SPRINT
Claro que, para escribir un mensaje, es mucho más fácil BASIC. Pero cuando se trata de juegos o programas con centenares de líneas de código, BASIC podría ser desesperante la ejecutarse, Código máquina es mucho más rápido y ágil, ahorra tiempo. En programas pequeños, la diferencia no vale la pena. En programas grandes, es cuando realmente se nota.
Espero haber sido claro, no soy ni mucho menos un experto, así que si alguien quiere hacer alguna corrección o añadir algo, bienvenido sea.
Última edición: