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.

miércoles, 1 de marzo de 2017

Modificando la Dreamcast (I): Introducción

Las últimas consolas de Sega no le fueron muy bien, la Saturn era muy buena, con el doble sistema de CD y Cartucho, pero no gustó. La Dreamcast fue su intento de competir con la Playstation, pero llegó tarde, poco después salió la PS2, la Dreamcast fracasó en ventas e hizo que Sega se retirara del mercado de las consolas. Es una consola de sexta generación que se produjo entre 1998 y 2001, compitiendo con PS2, GameCube y XBox, todas usando ya un DVD, mientras que Sega apostó por el GD-ROM, con capacidad de 1'2 Gb y mejor velocidad. El procesador principal era el Super H-4 de Hitachi, un procesador RISC de 32 bits, una FPU vectorial de 128 bits de Hitachi, y un chip gráfico de NEC potente y con gran capacidad de cálculo de polígonos, luces y sombreados. El sonido disponía de dos procesadores en un chip de Yamaha con 4 canales, la memoria principal era de 16Mb, la memoria gráfica de 8Mb, y la de sonido era de 2 Mb, todas pudiendo trabajar de forma independiente conectadas a cada procesador, lo que permitía mejorar la velocidad interna del aparato.

Como particularidades incluía un módem para conectar con los servidores de Sega y poder jugar on-line (no se incluyó en algunos países asiáticos), y el mando incluía la posibilidad de añadir una unidad de memoria con un display, lo que permitía en los juegos un comportamiento personalizado de los caracteres, o disponer de información adicional. Esto que hoy día es lo habitual entonces no lo era.

También disponía en la ROM de unas rutinas desarrolladas por Microsoft compatibles con las que se usaban en los móviles del momento, el Windows CE, en un intento de hacer que el desarrollo de programas para la máquina fuera mas compatible con esos sistemas, pero aunque Sega amplio y mejoró muchas rutinas, no llegó a ser lo que prometían.

Unidad japonesa/asiática (logotipo naranja) y mando USA/Europa (logo azul), la unidad no dispone del modem en el lateral, por lo que se sabe fue vendida en Asia. (Fuente Wikipedia)

Esta consola tiene la ventaja de que es muy cómoda y  agradecida para desarrollar juegos para ella (al contrario que la PS2 con sus múltiples procesadores que requiere programación muy especial para optimizarla), por lo que hay una gran comunidad de programadores que la mantienen activa.

En esta serie de entradas voy a modificar una máquina, ya que también es de las mejores consolas para modear, permite muchas modificaciones que se han ido actualizando, algunas se han simplificado al incluirse en otras, no son excesivamente complicadas y el resultado es muy bueno. Podemos agruparlas en tres grandes grupos:

Salidas de vídeo

La consola dispone de un conector trasero, usando el cable apropiado se puede conectar por AV, S-Video, Euroconector o VGA (ver esta entrada). Hoy día es difícil encontrar los cables hechos, o localizar el conector para hacerse el cable, por lo que se recurre a poner las salidas en la carcasa directamente. En esta máquina es muy sencillo añadir una salida VGA mas sonido. Se puede hacer con un interruptor que fuerce la salida, aunque realmente no es necesario pues se puede hacer que el propio conector VGA lo haga de forma automática. Disponiendo de VGA no tiene sentido hacer una salida Scart, que abulta mas y no aporta mejor calidad.

BIOS Multi-Región

Esta modificación realmente no es necesaria, cargando un programa desde un CD se puede hacer lo mismo, pero no cabe duda de que disponer de un BIOS con soporte ampliado desde el arranque es mucho mas cómodo. Esta modificación originalmente se hacía para el cambio de región, había que realizar un cableado en la placa que dejaba la Flash BIOS en modo que era grabable, pero si no te acordabas de protegerla al terminal acababas con la BIOS corrupta. Luego se ha desarrollado la doble BIOS, de forma que se puede disponer de la original o la ampliada solo cambiando un interruptor y reiniciando la máquina. La BIOS ampliada mediante DreamShell incluye no solo region-free, sino soporte para unidades de datos mejoradas.

Almacenamiento


La consola incluye solo el lector de GC-ROM, pero usando DreamShell se pueden manejar unidades SD a través del puerto serie que incluye la máquina,  pero esto ha quedado superado hoy día, se puede conectar un disco duro directamente lo que la hace mucho mas cómodo y rápido.

En las próximas entradas iré desarrollando estas modificaciones en las Dreamcast, vereis que no es complicado hacerlas, aunque los puntos de soldadura de la máquina no son muy grandes, por lo que hay que tener un poco de mano soldando, y en la de doble BIOS hay que tener un poco de cuidado al manipularla.

jueves, 23 de febrero de 2017

Programación del Sinclair QL (XXI): Estructura de datos. Arbol binario de Búsqueda balanceado



Como dije en la entrada anterior, el problema de los árboles binarios de búsqueda (ABB) es que si no están bien balanceados pierden mucha efectividad, el caso extremo es introducir los datos en orden, ya que estamos generando una lista pero con la ocupación y la mayor complejidad de un árbol.

Balancear el árbol significa que en cada nodo los elementos que cuelguen por su izquierda sean los mismos que los que cuelgan por su derecha, esta circunstancia ideal es compleja, por lo que se mira que la profundidad de las dos ramas sea la misma, un sistema un poco mas sencillo de conseguir y que sigue manteniendo el balanceo. Si una rama tiene elementos de mas profundidad que la otra, el árbol se balancea para compensarlo mediante lo que se denomina una rotación.

Aunque existen varias formas de montar los ABB balanceados, las formas mas utilizadas en general son los siguientes (aunque en general se usan solo los tres primeros):

  • Los árboles AVL son los ABB auto-balanceados mas antiguos y los que consiguen mantener el mejor balanceo.
  • Los montículos son ABB balanceados almacenados en forma de arreglo, mas adelante los usaremos en el conocido algoritmo de ordenación Heapsort.
  • Los árboles rojo-negro son menos estrictos en el balanceo, permitiendo ligeras descompensaciones, por lo que son un poco mas ágiles en inserciones.
  • Los árboles AA son una variación de los rojo-negro que simplifica mas las inserciones.
  • Los árboles biselados son ABB balanceados cuyos nodos recientemente visitados se rotan para que aparezcan lo antes posible en las búsquedas.
  • Los árboles de Fibonacci son una variante de los AVL.
Voy a modificar el árbol para que se comporte como un árbol AVL, llamado así por el nombre de sus creadores, los matemáticos rusos Gueorgui Adelsón-Velski y Yevgueni Landis, que lo definieron en un artículos publicado en 1962.

En una árbol AVL hay que conocer la profuncidad de cada rama del árbol, para poder mantenerlo siempre balanceado. Si la profundidad de la rama izquierda difiere en más de una unidad de la profundidad de la rama derecha, el árbol está desbalanceado y se procede a efectuar una rotación para equilibrarlo, se retrocede al padre de ese nodo y se repite la operación, subiendo hacia la raíz hasta que no se requieran mas balanceos. Para poder ir subiendo por las ramas del árbol debemos guardar el camino recorrido, lo que se consigue de forma sencilla usando recursividad en lugar de iteración, por eso cambiaremos el algoritmo de inserción para convertirlo en recursivo.

Para equilibrar un árbol hay que mover nodos, en lo que se denominan rotaciones, se basan en ver la diferencia de profundidad de un nodo entre sus ramas izquierda y derecha, y si la diferencia es mayor de 1 realizar una rotación en el nodo, intercambiándolo con su hijo. Depende del hijo que usemos para rotar se denominará rotación a la izquierda o rotación a la derecha, pero ambas son equivalentes. También dependiendo del nodo ocupado del elemento hijo se usará una rotación simple o una doble. Pongo un ejemplo sencillo de rotación simple a la derecha y otro de rotación doble izquierda-derecha:


Vemos que en primer caso el nodo 1 es el que usamos para rotar, ya que tiene cero hijos por su izquierda y dos por su derecha necesita una rotación derecha. Colgamos el nodo (1) a la izquierda de su nodo hijo (2), y luego colgamos el nodo hijo (2) en lugar del nodo seleccionado. Podemos imaginar que estiramos hacia arriba del nodo (2).

Si el nodo izquierdo está ocupado, no es posible poner allí el nodo seleccionado, por lo que necesitamos dos pasos, primero colgamos el nodo hijo (3) a la derecha de su sub-nodo izquierdo (2), y luego colgamos el sub-nodo izquierdo del nodo seleccionado (1). Ahora tenemos ya el caso anterior y usando el mismo sistema equilibramos el árbol.

Entendiendo bien esto es muy sencillo equilibrar los árboles en las altas y bajas, solo hay que ir subiendo por el árbol a partir del nodo seleccionado, ver las profundidades de ambos nodos, y actuar en consecuencia. Hay varios sistemas para mantener las alturas en el árbol, lo mas sencillo es guardar la altura de las sub-ramas izquierda y derecha pero necesitamos dos valores en cada nodo, la otra forma es mantener solo la diferencia de alturas y así usamos un solo valor en cada nodo.

lunes, 19 de diciembre de 2016

Traducciones en la Wikipedia

Estas son mis últimas traducciones:

  • La gama de computadores UNIVAC, separado del UNIVAC I a donde redirigía
  • Códigos de caracteres de 6 bits, que fueron muy usados en los UNIVAC y en los DEC por ejemplo, igual que en muchos de los primeros ordenadores.
  • Entrada sobre ordenadores decimales, en general los primeros ordenadores fueron casi todos decimales (con la excepción de los Zuse, el sistema mecánico que empleó en la Z1 para almacenar datos binarios fue una gran idea, y la fuente de sus principales problemas, luego pasó a los relés y se solucionaron) hasta que se impuso el binario.
  • Entrada sobre la empresa Remington Rand
  • Entrada sobre Herman Lukoff y entrada sobre John Grist Brainerd, pioneros poco conocidos de la informática.

viernes, 16 de diciembre de 2016

Programación del Sinclair QL (XX): Estructuras de datos. Presentar el árbol



La presentación de los datos que hacía del árbol no eran muy adecuadas, en las listas se ve mejor pero el árbol cuesta mas de ver presentando en forma lineal los valores de datos y enlaces, por lo que he desarrollado un proceso para ver de manera mas gráfica los árboles, en modo texto, pero queda bastante visible. Hay dos procesos, uno que presenta el árbol que es nuevo, y el que retorna la lista de elementos del árbol en una cadena que he simplificado la visualización.

4890 REMark --------------------------------------------------------------
4900 REMark -- ARBOL_VER_GR -- Presenta en pantalla un arbol            --
4910 REMark --------------------------------------------------------------
4920 DEFine PROCedure ARBOL_VER_GR
4930   LOCal lin,col,a$
4940   :
4950   lin = ARBOL_NIVELES - 1
4960   col = 1 : FOR i=2 TO lin+2 : col = (2 * col)
4970   OPEN#5,con : WINDOW#5, 448,200,32,16
4980   CLS#5 : BORDER#5, 2,2
4990   PRINT#5, "N:";!ARBOL_NIVELES;!"L:";lin;!"C:";col-2,
5000   PRINT #5,ARBOL_ELEMENTOS$
5010   montar 0,col/2-1,col/4,A_RAIZ
5020   INPUT a$
5030   CLOSE#5
5040 END DEFine 
5050 :
5060 DEFine PROCedure montar(l,c,s,nodo)
5070   LOCal i,t
5080   :
5090   IF nodo <> P_NULO THEN 
5100     imprime l+1,c+1, ArrArbol(nodo)
5110     IF ArrDer(nodo) <> P_NULO THEN 
5120       t = c+s+1
5130       FOR i=c+2 TO t-1 : imprime l+1,i,"-"
5140       imprime l+1, t, "\"
5150       imprime l+2, t, "|"
5160     END IF 
5170     IF ArrIzq(nodo) <> P_NULO THEN 
5180       t = c-s+1
5190       FOR i=c TO t+1 STEP -1 : imprime l+1,i,"-"
5200       imprime l+1, t, "/"
5210       imprime l+2, t, "|"
5220     END IF 
5230     montar l+2,c-s,s/2,ArrIzq(nodo)
5240     montar l+2,c+s,s/2,ArrDer(nodo)
5250   END IF 
5260 END DEFine 
5270 :
5280 DEFine PROCedure imprime(l,c,dato$)
5290   IF (l > 0) AND (l < 19) AND (c > 0) AND (c < 73) THEN 
5300     AT#5,l,c : PRINT#5, dato$
5310   END IF 
5320 END DEFine 
5330 :
5340 REMark --------------------------------------------------------------
5350 REMark -- v$ = ARBOL_ELEMENTOS$ -- Muestra la lista de elementos   --
5360 REMark -- RETORNA: Lista ordenada de elementos del arbol           --
5370 REMark --------------------------------------------------------------
5380 DEFine FuNction ARBOL_ELEMENTOS$
5390   LOCal lista$
5400   :
5410   lista$=""
5420   inorden lista$,A_RAIZ
5430   RETurn lista$
5440 END DEFine 
5450 :
5460 DEFine PROCedure inorden(cadena$,nodo)
5470   IF nodo <> P_NULO THEN 
5480     inorden cadena$, ArrIzq(nodo)
5490     IF LEN(cadena$) <> 0 THEN cadena$ = cadena$ & ","
5500     cadena$ = cadena$ & ArrArbol(nodo)
5510     inorden cadena$, ArrDer(nodo)
5520   END IF 
5530 END DEFine<0 hay="" libres="" no="">
 
El resultado es el siguiente, no es espectacular pero creo que se ve bien la estructura del árbol, y cuando entremos en los árboles AVL y las rotaciones se verá de forma mas clara como se van moviendo los datos.


Aquí los fuentes de todo lo desarrollado sobre estructuras de datos hasta el momento, la parte de ordenación no ha variado.