jueves, 19 de abril de 2018

Modificando la Dreamcast (VI): Doble BIOS, teoría

Entradas relacionadas:


Debería seguir con la realización práctica de las salidas de vídeo pero las voy a dejar para el final con el fin de ubicar a la vez todos los componentes adicionales como interruptores y conectores.

Hay una manera de modificar solo la región y el idioma de la máquina desbloqueando una pequeña memoria en la que se guarda la configuración regional, luego se pasa un programa para modificar estos valores, y por último hay que bloquear otra vez el chip para evitar que desde un juego puedan sobreescribirlo, dejando la consola bloqueada. Como este MOD esta superado con el cambio de BIOS no voy a abordarlo, pero podeis verlo por ejemplo aquí.

Los rusos son muy aficionados a la Dreamcast y en la página www.dc-swat.ru sacaron un programa que permite realizar cambios en la máquina, simplemente leyendo un CD y ejecutando el programa denominado DreamShell. Una vez arrancado el programa puedes modificar la región, activar la lectura de las tarjetas de memoria, la lectura del disco duro o incluso cargar copias de seguridad directamente, e incluso algunas cosas adicionales, pero esto solo estará activo mientras no se apague la máquina por lo que es necesario cargar el programa cada vez que arranca la máquina. Para que este cambio sea permanente es posible cambiar la BIOS original por una que incorpora ya estas utilidades, de forma que cuando arranque la máquina ya esté todo disponible.

Hay dos maneras de modificar la BIOS, una es reemplazarla por completo por otra, pero esto implica grabar la BIOS antes de ubicarla para lo que necesitas un grabador y no merece la pena. El mejor cambio posible es colocar una segunda BIOS en el aparato y poder conmutar entre la original y la nueva (lo que es bueno ya que hay algunos juegos que no funcionan con la BIOS modificada), y además esta nueva BIOS se graba desde la propia DreamCast sin necesidad de aparatos adicionales, por lo que es lo mas cómodo. Para ubicar la segunda BIOS sin necesidad de cablear mucho se utiliza el que la memoria dispone de muchos pines que son comunes a todos los chips conectados a la memoria.

Los chips de memoria disponen de muchos pines, pero podemos agruparlos en cuatro bloques diferentes en función de para que se utilizan (una agrupación de líneas es lo que se denomina un bus):
  • Los de direcciones indican a la memoria que posición de la misma se desea leer o en cual se desea escribir, el valor de la dirección siempre lo envía el procesador.
  • Los de datos envían el dato del procesador hasta la memoria para grabarlo, o desde la memoria lo ponen a disposición del procesador para su lectura.
  • Los de control permiten seleccionar el comportamiento del chip, si está o no activo y si se desea leer o escribir por ejemplo.
  • Los de alimentación son para lo que indica su nombre.
Las memorias se conectan todas compartiendo la mayoría de estos pines, salvo los de control, de manera simplificada cuando el procesador desea leer la memoria pone en el bus de direcciones la dirección a leer y activa la señal de lectura, un circuito auxiliar detecta el chip que se debe utilizar y lo activa, este pone en el bus de datos el contenido de esa dirección. Cuando el procesado desea escribir en la memoria pone en el bus de direcciones la dirección donde guardar, pone el bus de datos el contenido a guardar, y activa la señal de escritura, un circuito auxiliar detecta el chip que se debe utilizar y lo activa, este se guarda en la dirección deseada el contenido informado.

De esta manera podemos unir entre sí en ambos chips de las BIOS todos los pines relacionados con direcciones y con datos, la señal de lectura o escritura (suele ser la misma señal y según esté en valor alto o bajo indica una u otra cosa), y solo separamos la señal de control que activa el chip. Para simplificar el cableado y como el chip original y el nuevo tienen las mismas patillas, y las señales están ubicadas en la misma posición en ambos, los montamos uno sobre otro, soldando directamente las patas necesarias entre sí.

Hay dos modelos de placa, la VA0 es la original japonesa y la VA1 la europea, son casi iguales pero en la Japonesa la BIOS se alimenta a 5 voltios y en la europea a 3'3 voltios. Los esquemas de conexión para ambas versiones son los siguientes (a la izquierda está ubicada la BIOS original, en el centro la nueva BIOS y a la derecha otro chip de la placa cercano de donde sacar una de las señales necesarias):

Esquema doble BIOS para placas VA0 (original de www.dc-swat.ru)

Esquema doble BIOS para placas VA1 (original de www.dc-swat.ru)

En los dos esquemas todos los pines que no están conectados a nada se deben unir entre ambos chips (2 a 11, 13 a 22 y 24 a 43), el pin 12 de la BIOS original es necesario levantarlo de su sitio (es el único a levantar y debe hacerse con mucho cuidado de no romperlo o será casi imposible recuperarlo), y los pines 1, 12 y 44 de la nueva BIOS no se deben unir a los pines de la original. El pin 23 puede estar unido de forma diferente en ambas versiones de las placas.

El pin 12 marcado como /CE es la señal de activación del chip, proviene del componente D501, por lo que es necesario capturar esa señal y ponerla en el centro de un interruptor de dos posiciones un circuito, y los dos lados del interruptor irán a los pines 12 de cada uno de los chips, con este se selecciona cual de los dos chips desea utilizarse, es necesario usar una resistencia de pull-up de 10K Omios conectada a la alimentación de cada uno de los chips.

El pin 1 de la nueva BIOS está marcado como /RESET, se debe unir 3'3 voltios para que esté siempre activo.

El pin 44 de la nueva BIOS está marcado como /WE, es el que selecciona si se desea escribir en el mismo, se usará a la hora de programarlo por lo que es necesario unirlo a la señal de escritura de la placa para lo que se utiliza una pata de otro chip de la placa, en concreto el de una memoria flash cercana.

El pin 23 de la nueva BIOS es el de alimentación, en la máquina VA0 debe buscarse un punto que nos proporcione 3'3 voltios, en el esquema sugieren usar el pin 1 del chip IC302, mientras que en la VA1 como ambos chips trabajan al mismo voltaje se puede elegir, o bien se usa el mismo sistema o bien unir entre si directamente ambas patas.

miércoles, 18 de abril de 2018

Modificando la Dreamcast (V): Salidas de video, circuito explicado

Entradas relacionadas:


Circulan dos esquemas para añadir salida VGA a la Dreamcast, son el mismo solo que el segundo añade un chip para mejorar la señal de sincronismos, lo que realmente no es necesario:

Circuito básico para salida VGA


Circuito con salidas AV, S-Video y VGA
Yo voy a montar un circuito con todas las salidas posibles para la consola pero con dos interruptores, uno para elegir salida AV/S-VIDEO o salida RGB, y el otro servirá para elegir que tipo de salida RGB usaremos, pudiendo seleccionar Euroconector o VGA. Este es mi esquema:

Mi circuito con salidas AV, S-Video, Euroconector y VGA
Lo he diseñado en dos partes, la de arriba con el circuito y la de abajo con los componentes adicionales:

  • El circuito que es necesario montar tiene unos condensadores, resistencias y diodos. En el esquema de conexiones de este circuito por la izquierda están las conexiones desde el conector de la Dreamcast, marcados con números, y a la derecha las salidas hacia interruptores y conectores marcadas con letras.
  • En el esquema abajo están los dos interruptores, uno de dos posiciones y un circuito, otro de dos posiciones dos circuitos, y los conectores de salida posibles. 

Posibles modificaciones al circuto base


Es posible usar un interruptor de tres posiciones ON-OFF-ON y dos circuitos en lugar de los dos interrupores, ahorrando un poco de espacio que en esta consola va muy justo. En este caso se elimina el interruptor de un circuito y se conecta directamente los dos pines centrales a la toma A. Las tres posiciones serán Euroconector - AV - VGA
Variante con un interruptor de tres posiciones ON-OFF-ON y dos circuitos

Si no se desea salida de RGB por Euroconector, solo por VGA, se puede omitir el interruptor de dos circuitos y en este caso en el conector de un solo circuito se ubicando el cable A en el conector central y se unen los pines F y G a un lado del conector, dejando sin conectar el otro. En este caso las dos posiciones del interruptor serían AV y VGA, y no sería necesario poner la resistencia de 560 Omios entre los pines 4-D , ni poner cables desde las salidas E, D y J. En este caso es posible poner un conector Jack hembra para el sonido, en lugar de los dos conectores RCA, que ocupa menos espacio (esto se puede usar siempre realmente).

Variante con solo salida VGA

Si no se emplea la salida de S-Video (muy popular en América pero no en Europa), no es necesario montar los condensadores ubicados entre los pines 11-K y 12-L, ni el conector redondo, ni poner cables desde las salidas K y L.
Variante sin conector S-Video
De manera adicional se puede hacer un circuito para el vídeo por componentes, ya que no hay salidas directas para ello, pero al ser un circuito un poco mas grande y como creo que con Euroconector y VGA es suficiente no voy a abordar este circuito, pero podéis verlo aquí por ejemplo.

En la siguiente entrada pondré fotos de como he realizado el circuito (aunque es muy sencillo y fácil de entender) y la aplicación práctica del mismo a la máquina.

lunes, 16 de abril de 2018

Modificando la Dreamcast (IV): Salidas de video, teoría

Entradas relacionadas:


La Dreamcast fue la mejor consola en su momento, y su capacidad gráfica es una gran muestra del tema. La consola dispone de un conector trasero de Audio y Vídeo, y tanto Sega como otros fabricantes sacaron al mercado una serie de cables que lo explotaban, disponiendo de salidas para televisión por RF (Antena usando la salida AV y un modulador), AV (conectores RCA Amarillo, Rojo y blanco), S-Video (poco usado en Europa), RGB por Euroconector o por YPbPr (conocido como Video por componentes), y RGB por VGA.

Tengo esta entrada en la que se explica como hacer cables AV, S-Video y Euroconector, y esta otra sobre como poner conexiones AV.

En el conector hay 16 pines, algunos son de señal, otros de alimentación y masa, y un tercer grupo es la selección del tipo de salida:

  1. Masa
  2. Audio Derecho
  3. Audio Izquierdo
  4. +12 voltios
  5. +5 voltios 
  6. Activar salida RGB en modo VGA
  7. Activar salida RGB en modo TV
  8. Sincronismo vertical para VGA
  9. Sincronismo horizontal para VGA
  10. Sincronismo compuesto
  11. Crominancia
  12. Luminancia
  13. Video compuesto
  14. Azul
  15. Verde
  16. Rojo
Para seleccionar el tipo de salida solo hay que unir a masa el pin adecuado y esto hace de conmutador de la salida, si no se une ninguna la salida activa son las de AV y S-Video, si se activa el pin 7 se activa la salida RGB con frecuencias adecuadas para Euroconector, y si se activa el pin 6 se activa la salida RGB con el doble de frecuencia, que es la adecuada para el uso de la VGA.

Las salidas de sonido siempre son los pines 2 y 3, sonido estéreo, y siempre están activadas por lo que funcionan en todos los modos.

Para aprovechar nuestras salidas hay dos opciones, una es usar un conmutador de tres posiciones, que nos permita elegir que salida usaremos, y la otra es usar que hay varias masas comunes en los conectores de VGA y Euroconector, para puntear automáticamente la salida en función del cable conectado. La primera opción permite forzar la salida siempre y funciona con cualquier cable, ya que puede pasar que el cables que compremos no tenga todas las masas para ahorrar algo de coste.

Ahora hay que elegir que salidas ponemos en nuestra máquina y los conectores que usaremos. yo he elegido poner tres conectores RCA (amarillo, rojo y blanco) y un conector DB-15, lo que me permite disponer de tres salidas diferentes usando cables estándar casi siempre, aunque dejaré de lado otras dos posibles:
  • Usando los tres RCA y un cable estándar tengo directamente la salida AV
  • Usando el DB-15 con un cable VGA estándar y los RCA rojo y blanco con un cable adecuado estándar tengo video VGA y sonido estéreo.
  • Usando el DB-15 y los RCA rojo y blanco con un cable específico puedo enchufar por  Euroconector.
  • No dispondré de salida S-video, pero si sería sencillo añadir el conector adecuado para el video, que junto a los cables RCA blanco y rojo me darían el sonido, pero como en Europa no lo usamos mucho de momento no lo voy a montar.
  • Aunque no lo voy a montar, se puede hacer un cable específico y un pequeño circuito para el vídeo por componentes, pero creo que con VGA no es necesario.
Solo queda planificar donde pondremos las salidas, el lugar mas natural es usar el hueco bajo el modem, ya que por desgracia ya no tiene posibilidad de uso, lo aprovechare para poner allí todas las salidas que quiero poner a esta máquina, pero por temas de espacio no es posible taladrar directamente para poner el conector, ya que la pared está pegada al lector de GD-ROM, por lo que usaré una placa auxiliar para ubicarlos que pegaré en el hueco con termofusible. Esta placa tendrá el DB-15, los tres RCA y el interruptor para elegir entre VGA o Euroconector en la salida, ya que al tener doble uso no puedo usar el truco de las masas comunes.

domingo, 15 de abril de 2018

Modificando la Dreamcast (III): Adaptar alimentación Japonesa/USA, práctica

Entradas relacionadas:

Actualizado el 25/04/18, había algunos textos erróneos en los piés de las fotos

Tras la teoría viene la realización, primero unas imágenes generales de la fuente y una vista de la separación entre la parte de alta y la de baja:

Vista general de la fuente, entrada de corriente por la derecha y a la izquierda el conector con las salidas de 5, 3'3, 12 voltios y masa.     Otra vista superior, se ve mejor el conector de salida de la izquierda, que provoca por desgracia falsos contactos que pueden hacer que se resetee el aparato.
Vistas laterales     El circuito por la cara de soldaduras
Este es el regulador de la parte de alta, un chip FA5317, junto a el está el transistor MOSFET K2662 responsable de que se genere el voltaje de alta frecuencia.
Vemos la separación entre la parte de alta y la de baja usando una línea roja, el transformador aísla completamente ambas partes del circuito. Arriba en amarillo está el elemento que transmite el sensor de voltaje entre ambas partes del circuito, es un opto-acoplador por lo que sigue aislando ambas partes. Abajo hay un condensador de desacoplo de alterna marcado en azul.


Ahora vemos los componentes de la parte de entrada susceptibles de no soportar los 220 voltios y por tanto puede ser necesario cambiarlos:

El componente redondo es el fusible de entrada, 1'6A y 250V     Un condensador de filtro, aguanta 275 voltios, detrás está una doble bobina, ambos componentes forman el filtro EMC.       
Este es el puente rectificador, un S1NB que soporta 800V a 1A, la entrada viene del filtro EMC.
El condensador de entrada aguanta solo 200 voltios y es necesario reemplazarlo Condensador cerámico 332M 380, que es de 3300pF y 380 Voltios Condensador cerámico 103Z 1KV, de 10.000pF y 1000 Voltios


Como no utiliza varistores (aunque la Saturn o la XBOX si los usan), cambiaremos únicamente el condensador por otro de 300voltios y entre 64 y 100uF, se pueden conseguir casi del mismo tamaño, pero los que he conseguido en la tienda (cada día disponen de menos variedad de componentes por desgracia en las tiendas) son de 450 voltios y mucho mas grandes, solo cabe bien tumbado:

La diferencia de tamaño entre ambos Puesto en su lugar, cabe perfectamente tumbado Vista desde el otro lado
En marcha, salida de 5 voltios
En marcha, salida de 3'3 voltios
En marcha, salida de 12 voltios

martes, 20 de marzo de 2018

Modificando la Dreamcast (II): Adaptar alimentación Japonesa/USA, teoría

Entradas relacionadas:


La última consola lanzada por Sega era la mejor del momento pero no logró una cuota de mercado aceptable, por lo que en 2001 cesa su producción, aunque el último juego para esta consola lo lanzó en 2004.

La Saturn se vendía bien en Japón pero no conseguía abrirse hueco en USA,  por lo que Sega EEUU apoya el lanzamiento de una nueva máquina y en 1998 aparece la Dreamcast, con características como un módem incorporado, lo que permitía jugar en modo multijugador por la red (tuvo mucho éxito en EEUU para los juegos NFL 2K1, Quake III Arena y Unreal Tournament, por lo que se desarrolló un incómodo teclado para el chat que incluía el mando en los laterales), tiene un Sistema Operativo que desarrolla junto a Microsoft y que permite usar rutinas para Windows CE (el que usan las PDA del momento, aunque la mala implementación del mismo no lo hace atractivo y no se desarrollan utilidades que lo exploten), un accesorio en el mando denominado VMU que permite mayor interacción (tiene una pantalla y aparecen personajes y mensajes en el mismo), o una unidad de CD de mayor capacidad (1'2Gb en lugar de 0'8Gb de los CD normales), lo que permite almacenar mas músicas y fases.

En ese momento la reina era la PS1, y Sony al verse presionada anuncia prematuramente el lanzamiento de la PS2, lo que hace daño en las ventas de Sega, que solo logra vender ante el retraso continuado en el lanzamiento de la nueva máquina y los iniciales problemas de suministro de las consolas de Sony, pero en el año 2000 con la producción masiva de la PS2 las ventas caen en picado para la Dreamcast, y el 2001 cesa la producción de la Dreamcast como tal, aunque se sigue usando su tecnología en las placas Naomi de las recreativas de Sega.

Las consolas tienen dos variantes generales, la Japonesa tiene el logo en la tapa de color naranja, mientras que las PAL tienen el logo en color azul. Internamente hay pequeñas diferencias entre ambas máquinas, pero la principal diferencia es en la fuente, las japonesas y americanas funcionan a 100 o 110 voltios, mientras que las europeas funcionan a 220 voltios, ambas utilizan una fuente conmutada por que se pueden adaptar a los voltajes bien, pero hay algunos componentes de las japonesas que no soportan los 220 voltios lo que impide enchufarlas a la red en Europa (aunque al contrario no es problema), por lo que hay que adaptarlas ligeramente.

Hay dos tipos de fuentes, las fuentes lineales son mas sencillas, necesitan un voltaje de entrada superior al de salida. En general tienen 4 partes, un transformador reductor de voltaje, un puente de diodos, un condensador de filtro y un regulador que ajusta continuamente la salida al voltaje deseado, pero la diferencia entre el voltaje de entrada y el de salida la convierten en calor, por lo que son poco eficientes.

Las fuentes conmutadas con mas complejas pero mucho mas eficientes, no se calientan mucho, son capaces de adaptarse al voltaje de su entrada ajustando bien la salida, son bastante robustas, y en general aceptan sin problemas cortocircuitos en su salida.

Su funcionamiento en líneas generales se basa en dos partes claramente diferenciadas y separadas entre sí, la parte de alta y la de baja. La primera parte transforma el voltaje en alterna a 50 o 60 hercios de la entrada en otro voltaje de alterna pero de muy alta frecuencia, para lo que usa un puente de diodos, un condensador de filtro, y mediante un chip de control que pilota un transistor en modo conmutación genera una onda cuadrada de alta frecuencia, que pasa a un transformador de aislamiento, que al trabajar en alta frecuencia es mucho mas pequeño que uno para fuente conmutada. El otro lado del transformador es la zona de baja que es un regulador convencional, donde el voltaje de salida es sensado continuamente y enviado al chip de control a través de un opto acoplador para evitar el contado directos entre ambas zonas, el chip se encarga de hacer que el transistor conmute en una frecuencia u otra (lo que se denomina Modulación por Pulsos o PWM) en función del voltaje detectado en la salida, consiguiendo que esta se mantenga contante. En caso de cortocircuito en la salida, el chip puede hacer que el transistor deje de conmutar quedando en corte, lo que evita daños en la fuente.

Esto es muy genérico ya que normalmente en el primario hay un fusible, otro transformador, alguna bobinas, condensadores y elementos de filtro y protección adicionales. No voy a entrar mucho en estos, pero hay varios elementos que soportan un voltaje limitado, mientras otros soportan cualquier voltaje, los que nos afectan son el condensador de filtro primario y los varistores.

El condensador de filtro primario es electrolítico de alta capacidad, está fabricado mediante dos láminas metálicas separadas por un papel, que se enrollan para que ocupen menos espacio, y dependiendo de la separación y el grosor de las láminas aguantan un voltaje máximo que hay que respetar. En la fuente japonesa el condensador es de 100uF y 200 voltios, lo que es suficiente para los 110, pero no para 220, y es necesario reemplazarlo por uno de 100uF 250 voltios (o de 300 pero cuidado con el tamaño), y al reemplazarlo hay que respetar la polaridad. Los condesadores electrolíticos son componentes de forma cilíndrica de color azul o negro normalmente, aunque los hay de mas colores como naranja, amarillo o verde. En su cuerpo indican su capacidad y el voltaje máximo que admiten, como tienen polaridad disponen de una franja de color negro (salvo en los que son negros que es gris) que indica la patilla negativa, marcaa con signos menos.

Otro elemento importante es el varistor, que sirve para proteger el circuito de subidas bruscas de tensión, están fabricados para un voltaje máximo y no soportan estar continuamente cortando, por lo que si se suministran 220 a uno de 110 voltios acaba fundiéndose. Los varistores suelen ser componentes redondos de color azul u amarillo, aunque los hay de mas colores.

Para convertir una fuente Japonesa o Americana a nuestros 220 voltios solo debemos cambiar estos componentes. En la siguiente entrada veremos como se hace.

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.