El motor de una micro-revolución: MOS 6502

A principios de los ’70 un grupo de ingenieros de Motorola estaba convencido de que era posible obtener un microprocesador barato si se planteaba un diseño simple y un proceso de fabricación mejorado respecto a los estándares de la época. Sin contar con el apoyo de la compañía, este grupo crearía una de las familias de chips que sería el catalizador de la revolución de la computación hogareña, se trata del 6502 y sus sucesores, principal motor de las primeras máquinas de Atari y Apple, entre otros.

Chuck Peddle era uno de los ingenieros líderes en el desarrollo del procesador 6800 de Motorola, en sus reuniones con importantes clientes industriales, se dio cuenta de que la tecnología era apreciada, pero demasiado cara para ser usada en forma masiva. En conversaciones con sus clientes llegó a la conclusión de que el costo del procesador tenía que bajar de los USD$300 que costaba el 6800 a sólo USD$25 de la época, conclusión que no alegró para nada a los directivos de Motorola que no tenían ninguna motivación para buscar reducir el precio de una tecnología que ya tenía buenas ventas.

Para Chuck y otros ingenieros, se trataba de un interesante desafío técnico y sin contar con el apoyo de Motorola comenzaron a trabajar en los cambios necesarios para mejorar su procesador. Por una parte el equipo estaba descontento por el escaso apoyo de Motorola, y por otra parte la compañía estaba molesta por la porfía de Chuck y su equipo, finalmente la gota que rebalsó el vaso fue la petición formal de Motorola para detener el proyecto, lo que hizo que Chuck y su equipo decidieran abandonar la compañía, para seguir trabajando en su microprocesador por su propia cuenta.

El grupo se integró a una compañía de bajo perfil llamada MOS, en donde llegaron a un acuerdo para participar en las ganancias que podrían obtener con el nuevo microprocesador, un acuerdo que desde el punto de vista de MOS era conveniente por la baja rentabilidad que significaba en ese tiempo la producción de estos chips. Este acuerdo, junto a la renuncia en masa de Motorola era una demostración de la confianza que tenía el equipo de ingenieros en el producto que estaban desarrollando.

El 6501 demuestra a Motorola que estaban equivocados

MOS 6501

El primer procesador de la serie 6500 fue el 6501. Un hecho inédito que rodeó el desarrollo de este chip fue que Chuck lo diseñó completamente a mano y funcionó en el primer intento, cuando lo normal en esos años era pasar por un proceso de más de 10 intentos fallidos. Este procesador fue bastante escaso ya que no se hizo con el fin de ser vendido, sino como una forma de demostrar a Motorola lo equivocados que estaban, y que sí se podía construir un microprocesador útil y barato.

Uno de los factores que influyeron en la reducción de los costos de producción fue una innovación de estos ingenieros respecto al proceso de fabricación. En esos tiempos, la tasa de fallas en la producción era de un 70%, es decir, sólo 7 de cada diez procesadores fabricados iban directo a la basura. Esto ocurría principalmente debido a que el proceso consistía en crear un gran molde del procesador e ir aplicando reducciones hasta llegar al tamaño real, en estas reducciones siempre ocurrían errores y los ingenieros en MOS encontraron una forma de aplicar correcciones al molde en cada reducción, logrando con este cambio una tasa de éxito de un 70%, es decir, 7 de cada 10 procesadores resultaban perfectos.

El 6501 era totalmente compatible con las placas del Motorola 6800 y podía ser usado como un reemplazo directo a nivel de hardware, lo que motivó una demanda de Motorola por supuesta violación de patentes de sus ex-ingenieros. Supuesta porque en realidad lo que estaba en juego era la propiedad intelectual, ya que se estaba aplicando el conocimiento de tecnologías que en realidad no estaban patentadas. Aún así, se llegó a un acuerdo con Motorola y se pagó una suma de unos USD$200.000 para detener el pleito.

MOS presenta el 6502 desafiando a Intel y Motorola

Jobs y Wozniak en 1976

El problema con Motorola provocó la creación del 6502, se trataba de un 6501 pero incompatible con el hardware diseñado para el Motorola 6800. El 6502 debutó en WestCon 1975 al precio exacto de USD$25 que se habían propuesto. Al principio los asistentes pensaron que se trataba de algún tipo de estafa, ya que no se concebía crear un procesador tan económico, pero en el mismo día Motorola e Intel bajaron el precio de sus procesadores 6800 y 8080 de USD$179 a sólo USD$69, validando al 6502 que se vendió por cientos.

En esos años, Commodore que estaba en el negocio de las calculadoras, estaba pasando por aprietos económicos ya que el negocio iba en bajada y la competencia era cada vez más fuerte. Como una estrategia para cambiar el rumbo del negocio, compraron a MOS que también estaba pasando por aprietos pero que contaba con la tecnología que ellos necesitaban.

Para Chuck, el negocio de los microprocesadores estaba orientado al mundo industrial, sin embargo mientras visitaba a distintas empresas para tratar de vender el 6502 le dijeron que un par de chicos estaban tratando de usar su procesador para construir un computador personal. El hecho le pareció simpático y accedió a ir a ayudarles a su garage, se trataba nada más y nada menos que de Steve Jobs y Steve Wozniak quienes trabajaban en su primer computador Apple. Chuck pensaba en masificar el 6502 en las industrias y para nada sospechaba que el gran mercado estaba en los computadores personales. Ni en un millón de años! Según sus propias palabras.

El legado del 6502

Atari 800XL

El 6502 es un procesador de 8 bits, esto quiere decir que todas sus operaciones internas maneja números entre 0 y 255, por otra parte posee un bus de direcciones de 16 bits que le permite acceder hasta 64KB de memoria. El 6502 normalmente operaba con un reloj entre 1 y 2 Mhz pero dada una misma frecuencia de reloj era capaz de funcionar mucho más rápido que el 6800 de Motorola, gracias a su astuto diseño que reducía el número de ciclos de reloj necesarios para ejecutar una instrucción. Como pueden ver, ya desde esos años la frecuencia de reloj del procesador se podía prestar para malentendidos.

Entre los computadores que se construyeron en torno al 6502 encontramos el Commodore PET, VIC-20, Apple I y II, BBC Micro y toda la linea de computadores Atari de 8 bits (XL, XE, 400, 800, etc), incluso en otro tipo de dispositivos como la unidad de disco 1541 de Commodore.

En la pionera consola Atari 2600 se utilizó una versión económica del 6502 conocida como 6507, versión que contaba con menos pines y sólo podía acceder a 8KB de memoria. El Commodore 64 también usó un 6502 modificado, se trataba del 6510 en donde se agregó funcionalidades simples que normalmente se implementaban con circuitería adicional.

Sin duda una de las variantes más interesantes del 6502 la encontramos en la consola Nintendo Entertainment System (NES), en donde se usaba un 6502 en que funcionalidad no utilizada en la programación de videojuegos fue reemplazada por generación de sonido, manejo de joysticks y sprites, convirtiendo al procesador en un conveniente sistema integrado en un chip (system on a chip).

El 6502 fue un microprocesador que continuó su legado en el mundo de los 16 bits. Una versión de 16 bit conocida como 65C816 es el corazón de la consola Super Nintendo. También encontramos una versión especial del 6502 con modificaciones orientadas a videojuegos en la consola TurboGrafx-16/PC-Engine, en donde se podía cambiar la velocidad del procesador hasta llevarlo a unos 7Mhz.

Como se puede ver, el 6502 estuvo presente en al menos tres frentes de los inicios de la computación hogareña, desde el lado hi-end en Apple hasta computadores menos ambiciosos pero tremendamente exitosos como los de Commodore y Atari. Lo que impresiona aún mas es ver que el mismo procesador que iniciaba la computación personal fue el que inició el mercado de los videojuegos hogareños con el Atari 2600, y tras la debacle de Atari en 1983 que casi termina con la industria de los videojuegos, vuelve en gloria y majestad en el NES de Nintendo para iniciar un camino sin retorno en este mercado.

Links:
MOS Technology 6502 (Wikipedia)
The rise of MOS Technology & the 6502 (Commodore.ca)

En memoria de Chuck Peddle (R.I.P.)

Publicado originalmente en la serie Bicentenario de FayerWayer. Septiembre, 2019

Programando en los ’90

Programar siempre me ha sido entretenido pero difícil. No me malentiendan, puedo lograr buenos resultados pero eso no implica que sea fácil, sólo que soy lo suficientemente porfiado para seguir adelante hasta lograr lo que quiero hacer. El poder convertir en real algo que antes sólo existía en la imaginación es una de mis principales motivaciones, y si esto plantea algún desafío técnico interesante, mejor aún.

Creo que uno de los motivos por los que ya no me entusiasma por ejemplo entrar a la programación de videojuegos, es que ahora tienes libertad para hacer cualquier cosa, y básicamente lo que se trabaja es el gameplay y el contenido. A mi en realidad lo que me llamaba la atención era el desafío técnico, como por ejemplo tratar de hacer un port de un juego de arcade al Atari (800): Cómo usar adecuadamente los 4 colores por línea, o los cuatro canales de sonido, o sacar el jugo a su CPU de 1.79Mhz con apenas 3 registros.  Recuerdo que podía pasar una tarde entera trabajando en una «rutina» de assembler en un cuaderno hasta llegar a su mejor versión.  Era una época en que una simple optimización podía significar que algo fuera factible o no.

 

2017-04-20 22.06.15
Reproductor de música FSTR

 

Bueno, eso era en los ’80 y reservaré ese relato para un próximo articulo de Prince of Persia para Atari.  Ahora vamos a ir «no tan lejos» pero sí a una época que ya no existe y que creo que sería difícil imaginar para quien no la vivió, y para los que la vivimos se nos ha ido olvidando con el tiempo.  Ahora es tan simple aprender algo que no nos acordamos de cómo se hacían las cosas cuando no existía stackoverflow, no había a quién preguntar y peor aún, no había documentación de ningún tipo.

Internet a inicios de los ’90

La primera mitad de los ’90 es una época que recuerdo con mucho cariño, se comenzaba a hacer accesible tener computadores más potentes y comenzaba a haber algo de información disponible para aprender a programarlos, por ejemplo en la biblioteca de la UTFSM podías encontrar algunos libros de Intel sobre la programación x86 y lo más importante, algo de código fuente para mirar en algunos rincones de Internet.

 

Intel 286 programming
iAPX 286

 

A ojos de hoy eso suena muy natural, pero era muy diferente a lo que tenemos hoy en día.  De partida el acceso a Internet no existía en las casas, sólo en las  universidades,  y siendo mechón como yo… ni siquiera podías usar internet en la universidad.  Entonces, no era llegar y escribir en un buscador lo que andabas buscando, no señor! No había tal buscador, ni siquiera tenías un navegador, la información estaba principalmente en servicios de grupos de noticias (usenet / newsgroups) – imaginen algo como un foro universal de internet de sólo texto – y sitios de descarga por ftp que se usaba por linea de comandos.  Para buscar, existía una aplicación llamada Archie que buscaba archivos, entonces sólo si el sitio contaba con un índice decente, podías llegar a encontrar algo.

 

tin
Newsgroups en Usenet (via TIN)

 

Ahora, como Internet no era tan grande como en la actualidad, los sitios que tenían información sobre programación de PC eran pocos y por lo tanto muy conocidos. Había un repositorio en especial que estaba replicado en varios servidores de FTP, se llamaba Simtel y era un paraíso.  No sólo había código fuente para mirar, sino que también documentación! Todo eso disponible al alcance de un comando GET.  El problema era que no podías llegar a ese punto si el acceso a esos sitios estaba bloqueado o peor aun, eras mechón como yo.

Siendo mechón en la UTFSM a inicios de los ’90

Y es aquí donde creo que por primera vez hablaré en público de las historias no contadas de mis tiempos en la UTFSM, cuando sabías que el conocimiento estaba disponible, sólo que no lo podías alcanzar. Esto era más o menos entre 1993 y 1994, y la UTFSM pagaba por tráfico internacional por lo que éste estaba permitido sólo para alumnos que tuvieran ramos o actividades que lo justificaran. El acceso para el resto de los alumnos era sólo a las réplicas nacionales en donde estaban los newsgroups (saludos a chile.comp.pc), pero no estaba Simtel.  Entonces algo había que hacer.

Aparte de no tener acceso a Simtel por estar en redes internacionales (que divertido suena eso ahora), estaba el inconveniente de que si llegabas a conseguir algo de información, sólo te podías llevar una copia en la mente, porque no podías pasar esa información a diskettes – ni hablar de pendrives, aun faltaban varios años para que siquiera inventaran el puerto USB. El único acceso era un terminal de texto monocromo en donde al menos podías descomprimir y leer los archivos in situ. Dado el estado de la tecnología todo era archivo de texto, incluso las revistas, así que bastaba con eso.  Aún así, persistía el problema de llegar a Simtel.

 

Terminal-wyse50
Terminal de texto Wyse 50

 

Los laboratorios de «investigación»

Y es aquí en donde aparecen los amigos de siempre: Luis Cueto, Max Celedón, Cesar Hernández.  Ellos por estar en cursos superiores tenían otros amigos que tenían acceso a otros laboratorios, en donde se hacía «investigación» y por lo tanto sí tenían acceso a los nodos internacionales.  Entonces, desde ahí se podía llegar a Simtel, pero tampoco había forma de llevarse archivos a la casa para estudiarlos con calma, ya que eran terminales de IBM conectados a un mainframe, al que sólo tenía acceso un grupo selecto de operadores – capa blanca incluida – a los que tenías que llamar con un timbre para que te mataran un proceso si éste se caía… cosa que ocurría habitualmente dado el número de veces que se escuchaba sonar el timbre famoso.

 

2bb5fd362fb409376af3b0108f19982f
IBM: Nunca los vi, pero es para hacerse una idea

 

Y es aquí donde entra a jugar la audacia de Max. La maquinaria de descarga de información funcionaba de la siguiente forma:  Max, Luis o César se conseguían una cuenta de IBM con algún amigo «investigador», eso nos permitía usar ese laboratorio para llegar a Simtel siempre y cuando estuvieras dispuesto a suplantar presencialmente al verdadero dueño de esa cuenta. Yo no era de los valientes puesto que era muy joven para darme cuenta de que los usuarios de ese laboratorio no se caracterizaban por sus habilidades sociales, por lo que difícilmente te preguntarían el nombre. Esas cuentas iban muriendo pero Max siempre aparecía con una nueva, cuentas con nombres como i5elo200 o i5esp101 eran algunas de las regalones, e incluso Max tuvo una propia más tarde, i5mceled.

 

Captura de pantalla 2017-04-20 22.28.05
Inicios en la comunidad MSX con cuenta de «alguien»

 

Una vez encontrados y descargados los archivos en ese laboratorio IBM, tenías que pasarlo a tu cuenta Unix en el laboratorio que no tenía acceso a los nodos internacionales, pero sí tenían disketteras. Transferir los archivos era fácil porque esos laboratorios estaban conectados, y mientras no revisaran los logs del servidor ftp de Unix no habría problema.  Una vez con los archivos en la cuenta, venía el paso final que era pasar esos archivos a diskette.

Pidiendo favores a los verdugos

El último paso era pasar los archivos a diskette, y el más complicado porque tenías que pedírselo a una persona. Y no era a cualquier persona. En una zona especial del laboratorio Unix (labsw para los amigos), había un grupo de unas 4 personas que estaban tras un vidrio, intocables, omnipotentes, omniscientes. Esa división no era antojadiza, eran los únicos con acceso a todos los nodos de internet y a las estaciones de trabajo Unix de la época. Mientras los alumnos regulares como uno usaban un terminal de texto, ellos usaban equipos con 128MB de RAM, pantallas de 21 pulgadas, discos duros gigantes y mouse con puntero láser, cuando lo normal en las casas era tener 1MB de RAM, pantalla de 14 pulgadas y mouse con bolita.  Sí señor, ellos eran unos elegidos – literalmente porque había que postular al cargo – y tenían el poder de cerrar tu cuenta en cualquier momento (omnipotente) y saber todo lo que estabas haciendo (omnisciente).

 

Sun SPARCstation

 

Sí, a ellos tenías que pedir que te copiaran a diskette los archivos que obtuviste desde nodos prohibidos, usando cuentas que no eran tuyas, suplantando a personas que ni siquiera conocías. Y algunos de ellos eran famosos por ser de malas pulgas, con varias víctimas a quienes se les cerró la cuenta por mucho menos. Siempre recordaremos con cariño al famoso Arcadia, de quien no daremos detalles para proteger su verdadera identidad.

Pero esto no era problema para Max, a su modo de ver las cosas, bastaba con decir que necesitabas copiar una tarea de tu cuenta Unix a un diskette y listo.  Su apuesta era que el ayudante no se iba a dar el trabajo de revisar los archivos, sólo era cosa de usar los nombres adecuados, y así era como el archivo tarea.zip podía incluir los artículos de optimización y gráficos de Michael Abrash y nadie se enteraría.

Y así fue!

Con el tiempo, comenzamos a descargar información de hardware de PC para aprender a programar la VGA, Adlib, Soundblaster, llamadas a la BIOS, llamadas a DOS, luego comenzó a surgir información más interesante aún como partes no documentadas de la VGA, el famoso ModoX, smooth scrolling, algoritmos de sonido, hacking, se pueden imaginar el paraíso que eso significaba para alguien que antes sólo contaba con el manual de usuario del PC.

Y como sucede muchas veces – sino pregúntenle a Penta y SQM – con el tiempo agarramos confianza y comenzamos a descargar tablaturas, demos (de la demoscene), juegos shareware, música en formato MOD, MIDI… todo era tarea. Tarea, tarea, tarea.

Imagen de previsualización de YouTube

La bienvenida

Hasta que un día, Max llegó al laboratorio Unix y ahi lo estaba esperando Arcadia junto al resto del olimpo. Pero no estaban solos, ya que con ellos se encontraba el ser superior (literalmente): Horst von Brand dueño y señor del laboratorio Unix, fundador y prócer de ése y otros imperios. Si Horst quería hablar contigo era porque habías hecho algo muy bueno, o muy malo. Siendo éste último nuestro caso.

Tal honorable bienvenida tenía un propósito claro y preciso: Presentar ante Max los logs de transferencia de todas las «tareas» a la fecha, que ya sumaban megas y megas internacionales, multiplicados por su equivalente monetario.  Según cuenta la historia, gran porcentaje del millonario costo por transferencia de datos de toda la universidad se debían a nuestras «tareas».

 

227518_1030506880700_7197_n
Con Max en el verano de 1994

 

El resto de la historia sólo la conoce Max y el comité de bienvenida.  Por supuesto, su cuenta fue cerrada y a la larga la mía también, pero por otros motivos que podré contar en un nuevo post.

i5esp101@loa, i5meceled@loa, hydefus@inf, human@inf nunca los olvidaremos.

Y qué hice con toda la información descargada? Todo lo que pude y quise! Desde algunos experimentos como rutinas de reproducción de mods que nunca fueron utilizadas, hasta una aplicación para reproducir músicas de MSX (computador de 8 bits) en nuestros PCs.  Incluso las rutinas de sonido que pude ver en esa época me ayudaron años después a hacer DeFX – que más tarde me llevó a tvnauta – y después resucitó como MusicTrans.  Las partes en C de MusicTrans y RetroX le deben mucho a lo que aprendí en esos años también.

Cuando uno recuerda lo que costaba aprender a programar en ese tiempo comparado con lo que tenemos hoy, no hay excusas si quieres hacer algo interesante, las respuestas están al alcance de un click!

PD: Muchos detalles han sido omitidos para facilitar la lectura. Algunos eventos o especificaciones pueden ser no tan precisos, lo serían si no hubiese esperado 20 años para escribir este post.

Como teaser, les dejo un demo de la aplicación de música, a la que le dedicaré un próximo artículo.

Imagen de previsualización de YouTube

Cargador de signo de exclamación en Atari – Decodificado

El famoso signo de exclamación

Cuando los computadores Atari recién llegaron a Chile, practicamente todos los juegos que se podían encontrar en cassette usaban el famoso cargador del signo de exclamación.  Se iniciaba la carga de cassete encendiendo el computador con las teclas OPTION + START presionadas, sonaba un beep, se presionaba una tecla y después de unos 10 segundos sonaban unos 6 «pitos» y aparecía un signo de exclamación en la parte inferior derecha de la pantalla, luego pasaban unos 10 segundos más y comenzaba a sonar la carga del juego en sí, a veces amenizada por alguna simple pantalla de presentación.

Si algo fallaba durante la carga, se debía comenzar desde cero, por lo que toda la ansiedad acumulada durante los varios minutos de carga se veía absolutamente recompensada cuando finalmente aparecía el juego en pantalla.  Posteriormente aparecieron mejores sistemas de carga aplicando «turbo» (mayor bitrate) y un mecanismo de recuperación de errores que permitía continuar la carga desde el punto de falla y así no comenzar todo desde cero.  Estos sistemas de carga avanzados merecen un artículo propio, lo que vamos a ver acá es el cargador original del signo de exclamación.

Básicamente estos sistemas de carga funcionaban así: Al iniciar el sistema, la tecla OPTION presionada indicaba al sistema operativo del ATARI que desconectara la ROM del lenguaje BASIC (su espacio era ocupado por muchos juegos), y la tecla START indicaba que se quería hacer un boot desde cassette.  Cuando el usuario presionaba una tecla después del beep, el sistema operativo del ATARI cargaba un archivo y lo ejecutaba.  En el caso de practicamente todos los juegos, este archivo era un cargador un poco más inteligente que se encargaba de cargar el juego en un formato más flexible (XEX).  Si vieramos la cinta como un esquema, sería así:

| ------- CARGADOR EN FORMATO BOOT DE ATARI -------|---------- JUEGO EN FORMATO XEX ----------|
| CARRIER - BLK1 - BLK2 - BLK3 - BLK4 - BLK5 - EOF | CARRIER - BLK1 - BLK2 - ... - BLKn - EOF |

Siempre quise saber exactamente qué hacía el código de este cargador tan simple, y por qué era tan grande (unos 640 bytes). Gracias al usuario AsCrNet de AtariWare que me envió un dump del cargador pude finalmente decodificarlo y ver qué hacía.

Continue reading «Cargador de signo de exclamación en Atari – Decodificado»