jueves, 15 de febrero de 2018

Cómo escribir juegos para el ZX Spectrum. Apendice B

Índice de entradas

Esta serie de artículos han sido traducidos a partir del documento "How to Write ZX Spectrum Games" con permiso de su autor, Jonathan Cauldwell, un gran desarrollador de juegos para el Spectrum, os recomiendo visitar su Web donde está el texto original. El documento original, y por tanto esta traducción, tiene © Jonathan Cauldwell y solo puede duplicarse con permiso expreso por escrito de su autor.

APENDICE B

Este apéndice no forma parte del documento original, es un añadido para explicar como se pueden probar los programas que se describen, y como ejecutar los que se incluyen para su descarga.

Para programar en ensamblador para el Spectrum en nuestro PC necesitamos un editor de textos, un programa ensamblador y un emulador. Esto se puede tener de forma separada o en un solo programa, lo que siempre es más cómodo, pero explicaré ambos sistemas.

Elegir un editor para programar

Lo único que hace falta para escribir código a la antigua usanza es un programa que permita escribir texto y un ensamblador. El Notepad incluido en windows es un editor muy sencillo pero suficiente, no hace falta más realmente, aunque hoy día estamos acostumbrados al coloreado del código o a que se auto complete (eso en ensamblador es menos útil), pero no tenemos porque renunciar a ello.

Si queremos un editor un poco mas potente existen muchas mas opciones, aunque no todas van bien con ensamblador del Z80 para el coloreado, pero como editores generales funcionan muy bien, existiendo muchos gratuitos muy buenos. Yo uso Notepad++  pero solo funciona en Windows (o en Linux con Vine), me parece muy bueno y completo, pero os doy otras opciones:
  • SublimeText no es gratuito, es muy espartano de aspecto pero tiene muchos seguidores
  • UltaEdit no es gratuito pero si muy completo, tiene una extensión llamada UltraCompare que va muy bien para comparar el contenido de ficheros.
  • Atom está basado en Sublime pero es gratuito.
  • Crimson Editor es gratuito y muy recomendado por programadores retro.
  • Syncplify es gratuito, menos potente que los otros pero tiene un modo para su uso con pantallas táctiles, por lo que va muy bien en tablets.
  • Textwrangler sería una buena alternativa si usamos Apple.
  • Visual Studio Code de Microsoft es la alternativa mas profesional, y además es gratuito pero no lo recomiendo para principiantes, es un buen IDE pero tiene demasiadas cosas que no vamos a usar, dispone de varias extensiones para trabajar en ensamblador del Z80, incluso una para trabajar en el Basic del Spectrum.

Configurar el Notepad++ para ensamblador del Z80

Notepad++ dispone de configuración específica para muchos lenguajes de programación, incluyendo ensamblador de Intel, pero como siempre se le pueden añadir mas, existen variantes para la sintaxis del Z80. Hay un fichero de configuración que podéis localizar en los foros de CPCWiki (está en inglés pero es muy sencillo de entender), que funciona muy bien. Está desarrollado para usar fondo negro en la pantalla, yo he modificado el fichero para usar fondo blanco, podéis descarga de aquí los dos ficheros:


y según mas os guste el fondo con el que trabajar ponéis uno u otro, incluso podéis trastear un poco y cambiar los colores a vuestro gusto, aquí tenéis el mismo ejemplo con ambos fondos para que elijáis mejor:


Para instalarlo, guardamos el que queramos (o los dos) en un directorio de nuestra maquina, abrimos Notepad++, vamos en el menú superior a "Lenguaje", opción "Defina su lenguaje...", en la pantalla nueva damos a importar, elegimos el fichero que queremos subir, y  cerramos esa ventana. Ahora cerramos y abrimos Notepad++, y en la opción de "Lenguaje" nos aparecerá la opción importada, la seleccionamos y ya tenemos coloreado de sintaxis en el editor. También recomiendo quitar la vinificación gramatical, ya que cualquier directiva no la reconocerá y nos dirá que está mal escrita, para ello en la opción "Plugins", vamos a "DSpellCheck" y desmarcamos la opción "Spell Check Document Automatically".

Ahora podemos abrir un fichero existente o crear uno nuevo y comenzar a programar en ensamblador del Z80 con nuestro Notepad++

Generando el código máquina

Ahora que tenemos un programa escrito, hay que convertirlo en código máquina que pueda ejecutarse en el Spectrum, para lo que se usa un programa ensamblador específico para el Z80. Existen varios programas disponibles, el mas usado siempre ha sido PASMO, pero existe una buen alternativa llamada SjASMPlus, ambos están diseñado para Windows pero se pueden compilar para ejecutar en Linux o Apple ya que incluyen los fuentes, y como no usan ventanas sino que funcionan a partir de la línea de comando, son sencillos de portar. Los dos programas son antiguos y no se actualizan hace años, pero funcionan a la perfección.

Los ejemplos los he probado con ambos compiladores, la diferencia principal es que SjASMPlus admite mas directivas que PASMO, pero no permite que las directivas estén al principio de la línea por lo que hay que dejar espacios (se puede usar un parámetro al lanzarlo para oviarlo), y que es necesario añadir al inicio del programa una línea en la que se indica el nombre del fichero de destino como por ejemplo:

OUTPUT "destino.com"

Ambos funcionan igual, hay que ir a la línea de comando de windows (usar buscar y escribir CMD), y lanzar la ejecución con estos parámetros, para PASMO origen y destino, para SJ solo origen:

  • pasmo fuente.asm destino.com
  • sjplusasm fuente.asm

Probando el programa en un emulador

Para ejecutar sirve cualquier emulador, Spectaculator tiene fama de ser el mejor, pero es de pago, yo prefiero usar ZXSpin (ya no tiene página propia, pero lo podéis descargar de aquí por ejemplo), ya que dispone de utilidades para desarrollo de programas en ensamblador, incluyendo editor, ensamblador y debuger, pero hay muchos donde elegir.

Descargas en programa, lo descomprimes y lo ejecutas, se abre una pantalla de Spectrum. En el menú de "File" seleccionas la opción "Load Binary File..." y se abre una pantalla, la rellenamos con el fichero generado y la dirección de comienzo:


Luego hay que ejecutar el programa, por ejemplo para la dirección que hemos puesto debemos escribir: CLEAR 25000 : RANDOMICE USR 25000 lo que se consigue en un spectrum con las teclas X (CLEAR), el número deseado, Simbol Shift mas Z (:), T (RANDOMICE), Caps Shift mas Simbol Shift mas L (USR), y luego el número otra vez.


Esto ejecuta el programa cargado y podemos ver ya el resultado en la pantalla, este ejemplo es el hola mundo del primer capítulo:


Todo en uno con el emulador

si usamos ZXSpin o hace falta nada mas, ya que el emulador tiene su propio editor y ensamblador, para ello hay que ir a la opción "Tools", elegir "Z80 Assembler", y aparece una nueva ventana con el editor, podemos cargar allí el fuente, editarlo, ensamblarlo, ejecutarlo, incluso ejecutarlo paso a paso, lo que nos ahorra un poco de trabajo. el editor no es la quinta maravilla, pero tiene coloreado y lista de símbolos navegable, podemos cargar o guardar programas en la opción File, ensamblarlos en la opción File (cuidado de poner en esa pantalla la dirección de comienzo para evitar errores de ejecución), y ejecutarlos en la opción Program (permite ejecutar normal, paso a paso, detener la ejecución en cualquier momento, o detener y reiniciar los contadores):


Un todo en uno, que da a veces problemas con el uso de la memoria del PC si a la hora de ensablar no le ponemos la dirección de comienzo, pues el programa no funciona todo lo fino que debería, pero una gran ayuda para el desarrollo y pruebas de los programas.

viernes, 29 de septiembre de 2017

Sigo traduciendo en la wikipedia

Le ha tocado ahora a:

  • El Harwell dekatron es un pionero británico, y el ordenador inglés más antiguo que sigue funcionando hoy día tras su reciente restauración. Para la memoria usaba tubos dekatron con 10 filamentos, al recibir un impulso el filamento activo pasaba al siguiente, de esta manera en cada tubo podía almacenar un número del 0 al 9. Era muy lento (sumaba a velocidad humana), pero lo mejor es que con los tubos se puede ver como funciona de manera visual.
  • El que intentó ser el primer personal, del que ya he comentado en una entrada, el Simon, un ordenador con 12 bits de memoria totales, organizados en 6 registros de 2 bits, lo que le permitía hacer 4 únicas operaciones (suma, negación, mayor que o selección) con números entre el cero y el tres. 
  • Avanzando en el tiempo uno de los primeros minis, el Data General Nova, cuyo diseño según dijo el mismo influyó en Steve Wozniak en el desarrollo del Apple. Ya había tratado de esta máquina en el blog hablando del camino hacia el ordenador personal.
  • También de Data General, la entrada sobre el Data General-ONE, un portatil PC compatible con MS.DOS y monitor CGA, muy avanzado para su momento aunque caro, y con una pantalla muy mejorable.
  • He añadido la categoría de Ordenadores de la década de 1960 para incluir los que vaya traduciendo y organizar mejor los que ya estén, y otra para Data General, una de las grandes empresas de la edad de oro.

viernes, 4 de agosto de 2017

Mas historia en la Wikipedia

Sigo incuyendo entradas en la Wikipedia en español

jueves, 27 de julio de 2017

Sigo traduciendo en la Wikipedia

Estas son las nuevas entradas que he traducido o modificado:
  • Dentro de la familia del QL hay una variante del aparato que se vendió por varias empresas, por lo que he traducido la página del One Per Desk que vendia la ICL, añadiendo un enlace a la misma máquina que vendía la BT como el Merlin Tonto, y que tambien vendió la empresa Telecom Australia como el Computerphone.
  • Otra máquina de primera generación nada conocida, la serie de los dos modelos BRLESC, que tenían la marca de ser el ordenador mas rápido del momento. 
  • Los modelos de la serie 600 de IBM, una poco conocida serie temprana que marcó la entrada definitiva de la IBM en el mercado del ordenador, sentando las bases de su total reinado durante los años posteriores. Comenzó con calculadoras de tarjetas perforadas (unas máquinas muy poco potentes pero muy usadas en esa época y muy curiosas, debo escribir algo mas en profundidad sobre ellas), y terminó con dos ordenadores. Ha incluido una nueva páginas para la lista de modelos de la serie 600, traducción de las páginas para el IBM 601 y mejora de su variante el Aberdeen Relay Calculator, traducción de la página de los IBM 602 y 602-A, traducción de la página del IBM 603, traducción de la página de los IBM 604-605-607, mejora para los IBM CPC e IBM CPC II, mejora en profundidad de la redacción del IBM 608-609, añado traducción para el IBM 610 y ligera mejora del IBM 650. Además de haber añadido categorías en todas las páginas.
  • Traducción de dos páginas sobre una consola que no salió de EE.UU. y es poco conocida, pero que aportaba soluciones ingeniosas para exprimir los bits al máximo, la Astrocade, competidora de la Atari 2600. Una variante fue la Datamax UV-1, usada como tituladora de vídeo.

miércoles, 19 de julio de 2017

Mas traducciones en la Wikipedia

Estas son las entradas que he traducido o modificado:
  • He añadido una pantilla de bits en las páginas ‎4 bits,8 bits, 16 bits, 18 bits, 24 bits, 31 bits‎, 32 bits, 48 bits y 128 bits
  • Dentro de lo relacionado con el UNIVAC, traduzco la página del UNIVAC I y la separo de la página general sobre UNIVAC,  he traducido la página sobre los Códigos de caracteres de 6 bit que eran los usados por esta máquina, he traducción de la página sobre el Ordenador decimal que tuvo su gran momento al inicio de la informática pero fue rápidamente superado por el binario, y he traducido la página sobre la empresa Remington Rand, los creadores del Univac.
  • ‎Añado a otro de los pioneros relacionados con el ENIAC, John Grist Brainerd
  • En el Portal:Informática/Informáticos he añadido a dos grandes mujeres fundamentales en la historia de la informática, Grace Hopper y Margaret Hamilton.
  • Traducción de la página sobre el IBM 1620 Modelo I, ordenador un muy popular para uso científico en su época, cambiando cosas en la página general sobre el IBM 1620
  • Uno de los primeros ordenadores de segunda generación aunque muy poco conocido, el MOBIDIC era un ordenador móvil para uso militar, se movía transportado en un trailer y necesitaba otro que hacia de generador eléctrico.
  • He mejorado la pagina sobre el Sphere 1, el primero que usó el Ctrl-Alt-Sup.
  • Traducción de la página sobre el Grundy NewBrain, ordenador salido de las empresas de Sinclair como los Acorn. 
  • Mejoras del texto sobre el ordenador Intertec Superbrain, solo destaca por ser el primero en usar el protocolo serie Kemit, hoy fuera de uso como todos los de comunicación serie pero que fue imprescindible durante 20 años.

martes, 2 de mayo de 2017

Preservación de máquinas (XIII): Los manuales del Kentelec-8

 Índice de entradas de Preservación de máquinas 
Colabora con el proyecto: Simplemente haz click de vez en cuanto en los anuncios, no te cuesta nada y me ayudas con los costes del proyecto. Cada 11 click aportas un euro.


Portadas de los tres manuales
Por fin pude ir a la Biblioteca Nacional a consultar los manuales del Kentelec-8, aunque no puede estar demasiado tiempo ni llevé material para tomar notas, y por la hora estaba cerrada reprografía y no pude hacer copias de algunas partes, pero al menos confirmé que tienen disponible para su consulta los tres volúmenes, y que la información es importante.

El primer volumen lo vi en la biblioteca de la UPV, es el manual de programación del 8008 en ensamblador. Tiene 169 páginas. Los otros dos volúmenes son muy interesantes para la reproducción del aparato, aunque no dan toda la información necesaria.

El segundo volumen está dedicado al manejo general del aparato y de los tres programas que incluye, con los dos panales de control con sus interruptores y luces, el teclado hexadecimal y el grabador de EPROMS. incluye un dibujo del panel trasero, que nunca había visto en ningún sitio. Tiene 148 páginas. Con esto ya se puede hacer un emulador del aparato al menos.

Diagrama de bloques del aparato
Panel de control, l-amparas
Panel de control, interruptores
Vista trasera
El tercer volumen describe las tarjetas que componen el aparato, aunque no aportan esquemas, habla de las placas en general describiéndolas, da una lista de señales de las mismas, unos cuantos diagramas de tiempos de las placas, algunos esquemas eléctricos del grabador de EPROMS. No es completo, pero al menos está reflejado como funcionan y que contienen a grandes rasgos las placas del aparato. Tiene 233 páginas, aunque las 38 últimas son los mismos apéndices del volumen segundo.


Diagrama de tiempos
Diagrama de tiempos

 
Tarjetas internas y su ubicaciones

Una parte de la fuente del grabador de EPROMS
Por tanto, como mis visitas a Madrid ya son muy esporádicas, me toca pedir en la Biblioteca Nacional que me escaneen los manuales, pero el coste es un tanto elevado, el volumen dos costaría 36€ y el volumen tres costaría unos 44€, además de los gastos de envío. Por el sistema de autoservicio se puede escanear por un poco menos, costando unos 70€ ambos manuales, pero hay que hacerlo en persona.

Por tanto habrá que esperar a la próxima visita a Madrid para seguir adelante con el tema. Más paciencia.

jueves, 6 de abril de 2017

RetroMadrid 2017

Tras un tiempo bastante alejado de todo, quiero volver a empezar otra vez a hacer cosas, por lo que voy a montar un workshop (conferencia interactiva) en RetroMadrid 2017, será el sábado por la tarde, podéis venir con vuestras máquinas para que les echemos un vistazo y orientaros en las reparaciones o modificaciones, desmontarlas y limpiarlas.

Los que deseen acudir deben primero solicitar la entrada, es gratuita pero debes apuntarte por temas de aforos, hay dos maneras:

  • Las solicitáis en la Web del evento.
  • Participando en el Crowfounding (a partir de 5 euros) y ayudar un poco a la organización (yo no recibiré nada de ese dinero). 
Luego de solicitar la entrada debéis apuntaros a la actividad en la Web de RetroMadrid, indicando lo que queréis traer y que le pasa para que prepare la actividad, no se como lo harán en la web, pero si queréis podéis dejármelo también aquí como un comentario.
La actividad será la siguiente:

Mantén tus aparatos en marcha. Ven con tu máquina y veremos cómo se abre, se limpia, se repara o se modifica tu ordenador o tu consola. Explicaré temas básicos de herramientas, cableado, técnicas básicas de soldadura necesarias para soldar y desoldar componentes, algo de electrónica básica, tipos de componentes, las fuentes de alimentación, memorias, como modificar consolas y ordenadores, detectar averías básicas con el tester, el esquema y el sentido común, y finalizaremos viendo las señales internas con un osciloscopio.

Abriremos los ordenadores y consolas que traigáis para verlos por dentro y medir algunas señales. No esperes salir con tu máquina en marcha, pero al menos intentaremos un diagnóstico de la avería o encauzado como hacer el mod.

Cuando te inscribas en la actividad dime lo que quieres traer y lo que deseas hacer con el aparato para que esté preparado y tengamos más posibilidades. Debes traer tu máquina, si es una consola no olvides un juego, cableado, fuente, destornilladores, soldador, sería conveniente traer un monitor adecuado y un tester, si sabes lo que falla trae un recambio, por ejemplo si quieres cambiar condensadores a una GameGear trae el kit de condensadores para cambiarlos.