¡Hola a todos!, hay problemas con la web que espero poder arreglar lo antes posible, ¡mil perdones!

old8bits

old8bits
Visitar página web/blogCastellanoEspaña439 entradas

old8bits es una página web/blog de España en castellano que ha publicado 439 entradas, siendo la última del día 02/06/2023.

Retroinformática, consolas, MODs,electrónica y programación. Un blog de javu61

› Enlaces/descargas/información:

Ver índice de webs/blogs

Los que definieron la ciencia de la Informática (IV) Unix y C [old8bits] [Leer]


 
Actualizado el 13/04/23, cambios en azul 
Añadidas nuevas versiones del Unix el 02/06/23, cambios en verde 

En esta estrada trato sobre el desarrollo del Unix y la creación de mi muy querido lenguaje C (yo amo el BASIC por que empecé con el, pero no hay mejor lenguaje que el C), que van muy de la mano.

Laboratorios Bell

Laboratorios Bell era una subsidiaria dedicada a la investigación de la principal compañía de telefonía americana, la AT&T. Esta había crecido mucho a principios del XX, sobre todo tras la compra de la Bell Company (empresa creada por el que patentó el teléfono Alexander Graham Bell) para dar servicio de telefonía en todo Estados Unidos. En 1881 se crea American Bell para desarrollar el equipamiento para las empresas de telefonía Bell, en 1907 AT&T crea su propio laboratorio, y en 1925 se fusionan ambos para crearse la Bell Telephone Laboratories.

Como muestra de lo avanzado de sus investigaciones en sus instalaciones a principios de la década de 1950 se creó el transistor y también Claude Shannon crea la Teoría de la Información.

El origen del C

En los años 60 se definen dos lenguajes teóricos importantes, por un lado ALGOL (ALGOritmic Language, Lenguaje Algorítmico) que tuvo pocas implementaciones pero influyó mucho en los posteriores, y que derivó directamente en el PASCAL, y usando ideas del ALGOL se deriva el lenguaje CPL (Cambridge Programming Language, aunque posteriormente se le llamó Combined Programming Language, Lenguaje de Programación Combinado), que no llegó nunca a desarrollarse debido a ser demasiado grande, ambicioso y complejo. Ante esto en 1967 Martin Richards de la Universidad de Cambridge, mientras estaba en el MIT, desarrolla el BCPL (Basic Combined Programming Language, Lenguaje de Programación Combinado Básico), aunque fue descrito en una presentación en 1969. Se llegaron a desarrollar hasta 25 implementaciones diferentes, pero nunca fue realmente mas que un lenguaje académico. Tenía dos partes, el compilador creaba un código intermedio, que luego un ejecutor específico para cada ordenador podía ejecutar, esta idea se ha usado en lenguajes como el Java y PASCAL.

Ese mismo año lo utiliza Dennis Ritchie como base para el lenguaje B, ayudado por Ken Thompson, como una simplificación del BCPL, del que Thompson elimina todo lo prescindible para poder usarlo en un mini (eliminando hasta parte del nombre).

Entre 1969 y 1972 y para el PDP que tenía disponible en los laboratorios Bell, Dennis Ritchie escribe un compilador para un nuevo lenguaje al que denomina C, usando las ideas del anterior B. Es un lenguaje diseñado específicamente para el desarrollo de sistemas operativos, y se ha vuelto el padre de la mayoría de lenguajes modernos que usan aproximadamente su misma sintaxis, como C++, Java, JavaScrip o PHP
El origen del UNIX

En los años 60 el Instituto Tecnológico de Massachusetts, los Laboratorios Bell y General Electric trabajaba intensamente en las comunicaciones, con la idea de desarrollar un ordenador que daría servicio a cientos de terminales por todo el país a través de las líneas telefónicas. Para su funcionamiento se definió un sistema operativo denominado MULTICS (Multiplexed Information and Computing Service, Servicio Multiplexado de Información y Computación). Este sistema correría en grandes Mainframes de las empresas General Electrics y Honeywell participantes en el proyecto. Aunque estuvo mucho tiempo en desarrollo, no llegó a funcionar nunca al ser un producto demasiado avanzado para el momento.

Uno de los programadores de los laboratorios Bell, Ken Thompson, escribió un juego llamado Space Travel (Viaje espacial) para la GE-645 en que estaban desarrollando el MULTICS, pero el juego era lento y sus ejecuciones eran caras (en esa época se miraba el coste de los programas por su tiempo de ejecución para calcular su rentabilidad) ya que salía por 75$ por partida. 

Entre 1969 y 1978 dos investigadores que trabajaban en MULTICS obtuvieron permiso para usar una computadora PDP-7 que en eso momento estaba siendo reemplazada por otra mas avanzada y había quedado parada, estos eran Ritchie y Thompson. Usando esta máquina, con ideas de MULTICS crearon el sistema operativo UNIX (Uniplexed Information and Computing Service, Servicio Uniplexado de Información y Computación), cambiando el multi por el uni ya que daba servicio a un solo usuario, basando el nombre al parecer en una idea de Brian Kernighan sobre un comentario de Andrew Tanenbaum

Cuando les dejaron el PDP reescribió el programa en ensamblador ayudado por Ritchie, al tener que desarrollar muchas rutinas para el manejo del sistema, Thompson pensó en crear un nuevo sistema operativo para la máquina. De esta manera Thompson y Ritchie lideraron un grupo de programadores para desarrollar en ensamblador  un sistema operativo multitarea, junto a un nuevo sistema de manejo de ficheros y un nuevo intérprete de comandos y algunos programas auxiliares.

Posteriormente el laboratorio les deja un PDP-11/20 con la condición de agregar herramientas de procesamiento de textos (un editor para escribir el programa runoff para formatear e imprimir) a UNIX, por lo que en 1970 ya se habla oficialmente en los laboratorios Bell del sistema operativo UNIX, donde el sistema de procesamiento de textos fue utilizado para procesar las solicitudes de patentes que recibían. Luego se mejoró runoff desarrollando troff, que permitía realizar composición tipográfica.

El 3 de noviembre de 1971 Thomson y Ritchie publicaron "UNIX Programmer's Manual", un manual de programación de UNIX, lo que fué su lanzamiento definitivo.

En 1972 se decide reescribir UNIX usando el Lenguaje de programación C, de esta manera UNIX podría ser fácilmente modificado para funcionar en otras computadoras, y como el código era más sencillo de entender y de manejar aumentó la velocidad de desarrollo de UNIX.

AT&T puso a UNIX a disposición de universidades y empresas (incluyendo al propio gobierno) a través de licencias. ​ Al adquirir una de ellas el Departamento de Computación de la Universidad de California, con sede en Berkeley, en 1975 desarrolló su propia versión de UNIX conocida como Berkeley Software Distribution (BSD). En esta distribución se creó el protocolo TCP/IP que es la base de internet.

Posteriormente el UNIX dejó de ser libre para su uso en universidades, pasando a comercializarse. Se lanzaron muchos desarrollos, Microsoft llega a un acuerdo para portar UNIX a los 286 creando una versión que se denominó XENIX, y para los 386 hay dos empresa que lo comercializan con versiones propias, SCO (que compró el XENIX y desarrolló SCO UNix y UnixWare, hoy es parte de Caldera Systems), y SUN que crea Solaris (hoy parte de Oracle). La IBM también lo comercializa creado AIX, Hewlett-Packard crea por su parte HP-UX y DEC comercializa ULTRIX.

Para intentar poner orden el este caos de versiones incompatibles entre si, se creó el estandar POXIS, que intentaba que hubiera cierta compatibilidad en el núcleo entre las versiones para que se pudieran ejecutar programas desarrollados en cualquiera de ellas en otras, no se consiguió nunca una compatibilidad plena, pero fue un buen avance.

Como ya no se puede usar el código en la enseñanza, el profesor Andrew Tanenbaum decide escribir una versión reducida del mismo para sus clases, lo que dio origen al MINIX. Uno de los usuarios de MINIX, Linus Torvalds, descontento con lo que permitía decide ampliarlo, creando otro sistema operativo denominado LINUX, del que posteriormente deriva a su vez Android. Por su parte, Apple derivó su MAC OS X y posteriores como macOS, iOS, iPadOS, tvOS o watchOS a partir del BSD (realmente parten de su anterior NeXTSTEP que usa el nucleo de Mach y partes del BSD).

De esta manera la familia del UNIX actualmente está compuesta por muchas variantes directas o indirectas, además de ser la base de algunas de las ideas del CP/M, que a su vez es la inspiración del MS/DOS.

Si quieres usar un UNIX hoy día tienes varias opciones (mejorada la lista con adicciones):

  • UNIX de código libre (cuidado que no todas las versiones de estos productos lo son): 
    • Variantes de LINUX (hay demasiadas)
    • Variantes de BSD (FreeBSD, Dragonfly BSD, NetBSD, OpenBSD)
    • MINIX (tiene versiones 1, 2 y 3)
    • Variantes libres de Solaris (OpenSOLARIS,  Nexenta OS, Illumos, SchilliX, BeleniX).
    • Coherent, un clon del Unix muy sencillo, las primeras versiones eran de código propietario, pero desde 2015 pasó a código libre.
  • UNIX de código propietario: 
    • OpenServer (basado en Xenix y no abierto a pesar de su nombre)
    • Solaris en sus versiones comerciales (sin el Open delante)
    • AIX y z/OS de IBM
    • HP-UX.
    • Silicon Graphics IRIX 
    • UnixWare de Univel (hoy parte de SCO-Caldera)
    • Ultix de DEC para alguna de sus máquinas
    • Amiga Unix. Versión para el Commodore Amiga 3000 del Unix System V de AT&T, poco usado ya que no incluía la posibilidad de ejecutar programas desarrollados para otros sistemas, pero muy apreciado por sus pocos usuarios al incluir parte de las fuentes, por lo que se podía modificar.
    • Atari  System V. Versión para el Atari TT030, intento de crear una estación de trabajo que no funcionó ya que tras sacar el ordenador y anunciarlo, tardaron dos años en comercializar el Unix.
    • Una lista mas extensa se puede consultar en la Wikipedia (en inglés). Pulsa aquí para verla
  • Variantes de código propietario (aunque tienen partes de código abierto, de estas solo verás el interface gráfico que hay por encima): 
    • MAC OS X y sus variantes para teléfonos, tabletas  TV
    • Android
  • Otros desarrollos basados en POSIX:  
    • BeOS no está basado en Unix, pero tiene cierta compatibilidad POSIX y el interface de la línea de comandos está basado en Bash.
    • QNX

Hay mas versiones de UNIX de múltiples fabricantes, solo he mencionado las mas conocidas, y si incluimos sistemas que han usado parte de POSIX en su núcleo se amplia bastante la lista.

Cómo escribir juegos para el ZX Spectrum. Apendice C [old8bits] [Leer]


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 C

Este apéndice tampoco forma parte del documento original, es un añadido para explicar como se pueden probar los programas que se describen con otro sistema alternativo más integrado, que permite programar, compilar y probar los programas directamente, más sencillo que el descrito en el apéndice B.

Se basa en usar como editor de texto ConText, que además de editar permite lanzar programas externos, lo que usaremos para compilar con pasmo y ejecutar con Spectaculator. Aquí os pongo un enlace a un archivo ZIP que contiene todo lo necesario. Si no funcionara aquí os dejo otro enlace de descarga.

Dentro del ficho ZIP encontramos instrucciones para su instalación, pero os las incluyo aquí de todas formas. Hay tres programas en el fichero, hay que instalar el editor pero los otros dos no requieren instalación:

  • ConText: Este será el editor de taxtos que usaremos para introducir los programas 
  • Pasmo: Este es el ensamblador para convertir el ensamblador en Código Máquina del Z80
  • Spectaculator El emulador del Spectrum que usaremos para ejecutar, sencillo y práctico.

El primer paso es descomprimir el ZIP en un directorio y mover cosas a este o a otro, por ejemplo, yo usaré C:\Spectrum para todo, pero tu elije los que desees, al descomprimir crea una nueva carpeta, en su interior encontramos los tres programas y dos PDF de ayuda para su instalación, uno en inglés y otro en español. Seguiremos los pasos descritos en el fichero 

ES - CREA_UN_ENTORNO_INTEGRADO_ENSAMBLADOR_SPECTRUM_ES.pdf 

que resumo aquí:

  1. Vamos a la carpeta EDITOR_ConTEXT_WIN y ejecutamos el programa Instalar_ConTEXTv0_986.exe instalaremos dando siguiente a todas las pantallas sin preocuparnos de más. Se abrirá ConText. En options - Environement abajo está el idioma del entorno, puedes cambiarlo a español (AR) para poder seguir mejor el documento
  2. Asociamos los ficheros .ASM con el editor 
  3. Copiamos la carpeta COMPILADOR_PASMO_WIN a C:\Spectrum\Pasmo
  4. Copiamos la carpeta EMULADOR_SPECTACULATOR_WIN a C:\Spectrum\Spectaculator
  5. Configurar ConTEXT para usar ASM con los programas externos
  6. Asociar Pasmo a la tecla F9, puede probarlo con cualquier programa ASM (si abres el fichero de ejemplo incluido con Pasmo llamado programa.asm, debes añadir al final una línea con el texto END 32768). Al pulsar F9 debe compilar el programa, y debe aparecer un mensaje de Ejecución Finalizada o mensajes de error si los hay.
  7. Asociar Spectaculator a la tecla F10 (los parámetros no tienen espacio entre p y \%F). Podemos ejecutar con F10, si nos aparece una nueva pantalla para elegir entre tres opciones debemos quitar el check de la parte inferior y pulsar cualquier opción. Al cerrar el programa si aparece una nueva pantalla le debemos desmarcar el check para que no pregunte cada vez. Si estamos usando el programa de pruebas de pasmo aparece una letra o en la pantalla, la podemos mover usando las teclas o-p-q-a.


Los que definieron la ciencia de la Informática (III) [old8bits] [Leer]


Índices: Historia de la Informática

Para esta entrada ordenaré por fecha de nacimiento a los que voy a mencionar, ya que no hay orden cronológico claro como en las dos entradas anteriores, esto son solo algunas pinceladas de sus mejores contribuciones, lo justo para despertar el interés de investigar un poco más sobre ellos. Dejaré para la siguiente entrada a los creadores del C y del Unix.

Edsger Dijkstra
Edsger Dijkstra poco antes de fallecer en 2002 (fuente: Wikipedia)

Edsger Wybe Dijkstra nació en Róterdam en 1930 y falleció en 2002. De pequeño quería ser abogado, pero finalmente estudió física. Sus primeros trabajos fueron en 1952 en el Mathematisch Centrum de Ámsterdam, colaborando en la construcción de un ordenador, principalmente desarrolló el software para una máquina que todavía estaba a medio construir, demostrando que la programación metódica y los sistemas formales producen buenos programas. Aquí desarrolló un compilador de ALGOL con el que fijó muchos conceptos de la programación estructurada.

Pasó en 1962 como profesor de matemáticas a la Universidad Tecnológica de Eindhoven, ya que no tenía departamento separado para informática. No fue una etapa muy productiva por las limitaciones del departamento, pero creó el sistema operativo "THE operating system", que introdujo el uso de la memoria virtual paginada.

En 1973 pasó a trabajar como el único investigador en la empresa Burroughs Corporation, empresa norteamericana, pero el siguió trabajando desde su casa en Holanda con visitas ocasionales a las sedes de la empresa, compaginándolo con un solo día en la universidad, donde creó el famoso "Club de los Martes por la Tarde", donde discutían los colegas los trabajos científicos. En la Burroughs, con total libertad para trabajar en lo que quisiera, escribió más de 500 artículos.

En 1984 aceptó una cátedra en la Universidad de Texas en Austin, donde siguió escribiendo numerosos artículos, algunos muy famosos como el que habla del GOTO, y continuó con el club de los martes. Se retiró en 1999, regresó a Holanda donde falleció de un cáncer en 2002.

Contribuciones

La lista es muy larga, solo mencionaré las más conocidas. Uno de sus temas de estudio fue la programación concurrente, escribió el primer artículo científico sobre el tema en 1965. Entre sus contribuciones están el algoritmo del banquero y la idea de los semáforos. Menos conocido, pero también importante, es el tema de la auto estabilización en sistemas concurrentes.

En teoría de grafos definió lo que se conoce como "Algoritmo de Dijkstra" con la solución del problema del camino más corto, usado por ejemplo en los programas de mapas para calcular las mejores rutas para llegar desde un origen a un destino.

Definió la notación polaca inversa y el algoritmo "Shunting Yard" para analizar sintácticamente expresiones en ella.

El sistema operativo THE multiprogramming system, donde usó muchas ideas que se mantienen en los actuales.

Pero quizá su mejor contribución fue sobre la escritura de programas y la verificación formal. Definió el sistema de derivación de programas, se definen primero las bases matemáticas del algoritmo a usar, con su pre y post condición, y luego se desarrolla a partir de este el programa y las pruebas conjuntamente. Sus contribuciones al desarrollo de los lenguajes, comenzando con su compilador de Algol, donde potenció el manejo de funciones y de variables locales, sentando en sus artículos las bases de la moderna programación estructurada.

Polémicas

De carácter difícil, siempre fue muy polémico. No incluía casi referencias a otros trabajos en sus escritos alegando que muchas veces no existían. Tampoco era amante de usar ordenadores para todo, de igual manera a como hacía sus programas primero sobre papel y luego transcribiéndolos, prefería escribir todos sus artículos a mano, no usaba apenas el correo electrónico, no tenía televisión ni teléfono móvil, aunque era apasionado de los conciertos de música clásica y tocaba el piano.

Es muy conocida su polémica sobre la sentencia GOTO y el código espagueti, pero no todo lo que se dice es totalmente cierto. El escribió un artículo hablando del mal uso que se hacía del GOTO y de la ventaja de cambiarlo por funciones, se lo envió a su amigo Niklaus Wirth para que lo publicara en la revista que dirigía, pero este lo cambió pasando a tener como título "Go To Statement Considered Harmful" (La sentencia Goto considerada perjudicial), añadiendo la famosa frase "el BASIC deforma la mente". Cuando leyó lo publicado no se enfadó con su amigo, que lo conocía bien.

C. A. R. Hoare
Charles Hoare (Fuente: Wikipedia)

Charles Antony Richard Hoare nació en Sri Lanka en 1934, de nacionalidad británica. Estudió filosofía en Oxford, donde se enamoró de la lógica matemática. Luego sirvió en la armada hasta 1956. Estudió luego matemáticas en la Universidad Estatal de Moscú, y en 1960 regresó a Inglaterra, donde entró a trabajar en la empresa Elliott Brothers, desarrollando el primer compilador comercial para el lenguaje ALGOL. Intentó desarrollar un sistema operativo, que no funcionó nunca, y dejó el mundo de la empresa pasando en 1968 a la universidad. Tras retirarse como profesor, le ofrecieron un puesto de investigación en Microsoft.

Buscando una manera de realizar búsquedas de palabras en los diccionarios, desarrolló en 1960 el algoritmo de ordenación QuickShort, el mejor algoritmo con diferencia, nunca superado a pesar de los años que tiene, usando un algoritmo del tipo "divide y vencerás".

Para los que hayan estudiado la carrera de informática, una de las asignaturas es sobre los sistemas formales de desarrollo de la programación, que se basa en la conocida como "Lógica de Hoare", que desarrolló en 1969 a partir de un trabajo anterior de Robert Floyd, definió la Verificación Formal usando el triplete “{Q} S {R}” (Q=Precondición, S=Algoritmo, R=Postcondición), base del desarrollo de programas correctos.

Menos conocido es el lenguaje formal CSP (Comunicación de Procesos Secuenciales), un modelo de programación de sistemas concurrentes basado en la comunicación entre procesos sin recursividad, que es el tercer trabajo más citado en computación de acuerdo con las estadísticas de Citeseer.

En su compilador de ALGOL incorporó el puntero nulo (aunque luego se arrepintió públicamente de haberlo hecho en el 2009), lo que ha dado muchos quebraderos de cabeza a los programadores por no usar el ISNULL adecuadamente.

Niklaus Wirth
Niklaus Wirth (Fuente: wikipedia)

Niklaus Wirth nació en Suiza en 1934. Se graduó en Ingeniería Electrónica en la Escuela Politécnica Federal de Zúrich (ETH). Estudió un post-master en 1960 en la Universidad Laval de Canadá. En 1963 obtiene el Doctorado en la Universidad de California, Berkeley. Siempre relacionado con la docencia, fue profesor en la Universidad de Stanford entre 1963 a 1967, luego pasó a la ETH en Suiza, universidad donde tomó dos años sabáticos para acudir al Xerox PARC en California.

Wirth puede que sea la persona que más ha influido en el diseño de los lenguajes de programación, fue el jefe de diseño de los lenguajes de programación Euler, Algol W, Pascal (solo por esto ya merece ser recordado, heredero el ALGOL, tuvo una enorme influencia en el diseño de los lenguajes bien estructurados y de los compiladores, inspiración directa a muchos otros lenguajes), Modula, Modula-2 y Oberon, y en el equipo que diseño los sistemas operativos Lilith y Oberon, y del hardware para el Lola.

Tiene varios textos que son básicos en la ciencia informática, el libro "The Pascal User Manual and Report" (Pascal, manual de uso e informes", escrito junto con Kathleen Jensen, fue la base para muchos esfuerzos de implementación de lenguajes posteriores, Su artículo "Program development by stepwise refinement" (desarrollo de programas por refinamiento sucesivo) sentó las bases de un buen sistema de desarrollo de programas. Y por supuesto su famoso libro "Algoritmos + Estructuras de datos = Programas", básico para aprender a programar.

Tiene una frase memorable que se conoce como la Ley de Wirth, "El software se ralentiza más deprisa de lo que se acelera el hardware", el ejemplo principal es que los ordenadores tardan lo mismo en arrancar hoy que hace unos años, a pesar del aumento de velocidad de los procesadores.

Y por supuesto la ya mencionada amistad con Dijkstra y los cambios que incluía en los artículos que este le remitía para su publicación como director de las publicaciones informáticas de la ETH.

Donald Knuth
Donald Knuth (fuente: Wikipedia)

Donald Ervin Knuth nació en Milwaukee en 1938. Estudió física en universidad de Cleveland, allí tuvo acceso a un IBM 650, que se programaba en ensamblador, pero como no le gustaba reescribió el código del programa ensamblador. Con este realizó un programa para ayudar al equipo de baloncesto, definió una serie de características y asignó unos puntos a cada jugador, calculando la probabilidad de puntuar, este sistema mejorado se sigue usando hoy día, sobre todo en las casas de apuestas. Cambió la física por las matemáticas, recibió dos títulos, y se doctoró en 1963 en el Caltech (California Institute of Technology), donde pasó a ser profesor. En el 68 pasó a Princeton para trabajar en criptografía, y desde el 69 trabaja en la universidad de Stanford.

Comenzó a escribir un manual sobre programación en ensamblador, que rápidamente se convirtió en un libro pues necesitaba ampliar con muchos temas de base sobre programación, luego se dio cuenta que necesitaría desarrollarlo en 6 libros, y finalmente han sido siete, aunque los últimos divididos en varias partes realmente. En 1968 publicó el primero volumen de "El arte de programar ordenadores", en 1969 el segundo, en 1973 el tercero, en 1981 revisó los 3 primeros, ha publicado por secciones en fascículos los capítulos del libro cuarto y parte del quinto, en 2005 publicó un anexo al primero, en 2011 se publicó el libro 4A, además de revisar continuamente los anteriores. A pesar del ritmo que lleva, espera poder publicar el libro 4B, 4C, 4D y los restantes algún día. La serie completa constaría de estos libros:

  • Volumen 1 – Fundamental Algorithms (Algoritmos fundamentales)
    • Capítulo 1 – Basic concepts (conceptos básicos)
    • Capítulo 2 – Information structures (estructuras de datos)
  • Volumen 2 – Seminumerical Algorithms (Algoritmos semi-numéricos)
    • Capítulo 3 – Random numbers (Números aleatorios)
    • Capítulo 4 – Arithmetic (Artimética)
  • Volumen 3 – Sorting and Searching (Ordenación y búsqueda)
    • Capítulo 5 – Sorting (ordenación)
    • Capítulo 6 – Searching (búsqueda)
  • Volumen 4 – Combinatorial Algorithms (Algoritmos combinatorios)
    • Valumen 4A: Capítulo 7 – Combinatorial searching (búsqueda combinatoria)
    • Volumen 4B: Capítulo 7 – Combinatorial searching (búsqueda combinatoria, continuación)
    • Volumen 4C y 4D Capítulo 8 – Recursion (recursividad)
  • Volumen 5 – Syntactic Algorithms (algoritmos sintácticos)
    • Capítulo 9 – Lexical scanning (Análisis léxico, incluye búsqueda de cadenas y compresión)
    • Capítulo 10 – Parsing techniques (Técnicas de análisis)
  • Volumen 6 – The Theory of Context-Free Languages (Teoría de los lenguajes libres de contexto)
  • Volumen 7 – Compiler Techniques (Técnicas de compilación)

Además de sentar las bases de muchos algoritmos y realizar su análisis, su otra gran aportación es TEX, un estándar para la publicación de libros y artículos, separando la redacción del texto de su posterior impresión, una maravilla en el desarrollo de un sistema de impresión completamente independiente que es ampliamente utilizado.

Ofrecía una recompensa de 2,56 dólares por reportar erratas en sus libros (256 centavos son 1 dólar hexadecimal), envió muchos cheques que los afortunados receptores casi nunca cobraron, ya que tiene más valor el propio cheque firmado para el que lo recibe, pero tras tantos años parece ha dejado de hacerlo.

Los que definieron la ciencia de la Informática (II) [old8bits] [Leer]


Índices: Historia de la Informática

Grace Murray Hooper 
Grace Hooper, contralmirante de la armada (fuente: Wikipedia)

Grace Brewster Murray, de casada Grace Murray Hopper nació en Nueva York en 1906, y falleció en Arlington en 1992. Estudió matemáticas, doctorándose en Yale en 1934. Durante la segunda guerra mundial decidió incorporarse a la Armada, siguiendo los pasos de su bisabuelo que fué almirante, por lo que en 1943 pasó por la academia naval obteniendo el grado de teniente. Fue destinada a trabajar en Harvard para el proyecto de computación que dirigía el comandante Howard Aiken para la construcción de la Mark I.

Tras la Segunda Guerra Mundial pasó a la reserva, pero siguió trabajando en la Mark I, para la que diseñó un programa para la gestión de la contabilidad, ya que en eso momento el ordenador estaba siendo usado por una compañía de seguros.

En 1949 pasó a la empresa Eckert-Mauchly Corporation en Filadelfia, más tarde llamada Univac y luego Remington Rand, donde trabajó en el desarrollo de las computadoras BINAC y en la UNIVAC I. Permaneció en la empresa hasta su retiro en 1971, y tras retirase de la armada en 1973 se incorporó como asesora en Digital Equipment Corporation, fue muy activa en foros industriales, dando unas 200 conferencias por año y participando en programas educativos hasta su muerte. Era muy popular, ya que en sus charlas siempre eran divertidas e incluían sus famosas historias de guerra, contando sus batallitas con los ordenadores.

Fue la primera mujer en ostentar un alto rango en la armada. Quiso retirarse varias veces, pero la armada no se lo permitió, permaneció en la reserva hasta finales de 1966 cuando tuvo que retirarse con el grado de Capitán de fragata, pero la Armada la volvió a llamar en 1967 para estandarizara los lenguajes de alto nivel que usaban. Se retiró de nuevo en 1971 pero se le pidió volver de nuevo en 1972. Fue ascendida a Capitán de navío en 1973. En 1983 ascendió a Contraalmirante y en 1986 se retiró de la Armada de manera definitiva. Fue enterrada con todos los honores militares en el cementerio Nacional de Arlington.

Lenguajes de programación

En la Univac I fue donde realizó sus mayores contribuciones a la ciencia de la informática y sentó las bases de la programación. Intentó convencerles de desarrollar un compilador que usara palabras en inglés, pero le dijeron que no era posible, por lo que en 1952 desarrolló el A-0 que fue el primer compilador operativo de la historia, usaba algunas órdenes en inglés, pero era más un linker que permitía llamadas a funciones estándar. Lo evolucionó en 1957 con el lenguaje B-0 o FLOW-MATIC, primer compilador para procesamiento de datos que usaba órdenes en inglés, que utilizó para diseñar programas relacionados con el cálculo de nóminas. 

Poco después apareció el lenguaje FORTRAN en la IBM, pero ella estaba implicada en un proyecto para el departamento de defensa, el desarrollo de un lenguaje de programación para aplicaciones comerciales con instrucciones en inglés, a partir de sus ideas en B-0 y de otro lenguaje de IBM, el COMTRAN desarrollado por Bob Bemer, similar al FORTRAN pero diseñado para aplicaciones de gestión del que se usó el manejo de las variables (las cláusulas PIC o PICTURE), se desarrolló el estándar del COBOL lanzado en 1959. Su idea fue diseñar un lenguaje completamente independiente de la máquina en que se compilara y ejecutara el programa, lo que consiguió completamente, que incluyera el manejo de ficheros y su entrada/salida, fundamental para las aplicaciones de gestión, lo que era una gran ventaja en ese momento en que cada máquina era completamente diferente a las demás, y el manejo de la E/S era muy específico.

Participó en los primeros comités de estandarización de lenguajes, que concluyeron en los estándar ANSI de 1968 para la sintaxis tanto del COBOL como del FORTRAN.

Mary Allen Wilkes

Mary Allen Wilkes nació en Chicago en 1937, y a fecha de hoy sigue con vida. Quería ser abogada pero sus padres no se lo permitieron, ya que en ese momento era muy difícil para una mujer ejercer. Estudió filosofía, pero un profesor le indujo a cambiar a informática por su mente lógica, por lo que entró en el Instituto de Tecnología de Massachusetts (MIT) en 1959, no tuvo problema para entrar a trabajar con computadoras, ya que tras la segunda guerra mundial era terreno copado por mujeres.

En el MIT se mantuvo hasta 1963. Allí trabajó corrigiendo programas, montó un sistema de reconocimiento de voz, y diseño el sistema operativo LAP (LINC Assembly Program) para el ordenador LINC (Laboratory INstrument Computer), uno de los primeros minis de la historia.

Mary Allen Wilkes con el LINC en el salón de su casa (fuente: mujeresconciencia.com)

En 1964 el equipo que trabajaba en el LINC se trasladó a San Luis (Misuri), pero ella prefirió quedarse, por lo que instaló en LINC en el salón, lo conectó al teléfono y continuó trabajando desde casa, desarrollando el sistema operativo LAP6, pensado para que fuera sencillo de utilizar por personas que no supieran de informática. Escribió el "LAP6 Handbook" y fue coautora del libro "Programando en Linc".

Tras esto dejó la informática, retomó su sueño de infancia, estudió derecho y ha ejercido de abogada hasta su jubilación.

Margaret Hamilton

Margaret Hamilton (Indiana 1936, sigue viva a día de hoy) es la creadora de la Ingeniera del Software como disciplina. Estudió matemáticas y se graduó en 1958. Tras su boda pasó una temporada ejerciendo de profesora, pero pronto se divorció. Entró en el MIT, destacó pronto y la nombraron directora de software del Charles Stark Draper Laboratory.

Allí desarrolló en 1965 el software de navegación que usaron las misiones Apolo en su camino a la Luna, trabajando muchas noches y fines de semana para completar el proyecto, a menudo con su hija pequeña jugando a ser astronauta junto a ella. Aquí sentó las bases de que los requisitos de robustez y tolerancia a fallos eran una prioridad para la seguridad y supervivencia de los astronautas. 

Margaret junto al código fuente del programa de navegación de las misiones Apolo impreso en 11 tomos (Fuente: Wikipedia)

 

Posteriormente trabajó en el software para el primer laboratorio espacial de la NASA, el SkyLab. En 1976 crea la empresa Higher Order Software, y en 1986 crea Hamilton Technologies, Inc. en Cambridge, Massachusetts, dode trabajó para desarrollar el paradigma de programación DBTF (Development Before the Fact, desarrollar antes de hacer).

En 2016 recibió la Medalla Presidencial de la Libertad, entregada por Barack Obama, por su trabajo en la NASA durante las misiones Apolo. Es autora de numerosos libros, artículos y ponencias en congresos.


Los que definieron la ciencia de la Informática (I) [old8bits] [Leer]


Índices: Historia de la Informática
La cibernética es la ciencia que estudia los sistemas reguladores, y es la base del estudio de los ordenadores, hoy día esa palabra no se usa, se prefiere denominar a la ciencia directamente Informática, y a su aplicación Ingeniería Informática. Al ser una ciencia que nació con los ordenadores, es por tanto muy joven y fue definida por una serie de personas que son poco conocidas por desgracia, a Jobs y Gates los conoce todo el mundo, pero ellos no definieron la ciencia, Tesla es hoy día idolatrado por gente que no sabe realmente lo que hizo, pero la historia de la informática la definieron otras personas que merecen un reconocimiento, estas entradas hablarán de las que yo considero más importantes.

Alan Turing

Alan Turing (Fuente: biografiasyvidas.com)

Alan Mathison Turing nació en Londres en 1912, y falleció en 1954. Estudió matemáticas en Inglaterra y en Estados Unidos. En un momento en que no existía ningún ordenador definió teóricamente en 1936 una formalización de los conceptos de algoritmo y de computación en un artículo titulado "Acerca de los números computables", para lo que creó un artificio, una máquina universal teórica denominada máquina de Turing, gracias a este artificio junto a Alonzo Church demostraron que no se puede dar una solución universal al problema de la parada (esto es un tema muy técnico que no voy a explicar aquí). Hoy día se sigue usando la máquina de Turing en el estudio de los autómatas de proceso de lenguajes.

Como matemático teórico, estudió muchos conceptos relacionados con los algoritmos y con la idea de su automatización, y tuvo mucho interés en los códigos cifrados con varios estudios sobre la máquina de cifrado Enigma, la que usaban los alemanes para comunicaciones secretas entre las unidades combatientes y por la marina, que se emitían por telegrafía, por tanto era posible interceptarlas pero no descifrarlas.

Máquina enigma en uso, se precian los 3 rotores pero no se ve el panel frontal (fuente: Wikipedia)
 

En 1939, al poco de iniciarse la segunda guerra mundial, fue llevado a una instalación de la inteligencia militar británica ubicada en Bletchley Park (si se va por la zona visita obligada a la exposición existente). Allí trabajó en el descifrado de mensajes de la máquina Enigma, por lo que junto a su equipo comenzó a intentarlo manualmente, encontraron pautas en los mensajes que aportaron pequeños triunfos, pero muy lejos de un sistema realmente operativo. Ante eso decidió combatir el fuego con el fuego, y diseñó una máquina que pudiera luchar contra la máquina Enigma. 

Llamó a su máquina "Bombe" o bomba lógica (una máquina de uso específico para un solo propósito, por tanto no es realmente una computadora), lo abordó usando lo se denomina un algoritmo de fuerza bruta, probar combinaciones hasta acertar. Lo que hacía era a partir de un texto cifrado con la enigma, probar combinaciones de los rotores hasta encontrar un mensaje con sentido, probar combinaciones es rápido, pero había millones de combinaciones posibles (con n rotores diferentes hay (26n.n!) posibilidades, con los habituales 5 rotores nos da 1'4 millones de posibilidades, pero había más elementos para complicar el tema por lo que podía llegar a la asombrosa cifra de 158.962.555.217.826.360.000 posibilidades) por lo que su primer logro fue encontrar una forma de reducir las combinaciones, pero detectar cuando el mensaje tiene sentido era la parte más importante y la más complicada que tuvo que resolver. El primer prototipo estuvo funcionando el 14 de marzo de 1940, y en unos meses estaban funcionando hasta 200 máquinas. Como este trabajo estaba clasificado como secreto militar no se ha conocido hasta hace relativamente poco.

Bomba lógica expuesta en el museo de Bletchley Park (fuente: Wikipedia)

 

Nota: En Bletchley Park había otro equipo diferente que diseñó otra máquina denominada Colossus, diseñada para descifrar los mensajes cifrados usando otra máquina alemana, la Lorenz SZ40/42 que era usada para los mensajes de alto nivel y se transmitían por Teletipo. Diseñada por Tommy Flowers, estuvo operativo en febrero de 1944. Posteriormente la mejoró en la Colossus Mark II que empezó a operar en junio de 1944. Se llegaron a construir diez Colossus.

Tras la guerra Turing continuó con la investigación en computación, diseñó uno de los primeros computadores electrónicos programables digitales en el Laboratorio Nacional de Física del Reino Unido y poco tiempo después construyó otra de las primeras máquinas en la Universidad de Mánchester. Además, fue pionero en temas de Inteligencia Artificial, su idea más conocida es la prueba de Turing, definida en 1950, una forma de análisis del grado de "inteligencia" de un programa de ordenador, cosa inexistente en ese momento.

Aunque su contribución al descifrado de Enigma se dice que acortó la guerra en dos años, ahorrando miles de vidas, pero la sociedad inglesa del momento no era tan avanzada como pensamos. La homosexualidad era delito en ese momento, por lo que en 1952 fue procesado por ese delito, lo que le llevó a una crisis importante, a partir de ese momento publicó muy poco, y acabó suicidándose (aunque hay alguna duda sobre esto) dos años más tarde. En el año 2009 Gordon Brown, primer ministro británico, tras presiones populares se disculpó públicamente en nombre del gobierno británico por «la forma espantosa en que [Turing] había sido tratado». La reina Isabel II le otorgó un indulto póstumo en 2013.

Filmografía recomendada: Hay dos películas que se deben ver sobre el tema, "Enigma" de 2001, que trata sobre el equipo de descifrado de códigos de Bletchley Park, en esta se ven las dificultades que afrontaron aunque no se menciona a Turing y no pretende ser fiel a la historia completamente. La película que si trata sobre Turing es "The imitation Game" (El juego de imitación), que en España fué "Descifrando Enigma" y en Hispanoamérica "El código Enigma" de 2014, habla sobre su vida y su trabajo en Bletchley Park, aunque es un poco exagerada la forma de presentar a Turing y pasa de puntillas por el tema del suicidio. De manera accesoria en "Das Boot" (el submarino) de 1981 se ve de refilón la máquina, y en "U-571" del 2000 deben capturar una máquina Enigma de un submarino alemán junto al libro de claves. En "Una mente maravillosa" de 2001 se habla de descifrado de códigos, aunque no tiene que ver con Turing ni con la Enigma.

Konrad Zuse
Konrad Zuse manejando una de sus Z (fuente: zib.de)

Konrad Zuse nació en Berlín en 1910 y falleció en 1995, aunque estudió ingeniería es el primero en construir un ordenador moderno. Al final de la segunda guerra mundial los americanos y los rusos estaban en una dura pugna por ser los primeros en llegar a Berlín, y aunque es menos conocido peleaban por ser los que se llevaran a los mejores científicos alemanes. Así a Wernher von Braun se lo llevaron los americanos y a pesar de ser nazi convencido acabó dirigiendo la NASA, pero los rusos se llevaron a sus ingenieros y se adelantaron en la carrera espacial. Al no ser la informática una ciencia conocida, Zuse pasó de puntillas por los libros de historia, y hasta hace muy poco ni se le mencionaba.

Tras sus estudios de ingenieria pasa por la Ford donde destacó como dibujante y diseñador, para acabar trabajando como ingeniero en la Henschel en el diseño de aviones, la tarea más laboriosa era calcular el perfil alar, había que repetir los cálculos una y otra vez para calcular el perfil a lo largo del ala. En esa época solo se disponían del principio de los logaritmos, ya que \displaystyle \log_{a}{(x \cdot y)} = \log_{a}{x} + \log_{a}{y}, usando tablas de logaritmos y reglas de cálculo (que usaban este principio) se realizaban las multiplicaciones, cansado de esta monótona tarea dejó la empresa y se dedicó a diseñar y construir el primer computador de la historia. 

El resultado fue el Z1 que finalizó en 1938. Era una máquina mecánica movida por electricidad, una calculadora con capacidad de programación, que internamente usaba el sistema binario, se programaba usando una unidad de cinta de papel, operaba con datos en memoria y proporcionaba el resultado. Podía sumar, restar, multiplicar y dividir, más hacer una comparación, a un régimen de una operación cada 3 a 6 segundos, pero no llegó a funcionar perfectamente ya que las limitaciones del sistema mecánico lo hacían poco operativo.

 

Z1 en el salón de la casa de sus padres (fuente: assets.sutori.com)

No se desalentó, comenzó a trabajar en una versión mejorada denominada Z2, y solicitó fondos al estado para continuar sus investigaciones, pero al no ser del partido Nazi ni ver los dirigentes la utilidad real de la máquina, apenas consiguió financiación, pero siguió adelante. Abandonó su idea inicial de una máquina mecánica que le daba muchos problemas y comenzó a utilizar relés, dejó a medias la Z2 desarrollando la Z3 en 1941, versión ya operativa de la Z1 que funcionaba perfectamente. Lamentablemente los bombardeos de Berlín destruyeron tanto las máquinas como los planos, por lo que tras la guerra tuvo que empezar de cero.

Fundó la primera empresa dedicada a fabricar ordenadores en 1946, la Zuse KG, donde construyó la Z4, que se convirtió en 1950 en la primera computadora en ser comercializada, nuevamente en los libros se habla del Ferranti Mark I y del Univac I como los primeros vendidos, pero el se adelantó medio año vendiendo la máquina a la universidad de Zúrich en Suiza. Se puede ver hoy día una réplica en el museo de Múnich. La máquina era una calculadora binaria que pesaba una tonelada, usaba 2200 relés, disponía de una memoria de 500 palabras 32 bits, disponía de una unidad lectora y grabadora de tarjetas perforadas, pudiendo realizar 11 multiplicaciones por segundo. Se mantuvo en uso hasta 1959.

Le siguieron la Z5 y la Z11 de relés, y en 1955 la Z22 funcionando a válvulas y con memoria de núcleos magnéticos. La Universidad de Ciencias Aplicadas de Karlsruhe (Alemania) tiene una Z22 operativa. La Z23 de 1961 trabajaba ya con transistores.

Z22 expuesta en la universidad de Karlsruhe (fuente: Wikipedia)

 

En 1967, la empresa Zuse KG había construido un total de 251 computadoras. Ese mismo año Zuse sugirió que el universo en sí mismo es una retícula de computadoras (lo que se denomina Física computacional), publicando esta hipótesis en su libro Rechnender Raum. Por problemas financieros vendió la empresa a la Siemens y se retiró, dedicándose a su otra afición que era la pintura.

Las programadoras del ENIAC
En la segunda guerra mundial los cañones, obuses y morteros se disparaban según la distancia de tiro, el peso del proyectil, la altura donde querías que explotara y el ángulo de llegada, usando un libro con unas tablas se seleccionaban la cantidad pólvora a emplear, el ángulo de elevación y si la espoleta era de tiempo el tiempo de vuelo. Como los hombres estaban ocupados en la guerra, las mujeres calculaban estas tablas en la base militar de Aberdeen Proving Grounds en Pensilvania. El cálculo se hacía a mano, cada libro contenía unas 3.000 entradas, cada una requería hasta 750 pasos de cálculo (sencillos, sumar, restar multiplicar o dividir cantidades), por lo que compilar un libro requería millones de cálculos. Por esto a las mujeres que se dedicaban a esto se las llamaba Computers, y las reclutaban en la escuela de ingeniería de la Universidad de Pensilvania, donde existían ya máquinas auxiliares para realizar los cálculos.
 
Vista general del ENIAC (fuente: i0.wp.com)

En 1943 el ejercito financió la construcción del Electronic Numerical Integrator And Computer o ENIAC (integrador y computador numérico electrónico), diseñado por John W. Mauchly y John Presper Eckert y montado en la universidad de Pensilvania, completada en diciembre de 1945, estuvo operativa en febrero del 1946. Era un ordenador de base decimal de 27 toneladas de peso con 17.500 lámparas y 90.000 componentes adicionales, que requirió de aproximadamente cinco millones de conexiones. Podía ejecutar 5.000 sumas o 360 multiplicaciones por segundo.

Sufrió continuas modificaciones a lo largo de su vida. En 1947 fue trasladado a la base militar de Aberdeen, donde se usó en secreto hasta 1955 para calcular las trayectorias de los misiles nucleares.

La máquina estaba compuesta de una memoria principal y una serie de unidades de cálculo, cada unidad podía efectuar unas operaciones, pero había varias unidades de cada tipo. Para programarla se disponía de unos paneles con agujeros, similares a los de las centrales telefónicas de la época, mediante hilos se conectaban las memorias con las entradas y salidas de las unidades, cableando un circuito (posteriormente se reconfiguró para usar programación en memoria).

 

Programando el ENIAC (Fuente: s3.amazonaws.com)

Pondré un sencillo ejemplo. Si deseábamos ejecutar la operación consistente en multiplicar las posiciones de memoria 1 y 2, luego dividir el resultado con la posición de memoria 3, guardando el resultado en la posición de memoria 4, lo que hoy día sería M4 = (M1 + M2) / M3. Para realizarlo usaremos estas dos unidades:

  • Unidad de multiplicación A: Con las entradas 1 y 2 y una salida
  • Unidad de división B: con dos entradas para dividendo y divisor, y salidas para Cociente y Resto

Se cableaba así:

  • Memoria 1 a la entrada 1 del multiplicador A
  • Memoria 2 a la entrada 2 del multiplicador A
  • Salida del multiplicador A a la entrada dividendo del divisor B
  • Memoria 3 a la entrada divisor del divisor B
  • Salida de cociente del divisor B a la memoria 4 

Pero además hay que considerar que hasta que no ha concluido la operación anterior el resultado no aparece en su salida, por lo que hay que sincronizar las unidades para que las operaciones se ejecuten en orden, y evitar temas como la división por cero, control de desbordamientos, manejo de decimales, unos cuantos detalles, y pensar que no planteo más que un pequeño programa, sin considerar temas como saltos condicionales o bucles. Además, solo si tenías suerte no se fundía ninguna lámpara a mitad por lo que el control de errores era crítico. En la siguiente imagen se ve un programa real, tiene un aire similar a la programación ladder o por escalera de los PLC modernos.


Programa real para el ENIAC (fuente: computerhistory.org)

Para manejar todo esto se creó un equipo de 6 mujeres, las denominadas "Programadoras del ENIAC", que aparecen en las fotografías de la época. No eran modelos para las fotografías, eras matemáticas e ingenieras que se dedicaban a programar y atender la máquina. Como el nivel de secretismo era muy alto, el acceso al ordenador estaba muy limitado, por lo que primero preparaban los programas teóricos, luego preparaban los paneles, y cuando tenían el acceso los llevaban a la máquina, que ponían a ejecutar el programa, se verificaba que el "programa" era correcto, y se lanzaba el cálculo programado, que podía tardar unos minutos o varias horas.

Las chicas del ENIAC desarrollaron las bases de la programación de los ordenadores, pues no solo programaron, sino que crearon la primera biblioteca de rutinas y las primeras aplicaciones de software, incluso he leído que una de ellas diseñó la primera rutina de ordenación (aunque esto no lo tengo confirmado, y como sus programas eran secretos militares no hay demasiada información). 

Cuatro de las seis programadoras originales del ENIAC. Sostienen el mismo circuito en sus manos, la versión inicial a lámparas se redujo de tamaño en dos versiones manteniendo las lámparas, hasta llegar a la versión final con transistores (fuente: naftic.com/)
 
Las 6 programadoras fueron (figura nombre, apellido de soltera y apellido de casada):

  • Betty Snyder Holberton (1917-2001) Tras el ENIAC participó después en el UNIVAC I junto a Grace Hopper (que tendrá su propia entrada). Contribuyó en el lenguaje C-10 y participó en el desarrollo de los primeros estándares para COBOL y FORTRAN. Escribió el primer paquete de análisis estadístico que fue utilizado en el censo de los EE.UU. En 1997 recibió el premio Ada Lovelace. 
  • Betty Jean Jennings Bartik (1924-2011) formó parte del equipo que transformó el ENIAC en un ordenador con programas almacenados. Después de trabajar con BINAC y UNIVAC I, se convirtió en editora para Publicaciones Auerbach, pionera en tecnologías de la información. En 1981 ingresó en Data Decisions. En 2008 le fue concedido el premio del Computer History Museum. La Northwest Missouri State University tiene un museo dedicado a ella.
  • Ruth Lichterman Teitelbaum (1924-1986) se trasladó en 1947 a Aberdeen junto al ENIAC, donde enseñó a la siguiente generación de programadoras. 
  • Kathleen McNulty Mauchly Antonelli (1921-2006) se trasladó en 1947 con el ENIAC a la base militar de Aberdeen. En 1948 se casó con John W. Mauchly.
  • Frances Bilas Spence (1922-2012) se casó en 1947 con un ingeniero electrónico de la armada que trabajó en el ENIAC. Dejó su puesto para cuidar a su familia.
  • Marlyn Wescoff Meltzer (1922-2008)​ renunció a su puesto antes del traslado del ENIAC a Aberdeen para contraer matrimonio.

Breve historia de los lenguajes de programación [old8bits] [Leer]


Índices:Historia de la Informática
Otro que escribí en 2018, más vale tarde que nunca para los que gusten de un poco de historia de la informática.

Los ordenadores se clasifican por generaciones, la primera engloba a los primeros electromecánicos y a los de lámparas, la segunda los de transistores, la tercera en adelante la de los chips en función de su escala de integración. Los lenguajes también han tenido sus épocas, en general pasamos de una primera con su nacimiento, la etapa cuando el GOTO era el rey, los lenguajes estructurados, los lenguajes 4GL, y ahora se viven los lenguajes distribuidos. Siempre los lenguajes han seguido la evolución de los ordenadores, ya que hasta que no se disponía de recursos o de potencia de cálculo suficiente no era posible desarrollar ciertas características de los lenguajes.

Primeros ordenadores Yo considero que es un error englobar en la primera generación todas las máquinas iniciales, ya que opino que debería haber una generación cero con las primeras máquinas en las que el programa estaba completamente separado de los datos, en lo que hoy se conoce como arquitectura Harvard , y empezar la primera generación en el EDVAC y el ILLIAC que fueron los primeros en adoptar lo escrito por Von Newman sobre el programa almacenado en memoria, usando la arquitectura que hoy se denomina Newman-Eckert-Mauchly, o arquitectura Princeton. Hoy día los microcontroladores como los PIC o los Atmel usan arquitectura Harvard, ya que el programa se graba en una memoria (usualmente flash) y permanecen indefinidamente, mientras los datos están en RAM y se pierden al apagar, pero su potencia de proceso y su rico lenguaje máquina hace que esto no sea ya una diferencia importante, solo es cuestión del tipo de memoria adecuada para cada uso.

Las primeras máquinas eran calculadoras y poco más, con las que se podían efectuar muchos cálculos repetitivos y siempre correctos (aunque en las primeras no siempre era así). Las Z las ideó Konrad Zuse pues trabajaba realizando el cálculo de las formas de las alas de los aviones, lo que representa calcular muchos datos usando siempre la misma fórmula, solo cambiaban algunos parámetros. El ENIAC se dedicó inicialmente a compilar tablas para la artillería, en función del tamaño del proyectil (proporcional al calibre del cañón), de su peso, de la carga de pólvora que se le introduce y del ángulo de disparo respecto a la horizontal, se calculaba el alcance del proyectil, y con esto se generaban tablas y más tablas de datos que se imprimían como manuales de tiro para cada cañón concreto.

Cinta de papel perforada (fuente: uvaciberperiodismo)
Las Z y casi todo el resto de los ordenadores usaban una unidad de cinta de papel en la que estaban las instrucciones a ejecutar, mientras que los datos se almacenaban en la memoria del aparato, por contra que en el ENIAC los datos estaban en la memoria igualmente, pero se usaba unos paneles en los que se cableaban las instrucciones a realizar, la máquina disponía de una serie de circuitos (sumadores, restadores, multiplicadores, divisores, etc), mediante el panel se cableaban las salidas de un circuito con la entrada de otro, seleccionando el origen de la información adicional si era necesario. Las Z eran máquinas electromecánicas binarias, el ENIAC usaba tubos de vacío, pero montados para trabajar en decimal, otras como la británica Harwell Computer usaban tubos decatrón que contaban bien de cero a nueve. En todas estas máquinas siempre se actuaba de la misma manera, al pedir desde el panel de control del aparato que se ejecute el programa, se leía una instrucción de la cinta del programa, se ejecutaba operando sobre los datos en memoria, copiándolos a otra ubicación o presentándolos en la salida, se avanzaba el lector de cinta una posición, se leía la nueva instrucción, se ejecutaba, y así sucesivamente hasta encontrar una instrucción especial que detenía la ejecución.

El lector de cinta no podía retroceder ni saltar, pero pronto se dieron cuenta de que esto era necesario incluso para sencillas ecuaciones, por ejemplo el cálculo de una raíz cuadrada puede dar un resultado real o imaginario, por lo que recurrieron a soluciones ingeniosas como usar más de un lector de cinta, el programa se empezaba a ejecutar en la primera cinta, pero en función del valor de algún registro de memoria se podía hacer que continuara en otra unidad, ejecutando así las primeras instrucciones condicionales. Se llegó a maquinas con hasta16 unidades de cinta para ejecutar los programas, pero con la limitación de no poder usar por ejemplo bucles. Se cargaban las cintas de papel, se introducían los datos en la memoria, y se lanzaba la ejecución del programa.

El imperio del código máquina
Con el programa almacenado en memoria esto cambió, ahora el ordenador podía ejecutar la instrucción en una posición de memoria, y en función de su evaluación saltar a la posición de memoria que se deseara (podía incluso modificarse a sí mismo, idea ya aportada por Von Newman y usada por ejemplo por Donald Knuth en "El arte de programar ordenadores"), mezclando en la memoria el programa y los datos se crearon los primeros ordenadores de propósito general auténticos, y los primeros Turing Completos (en este punto hay mucha controversia pues algunos afirman que las Z ya lo eran, pero sin instrucciones de salto yo personalmente no los incluiría en esta categoría). El cambio fue radical, ahora se escribía el programa en la cinta, se leía esta por completo en la memoria, se cargaban los datos en otras posiciones, y el ordenador empezaba a trabajar. Esto hizo necesario disponer de los primeros sistemas operativos muy rudimentarios, encargados de cargar los programas en la memoria de las maquinas.

Pronto se impusieron las unidades lectoras de tarjetas perforadas sobre las de cinta de papel, más cómodas de manejar, en cada tarjeta se escribía una dirección de memoria y su contendido, que era una sola operación o un solo dato, por lo que en caso de necesitar cambiar algo solo había que reemplazar una tarjeta y no volver a teclear todo el programa o cortar la cinta, eliminar un trozo y empalmar otro.

Se seguía trabajando igual, se perforaban las tarjetas con el programa, siempre en código máquina directamente, se añadían los datos, lo que podía hacerse directamente en la memoria o mediante otras tarjetas, y se ejecutaba el programa.

Nuestro cerebro es peor manejando números que palabras, y el número de instrucciones fue creciendo poco a poco, desde las 6 que podía efectuar el Z1 ya había que manejar decenas de ellas, por lo que pronto se desarrollaron nemotécnicos para los códigos de las instrucciones, los programas se empezaron a desarrollar en ensamblador, pero se traducían a código máquina manualmente.

Con el aumento de potencia de las máquinas fue posible desarrollar los primeros programas ensambladores, uno de los primeros fue introducido en el ordenador más vendido del momento, el IBM 650, desarrollado en los años 50, y se denominó SOAP (Symbolic Optimized Assembler Program), el programa se escribía en tarjetas perforadas, y luego se cargaban dos grupos de tarjetas, primero el programa ensamblador, luego las tarjetas con el programa en lenguaje ensamblador. El S.O. leía las tarjetas del ensamblador y lo cargaba en memoria, se ejecutaba el programa y este leía una tarjeta de código, la ensamblaba y luego grababa una tarjeta con el resultado. De esta forma se disponía del programa listo para su ejecución en código máquina de forma más sencilla.

A partir de 1951 surgieron varios lenguajes ensamblador con intentos de hacer uno universal, como el Regional Assembly Language de 1951, pero ante la disparidad de ordenadores del momento no funcionó. IBM por su lado lanzó en 1952 su lenguaje ensamblador denominado Autocoder, que tuvo varias versiones, intentando que se pudiera ejecutar en todos sus modelos pero sin conseguirlo completamente, por lo que cada Autocoder era específico de un ordenador o familia de ellos.
Primeros intentos

El Código Maquina y el Ensamblador fueron los reyes en la primera generación, en los 60 con la segunda generación de ordenadores se popularizaron los primeros lenguajes, desarrollados en los años 50, de los que voy a mencionar los más importantes en su orden cronológico de aparición. Hay que tener en cuenta que inicialmente se siguió utilizando mayoritariamente el Ensamblador, ya que permitía utilizar mejor los escasos recursos de las máquinas de las primeras generaciones.

Esta primera generación de lenguajes marcó los inicios de la computación moderna, marcó el gran hito de conseguir la independencia del lenguaje sobre la máquina en la que se ejecuta, y fijó las pautas de los posteriores lenguajes. Todos son leguajes imperativos, y todos evolucionaron haciéndose cada vez más estructurados, aunque mantienen el uso del GOTO

Aunque el auténtico pionero fue Zuse, en su Plankalkül , que podemos considerar como el primer lenguaje de programación, creado entre 1942 y 1946, que describió en un artículo en 1948, pero su especificación solo se publicó en 1972, como todo lo relacionado con Zuse siempre se tardó en reconocer sus méritos. Era un lenguaje bastante completo, con manejo de tipos de datos o de matrices, pero no era estructurado ni disponía de instrucciones de entrada/salida.

A principios de los 50 se empezó a experimentar con los primeros lenguajes primitivos, Grace Murray Hopper , una de las mayores figuras de la historia de la computación, si no la mayor, desarrolló el Sistema A-0 (Arithmetic Language version 0), considerado el primer lenguaje de alto nivel. Por aquella época ya se habían desarrollado muchas rutinas de código, que eran usadas añadiendo las tarjetas de esas rutinas a las de tu programa, la idea de Grace fue disponer de una gran librería de rutinas de código desarrolladas. Un programa en A-0 consistía en una secuencia de llamadas a esas rutinas junto a sus parámetros de entrada, y alguna instrucción adicional. Esto se perforaba en las tarjetas, y luego se usaban un conjunto de tres grupos de tarjetas, primero un primitivo compilador (poco más que un pequeño linker), que se cargaba en la memoria, seguían las tarjetas del "programa", que el "compilador" convertía en código máquina, y por fin las tarjetas con todas las rutinas que se podían usar, de las que se copiaban solo las necesarias para ejecutar el programa. De esta forma en la salida se encontraba el programa listo para usar.

No hay que menospreciar esto que aparenta ser tan sencillo, pues dependiendo de las rutinas que se cargaran los saltos dentro del programa debían efectuarse a unas u otras posiciones de memoria, por lo que no era tan directo compilar el programa, usualmente se empleaban varias unidades de cinta magnética para almacenar los datos intermedios, y mezclar todo al final en otra cinta, desde donde se podían enviar a la perforadora de tarjetas.

El A-0 evolucionó y se amplió, fue seguido por el A-1, el A-2 (cuyo fuente se publicó considerándose el primer programa de código abierto), evolucionó mucho para convertirse en el A-3 orientado a las matemáticas, en dos variantes denominadas A-3 o ARITH-MATIC, y AT-3 o MATH-MATIC), y por fin el B-0 o FLOW-MATIC, de 1955, orientado a la gestión y precursor directo del COBOL. 

Por otro lado, en 1953 surgió Speedcoding , desarrollado por John Backus. Era muy similar al A-0, pero enfocado a las matemáticas en punto flotante, ya que lo desarrolló para simplificar la escritura de programas para el ordenador científico IBM 701, en el que se solicitó un programa de cálculo de posiciones de estrellas para la década de los años 50, necesario para el manejo por los astrónomos. El leguaje era complicado de manejar, funcionaba bien, pero los programas que desarrollaba eran mucho más lentos que los escritos en código máquina, hasta 20 veces más lentos, lo que no lo hacía muy operativo.

1957 FORTRAN

El primer lenguaje históricamente fue el hoy casi olvidado FORTRAN (Formula-Traslation o traductor de fórmulas), orientado a la computación matemática, desarrollado por otro de los grandes padres de la computación, John Backus en la IBM, a partir de 1953 para el ordenador IBM-704, orientado hacia aplicaciones científicas, a partir de su anterior SpeedCoding. El primer compilador de FORTAN convertía el fuente en ensamblador SOAP, y luego este se ensamblaba y convertía en código máquina. El lenguaje fue lanzado para los clientes de IBM en 1957. El FORTRAN fue ampliamente utilizado en los años 60 para operaciones de cálculo matemático y de ingeniería, marcó el desarrollo del ALGOL y en su sintaxis se inspiró el BASIC .

Como particularidad un programa en FORTAN no tiene en cuenta los espacios en blanco salvo en las cadenas, provocando un dilema de compilación clásico, un bucle tiene la forma DO ETIQUETA VARIABLE = INICIAL . FINAL en donde ETIQUETA es la etiqueta que marca donde termina el bucle, VARIABLE la que lleva la cuenta del bucle, INICIAL y FINAL son los valores por los que iterará. Podemos escribir DO 10 I = 1 . 10 o bien DO10I=1.10 siendo equivalentes, pero también podemos escribir DO10I=1,10 aunque en este caso asignamos el valor 1,10 a la variable DO10I, haciendo que la compilación del programa sea un tanto "divertida", hasta el final de la línea no sabes cómo interpretar la sentencia, por lo que no es posible ir montando los habituales arboles de exploración de los compiladores.

1958 LISP


El segundo lenguaje de la época fue LISP (List Processor, procesados de listas), que todavía es usado. Está basado en un lenguaje anterior denominado IPL. Surgió poco después del FORTAN, pero inicialmente solo contaba con un intérprete y no disponía de compiladores. Especializado en lenguaje matemático inspirado en el Cálculo Lambda, muy bueno en el manejo de listas y usado desde sus inicios en Inteligencia Artificial. Aunque es un lenguaje poco usado fuera de ese campo, sigue vivo en lenguajes como PERL

1959 COBOL


El tercer lenguaje de la historia, que es todavía uno de los más usados hoy día, es COBOL (Common Business-Oriented Language, leguaje común orientado a los negocios), en cuyo diseño intervino un comité denominado CODASYL , aunque se asume que Grace Hopper es la diseñadora principal del lenguaje. Es el primer intento de desarrollar un lenguaje independiente completamente del ordenador en que se compila, pudiendo ejecutarse una vez compilado en otros ordenadores, y el primer intento de desarrollar en lenguaje natural en inglés. Esto ocasionó que los programas se puedan escribir en sentencias muy largas, escribiendo párrafos completos. Esto contrasta mucho con el escueto C, cuya sintaxis intenta hacer que se escriba lo mínimo posible para no perder tiempo escribiendo.

Al ser un lenguaje orientado a la gestión, contiene un extenso manejo de instrucciones de entrada/salida, manejo de ficheros y manejo de datos, incluyendo los primeros sistemas de manejo de ficheros indexados.

La primera versión de un compilador desarrollado en un lenguaje de alto nivel fue la que realizó Hooper para el COBOL, usando el lenguaje Flow-Matic.

1960 ALGOL


Aunque se comenzó a definir en 1958, hasta 1960 no se difundió. A partir del FORTAN, un equipo de científicos de la computación liderados por Backus desarrolló la especificación del cuarto lenguaje importante de esta época, el ALGOL (Algoritmic Languaje, lenguaje algorítmico), primer leguaje moderno de la historia y el que incluyó todo lo que hoy es un lenguaje imperativo, en el que por ejemplo se definió por primera vez el uso de bloques y las variables locales. 

El propio Backus introdujo la notación BNF para la definición de un lenguaje de ordenador, usada desde entonces. Aunque fue un lenguaje muy importante por las ideas que introdujo, su uso no se extendió ya que era difícil construir compiladores para él, ya que los ordenadores del momento no tenían recursos suficientes en general.

El primer compilador de un lenguaje desarrollado en el propio lenguaje que compilaba se desarrolló para ALGOL y se denominó NELIAC, se completó en 1958. Hoy día es poco conocido el ALGOL, pero no así su heredero directo, el lenguaje PASCAL.

1964 BASIC


Como vemos lo podemos considerar otro pionero por fechas, fue el primero que aprendí, mi muy querido BASIC del Spectrum, y luego trabajé con varias variantes del BASIC profesionalmente, por eso cuando puedo hacer algo hoy día prefiero usar Visual Basic, solo por nostalgia. 

BASIC proviene de Beginners' All-purpose Symbolic Instruction Code (Código simbólico de instrucciones de propósito general para principiantes). Fue diseñado en 1964 por John George Kemeny, Thomas Eugene Kurtz y Mary Kenneth Keller en el Dartmouth College en New Hampshire, Estados Unidos (por eso se conoce como el Dartmouth BASIC), fue creado como un medio para facilitar la programación en ordenadores a estudiantes (y profesores) que no fueran de ciencias.

Originalmente era un lenguaje interpretado, diseñado como herramienta de enseñanza, pero al tener una estructura sencilla de aprender, ser un lenguaje muy ligero y que un intérprete de BASIC es muy ligero, estuvo ampliamente disponibles en las microcomputadoras de los años 1970 y 1980.


Los primeros PC compatibles [old8bits] [Leer]


Índices: El camino al O.P.       Historia de la Informática

Aunque esto lo escribí en 2018 tenía muy parado el blog, y como quiero hacer algunas entradas nuevas comenzamos por esta.


Mi querido Spectrum tuvo una larga lista de clónicos, sobre todo en la antigua URSS. Otro que le fue a la zaga en clones fue el Apple II, solo uno producido bajo licencia, el resto algunos muy compatibles y otros menos, y su principal origen fue Asia.

Pero la historia de los compatibles comienza con el IMSAI-8008, que es clonado en una serie de ordenadores con el mismo bus S-100 y un montón de slots de expansión, el mas famoso es el ALTAIR-8080, pero hay muchos como el Vector-1 del que ya he comentado su historia.

En esa época es cuando IBM lanza su PC, lo hace enfocado principalmente en la venta interna para que sus ingenieros dispusieran de uno en su casa. Como es muy caro IBM no piensa que se use como un ordenador personal muy popular, por lo que para potenciar su desarrollo publica una especificación completa de la ROM y de la arquitectura. Como se lanza en el momento del boom de la informática personal, inesperadamente el PC triunfa en un momento en que IBM era el rey indiscutible, el gigante de los gigantes, dueño de entre el 80 y el 90% del mercado, con ventas de muchos millones de dólares por encima del resto, lo que era garantía de calidad.

Por eso hay una serie de empresas que lanzan los primeros compatibles con el IBM, en principio sin oposición, pero tras el boom de ventas IBM pone un pleito a algunas (especialmente Eagle, Corona y Handwell) por violar el Copywrite de la ROM, ya que sin las BIOS el MS.DOS no funciona y no sería posible ejecutar los mismos programas. Algunas como Corona llegan a un acuerdo antes del juicio, otras como Eagle reescriben el código de su BIOS. En este artículo de la revista InfoWorld se habla de algunas de estas, pero solo las americanas.

Divido esta entrada en tres partes, primero los clónicos, seguida de una mención a los numerosos compatibles que no eran clones pero ejecutaban MS.DOS decentemente, y en tercer lugar otros ordenadores que se parecian a un PC pero no lo eran.

CLÓNICOS


Esta es la lista ordenada por fecha aproximada de lanzamiento de los primeros ordenadores compatibles con el IBM PC de la historia lanzados en los años 1982 y 1983:


  • Columbia Data Products: Lanza en junio de 1982 el MPC 1600 "Multi Personal Computer", el primer compatible disponible en el mercado. Su BIOS no es una copia sino un producto de ingeniería inversa. En 1983 lanza el Columbia VP con formato de portable.
Fuente: computerarchive.org
Fuente: digitize.textfiles.com
  • Eagle Computer: Esta empresa vendia ordenadores Z80 con CP/M con buenos resultados desde finales de los setenta, en 1982 lanza el Eagle 1600 que ejecutaba MS.DOS aunque no era totalmente compatible, pero el mismo año lanza el Eagle PC que si lo era. En 1983 lanza su portable, el Spirit. Su software más popular para CP/M eran el procesador de textos Spellbinder y una hoja de cálculo, que pasaron a MS.DOS renombrándolos como Eaglewriter e Eaglecalc respectivamente. Tras el pleito de IBM reescribe el código de la BIOS y vende los chips grabados a terceros, aunque la competencia y la bajada de precios de IBM hace que sus ventas bajen y cierra en 1986.
    Fuente: www.digibarn.com
Fuente: www.theretrowagon.com
  • Dynalogic: Empresa canadiense que lanza en enero de 1983 el Hyperion PC, un ordenador portable (aunque menos que el Compaq), y cuyo hardware no era totalmente compatible, su mejor baza era su diseño, el teclado se podía guardar debajo de la unidad ocupando menos en la mesa.
    Fuente: oldcomputers.net
  • Compaq Computer: Creada en 1982 por tres altos directivos de la Texas Instruments, anuncian el Compaq Portable en 1982 pero su lanzamiento fue en marzo de 1983, causando un gran revuelo pues era un buen ordenador, fácilmente portable, se vendió muy bien, tanto que IBM lanzo su propio modelo IBM Portable, más pesado y que no tuvo tanto éxito como el de Compaq. Posteriormente lanzaron un modelo de sobremesa Compaq PC.
Fuente: www.seasip.info
  • Seequa: Lanza en 1983 el Seequa Chameleon, otro portable que incluye un Z80 y un 8086 pudiendo ejecutar tanto CP/M como MS.DOS, aunque no era 100% compatible por lo que tuvo solo críticas regulares en la prensa especializada.
Fuente: www.old-computers.com
  • Corona Data Systems: Lanza un ordenador Corona PC en 1983, y al año siguiente el Corona PPC-400, el modelo portable.
  • Fuente: www.sba.unipi.it

    Fuente: www.ricomputermuseum.org
  • Computer Devices Inc.: lanza en 1983 el DOT, otro portable que como novedad incluye una impresora en su carcasa.
  • Fuente: www.betaarchive.com
  • Logabax (posteriormente Excelvision): Esta empresa francesa lanza el PERSONA 1600, basado en el Olivetti M24 pero mucho más compatible (aunque no al 100% ejecutaba sin problema programas bajo MS.DOS).
    Fuente: forum.homecon.org
  • Normerel: Otra empresa francesa lanza el OPlite, con un diseño diferente a lo habitual.
    Fuente: www.old-computers.com
  • Vadem Inc.: Diseña un sistema que al no poder fabricar por falta de medios cede a la empresa Osborne, que lo comercializa como el Osborne 3 en USA o el Osborne Encore en otros países. Con una pantalla LCD y un peso reducido era un gran portable, con una estética diferente y reducido peso, pero por problemas de coste solo disponía de una pantalla de 16 lineas por lo que las 9 inferiores no eran visibles. Esto era una limitación importante lo que junto a algunos problemas de compatibilidad no lo hicieron muy popular.
    Fuente: oldcomputers.net
  • Panasonic: La japonesa lanza el Senior Partner, otro portable que incluye impresora en la carcasa.
  • Fuente: www.digibarn.com
  • Visual Technology: Lanza el Visual 1083 (también conocido como Commuter), un hibrido ya que admite una pantalla LCD opcional de solo 16 líneas lo que lo convierte en portátil poco práctico, pero se puede conectar a un monitor estándar de 25 líneas y ser un compatible normal.
  • Fuente: www.worthpoint.com

COMPATIBLES MS.DOS

Aparte tenemos una legión de máquinas que podían ejecutar MS.DOS aunque no eran compatibles por hardware o por la BIOS, entre estos hubo modelos de Hewlett-Packard, Digital Equipment Corporation, Olivetti, Sanyo, Tandy, Texas Instruments, Tulip, Xerox o Wang. Un buen ejemplo de este tipo de máquinas es el Olivetti M20, una maquina con un buen diseño, que usaba un procesador Z8001 pero que podía ejecutar sin muchos problemas programas bajo MS.DOS (emulaba bien al 8086 y la BIOS del PC) o CP/M. Otra gran máquina era el Apricot PC que usaba un 8086 y físicamente era muy similar al IBM PC pero no era compatible a nivel de BIOS. La francesa METROLOGIE lanza el BFM 186, especializado en CAD, que no es compatible a nivel de hardware pero si ejecuta MS.DOS. Sharp lanza uno de los primeros portátiles de la historia, el PC-5000, pero su pantalla de 5 líneas no es muy operativa bajo MS.DOS, y su compatibilidad general no es muy buena. El PORTABLE PROFESSIONAL COMPUTER (PPC) de la Texas Instruments, versión portable del TI PC, no es muy compatible, pero TI adapta muchos programas populares para él, como el Lotus 1-2-3.

En otro nivel se sitúan los que intentan unir lo mejor del momento CP/M y MS.DOS a la vez, sistemas con varios procesadores que pueden usar la misma memoria, video y periféricos, aunque en estas máquinas se decide cual se usa en el momento del arranque, ya que no pueden trabajar a la vez:

  • Fujitsu: en 1983 lanza el Micro 16s con una placa Z80 a 4Mhz y CP/M, pero su diseño le permite usar varias placas diferentes para las CPU de la época, por lo que posteriormente se lanza la placa 8086 a 8Mhz con MS.DOS. En el aire quedaron los planes de lanzar las placas para Motorola 68000, Intel 80286 o el Zilog Z8000. Su diseño lo hacía no 100% compatible a nivel de hardware, pero era un maravilloso diseño. Esta máquina es la sucesora del Fujitsu FM16Beta, también con dos placas para Z80 y 8086, pero incompatible por BIOS y hardware que ejecutaba CP/M 86 o una versión propia del MS.DOS.
El Micro 16s. Fuente: computerpreservation.ecrater.com
FM16 beta. Fuente: www.1000bit.it

  • SMT: esta empresa francesa lanza el magnífico Goupil 3 con tres procesadores, Z80, 8086 y 6809, tiene algunos problemas de compatibilidad de hardware y software pero puede ejecutar CP/M, MS.DOS y Uniflex.
  • Fuente: www.obsolete-tears.com
  • Vector Graphics: Esta empresa ya comentada en otra entrada lanza el Vector-4 que dispone de un Z80 y un 8088, pero no es muy compatible, no puede tan siquiera leer los discos de otros sistemas por usar disqueteras Hard Sector.
    Fuente: oldcomputers.net
  • Xerox: con su modelo Xerox 8/16 ofrece lo que denomina en los folletos publicitarios "lo mejor de ambos mundos", el Z80 es su principal procesador y la máquina se vende con un CP/M, el procesador secundario es el 8086 que soporta MS.DOS, pero este SO debe adquirirse como opción, además la máquina no es tan compatible como la venden.
  • Fuente: www.computinghistory.org.uk

IMITADORES


Aunque no sean ya compatibles en absoluto, siempre nos queda el juego de imitiación que intentaron dos máquinas del momento:


  • SPECTRAVIDEO: en su modelo SV 328 permite montar una caja de expansión denominada Super Expander con doble disquetera que lo hace físicamente muy similar a un PC.


    Fuente: wikipedia
  • Texas Instruments: el TI99 dispone también de una unidad externa de expansión que lo asemeja a un PC denominada Periferical Expansion Box, también con doble disquetera.

    Fuente: www.cuevadeclasicos.org

Los primeros PC compatibles [old8bits] [Leer]


Índices: El camino al O.P.       Historia de la Informática

Aunque esto lo escribí en 2018 tenía muy parado el blog, y como quiero hacer algunas entradas nuevas comenzamos por esta.


Mi querido Spectrum tuvo una larga lista de clónicos, sobre todo en la antigua URSS. Otro que le fue a la zaga en clones fue el Apple II, solo uno producido bajo licencia, el resto algunos muy compatibles y otros menos, y su principal origen fue Asia.

Pero la historia de los compatibles comienza con el IMSAI-8008, que es clonado en una serie de ordenadores con el mismo bus S-100 y un montón de slots de expansión, el mas famoso es el ALTAIR-8080, pero hay muchos como el Vector-1 del que ya he comentado su historia.

En esa época es cuando IBM lanza su PC, lo hace enfocado principalmente en la venta interna para que sus ingenieros dispusieran de uno en su casa. Como es muy caro IBM no piensa que se use como un ordenador personal muy popular, por lo que para potenciar su desarrollo publica una especificación completa de la ROM y de la arquitectura. Como se lanza en el momento del boom de la informática personal, inesperadamente el PC triunfa en un momento en que IBM era el rey indiscutible, el gigante de los gigantes, dueño de entre el 80 y el 90% del mercado, con ventas de muchos millones de dólares por encima del resto, lo que era garantía de calidad.

Por eso hay una serie de empresas que lanzan los primeros compatibles con el IBM, en principio sin oposición, pero tras el boom de ventas IBM pone un pleito a algunas (especialmente Eagle, Corona y Handwell) por violar el Copywrite de la ROM, ya que sin las BIOS el MS.DOS no funciona y no sería posible ejecutar los mismos programas. Algunas como Corona llegan a un acuerdo antes del juicio, otras como Eagle reescriben el código de su BIOS. En este artículo de la revista InfoWorld se habla de algunas de estas, pero solo las americanas.

Divido esta entrada en tres partes, primero los clónicos, seguida de una mención a los numerosos compatibles que no eran clones pero ejecutaban MS.DOS decentemente, y en tercer lugar otros ordenadores que se parecian a un PC pero no lo eran.

CLÓNICOS


Esta es la lista ordenada por fecha aproximada de lanzamiento de los primeros ordenadores compatibles con el IBM PC de la historia lanzados en los años 1982 y 1983:


  • Columbia Data Products: Lanza en junio de 1982 el MPC 1600 "Multi Personal Computer", el primer compatible disponible en el mercado. Su BIOS no es una copia sino un producto de ingeniería inversa. En 1983 lanza el Columbia VP con formato de portable.
Fuente: computerarchive.org
Fuente: digitize.textfiles.com
  • Eagle Computer: Esta empresa vendia ordenadores Z80 con CP/M con buenos resultados desde finales de los setenta, en 1982 lanza el Eagle 1600 que ejecutaba MS.DOS aunque no era totalmente compatible, pero el mismo año lanza el Eagle PC que si lo era. En 1983 lanza su portable, el Spirit. Su software más popular para CP/M eran el procesador de textos Spellbinder y una hoja de cálculo, que pasaron a MS.DOS renombrándolos como Eaglewriter e Eaglecalc respectivamente. Tras el pleito de IBM reescribe el código de la BIOS y vende los chips grabados a terceros, aunque la competencia y la bajada de precios de IBM hace que sus ventas bajen y cierra en 1986.
    Fuente: www.digibarn.com
Fuente: www.theretrowagon.com
  • Dynalogic: Empresa canadiense que lanza en enero de 1983 el Hyperion PC, un ordenador portable (aunque menos que el Compaq), y cuyo hardware no era totalmente compatible, su mejor baza era su diseño, el teclado se podía guardar debajo de la unidad ocupando menos en la mesa.
    Fuente: oldcomputers.net
  • Compaq Computer: Creada en 1982 por tres altos directivos de la Texas Instruments, anuncian el Compaq Portable en 1982 pero su lanzamiento fue en marzo de 1983, causando un gran revuelo pues era un buen ordenador, fácilmente portable, se vendió muy bien, tanto que IBM lanzo su propio modelo IBM Portable, más pesado y que no tuvo tanto éxito como el de Compaq. Posteriormente lanzaron un modelo de sobremesa Compaq PC.
Fuente: www.seasip.info
  • Seequa: Lanza en 1983 el Seequa Chameleon, otro portable que incluye un Z80 y un 8086 pudiendo ejecutar tanto CP/M como MS.DOS, aunque no era 100% compatible por lo que tuvo solo críticas regulares en la prensa especializada.
Fuente: www.old-computers.com
  • Corona Data Systems: Lanza un ordenador Corona PC en 1983, y al año siguiente el Corona PPC-400, el modelo portable.
  • Fuente: www.sba.unipi.it

    Fuente: www.ricomputermuseum.org
  • Computer Devices Inc.: lanza en 1983 el DOT, otro portable que como novedad incluye una impresora en su carcasa.
  • Fuente: www.betaarchive.com
  • Logabax (posteriormente Excelvision): Esta empresa francesa lanza el PERSONA 1600, basado en el Olivetti M24 pero mucho más compatible (aunque no al 100% ejecutaba sin problema programas bajo MS.DOS).
    Fuente: forum.homecon.org
  • Normerel: Otra empresa francesa lanza el OPlite, con un diseño diferente a lo habitual.
    Fuente: www.old-computers.com
  • Vadem Inc.: Diseña un sistema que al no poder fabricar por falta de medios cede a la empresa Osborne, que lo comercializa como el Osborne 3 en USA o el Osborne Encore en otros países. Con una pantalla LCD y un peso reducido era un gran portable, con una estética diferente y reducido peso, pero por problemas de coste solo disponía de una pantalla de 16 lineas por lo que las 9 inferiores no eran visibles. Esto era una limitación importante lo que junto a algunos problemas de compatibilidad no lo hicieron muy popular.
    Fuente: oldcomputers.net
  • Panasonic: La japonesa lanza el Senior Partner, otro portable que incluye impresora en la carcasa.
  • Fuente: www.digibarn.com
  • Visual Technology: Lanza el Visual 1083 (también conocido como Commuter), un hibrido ya que admite una pantalla LCD opcional de solo 16 líneas lo que lo convierte en portátil poco práctico, pero se puede conectar a un monitor estándar de 25 líneas y ser un compatible normal.
  • Fuente: www.worthpoint.com

COMPATIBLES MS.DOS

Aparte tenemos una legión de máquinas que podían ejecutar MS.DOS aunque no eran compatibles por hardware o por la BIOS, entre estos hubo modelos de Hewlett-Packard, Digital Equipment Corporation, Olivetti, Sanyo, Tandy, Texas Instruments, Tulip, Xerox o Wang. Un buen ejemplo de este tipo de máquinas es el Olivetti M20, una maquina con un buen diseño, que usaba un procesador Z8001 pero que podía ejecutar sin muchos problemas programas bajo MS.DOS (emulaba bien al 8086 y la BIOS del PC) o CP/M. Otra gran máquina era el Apricot PC que usaba un 8086 y físicamente era muy similar al IBM PC pero no era compatible a nivel de BIOS. La francesa METROLOGIE lanza el BFM 186, especializado en CAD, que no es compatible a nivel de hardware pero si ejecuta MS.DOS. Sharp lanza uno de los primeros portátiles de la historia, el PC-5000, pero su pantalla de 5 líneas no es muy operativa bajo MS.DOS, y su compatibilidad general no es muy buena. El PORTABLE PROFESSIONAL COMPUTER (PPC) de la Texas Instruments, versión portable del TI PC, no es muy compatible, pero TI adapta muchos programas populares para él, como el Lotus 1-2-3.

En otro nivel se sitúan los que intentan unir lo mejor del momento CP/M y MS.DOS a la vez, sistemas con varios procesadores que pueden usar la misma memoria, video y periféricos, aunque en estas máquinas se decide cual se usa en el momento del arranque, ya que no pueden trabajar a la vez:

  • Fujitsu: en 1983 lanza el Micro 16s con una placa Z80 a 4Mhz y CP/M, pero su diseño le permite usar varias placas diferentes para las CPU de la época, por lo que posteriormente se lanza la placa 8086 a 8Mhz con MS.DOS. En el aire quedaron los planes de lanzar las placas para Motorola 68000, Intel 80286 o el Zilog Z8000. Su diseño lo hacía no 100% compatible a nivel de hardware, pero era un maravilloso diseño. Esta máquina es la sucesora del Fujitsu FM16Beta, también con dos placas para Z80 y 8086, pero incompatible por BIOS y hardware que ejecutaba CP/M 86 o una versión propia del MS.DOS.
El Micro 16s. Fuente: computerpreservation.ecrater.com
FM16 beta. Fuente: www.1000bit.it

  • SMT: esta empresa francesa lanza el magnífico Goupil 3 con tres procesadores, Z80, 8086 y 6809, tiene algunos problemas de compatibilidad de hardware y software pero puede ejecutar CP/M, MS.DOS y Uniflex.
  • Fuente: www.obsolete-tears.com
  • Vector Graphics: Esta empresa ya comentada en otra entrada lanza el Vector-4 que dispone de un Z80 y un 8088, pero no es muy compatible, no puede tan siquiera leer los discos de otros sistemas por usar disqueteras Hard Sector.
    Fuente: oldcomputers.net
  • Xerox: con su modelo Xerox 8/16 ofrece lo que denomina en los folletos publicitarios "lo mejor de ambos mundos", el Z80 es su principal procesador y la máquina se vende con un CP/M, el procesador secundario es el 8086 que soporta MS.DOS, pero este SO debe adquirirse como opción, además la máquina no es tan compatible como la venden.
  • Fuente: www.computinghistory.org.uk

IMITADORES


Aunque no sean ya compatibles en absoluto, siempre nos queda el juego de imitiación que intentaron dos máquinas del momento:


  • SPECTRAVIDEO: en su modelo SV 328 permite montar una caja de expansión denominada Super Expander con doble disquetera que lo hace físicamente muy similar a un PC.


    Fuente: wikipedia
  • Texas Instruments: el TI99 dispone también de una unidad externa de expansión que lo asemeja a un PC denominada Periferical Expansion Box, también con doble disquetera.

    Fuente: www.cuevadeclasicos.org

Modificando la Dreamcast (IX): Instalación de doble BIOS en placa VA0 [old8bits] [Leer]


Entradas relacionadas:

Esta modificación está bien explicada y con buenas fotos en la página de mmmonkey, voy a repetir casi lo mismo para la placa VA0, en otra entrada lo haré para la VA1. Recordar que pinchando en una imagen se hará mas grande.

Lo primero que debemos conseguir es el material necesario, que no es caro ni difícil de encontrar en eBay, Aliexpress, etc.

  • Un chip 29LV160TMC-90 en formato SOP-44 (cuidado no comprar en TSOP-48 ni en CPSL-48, ver imagen de abajo). Es una memoria Flash CMOS de 16 Mega-bits, que puede operar como una de 2Mb a 8 bits o una de 1Mb a 16 bits, alimentada a 3'3 voltios, y con velocidad de acceso de 90ms.
  • Dos resistencias de 10K Ohmios, es suficiente con unas del 5% y de 1/4 de watio.
  • Un interruptor de dos posiciones un circuito.
  • Cable fino, para todo esto el mejor es el AWG 28 o el 30, pero el tamaño depende mas de tu pulso al soldar que de otra cosa.

Comparación de tamaños de encapsulados a la misma escala

Pongo primero una imagen general de la zona de la placa donde vamos a actuar como referencia de donde están los lugares a atacar, también hay un punto en la parte inferior ubicado cerca del conector del GD-ROM:

Placa VA0, indicados en rojo la BIOS, en azul el chip del que sacar la señal de escritura, en verde el componente al que llevar el interruptor de selección, en amarillo el punto donde sacar los 3'3 voltios.

Estos son los pasos que hay que seguir para el montaje de la doble BIOS, los voy detallando uno a uno para que veáis el orden en que se hacen las cosas por el tema de las soldaduras, si se hacen de otra forma será un poco mas complicado hacerlas:

  1. Preparar la BIOS original: Para esto es necesario levantar la pata 12 del chip, como referencia el punto en una esquina indica donde está ubicado el pin 1, debéis contar bien pues la maniobra de levantar el pin es delicada, y si se rompe es un desastre. Lo mejor es poner la punta de un alfiler debajo del pin, presionar levemente y poner el soldador encima, con cuidado podemos levantamos la pata sin dañarla. Es conveniente poner debajo un poco de cinta aislante para evitar que haga contacto con el punto del que lo hemos levantado al manipularla luego.

    Pata 12 del chip original levantada
  2. Preparar el nuevo chip: Para esto es necesario poner todos los pines perpendiculares al chip, y luego doblarlos como en los chips convencionales salvo las patas 1, 12, 23 y 44 que deben permanecer perpendiculares.
    El chip a utilizar
    Patas de un lado enderezadas
    Patas dobladas salvo las indicadas, el chip está boca abajo y el pin 1 está en el extremo inferior derecho.
    Patas dobladas salvo las indicadas, el chip está en su posición con el pin 1 en el extremo superior izquierdo

  3. Soldar el nuevo chip: Para esto es necesario ponerlo sobre el original de forma que coincidan todas las patas no levantadas, soldar con cuidado las patas extremas de uno de los lados, luego las del otro lado, con eso queda fijo y ya podemos soldar todas las patas salvo las levantadas. Para soldar no hay que aportar casi estaño, si ponemos mucho unirá dos patas y eso no lo deseamos, se mueve el soldador de abajo hacia arriba con un poco de estaño en la punta y se forma el puente que une ambas patas, repitiendo el movimiento si hace falta hasta que se unan. Siempre hay que verificar con el tester que todas las patas hacen contacto, y que no haya contacto entre patas adyacentes, salvo los pines 31 y 32 que están unidos ambos a masa, por lo que si habrá continuidad entre ellas.
    El chip posicionado sobre el otro
    Soldados los pines extremos para sujetarlos
    Pines de un lado soldados
    Pines del otro lado soldados
  4. Soldar las dos resistencias: Para esto es necesario doblar y recortar sus patas para que tomen la forma adecuada, una va en U en el chip de arriba entre las patas 1 y 12, el otro va doblado de otra forma entre el pin 12 y el 23 del chip inferior. Si las dobláis bien es mas sencillo soldarlas, pero hay que sujetarlas con unas pinzas y con mucho cuidado sobre los pines levantados que no se rompan.

    Resistencia conformada

  5. Soldar el resto de cables: Ahora soldamos el resto de cables, que van a la cara superior, saldo la señal de escritura que es difícil de soldar en el chip o en un punto cercano, es mejor soldarlo en la cara inferior.

    Puntos de soldadura de la cara superior, en rojo el D501 que activa el chip, y en amarillo R617 que es el punto de donde sacamos los 3'3 voltios
    Punto de la cara inferior marcado en rojo, es el RA515 de donde sacamos la señal de escritura. En amarillo el conector del GD-ROM como referencia.
    Hay que soldar seis cables adicionales, para aclararnos mejor pongo los puntos donde hay que soldar en el interruptor (A,B,C) en el componentes D501 (D), en el componente R617 (E), en la BIOS original (F pin 12, G pin 23) y en la nueva BIOS (H pin 1, I pin 12, J pin 44, K pin 23), y en el componente RA515 de la parte inferior de la placa.

    Puntos de soldadura en los componentes y en el esquema

    Recomiendo hacerlos lo mas justos posibles para que no molesten mucho, pero sin pasarse, dejando unos 5 milímetros es suficiente, y tras cada soldadura sujetarlos con cinta aislante para que no se muevan del sitio y evitar accidentes con los pines levantados, que son delicados y se rompen (al final pongo la solución para cuando pasa esto). La relación de cables a soldar es la siguiente, recomiendo hacerlos en este orden por comodidad dejar el interruptor para el final que es lo que mas puede molestar:

    • F y G han sido unidos por una de las resistencias
    • H e I han sido unidos por una de las resistencias
    • H - E
    • K - E
    • J - L
    • B - D 
    • A - F
    • C - I


El resultado final debe ser similar a este (la pata 23 del chip superior se rompió y le tuve que hacer el arreglo que explico a continuación):

El chip montado

En caso de accidente por rotura de una pata, cosa que puede ocurrir si no tenemos mucho cuidado y si no sujetamos cada cable con un poco de cinta aislante o cola termofusible conforme los vamos soldando, solo hay una solución. En este caso se me rompió la pata 23 del chip superior, para solucionarlo hay que usar una dremel y una muela esférica pequeña, se rebaja con cuidado el plástico hasta alcanzar el metal de la pata, luego limpiar bien la parte metálica expuesta con una cuchilla para que agarre mejor el estaño, estañar y soldar el cable.

Muelas esféricas
Se rebaja el plástico
Soldamos encima
En la siguiente entrada veremos como grabar en la nueva BIOS el Dreamshell para que arranque directamente.

Modificando la Dreamcast (VIII): Disco duro, teoría [old8bits] [Leer]


Entradas relacionadas:

La Dreamcast utiliza una unidad de CD-ROM no estándar con un poco más de capacidad, en un intento de proteger mejor los programas e impedir su copia ilegal. Como protección general lo que hacen los programas es ir a leer en la parte ampliada un dato, si no lo consiguen asumen que el disco es una copia ilegal y no cargan. Esta protección se puede omitir de dos maneras, una es usando un chip que cuando detecta que se está intentando leer esa parte del disco retorna un valor correcto, la otra mucho mas sencilla es usar un programa, cargamos el DreamShell al arrancar o desde la doble BIOS, y nos podemos saltar la protección.

NOTA IMPORTANTE: Si se dispone del disco original usar una copia de seguridad del mismo es legal, siendo conveniente para preservar los discos del desgaste o para usar unidades con el CG-ROM estropeado, pero el uso de copias de los programas sin disponer del original es ilegal y es una práctica que no recomiendo usar.

Como la unidad de CG-ROM es solo un CD-ROM modificado, es posible reemplazar el lector de una unidad estropeada por un lector de ciertos modelos, ya que el posicionamiento se realiza por los motores, pero esto conduce a ver que si la unidad es un CD-ROM, aunque use un conector diferente al estándar, debe contener las mismas señales, por lo que tras investigar el tema, los rusos consiguieron deducir cada pin para que servía, y ahora es posible instalar un disco duro en la Dreamcast, usando el DreamShell para su manejo, lo que permite almacenar en el copias de seguridad de nuestros juegos y cargarlas desde el propio disco, lo que es rápido y cómodo. Nuevamente se puede usar el cargar el DreamShell al arrancar la máquina o usar la doble BIOS.

Como por la red circula el esquema me limito a copiarlo aquí, he simplificado un poco eliminando algún dato irrelevante, he marcado en azul donde va cada cable, y debajo he puesto la relación de hilos que van a masa y los que no se conectan:

Conexión del disco duro a la DreamCast

La alimentación del disco se puede obtener de la propia consola o usar un alimentador externo. Si en lugar del estándar de 40 hilos se usa un cable de 44 hilos, ya no se usará el conector de alimentación del disco, solo es necesario conectar los hilos 41 y 42 a cinco voltios y el 43 a masa, dejando sin conectar el hilo 44.

Como todas las masas son comunes se pueden unir todas en un solo punto de soldadura, estas masas mejoran la calidad de la señal, pero como el cable será muy corto no son imprescindibles todas.

Pongo esta otra imagen mas general para que se pueda ver mejor donde van conectados los cables, recordar que es justo debajo del conector del GD-ROM de la consola:

Vista general

Modificando la Dreamcast (VII): Tarjeta SD, teoría [old8bits] [Leer]


Entradas relacionadas:

La Dreamcast dispone de un puerto serie en la parte trasera pensado para comunicar dos máquinas entre sí con un cable apropiado, que permitía jugar uno contra otro a dos jugadores, cada uno con su propia tele, lo que estaba operativo en algunos juegos como el Sega Tetris, el Ferrari F355 Challenge (que también estaba disponible en recreativas con Naomi), el Cyber Troopers Virtual-On Oratorio Tangram (conocido como el Virtual-On a secas), y en alguno más. También existía un cable que permitía intercambiar mini juegos con la NeoGeo Pocket, lo que se podía utilizar en juegos como el The King Of Fighters '99 o el Sonic Adventure. Pero como en Japón son muy aficionados al tema, el mejor uso del puerto era para conectar el accesorio Karaoke, que usaba tanto el conector lateral como el puerto serie:

Dreamcast con el accesorio Karaoke debajo.

Posteriormente se diseñó un cable para conectar la consola a un PC, al que se le llamó Coders Cable, pero como las señales de la consola con a nivel TTL (5 voltios) es necesario adaptar las señales al estándar RS-232 (+12 y -12 voltios), para lo que se usa un chip adicional, para ellos los chips mas usados son los de la empresa Maxim, el MAX232 o alguna de sus variantes, en este caso se usaba el MAX3222

Coders Cable para conectar la Dreamcast al PC y esquema del mismo


Usando un programa específico este cable permitía hacer copias de seguridad (no era muy operativo ya que por la baja velocidad costaba hasta 24 horas hacer una copia), transferir los registros de las VMU de los mandos, o cargar juegos en la consola (con la misma limitación de velocidad por lo que solo se empleaba en juegos homebrew durante la fase de pruebas).

Con la desaparición de los puertos serie en los PC, el cable se evolucionó a uno USB directamente, usando otro chip diferente que convierte las señales TTL de la Dreamcast a USB, y monta las pilas de manejo del interface.

Posteriormente un japonés, jj1odm, diseñó una conexión directa entre la consola y una unidad de tarjetas de memoria SD y un programa para su manejo, lo que hace que la máquina no necesite conectarse al PC para funcionar y mejora bastante la velocidad de manejo de los juegos, aunque sigue siendo lento ya es operativo para cargar juegos.

Esquema de conexión de la tarjeta SD a la Dreamcast

Esta modificación hoy día no tiene mucho sentido, ya que el haber desarrollado un MOD para conectar un disco duro directamente a la consola lo ha superado por capacidad y velocidad, pero es una de las modificaciones mas sencillas de efectuar.

En la máquina se montaban en la parte inferior de la placa y cerca de las salidas serie unos condensadores marcados como C605, C606, C607, C608, C609, que es necesario eliminar para mejorar la velocidad del puerto serie, pero dependiendo de la versión de vuestra placa puede que ya fueran eliminados en fábrica:

Placa con la ubicación de los condensadores, ya se han quitado C605, C606 y C607 en esta imágen

Para que funcione el lector es necesario cargar un programa de manejo de las tarjetas, para ello lo mejor es usar el DreamShell al arrancar la máquina o mejor todavía con la doble BIOS, ver las entradas correspondientes.

El esquema creo que es muy sencillo, pero lo pongo aquí en el formato de la entrada anterior para mantener la coherencia. A la izquierda el conector de la máquina, en el centro la placa que hay que desarrollar, y a la derecha el conector de la SD, 6 hilos directos y un puente. Los condensadores se deben situar lo mas cerca de la tarjeta posible, el de 47u es electrolítico, el de 0.1u es de lenteja (un 104):

Mi esquema para añadir la SD a la Dreamcast

Actualizado 24/04/18: Por error dejé una conexión entre 8 y 9 que no hay que poner, es lo que tiene cortar y pegar de otros esquemas, ya está corregido.

Modificando la Dreamcast (VI): Doble BIOS, teoría [old8bits] [Leer]


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.

Modificando la Dreamcast (V): Salidas de video, circuito explicado [old8bits] [Leer]


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.

    Modificando la Dreamcast (IV): Salidas de video, teoría [old8bits] [Leer]


    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.

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


    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

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


    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.

    Cómo escribir juegos para el ZX Spectrum. Apendice B [old8bits] [Leer]


    Í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 BEste 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 programarLo ú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 Z80Notepad++ 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áquinaAhora 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 emuladorPara 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 emuladorsi 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.

    Sigo traduciendo en la wikipedia [old8bits] [Leer]


    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.