jueves, 28 de junio de 2018

Gráficos HIRES en el Sinclair ZX81 - Parte 3

Última entrega de esta serie de videos en los que repaso los diferentes sistemas de "alta resolución" del Sinclair ZX81. En esta tercera parte se revisan los diferentes sistemas de UDG.



domingo, 17 de junio de 2018

Gráficos HIRES en el Sinclair ZX81 - Parte 2

Se publica la Parte 2 en la que se hablan de los gráficos HI-RES propiamente dichos, incluyendo aquellas tarjetas de expansión que permitían tener esto gráficos.


domingo, 3 de junio de 2018

Gráficos HIRES en el Sinclair ZX81 - Parte 1

Comienzo una serie de videos en mi canal de YouTube referentes a los gráficos de "Alta Resolución" o HIRES en el Sinclair ZX81. En la serie, trato de explicar qué son y cuántos tipos hay de algoritmos para generar estos gráficos y caracteres. 

Muestro fotos y ejemplos de los diferentes juegos y demos. Y siempre que sea posible, corriendo en un ZX81 real, es decir, no es emulador. Cuando me vea obligado a ejecutar algún programa en emulador, se informará en el video.

La Parte 1 cubre los "Pseudo HIRES", en donde hay variedad de juegos y demos.



martes, 15 de mayo de 2018

Análisis de la ROM del ZX81

Hacía tiempo que quería dedicar algo de tiempo a analizar el firmware de la ROM del Sinclair ZX81 para ver si podía hacer alguna modificación, por supuesto, siendo consciente de mis limitaciones con el código máquina. ¿Por qué no introducir un mensaje como el copyright del ZX Spectrum?

Existen 3 versiones de la ROM del ZX81:
  • ROM original de Sinclair.
  • "Improved" ROM de Sinclair. Corrige errores de la ROM original.
  • ROM "Shoulders of Giant".
Las diferencias en el firmware entre la ROM original y la "improved" pueden consultarse en esta web.

Un repositorio con todas la ROM del ZX81 y sus clones se puede encontrar en este proyecto de github.

El CHECKSUM del firmware "Improved" es 855106, y presenta varias localizaciones no utilizadas (DEFB $FF). Y además tiene 1 byte de "spare" en la dirección 1DFFh (7679d).

En la rutina "The PRINT A Character Restart" (0010h) hay 1 byte con valor DEFB $FF.

En la rutina "The Collect Next Character Restart" (0020h) hay 3 bytes con el mismo valor $FF.

Y en la rutina "The Error-2 Routine" (0058h), hay 1 byte más con valor $FF.

Esto hace que se disponga de un total de 6 bytes disponibles, aunque en ubicaciones diferentes. Es el máximo disponible, si fuéramos capaces de reordenar todas las rutinas para no tener esos espacios sin usar.

La presentación del cursor en la parte baja de la pantalla es un poco rebuscada en la ROM de Sinclair. Se encuentra en la rutina "Cursor-in", a donde se llega desde la rutina "Initial"

0000   START
                I
                I
03CB   RAM-CHECK
971d        I
                I
03E5   INITIAL
997d        I
                I
14AD   CURSOR-IN
5293d      I
                I
14A6    SET-STK-B
5286d

En esta rutina CURSOR-IN se define el espacio disponible para las entradas de usuario, mediante la instrucción: LD (DF-SZ), +02

Esta instrucción carga el valor +02 en la variable del sistema DF-SZ que establece el número de líneas en la parte baja de la pantalla.

En esa misma rutina se establece el cursor (código 7Fh), seguido de un salto de línea (código 76h):

LD HL,(E-LINE)
LD (HL),+7F
INC HL
LD (HL),+76
....

La variable del sistema E-LINE apunta al espacio de trabajo.

Una vez terminada esta rutina, tiene una rocambolesca manera de regresar a la rutina INITIAL (LOWER), con saltos hacia otras rutinas, sin realizar ninguna operación más. Los valores entre paréntesis son las direcciones donde está la rutina de salto (JP/JR).

CURSOR-IN (L14AD)
|_SET-STB-B (L14A6). Salida mediante RET al CALL 14A6 en la EDIT KEY RUTINE
      |_EDIT KEY RUTINE (L05C4). Tras el CALL, salto JR L059D
            |_ED-EDGE (L059D)
                  |_CURSOR RIGHT (L0589)
                        |_KEYBOARD DECODING (L0523)
                              |_LOWER (L0472)

Esto da una idea de lo poco optimizado que está el firmware de esta ROM.

El firmware "Shoulders of Giant" es una variante de Geoff Wearmouth que mejora algunas rutinas de cálculo mediante el uso de algoritmos diferentes a los utilizados por Sinclair. Tiene un CHECKSUM de 853413 y difiere bastante con respecto a la original de Sinclair en cuanto a la disposición de las diferentes rutinas. 

El objeto de la optimización es generar el espacio necesario para el cambio principal que es el uso del método Newton-Raphson para el cálculo de la raíz cuadrada. Este método se ejecuta hasta 3 veces más rápido que el algoritmo de Sinclair. El nombre de "Shoulders of Giant" proviene de una cita de Sir Isaac Newton, que junto a su alumno Joseph Raphson publicó el artículo con el método. La cita es del año 1675:


"If I have seen further it is by standing on the shoulders of Giants."


Este método fue el seleccionado por Steve Vickers para el firmware de la ROM del Jupiter Ace. Ver página 92 del manual "Forth Programming". Hay que recordar que Steve Vickers escribió el firmware de la ROM del ZX81, además del manual de este ordenador, y posteriormente fundó Jupiter Cantab junto a Richard Altawasser.

Tiene 2 bytes de "spare" ubicados en la dirección L1DFE. Menos que la ROM "Improved". 


En el firmware "Shoulders of Giant" parece imposible poder generar más espacio para tener un mensaje de entrada como el del ZX Spectrum, dado el esfuerzo ya ejecutado para optimizar algunos de sus algoritmos. 

E igualmente, en el firmware "Improved" se requeriría un esfuerzo similar para, manteniendo las rutinas actuales, poder generar los bytes necesarios para ubicar un mensaje de entrada como el del ZX Spectrum, sabiendo que este mensaje ocupa 28 bytes -solo el mensaje-.


Referencias

"The Complete Timex TS1000/Sinclair ZX81 ROM Disassembly" by Dr. Ian Logan & Dr. Frank O´Hara

"Understanding Your ZX81 ROM" by Dr. Ian Logan

domingo, 29 de abril de 2018

La Portada de "The Artist II" para ZX Spectrum

Una de las portadas que más me cautivaron en su momento fue la de "The Artist II" (1986), el programa de diseño gráfico de Softechnics. Si bien es prácticamente la misma portada que el de la versión anterior "The Artist", su secuela fue la que tuve en su momento.

Lo que me gustaba no era su calidad gráfica, las hay mucho mejores, pero el diseño de unas manos pintándose a si mismas era lo que me provocaba estar continuamente mirando en un ciclo sin fin.



Recientemente he podido deducir cuál fue el modelo del diseñador de esta pantalla. No es más que la litografía "Drawing Hands" del artista holandés M.C. Escher.



Este artista de figuras imposibles, creó esta obra en 1948. Toda una maravilla para disfrutar, incluyendo esa versión para Spectrum.

viernes, 16 de marzo de 2018

Puesta a punto de un Jupiter Ace (V)

Pues seguimos con la modificación para tener video compuesto. 

El Ace tiene en uno de los conectores externos la señal de video, tal cual sale del modulador. Por lo que se puede hacer una interface externa.


La modificación que uso para el ZX81 es la siguiente. Vamos a usarla para el Ace.



Esto es lo que necesitamos. Un transistor BC547/548 y dos resistencias. En algún otro foro se ha discutido si el condensador era necesario o no. Así que vamos a probarlo. No lo ponemos. La conexión que figura en el esquema como "ULApin16" se conecta al pin "Video" en el bus de expansión.



Vamos conformando la modificación. Mi intención es hacer una modificación sin placa que quede bien en un conector que tengo para esta toma.



Empezamos a soldar cables.



Soldamos la toma de video compuesto y al conector que irá a la expansión. Pues aquí ya se ve el condensador. En las pruebas sin condensador, la señal no estaba fija, empezaba a parpadear. Con el condensador, la imagen se queda fija y funciona correctamente.



Y aqui la interface ya terminada, con los manguitos termoplásticos como protección en los componentes.



Y funcionando.



La verdad es que no me ha quedado muy bien estéticamente, pero creo que todavía lo puedo mejorar un poco.

viernes, 9 de marzo de 2018

Puesta a punto de un Jupiter Ace (IV)

Como alternativa al teclado he probado una pasta conductora como la de la foto.


Apliqué sobre 5 teclas de la primera fila diferentes cantidades, de izquierda a derecha, y aplicando cada vez menos cantidad. Y la quinta tecla, la que está ubicado más al centro de la fila, no añadí cantidad y solo di aporte con un bastoncillo de lo que había sobrado de las dos primeras teclas.



Tras 90 minutos secándose, se probó el teclado funcionando perfectamente las 5 teclas, sin diferencia en la pulsación, entre ellas.



Una buena aplicación de la pasta conductora.

sábado, 3 de marzo de 2018

Libro "ZX81 User´s Handbook"

Recientemente he descubierto un libro magnífico sobre el ZX81, que cubre desde conceptos básicos, programación, hardware e incluso una introducción al código máquina.

El libro fue publicado por Newnes Microcomputer Books, y los autores, Trevor J. Terrell y Robert J. Simpson, volvieron a colaborar en un libro con el mismo título pero dedicado al ZX Spectrum.

La primera edición del libro es de 1982. Se desconoce si hubo más ediciones.




No abusa de las típicas secciones para teclear programas, y contiene mucha información del ordenador. Tiene dos capítulos dedicados al hardware, y uno enseñando lo básico sobre el código máquina. Dispone de una trabajado glosario de términos.

La encuadernación también sorprende porque la páginas están cosidas además de pegadas. En casi todos los libros sobre el ZX81 que tengo, siempre hay páginas sueltas. No es el caso de este libro.

Un libro estupendo, sin duda alguna.


viernes, 23 de febrero de 2018

Sustitución Correa de Sinclair ZX Printer (diseño 2018)

En este video se muestra el cambio y las pruebas realizadas con una correa de sustitución para la Sinclair ZX Printer, fabricada con una impresora 3D.

Esta correa de sustitución 2018, se compara con otra correa no original diseñada y fabricada en 2014. La salida del nuevo diseño produce una impresión más rápida, menos ruidosa y un poco más nítida. Bien es cierto que se aprovechó el cambio para realizar labores de limpieza.



viernes, 16 de febrero de 2018

El Jupiter Ace en España

El número de unidades vendidas del Jupiter Ace en los 14 meses de vida Jupiter Cantab, oscila entre las 5000 y las 8000, según la fuente que se consulte. El número de 5000 unidades vendidas aparece referenciado en un anunció de la revista Home Computing Weekly, del 8 de Noviembre de 1983 (pag. 31). Y vuelve a repetirse en el número del 6 de Diciembre del mismo año.

Sin embargo, no hay referencias de ventas en España; en cualquier caso tuvo que ser en número muy reducido.




El representante en España de Jupiter Cantab era Sushiro Data, ubicada en el número 184 de la calle Escorial, en Barcelona.



La imagen anterior está extraída del número 8 de la revista Ordenador Popular (Noviembre 1983), en la que el precio se fija en 28.900 ptas.



En el mismo número de la revista Ordenador Popular, se puede observar otro anuncio de la empresa Ventamatic, ubicado en la población de Roses (Girona). Ventamatic también vendía el JA, incluso con ampliaciones de memoria. Los precios de venta eran:

Ordenador: 32.100 ptas
Ampliación 16 kB: 10.700 ptas
Ampliación 48 kB: 19.500 ptas
Manual JA traducido: 900 ptas

Por comparación de precios en el mismo anuncio, el Ace era bastante más caro que el ZX81 ampliado, e incluso más caro que los modelos equivalentes del ZX Spectrum. El JA + ampliación de 16 kB tenía un precio similar al Zx Spectrum de 48 kB.



Ventamatic distribuía el manual traducido del Ace. En el manual aparecen los dos sellos, el de la compañía representante en España del Ace, y en algunas partes del manual el sello de Ventamatic. Fotos de la portada del manual traducido y de la última hoja con la contraportada interior.







domingo, 11 de febrero de 2018

Puesta a punto de un Jupiter Ace (III)

En el siguiente video se presenta la carga de un programa a través de la conexión EAR y usando el teclado "profesional". Se pueden observar las diferencias con el ZX81, si bien es monocromo como el ordenador de Sinclair, el Ace tiene sonido y se notan los 2 kB de memoria de video, precisamente en el movimiento de la pantalla.




viernes, 9 de febrero de 2018

Puesta a punto de un Jupiter Ace (II)

Un teclado "Profesional"

El teclado está formado por 40 huellas, como las del ZX80, y un teclado de goma, como el del ZX Spectrum. Sin embargo, no dispone de membrana, ya que como mucho dispone de 2 tokens por tecla, y solo en alguna de ellas.




Las filas del teclado van conectadas a las líneas del bus de direcciones A8-A15, a través de los diodos D3-D10. En la placa no están serigrafiadas la denominación de los componentes, por lo que se muestran en el esquema de abajo cuál es la posición de los diodos en la matriz 1N4148 x 8. Las columnas se conectan a través de unos de los 74LS367 a las líneas del bus de datos D0-D4. Hay varios LS367 en la placa, y resulta difícil identificar cuál de ellos es por el motivo comentado anteriormente en cuanto a la falta de denominación de los componentes en la placa.


Comenzamos el cableado.







Conectamos al Ace.


El acceso a los diferentes componentes del Ace es complicado, de ahí que fuera necesario primero hacer una modificación para eliminar el regulador 7805, ya que el disipador ocultaba la mayoría de los componentes. SE puede observar que es necesario girar el disipador para poder conectar el teclado.

Y probando.



miércoles, 7 de febrero de 2018

Puesta a punto de un Jupiter Ace (I)

Jupiter Cantab fue empresa británica fundada por Richard Altwasser y Steven Vickers en 1982. Ambos habían trabajado en Sinclair en el diseño del ZX81 y ZX Spectrum. La empresa tuvo una corta vida ya que quebró en 1984. 

Durante ese período de tiempo produjo el Jupiter Ace. En el Ace se nota mucho la influencia de los ordenadores de Sinclair lo cual no es de extrañar habida cuenta del origen de sus fundadores. Una estética muy parecida al ZX81, pero en color blanco, y un teclado similar al del ZX Spectrum, aunque no lleva membrana, como el ZX80. Está basado en el procesador Z80 de Zilog como los ordenadores Sinclair, y tiene 3 kB (1kB de memoria RAM + 2 kB para la memoria de video.). Es ampliable externamente y monocromo, como el ZX81. Pero a diferencia con este ordenador, sí dispone de sonido. Una ventaja sobre los ordenadores de Sinclair, es que no dispone de chips propietarios como la ULA.

Otra diferencia fundamental, es que usa el lenguaje Forth, en vez del Basic. Como dijo Richard Altwasser "es diez veces más rápido que el Basic".

Con el ordenador se entregaba un esquemático bastante rudimentario, pero existe información suficiente en la web sobre este ordenador.  Estas dos páginas serán probablemente las mejores y más completas:

https://www.jupiter-ace.co.uk

https://jupiter-ace.com/





Cambio Regulador y Condensadores Electrolíticos

En primer lugar, hay que decir que la placa, en mi opinión, es de peor calidad que las de sus primos ZX81 y ZX Spectrum. Es más difícil realizar soldaduras y el riesgo de dañar los agujeros y las pistas es incluso mayor en este modelo. Tiene muchas pistas curvas al igual que el ZX80 y la placa issue 1 del ZX81.


El ACE tiene un regulador de tensión 7805 al igual que los ordenadores Sinclair. El disipador de tensión ocupa toda la parte central de la placa, dejando sin acceso a varios componentes. Normalmente monta en zócalo la CPU y los dos chips de EPROM. Precisamente bajo el disipador se encuentran los componentes que controlan el teclado, uno de los componentes de peor calidad de este ordenador y al que dedicaré una sección. 



La primera modificación es eliminar ese disipador, que además concentra calor en la zona central de la placa, si bien apunta hacia las dos ranuras de expansión. Lo ideal es sustituir el 7805 por un tracopower TRS 1-2450 que cumple perfectamente con los requerimientos de tensión e intensidad de este ordenador. Y además no disipa calor. El tracopower también se utiliza en los modelos ZX80, ZX81 y ZX Spectrum como sustituto del 7805. Es un componente caro, pero muy fiable y compacto.

Otro elemento que sugiero cambiar, como en todos los ordenadores retro, son los condensadores electrolíticos. El Ace dispone de 3 unidades:

Condensador 1uF - 63V: conectado a la línea de RESET de la CPU. Este circuito es exactamente igual al del ZX81 y ZX80.

Condensador 100uF - 16V: conectado a la línea de 9V (tensión de alimentación) del regulador. En el ZX80, ZX81 y ZX Spectrum este condensador es de 22uF.

Condensador de 100uF - 16V: conectado a la línea de 5V que suministra tensión al modulador de TV. Este condensador no existe en el ZX80, ZX81, ni en el ZX Spectrum.




domingo, 7 de enero de 2018

Probando el ZX-UNO

Hace meses adquirí un ZX-Uno a través del crowdfunding, y poco después la ZX-Box que es la carcasa para el ZX-Uno en diseño 3D. Hasta ahora no había podido dedicar mucho tiempo a esta implementación en FPGA del ZX Spectrum. Sí había probado las diferentes ROMs del core del ZX Spectrum y la implementación del interface DivMMC para cargar software a través de la tarjeta SD.




Hace tiempo que quería dedicar algo de tiempo para descubrir implementaciones de otros sistemas que se han ido preparando en el foro del ZX-Uno. Particularmente estaba interesado en algún sistema de los que quise tener cuando era joven y por razones económicas no pude tener. Si bien existen emuladores a nivel de software de la mayoría de ellos, quería probar como era una implementación a nivel de hardware, y si encima se podía cargar software, mejor aún.

Además del ZX Spectrum, he probado los cores de:

SAM Coupé. Quizás el que más me gusta, y además permite la carga de programas a través de la conexión EAR. En las fotos a continuación, la pantalla inicial de arranque, varias demos y la pantalla de carga del juego F-16.










BBC Micro. Por el momento no permite la carga de programas.

Commodore Vic-20. Permite la carga pero como tengo el emulador VICE para Commodore, no he investigado mucho más sobre el tema.




Oric Atmos. No permite la carga de software por el momento. Y no pareciera que en el corto plazo pudiera estar disponible esta posibilidad.




Jupiter Ace. Este ordenador se puede emular mediante la ROM de Paul Farrow en un ZX Spectrum. Algo que probé en su momento utilizando el clon Harlequin. En las fotos a continuación, las versiones de los juegos Racer y Centipede para el Ace, cargadas a través de la toma EAR del ZX-Uno.





Atari 800XL. Otro descubrimiento como el del Sam Coupé. Se puede incluso cargar software a través de la tarjeta SD. En las fotos a continuación, las versiones de los juegos Manic Miner y Mario Bros para el 800XL.





Sin duda, el ZX-Uno te garantiza horas y horas de diversión.