domingo, 22 de mayo de 2016

Macronics Systems (1979-1983)

Ron Bissell, Ken MacDonald y John Kwok fundaron Macronics Systems Ltd. en el año 1979 con el objetivo de diseñar una alternativa barata a los ordenadores semi-profesionales a los que tenían acceso en la Administración Regional Sanitaria de West Midlands donde trabajaban. John Kwok se separaría poco más tarde.

Este ordenador barato nunca saldría a la luz ya que coincidió con el lanzamiento del Sinclair ZX80 con un diseño muy parecido al que tenían pensado, por lo que dejaron de lado el diseño y se enfocaron en el software para el ZX80. Más tarde, también lanzarían hardware como una unidad de floppy para el ZX81 (F.I.Z.), que posteriormente extenderían al ZX Spectrum.




Ron Bissell era el desarrollador técnico y Ken MacDonald era el gestor y financiero. 

La primera incursión de Ron en la programación para ordenadores Sinclair fue una rutina que mapeaba la memoria de pantalla del ZX80. Esta rutina se vendía en un listado y no en soporte magnético, como la mayoría de los programas en esa época. Sin embargo, su siguiente programa "Active-Display Program" o "Amazing Active Display" fue su gran aportación al ZX80, y posterior ZX81. En varios artículos (ref. 3), se atribuye esta rutina a Ken MacDonald, pero él mismo (ref. 2), como en la propia entrevista a Ron (ref. 1) se deja bien claro que el programador de la rutina fue Ron Bissell.

Esta rutina escrita en código máquina rompía el paradigma de que la pantalla del ZX80 se mantenía estática hasta que se pulsara una tecla. Al mismo tiempo, el Dr. Ian Logan sacó una rutina similar publicada en el artículo Auto-Display-Changing (Sync Magazine, Volume 1, Nº 3, May/Jun 1981). La rutina de Macronics se vendía aparte para que pudiera ser incorporada por otros programadores en sus desarrollos con pantalla "flicker-free", como puede verse en el siguiente anuncio que se veía en publicaciones como Sync Magazine.


Sync Magazine Vol 1, nº 1, Ene/Feb 1981 (pag. 19)


Macronics desarrolló entre 1980 y 1983 programas para los ordenadores ZX80, ZX81 y ZX Spectrum. Algunos de los primeros títulos para el ZX80 ya necesitaban de ampliaciones de memoria, en particular aquellos que necesitaban de más gráficos.



Sync Magazine Vol 1, nº 4, Jul/Ago 1981 (pag. 21)


La mayoría de los cuales no se han preservado, pero títulos como City Patrol (ZX81, 1982), las versiones de Planetoids (ZX81, 1981), Space Invaders (ZX81, 1981) y Breakout (ZX81, 1981); y alguno más para el ZX Spectrum como Alien Insects (1983) pueden encontrarse en las webs especializadas.

Su rutina "Active-Display" es la precursora de los Pseudo HI-RES del ZX81, que posteriormente fue utilizada o versionada por otros programadores. En esta entrada hay más información sobre este modo de video del ZX81.

Desde mediados de 1982, es difícil encontrar publicidad alguna sobre Macronics. Concretamente, el último anuncio que he encontrado es en la revista Sinclair User en Julio de 1982. Coincidiendo con el lanzamiento del ZX Spectrum, pareciera que Macronics hubiera perdido cuota de mercado y/o ventaja tecnológica con respecto a otros desarrolladores. La entrevista a Ken MacDonald en la revista Home Computing Weekly, en el numero del 6 de diciembre de 1983, es la última reseña que he encontrado. En el mismo artículo ya se hace eco de los juegos Alien Insects y Ant Attack para ZX Spectrum, y se anuncia el lanzamiento de Orb of Orion, juego del cual no se encuentran referencias en World of Spectrum.



Referencias
(1) Revista Your Computer (Junio 1982). Entrevista a Ron Bissell.
(2) Revista Home Computing Weekly nº 40 (6-12 Dic, 1983). Entrevista a Ken MacDonald.
(3) Revista Sinclair User nº 1 (Abril 1982). Software Overview (pag. 51)



martes, 17 de mayo de 2016

Modo Pseudo HI-RES en el ZX81

La pantalla estándar del ZX81 tiene 24 filas de 32 caracteres cada una. Cada caracter es una cuadrícula de 8 x 8 pixeles, y ocupa 1 byte. Sin embargo, el usuario no puede seleccionar estos pixeles de manera aislada, solamente los caracteres predefinidos.


El ZX81 está limitado por hardware y solo puede soportar 128 códigos de caracteres, frente a los 256 que presentaría un modo “True HIRES”, resultante de todas las combinaciones que darían 8 bits. Por contra, el ZX81 utiliza los bits 0 a 5 para formar los códigos de 64 caracteres (0 a 63), más el CHR$ 118. El bit 7 es utilizado para indicar los inversos de todos estos (128 a 191). El valor del bit 6 es utilizado por la ULA durante el volcado en pantalla del archivo de display, y por lo tanto no participa de la codificación del juego de caracteres.



El bloque de la memoria de vídeo almacena como máximo 32 x 24 bytes (768 bytes + 25 bytes en instrucciones HALT = 793 bytes). A partir de ahí, el modo en el que el ZX81 codifica la memoria de vídeo es ligeramente diferente si tenemos más de 3,25 kB o menos de RAM.

El modo Pseudo HI-RES trabaja como el modo texto, pero la altura del caracter está limitada a una sola línea por lo que se obtiene una resolución de 8 x 1 pixeles en vez de los 8 x 8 pixeles. La resolución de la pantalla pasa de 256 x 192 puntos a 32 x 192 caracteres “planos”. Cada línea termina mediante un opcode RET (C9h), por lo que esta resolución ocupa un espacio en memoria de 6336 bytes (6,2 kB), obtenidos de la multiplicación de 33 (32 columnas + HALT) por 192 líneas. Por este motivo, es necesario disponer de una ampliación de 16 kB para poder disfrutar de este modo.







Este modo obtiene una resolución en base a redefinir los caracteres cambiando la tabla de caracteres a algún lugar de la ROM, por lo que no posee todas las 256 posibles combinaciones que componen un byte. En su lugar, busca en la ROM una zona con el contenido lo más aleatorio posible que le permita la mayor cantidad de combinaciones posibles. El valor del registro I dictamina en qué lugar de la ROM está la combinación que se va usar. El resultado es similar al “True” HIRES, excepto en algunas combinaciones que no puede dibujar. La denominación de “pseudo” es debido a que menos del 50% de las 256 combinaciones requeridas para el True HI-RES están disponibles en este modo, como apunta Wild Rigter en su artículo “The ZX81 Video Display System”. Esta limitación puede provocar que en algún caso pudiera haber algún pixel en una ubicación no deseada, al tener que utilizar un byte con una combinación de bits lo más cercana a la requerida por el software.

En el artículo de Paul Farrow “Flicker-Free Display Mechanism”, se sugiere que el origen de este modo fue en el código Amazing Active Display desarrollado por Ron Bissell en 1981 (Macronics) para el Sinclair ZX80. Este código podía adquirirse para poder ser usado por otros programadores. Una variante de este código fue sugerida por el Dr. Ian Logan en el artículo Auto-Display-Changing (Sync magazine, Volume 1, Number 3, May/Jun 1981), y también incluido en el libro The ZX80 Companion (Linsac).




Programa HI-RES de Macronics


Antes de su cierre en 1985, Software Farm (Julian Chappell) produjo varios juegos que usaban esta técnica: Forty Niner (1982), Rocket-Man (1984) y Z-Xtricator (1984). Si bien la técnica estaba más depurada y permitía un modo de pantalla más grande. Un algoritmo muy parecido al de Software Farm lo usó la compañía Lothlorien en 1983 en su juego Micro Mouse goes de-bugging.




Micro Mouse goes de-bugging (Lothlorien)



Z-Xtricator (Software Farm)




Rocket-Man (Software Farm)



En 1985, Steven McDonald programó Rock Crush, un referente de esta técnica basado en el juego Boulder Dash. De este juego hay versiones posteriores, incluso disponible para iPad (2011). Más información en este artículo. La rutina de este programa intercepta la presentación del video mediante una interrupción modo 2. Es el único programa identificado que realiza esta operación.

En 2003, Ales Martinik portó una versión del popular Manic Miner del ZX Spectrum al ZX81 usando una técnica de pseudo HI-RES. Para más detalles sobre esta adaptación consultar este artículo.
Programa Manic Miner (Ales Martinik)


En la web de Andreas Gustafsson se puede descargar una excelente demo que muestra las capacidades del ZX81 en este modo de video. El software There Are No Limits, publicado en 2009 está disponible en diversos formatos.



Software There Are No Limits (Andres Gustafson)


Brian Lewis publicó las versiones para ZX81 en modo Pseudo HI-RES de Invaders (2013) y Pac-Man (2014). Si bien en su web apunta a que los juegos son HI-RES, lo cierto es que los requerimientos que necesitan es solo una ampliación de 16 kB, sin necesidad de ninguna modificación. Esta modificación es necesaria para los “True” HI-RES.




Programa Pac-Man (Brian Lewis)



Programa Invaders (Brian Lewis)


En este año 2016, se cumplen 35 años del lanzamiento del ZX81. Paul Farrow ha publicado un programa de demostración (Celebration) y un juego (Against The Elements) –en perspectiva isométrica- basados en una variante del algoritmo que permite en el mismo programa usar minúsculas y mayúscula, el uso de pixeles y scroll horizontal. Todo ello en un formato ancho de pantalla.




Celebration (Paul Farrow)



Against The Elements (Paul Farrow)