Destacado

The 20c – Episodio 2 – El CLOCK

Introducción 

En este episodio vamos a descubrir el CLOCK de nuestra computadora 20c. Este sistema se encarga de sincronizar todos los chips y componentes de nuestra máquina emitiendo una señal regular en el tiempo.

Vamos a estudiar todos sus subsistemas y distintos modos de clock que poseemos, luego vamos a recrear esta placa PCB desde cero y terminaremos con un experimento que nos permitirá ver como usar nuestro clock paso por paso para poder avanzar instrucción por instrucción en nuestra computadora. 

Descripción general del CLOCK

Nuestra Placa de CLOCK sirve para marcar el ritmo en el cual todo pasa en nuestra 20c, posee tres relojes diferentes:

  • Reloj regulable en velocidad o de pulso contínuo
  • Reloj paso a paso
  • Reloj fijo a 1Mhz

Cuando hablamos de reloj nos estamos refiriendo a un circuito con la capacidad de emitir pulsos. Con estos tres relojes vamos a poder realizar todos los experimentos de la 20c. Este reloj está basado en el que construyó Ben Eater para su serie de 8 bit computer, si no la vieron es excelente y pueden ir a las referencias de este artículo para ver los links a la misma.

Reloj regulable en velocidad o de pulso contínuo

Descripción

Nuestro circuito consiste en un reloj regulable en velocidad, esto nos va a permitir mediante el uso de un potenciómetro regular que tán rápido queremos que nuestro reloj emita pulsos.

El circuito consiste en un timer realizado con un integrado NE555 y conectado de forma a-stable o inestable lo que hace que este prenda y apague, la velocidad con la que va a prender y apagar esta regulado con un potenciómetro.

Conexión

Para este tipo de conexión conectaremos los pines del 555 de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • Los pines  DISCHARGE 7 y THRESHOLD 6 se conectan juntos a través de una resistencia en nuestro caso son dos resistencias el potenciómetro R3 de 1 Mega ohm y la resistencia de R4 de 1K ohm. Uso dos resistencias para que en caso que el potenciómetro llegue a cero nunca tenga 0 resistencia.
  • El pin 7 de DISCHARGE también se conecta a 5v a través de un resistencia R1 de 1K ohm.
  • El pin 6 de THRESHOLD también se conecta al pin de TRIGGER 2 directamente.
  • El pin TRIGGER 2 se conecta a ground a través de un capacitor electrolítico C2  de 1 uFaradios (micro faradios).
  • El pin RESET 4 lo conectamos a +5v para que no se active. Si el pin 4 es 0v, se resetea el Flip-flop.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nFaradios (nano faradios). Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la izquierda) y un Flip-Flop (rectángulo).

El capacitor C2, las resistencias R1, R3 y R4 son las que regulan la frecuencia de los pulsos.  

El capacitor se va a cargando a través de las resistencias y cuando llega  a acumular más de ⅓ del voltaje que usamos, en este caso 1.6v ya que el circuito tiene 5v, el primer comparador se activa y se prende el Flip-Flop produciendo el pulso de salida en +5v. 

Cuando el capacitor llegue a ⅔ del voltaje el segundo comparador va a activar el Reset del Flip-Flop descargando el capacitor a través del pin 7 DISCHARGE y dando la salida del pin OUTPUT a 0v.

Cuando el capacitor se descarga hasta 1.6v el comparador 1 vuelve a activar el SET del Flip-Flop y prende el OUTPUT nuevamente a +5v.

Al reducir la resistencia R3 moviendo el potenciómetro vamos a ir aumentando la frecuencia de los pulsos ya que el capacitor se cargará antes. 

La frecuencia de los pulsos se calcula con la fórmula:

Frecuencia = 1,440 / ((R1+(2*R2))*C1) con R1 y R2 en kilo ohms y C1 en uF (microfaradios)

En nuestro caso R1 es la resistencia R1 de 1K y la resistencia R2 de la fórmula está compuesta por la suma de las resistencias R4 y R3.  La resistencia R1 tiene un valor de 1k ohms. La suma de las  resistencias R4 y R3 van desde 1k ohms a 1001k ohms ya que el potenciómetro es de 1 mega ohms.

Aquí podemos una regulación de 133 Hz para el Reloj de pulso en nuestro osciloscopio:

Para más detalle de cómo funciona el circuito en forma astable les incluyo el datasheet de Texas Instrument sobre el mismo en las referencias, también les incluyo un link a un video de Ben Eater que lo explica en las referencias.

Reloj paso a paso

Descripción

Nuestro circuito consiste en un reloj paso a paso que nos permite avanzar a nuestro ritmo a medida que presionamos un botón, cada vez que presionamos este botón se emite un pulso de reloj.

El circuito consiste en un timer realizado con un integrado NE555 y conectado de forma mono-stable lo que hace que este prenda por un tiempo fijo luego de que el botón es presionado. 

Si sólo usara el botón sin un 555, al presionar el mismo muchas veces, los contactos de metal internos rebotan y me daría muchos pulsos en lugar de sólo uno, entonces si quisiera avanzar el clock paso a paso quizá a veces me dé dos o tres pulsos seguidos por el rebote/bouncing. Al usar un 555 en modo monoestable este va a soltar un sólo pulso por el pin de OUTPUT.

Conexión

Para este tipo de conexión conectaremos los pines de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • El pin 7 de DISCHARGE lo conectamos al pin 6 de THRESHOLD
  • El pin 2 de TRIGGER se conecta en forma pull-up a una resistencia R5 de 1k ohm que está conectada a 5 volts para dejarlo HIGH y también lo conectamos al botón KEY1 el cuál está conectado también a ground.
  • El pin 7 de DISCHARGE y el pin 6 de THRESHOLD también están conectados a una resistencia R9 de 1 Mega ohm y a un capacitor C1SMOOTHINGCAPACITOR2 de 100nF. 
  • El pin RESET 4 lo conectamos a +5v para que no se active. Si el pin 4 es 0v se resetea el Flip-flop.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nF (nano faradios) .Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la izquierda) y un Flip-Flop (rectángulo).

Al prender nuestro circuito el mismo se encuentra con el OUTPUT apagada ya que en el circuito COMPARATOR 1 el voltaje que trae el pin 2 TRIGGER es 5v lo cual es mayor que ⅓ del voltaje de todo el circuito de 5v que sería 1.67v. Todo el circuito se encuentra descargando a GROUND internamente a través del pin 7 de THRESHOLD.


El botón KEY1 que está conectado en modo pull-up va a hacer que el pin 2 de TRIGGER pase de +5v a 0v al ser pulsado. Esto va a llevar el COMPARATOR 1 compara 1,67v con 0v del pin TRIGGER y como 1,67 es mayor, va a activar el flip-flop y dar un pulso a través del pin 3 de OUTPUT.

Al activar el output se desactiva el transistor del pin DISCHARGE con lo que este deja de descargar a GROUND y comienza a cargarse el capacitor C1SMOOTHINGCAPACITOR2 a través de la resistencia R9 cuando este capacitor supere el valor de ⅔ del voltaje total o 3.3v el COMPARATOR 2 va a activarse reseteando el flip-flop y cortando el pulso. Por eso la duración del pulso está determinado por la resistencia R9 y el capacitor. 

El capacitor se descarga inmediatamente y nuestro circuito va a estar listo para realizar un nuevo ciclo una vez que volvamos a presionar el botón.

Los valores que utilizamos van a ser que el pulso dure una décima de segundo con lo que cualquier rebote que suceda durante esa décima de segundo vamos a poder eliminarlo con este método.

El tiempo que el pulso se mantiene prendido se calcula con la fórmula:

Tiempo = R ohms * C farads* 1.1 con R en kilo ohms y C en microfaradios. 

En nuestro caso R9 es la resistencia R de 1 mega ohm (1000 k ohms) y el capacitor C2 de 100 nF (nano faradios). Si hacemos los cálculos nuestro pulso dura:

T = 1000000  ohms * 0.0000001 faradios * 1.1 = 0,11 segundos o una décima de segundo.

T= 1000 k ohms * 0.1 micro faradios * 0,0011 = 0,11 segundos o una décima de segundo.

Aquí podemos ver cómo se registran los pulsos en nuestro osciloscopio cada vez que pulsamos el botón:

Para más detalle de cómo funciona el circuito en forma monostable les incluyo el datasheet de Texas Instrument sobre el mismo en las referencias.

Reloj a 1 Mhz

Descripción

Este circuito es muy simple el mismo tiene un cristal de cuarzo con un oscilador que vibra a 1 Mhz y un switch con el cual podemos prenderlo o apagarlo dependiendo si lo estamos usando o no. El mismo va a emitir en forma contínua 1 millón de pulsos por segundos.

El circuito consiste en un oscilador de cristal que emite pulsos a la frecuencia de 1 Mhz. El mismo opera a 5 Volts, cuando el cristal recibe este voltaje se expande y contrae a una velocidad fija determinada por el tamaño del cristal y cómo este fue cortado.

Conexión

El cristal se conecta en su Pin de output directamente al Header de Salida de OUT_1MHZ, Incluimos un switch de power off conectado a la conexión de 5v del crystal para apagarlo cuando no lo usemos y que este no genere ruido electrónico a los otros dos relojes.

Funcionamiento

La señal nativa de un cristal de cuarzo no es una onda cuadrada sino que es triangular, el mismo integrado posee un oscilador que transforma esa onda triangular o sinusoidal analógica del cristal de cuarzo en la onda cuadrada que espera la computadora para funcionar.

Para utilizarlo sólo conectamos al header OUT_1MHZ al integrado que necesite una señal de 1Mhz de reloj.

Aquí podemos ver cómo se registran los pulsos en nuestro osciloscopio  de forma fija y a 1 millón de veces por segundo:

Para más detalle de cómo funciona el cristal les incluyo el datasheet de sobre el mismo en las referencias.

Circuito anti bouncing o anti rebote

Descripción

Cuando pulsamos un botón o accionamos un switch mecánicamente el contacto no siempre es perfecto y pueden producirse muchos mini contactos denominados rebotes o bounces. Para evitar que al elegir entre la función de reloj de pulso o continuo se produzca este rebote utilizamos un circuito de anti-bouncing.

Este consiste en un circuito  realizado con un integrado NE555 y conectado de forma bi-stable lo que hace que este se mantenga con su salida en un valor o en otro pero no que no oscile entre ambos. 

Conexión

Para este tipo de conexión conectaremos los pines de la siguiente forma:

  • El pin 1 y el 8 se conectan a GROUND y a +5V respectivamente
  • El pin TRIGGER 2 lo conectamos a switch de 2 estados y a una resistencia R12 de 1K ohms que está conectado a +5v.
  • El pin RESET 4 lo conectamos a switch de 2 estados y a una resistencia R10 de 1K ohms que está conectado a +5v.
  • El pin 6 de THRESHOLD lo dejamos conectado a GROUND.
  • El pin 7 de DISCHARGE lo dejamos sin conectar.
  • El pin 5 CONTROL lo conectamos a GROUND a través de un capacitor C1 de 10 nF (nano faradios). Esto nos va a permitir mejorar la forma de la onda cuadrada de los pulsos.
  • La Salida del circuito son los pulsos en sí mismos que salen por el pin 3 de OUTPUT.

Funcionamiento

El 555 posee internamente dos comparadores (triángulos a la izquierda) y un Flip-Flop (rectángulo).

El botón SW1 es quien regula en qué estado está a través de conectar a ground el pin TRIGGER o el pin RESET. 

Si el pin TRIGGER no está conectado a GROUND a través del switch SW1 se encuentra en +5v por estar conectado en forma pull-up, por lo tanto el COMPARATOR 1 del flip-flop tiene en su entrada del pin TRIGGER +5v y como este valor es mayor que ⅓ del voltaje total de 5v o sea 1.67v el mismo está desactivado. Si conectamos a GROUND el pin TRIGGER a través del switch SW1 tenemos que 1.67v es mayor que 0v y por esto se activa al flip-flip en el pin SET y este causa que el pin de OUTPUT quede siempre activo.

Como el pin Threshold está en 0v que es menor a ⅔ del voltaje total de 5v  o sea 3.3v nunca va activar al COMPARATOR 2.

Si el pin RESET no está conectado a GROUND a través del switch SW1 se encuentrá en +5v por estar conectado en forma pull-up, y no hace nada. Al presionar el switch y conectarlo a GROUND activa la entrada R1 de reset del flip-flop y se desactiva el mismo cortando la salida del pin OUTPUT.

La duración del pulso es lo que dejemos cerrado o abierto el SW1 en la posición que queramos. Este switch sólo no selecciona si usar de output el Reloj de pulsos contínuos o el Reloj paso a paso sino que para eso usaremos Lógica TTL o transistor a transistor junto con el output de este circuito.

Lógica TTL

Descripción

Vamos a utilizar 3 compuertas

Conexión

Compuerta AND

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • El pin 1 conecta la salida del NOT del inversor HLT o HALT
  • El pin 2 conecta el OR de la salida del Reloj Paso a paso y el Reloj regulable en velocidad o de pulsos contínuos.
  • El pin 3 es la salida con la señal de reloj o CLK.
  • Los pines 4,5 y 6 no están conectados.
  • El pin 13 OUT_POT la salida del Reloj de Pulsos se combina con el pin 12 OUT_BI la salida del 555 que selecciona el reloj de pulsos contínuos o el paso a paso. El pin 11 es la salida ya filtrada del reloj de pulsos AND_OUT_POT_BI_31
  • El pin 9 OUT_PUSH  la salida del Reloj paso a paso se combina con el pin 10 NOT_OUT_BI la salida del 555 que selecciona el reloj de pulsos o al paso a paso cuando vale cero invertida para que valga 1. El pin 8 es la salida ya filtrada del reloj paso a paso AND_OUT_NOT_BI_PUSH_62

Compuerta NOT

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • Los pines 1,2,3,4,5,6 no están conectados
  • El pin 13 OUT_BI provoca la seña inversa NOT_OUT_BI para tener un valor 1 que combinar con AND para el caso del reloj paso a paso.
  • El pin 11 HLT tiene la señal de HALT que se invierte en el pin 10 NOT_HLT_810
  • El pin 9 CLK tiene la señal de reloj que se invierte en el pin 8 NOT_CLK

Compuerta OR

  • El pin 14 recibe 5v de alimentación y el pin 7 0v de GROUND
  • El pin 13 recibe la salida de la compuerta and AND_OUT_POT_BI_31 y la combina con la  salida de la compuerta and AND_OUT_NOTBI_PUSH_62 dando lugar a la salida OR_OUT_39

Conexión Headers

  • El pin 1 del header OUT_555 está conectado a ground
  • El pin 2 HLT está conectado a la compuerta NOT en su pin 11
  • El pin 3 de la compuerta AND está conectado a los pines 2, 3 y 4 del header OUT_555
  • El pin 8 de la compuerta NOT está conectado a los pines 6,7 y 8 dando una señal de clock inversa.
  • Los pines 1,2,3,4,5,6,7,8 del header OUT_1MHZ están todos conectados a la salida del oscilador de 1Mhz.
  • El Led está conectado a la señal de reloj CLK del header OUT_555, el mismo posee una resistencia de 220 ohms para que este no se queme.

Funcionamiento

Las compuertas AND, NOT y OR tienen 3 funcionalidades bien distintas las cuáles vamos a observar viendo su tabla de verdad.

AND

Necesita que los dos inputs sean HIGH o 5v para dar de resultado un HIGH o 5v.

NOT

Invierte el resultado de su input si recibe un HIGH o 5v da como resultado un LOW o 0v

OR

Necesita que alguno dos inputs sean HIGH o 5v para dar de resultado un HIGH

La señal del Reloj de Pulso llamada OUT_POT es conectada en un AND con la señal saliente del 555 biestable OUT_BI cuando ambas son 1 esto genera la salida AND_OUT_POT_BI_31 que representa el valor del pulso ya filtrado para el reloj de pulsos contínuos.


La señal del Reloj paso a paso llamada OUT_PUSH es conectada en un AND con la señal saliente del 555 biestable OUT_BI cuando está apagado, pero como es un AND necesitamos que cuando esté desconectado tengamos un 1 en lugar de un cero por eso lo pasamos antes por el inverter y generamos la señal NOT_OUT_BIT. Ahora cuando ambas  señales son 1 esto genera la salida AND_OUT_NOT_BI_PUSH_62  que representa el valor del pulso ya filtrado para el reloj paso a paso.


Las señales de Reloj Paso a Paso (AND_OUT_NOT_BI_PUSH_62) y reloj a Pulso (AND_OUT_POT_BI_31) ambas ya filtrada por el 555 biestable, son conectadas en la compuerta OR donde aparece la señal de una o la otra dando como salida OR_OUT_39 en el pin 11.

La señal de ambas salidas OR_OUT_39 se junta en un AND como pin 2, con el negativo de la señal de HLT ( NOT_HLT_810) o HALT que pasa por un inverter para generar la señal de reloj CLK como pin 1. 


De esta forma si HLT está conectado a 0v cuando pase a través del inverter valdrá 5v al ir a la compuerta AND cada vez que reciba un pulso de reloj ejecutará la operación and con los +5v del inverso de HLT (NOT_HLT_810)y producirá un pulso de reloj en el pin 3 de la compuerta AND llamado CLK.

Con esto tenemos nuestras tres salidas de reloj. En el Header OUT_555 la del Reloj de pulsos o la del paso a paso de la señal CLK y en el Header OUT_1MHZ la del oscilador de cristal de 1Mhz complementamente independientes ambas.

Circuito de la Placa CLOCK de la 20c

El siguiente gráfico muestra el circuito que explica el funcionamiento de la placa CLOCK.

El circuito posee los siguientes elementos:

SOCKETs 555

Tenemos 3 Sockets de 8 pines en formato dip para colocar los 3 timers NE555, es importante alinear el pin 1 con el valor de pin 1 que encontraremos escrito en la placa PCB.

SOCKETS AND, NOT, OR

Estos son 3 sockets de 16 pines tipo dip para alojar a nuestros chips AND 74HC08, NOT 74HC04 y OR 74HC32. es importante alinear el pin 1 con el valor de pin 1 que encontraremos escrito en la placa PCB.

HEADER OUT_555

Este es un header hembra de 8 pines los cuáles tienen  una conexión de ground para conectar al puerto HLT o halt de forma tal que arranque nuestro clock y tres pines CLK con el pulso de clock y 3 pines NOT CLK con el pulso de clock invertido

HEADER OUT_1MHZ

Este es un header hembra de 8 pines los cuáles tienen la salida de nuestro oscilador de 1Mhz

SWITCHES ON/OFF

Tenemos dos switches single pole double throw. Uno sirve para seleccionar entre el Reloj de Pulsos y el Paso a Paso y el otro para prender o apagar el oscilador de cristal de 1Mhz. 

HEADER POWER y GROUND

Este header posee dos pines y están conectados a las capas de 5V y de GROUND respectivamente. Tenemos cuatro de estos conectores, uno en cada esquina de la placa.

BOTON

Tenemos un botón para poder marcar los pulsos en forma manual cuando utilicemos el reloj paso a paso. 

POTENCIÓMETRO

Para nuestro reloj regulable en velocidad usamos un potenciómetro de 1 Mega Ohm que nos da una resistencia variable la cual nos permite aumentar o disminuir la velocidad de los pulsos de nuestro reloj.

RESISTENCIAS

Utilizamos resistencias varias para poder regular nuestros timers NE 555.

CAPACITORES

Utilizamos capacitores varias para poder regular nuestros timers NE 555.

AGUJEROS para TORNILLOS

Para poder fijar nuestra placa a distintos lugares la misma cuenta con 6 agujeros para tornillos de 3mm o M3.

NETLIST

Los componentes están conectados entre sí a través de un objeto llamado netlist el cual nos permite tener diagramas más limpios.

Este funciona de forma tal que todo lo que tenga el mismo nombre pertenece al mismo netlist y deberá estar conectado junto cuando hagamos el PCB (con traces). 

En nuestro ejemplo todas las conexiones CLK estarán conectadas por traces en el PCB.

PCB de la Placa CLOCK de la 20c

El siguiente PCB explica cómo se ubican los elementos y traces para conectar nuestro circuito. El PCB es de 4 capas teniendo en la capa llamada TOP todas las conexiones de nuestros netlist a través de traces, los cuáles son finas capas de cobre que conectan los mismos como si fueran cables.

Tenemos dos capas especiales llamadas 5v y GROUND donde conectaremos las conexiones de power y ground o masa. Al usar estas conexiones en capas separadas nos ahorramos muchos centímetros de traces que deberían conectarse a pines con los voltajes de 5V y GROUND y podemos conectar directamente estos pines a la capa correspondiente.

Otra ventaja de tener una capa entera para GROUND es poder aislar el ruido eléctrico de las conexiones entre componentes.

Por último tenemos la capa de BOTTOM donde se sueldan nuestros componentes y tenemos conexiones adicionales.

Modelado 3D

Cuando terminamos de realizar nuestra Placa debemos proceder al modelado 3D de la misma para observar cómo queda y si nos gusta el lugar donde pusimos cada componente.

Generación de archivos fuente

Para poder mandar a fabricar nuestro PCB deberemos contar con al menos 3 archivos:

  1. Archivo .gerber donde le indicamos al fabricante como armar nuestra placa
  2. Archivo BOM o Bill of materials donde se encuentran todos los componentes que forman nuestra placa con el código de producto del fabricante.
  3. Archivo Pick and Place donde le indicamos al fabricante cómo ubicar los componentes en nuestra placa PCB.

Estos archivos los van a encontrar previamente generados en el github de Osolabs.

https://github.com/osolabstech/The20c/tree/main/Episode2_CLOCK/v03_CLOCK_4Plane

También incluimos archivos para poder editar el circuito con el software EasyEDA o Altium Designer.

Con estos tres archivos vamos a poder fabricar nuestra placa

Gerber_v03_CLOCK_4Plane_2025-01-28.zip

Este archivo contiene todos los planos para poder generar nuestra placa PCB.

BOM_v03_CLOCK_4Plane_v03_CLOCK_4Plane_2025-01-28.xlsx

Contiene todos los componentes de nuestra placa y el código del fabricante que identifica a ese componente.

PickAndPlace_v03_CLOCK_4Plane_2025-01-28.xlsx

Indica en qué parte del PCB va cada componente y en qué capa debe ubicarse.

Los siguientes archivos se proveen para poder editar el circuito 

3DModel_CLOCK_FRONT.png

Es una imágen con la parte de atrás de nuestra placa modelada en 3D

3DModel_CLOCK_BACK.png

Es una imágen con la parte de adelante de nuestra placa modelada en 3D

Altium_Circuit_1_v03_CLOCK_4Plane_Page1.schdoc

Contiene el diseño del circuito editable con el programa Altium Designer.

Altium_Circuit_2_v03_CLOCK_4Plane_Page2.schdoc

Contiene el diseño del circuito editable con el programa Altium Designer.

Altium_PCB_v03_CLOCK_4Plane.pcbdoc

Contiene el diseño del PCB editable con el programa Altium Designer.

PCB_v03_CLOCK_4Plane_2025-01-28.pdf

Es un PDF con un dibujo de cada capa del PCB

ProDoc_v03_CLOCK_4Plane_2025-01-28.epro

Archivo para EasyEDAPro con el circuito y el PCB el cual puede editarse.

SCH_v03_CLOCK_4Plane_2025-01-28.pdf

Es un PDF con los circuitos lógicos de la placa

Preparación de las Placa CLOCK

Al recibir nuestra placa de la fábrica y antes de comenzar a utilizar la misma y al momento que la sacamos de la caja, hay algunas tareas que deberemos hacer para poder hacer uso al máximo de la misma:

  1. Remover los bordes de manipulación de la placa
  1. Limpiar placa con alcohol isopropílico
  1. Poner chips 555 en los sockets
    1. Ajustar a mano las patas del chip para que calcen el socket
    2. Alinear pin 1 con el pin 1 en el socket
    3. Primero insertar un lado del chip, poniendo el mismo en diagonal y luego el otro lado
    4. Verificar que ninguna patita quedó doblada
    5. Hacer presión y ver que todas están bien ajustadas en el socket
  1. Poner chips AND, NOT, OR en los sockets correspondientes.
    1. Ajustar a mano las patas del chip para que calcen el socket
    2. Alinear pin 1 con el pin 1 en el socket
    3. Primero insertar un lado del chip, poniendo el mismo en diagonal y luego el otro lado
    4. Verificar que ninguna patita quedó doblada
    5. Hacer presión y ver que todas están bien ajustadas en el socket
  1. Poner Tornillos de soporte de la placa para que esté levantada por encima de la superficie.

Guía de Conexión de la placa CLOCK de la 20c

Vamos a explicar como conectar los distintos componentes de la placa para dejar esta lista para funcionar en una maqueta. Esta es una configuración con todas las placas que vamos a utilizar aunque todavía no las hayamos visto. Puedes tener esta sección como referencia para cuando ensambles toda la 20c.

CLOCK

Para configurar la placa de CPU 6502 vamos a realizar las siguientes conexiones.

  1. Conectamos el conector de ground del header CLOCK_555_OUT al pin HLT, de esta forma nuestro reloj va a funcionar, el pin HLT sirve apra prender y apagar el reloj de forma programática.
  1. Conectar el pin de CLK del header CLOCK_555_OUT de nuestra placa de CLOCK al header de EXPANSION BUS de otra placa de la 20c que utilicemos (por ejemplo la placa de CPU 6502) de esta forma podremos dar pulsos con el reloj regulable en velocidad o el paso a paso. 
  1. Alternativamente conectar el pin de OUT_1MHZ  del header CLOCK_OUT_1MHZ de nuestra placa de CLOCK al header de EXPANSION BUS de otra placa de la 20c que utilicemos (por ejemplo la placa de CPU 6502) de esta forma podremos dar pulsos con el reloj de 1 Mhz.
  1. Conectar los pines 5v y GROUND a una fuente de 5V y 0v, respectivamente.

Experimento – Probando el CLOCK con el Proceso de RESET y la instrucción NOP

Vamos a realizar nuevamente este experimento probando nuestro CLOCK pero vamos a variar las velocidades del mismo. Repasamos cómo se ve la configuración de la instrucción NOP y la base del experimento.

Le vamos a indicar a Mano a nuestro CPU 6502 que ejecute la instrucción de no operación NOP, la misma está codificada como EA en las instrucciones del lenguaje máquina del 6502.

EA se traduce en binario cómo 1110 1010 y esto es lo que va a esperar nuestro procesador en sus pines de data para poder leer esa instrucción. Para poder hacerlo vamos a conectar 8 resistencias a nuestros pines de datos de la siguiente forma:

Si corremos una secuencia de reset tocando el botón de RESET del la placa CPU 6502 y observamos el resultado, veremos cómo ejecuta el reset en 7 ciclos de reloj y buscará en las posiciones de memoria FFFC y FFFD donde está el vector (otra posición de memoria) que posee la primera instrucción a ejecutar. Tarda 7 ciclos ya que en RESET no es ni más ni menos que una instrucción BRK o BREAK cargada por hardware a través del pin de RESET.

 El reset debe ser mantenido en 0v por lo menos durante dos ciclos de reloj para que sea reconocido.

Experimento 1 – Reloj Paso a Paso

  1. Conectamos el pin CLK del header CLOCK_555_OUT
  1. Seleccionemos el switch para el reloj paso a paso. 
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado.
  1. Presionar 3 veces el botón de STEP BUTTON de nuestra placa de CLOCK
  1. Soltar el botón de RESET de nuestro CPU
  1. Continuemos presionando el botón de STEP BUTTON de nuestra placa de CLOCK y veremos que cada vez que lo hacemos avanza un ciclo en  nuestro CPU, algunas instrucciones ocupan un ciclo de reloj y otras más

Experimento 2 – Reloj regulable en velocidad

  1. Conectamos el pin CLK del header CLOCK_555_OUT
  1. Seleccionemos el switch para el reloj regulable en velocidad. 
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado por lo menos 2 ciclos de reloj.
  1. Soltar el botón de RESET de nuestro CPU
  1. Regulemos la velocidad del reloj utilizando el potenciómetro veremos cómo se aceleran y ralentizan las instrucciones dependiendo para donde giremos el mismo.

Experimento 3 – Reloj de 1 Mhz

  1. Conectar el pin de OUT_1MHZ  del header CLOCK_OUT_1MHZ
  1. Seleccionemos el switch para prender nuestro reloj de 1Mhz CRYSTAL ON/OFF
  1. Presionemos el botón de reset de nuestro CPU y dejemoslo presionado por lo menos 2 ciclos de reloj.
  1. Soltar el botón de RESET de nuestro CPU
  1. Veremos lo rápido que van las instrucciones casi ni las podremos ver, esto es así ya que nuestro reloj funciona a un ritmo de 1 millón de ciclos por segundo. 

Conclusiones

La Placa CLOCK nos va a dar el ritmo para poder ejecutar las instrucciones de nuestra 20c y sincronizar entre sí todos los chips que le conectemos, memorias, periféricos cpu, etc. 

La placa CLOCK en funcionamiento

Para ver visualmente cómo conectar la placa CLOCK a la 20c les dejo como siempre un video en detalle de la serie. En este vamos a ver cómo se conectan los pines, y nuestro experimento en forma visual indicando. Buscar el video del Episodio 2 

Referencias

A continuación les dejo algunos links donde profundizar el tema:

WEBSITE

Aquí está el sitio de OsoLabs con todos los videos y artículos.

OsoLabs.tech 

VIDEOS

Aquí el video correspondiente a este capítulo y la lista de todos los videos de esta serie.

https://www.osolabs.tech/the20c

ARTICULOS

Aqui podrán encontrar todos los artículos sobre la 20c:

https://www.osolabs.tech/the20c

CÓDIGO y DISEÑO DE PLACAS PCB

Todos los ejemplos de código de este artículo los pueden encontrar en:

https://github.com/osolabstech/The20c

OTROS RECURSOS

Y como siempre la serie de Ben Eater del 6502 que es excelente:

Build a 6502 computer | Ben Eater 

Astable 555 timer – 8-bit computer clock – part 1 

Monostable 555 timer – 8-bit computer clock – part 2 

Bistable 555 – 8-bit computer clock – part 3 

Clock logic – 8-bit computer clock – part 4 

Y la serie de mi creación comparando el 6502 vs 6510 tanto en video como en artículos

https://www.osolabs.tech/6502vs6510

6502 vs 6510 estudio detallado y comparación – YouTube 

C64 a Fondo – Indice

PAPERS / Datasheets

NE555P Datasheet 

1 Mhz Crystal Oscillator 

SNx4HC08 Quadruple 2-Input AND Gates datasheet (Rev. I) 

SNx4HC04 Hex Inverters datasheet (Rev. H)

SNx4HC32 Quadruple 2-Input OR Gates datasheet (Rev. F)  

SNx4HC00 Quadruple 2-Input NAND Gates datasheet (Rev. H) 

Destacado

Retrocomputación: La historia de Retroterm y otros desarrollos

Tenía pendiente desde hace un tiempo escribir un artículo sobre el desarrollo de Retroterm, nuestra terminal multimedia multiplataforma, que nació en Commodore 64 y luego se expandió para soportar también Commodore Plus/4 y MSX.

Como algunos sabrán, en el año 2006 nos reunimos Diego Chiacchio, Pablo Roldán y yo, Jorge Castillo, y decidimos crear el foro de Retrocomputacion.com. De los tres, Pablo y yo, aunque en distintas épocas y ciudades, habíamos seguido caminos similares: fuimos usuarios de Commodore 64 y después de Amiga, programamos en lenguaje ensamblador e hicimos proyectos de electrónica. Pero no fue hasta 2020 con el proyecto Retroterm que empezamos a publicar software con el nombre Retrocomputación.

A diferencia de otros proyectos que empezaron por alguna necesidad concreta, por lo general para complementar otros desarrollos de hardware o de software, el desarrollo de Retroterm no fue algo planificado o siquiera esperado.

En el año 2019 estaba haciendo algunas pruebas de conexión entre retrocomputadoras, a veces a través de un cable RS232, otras veces a través de módems telefónicos. Se me ocurrió que pocos tuvimos la suerte de ver este tipo de cosas en los 80s, y empecé a publicar los videos en las redes. De los comentarios y las preguntas de la gente sobre los módems surgió la idea de hacer un video explicando como funcionaba esa antigua tecnología, y así inauguramos un nuevo canal de Retrocomputación en youtube, dedicado a videos orientados a lo educativo.

Lo que empezó como un video que iba a grabarse en poco tiempo terminó convirtiéndose en un proyecto de 4 meses, por lo que al finalizar decidí que el próximo video no iba a tener nada que ver con ese tema: haría un video sobre computadoras portátiles de los 80s, ya que tengo algunas para mostrar en funcionamiento.

A principios de 2020, pensando en como abordar la producción del video, me doy cuenta de que por el espacio físico limitado del que dispongo y por una cuestión de no limitarme a tomas fijas, se verían en pantalla otras computadoras y monitores que hay alrededor. Como no podía evitar que esos otros equipos aparecieran, se me ocurrió darles uso: haría un programa de presentaciones, para que la Commodore con su monitor mostrara imágenes relativas a las explicaciones del video.

Lo primero que hice fue preparar la interfaz RS232 para la Commodore, que se conectaría con un cable a una PC fuera de cámara, desde la que se enviarían imágenes y texto para ilustrar lo que se diría en el video. Luego había que escribir soft para Commodore que en principio recibiría texto por RS232 y lo imprimiría en pantalla, y escribir soft para PC que me permitiera editar y enviar el texto a la Commodore.

Para el lado de PC consideré escribir un programa en C para MSDOS, y usar una portátil antigua, pero después encontré la manera de hacerlo con Python en mi PC principal. Para el lado de Commodore, aproveché algunos experimentos que había hecho anteriormente para recibir datos por RS232 a una velocidad de 57600 bps. En principio no era necesario enviar datos desde la Commodore, ni siquiera tocar el teclado, ya que todo se controlaría desde la PC.

Una vez que logré el envío de textos desde la PC a la Commodore, el siguiente paso fue enviar imágenes. Cuatro años antes había hecho un experimento transfiriendo un bloque de datos binarios a máxima velocidad, pero el texto y los bloques de datos requerían dos tipos de recepción diferentes, así que había que integrarlos de alguna manera. La recepción de datos a 57600 bps fue un desarrollo anterior que hice para mis sintetizadores de voz con microcontroladores. Sin entrar en detalles muy técnicos, en la recepción de texto la idea era recibir pocos caracteres por segundo, porque con eso alcanzaba para un sintetizador, pero a la velocidad más alta posible, para usar muy poco tiempo por cada caracter. En la recepción de datos binarios en cambio, la idea es transferir todos los datos de una sola vez a máxima velocidad, pero esto nos obliga a apagar la pantalla en la Commodore, para evitar interferencias del chip de video. Durante la recepción de texto sí podemos mantener la pantalla activa.

Para coordinar todo esto la Commodore tenía que diferenciar si había que imprimir en pantalla lo que se recibía (modo texto) o si había que apagar la pantalla y recibir datos binarios a máxima velocidad (modo turbo). Decidí usar el caracter 255, que es un caracter gráfico repetido, como indicador para entrar a un modo comando, donde se podría cambiar de modo de recepción. Si el programa en la Commodore estaba en modo texto simplemente imprimiría en pantalla, pero si estaba en modo turbo tendría que prepararse para recibir datos y almacenarlos en memoria. Sin embargo esto no era suficiente para transferir una imagen, también hacía falta definir más comandos, entre ellos por ejemplo alguno para indicarle a la Commodore que había que cambiar el modo de pantalla. De esta manera se fue creando lo que ahora es el protocolo TURBO56K.

A esta altura tenía hecho un sistema que permitía enviar texto e imágenes a la Commodore, bajo control de la PC. Por pura curiosidad se me ocurrió probar si era posible hacer streaming de audio PCM (digitalizado) usando la transferencia turbo, y resultó que sí, aunque no sin antes corregir unos cuantos problemas de sincronización. En ese momento la función de streaming no tenía una utilidad práctica en el proyecto, simplemente se agregó “porque podíamos hacerlo”.

Es aquí cuando veo que a la Commodore sólo le faltaba leer el teclado y enviar los datos para convertirse en una terminal. Así es que el 2 de febrero, casi un mes después de haber empezado el desarrollo, nacía Retroterm, una terminal PETSCII con características muy particulares.

El programa en la PC se convirtió en RetroBBS, un pequeño servidor que mostraba un menú para que el usuario pudiera ver unos ejemplos de imágenes, escuchar un par de audios de prueba, y descargar unos juegos directamente a memoria. En esta etapa ya contamos con la ayuda de Ezequiel Filgueiras, quien se armó la RS232 y probó estas primeras versiones de Retroterm y RetroBBS, y tiempo después pondría en línea uno de los primeros RetroBBS públicos.

Retroterm cambió mucho en las primeras versiones: al principio el fondo no era negro, luego lo fue, se agregó el sonido de impresión, se agregó soporte para sintetizadores de voz, se agregó un puntero controlado por el ratón Commodore 1351, se fue aumentando la cantidad de caracteres recibidos por cuadro, y se eliminó el puntero. Para la versión 0.11, la última que hice, las características de la terminal estaban más o menos definidas.

El rumbo del proyecto cambiaría drásticamente cuando decidí cambiar la conexión por RS232 por una conexión inalámbrica a través de un módem wifi. Ahora no sólo podía controlar la Commodore desde la PC local sino también desde cualquier computadora conectada a internet. Las cosas empezaron a cambiar, ya no teníamos una conexión permanente entre Commodore y PC, sino que ahora había que establecerla llamando desde la Commodore. Es en este momento en el que Pablo se suma al proyecto desarrollando a partir de la versión 0.12, y también se encargaría de las versiones para Commodore Plus/4 y MSX. Pablo hizo dos contribuciones fundamentales en el inicio del desarrollo: mejoró la recepción a 57600 bps para que funcionara en todos los modelos de C64, y reescribió practicamente desde cero el código de RetroBBS. Pero para poner esto en contexto tenemos que volver un poco hacia atrás.

En el año 2016 escribí el código para enviar y recibir datos por RS232 a 57600 bps, para poder comunicar la Commodore con mis sintetizadores de voz. El sistema estaba implementado como una tarea de fondo sincronizada con la interrupción de video, de manera que se enviaba un caracter y se recibía otro en cada cuadro de video. De esta manera se podía controlar los sintetizadores de voz desde el BASIC cargando previamente el “driver” para la comunicación. Cuatro años después, en 2020, este código sería la base de lo que luego se convertiría en Retroterm.

Cuando usábamos la Commodore conectada a la PC por RS232, las respuestas por parte del servidor eran prácticamente instantáneas. Pero esto cambió cuando empezamos a usar el módem wifi, ya que estos tiempos no se cumplían de la misma manera, en particular los tiempos de respuesta al trabajar con RTS y CTS.

Para poder entender el comportamiento del firmware zimodem tuve que hacer capturas de la comunicación usando el único recurso que tenía a mano: una tarjeta de sonido capaz de capturar audio a 192 Khz.
Aunque esta resolución pueda parecer alta, apenas era suficiente para saber qué estaba pasando en la comunicación, pero no alcanzaba para medir tiempos precisos. Y aún así, después de muchas pruebas y mediciones, sirvió para lograr una comunicación estable.


Paralelamente a la versión estándar de Retroterm empecé a investigar si sería posible probar la terminal desde algún emulador, con algún hard que soportara 57600 bps y que estuviera emulado en lo posible en VICE. Resultó que la expansión Turbo232, que contiene un chip ACIA 6551, soportaba esa velocidad y estaba emulada en VICE. Este chip fue diseñado en una época en que las líneas RTS y CTS se usaban de otra manera, pero después de hacer unas cuantas pruebas se pudo hacer andar. Ya podíamos conectarnos a un RetroBBS desde cualquier PC.

Para entonces Retroterm empezaba a conocerse en Europa, y aquí es donde encontramos el primer problema importante: la comunicación fallaba en algún momento en las Commodore 64 PAL, en particular cuando se hacían transferencias turbo. Cuando empecé con Retroterm me encontré con la realidad de las diferentes velocidades de reloj del 6510, según el sistema de video de cada máquina (NTSC/PAL-N/PAL). Ya que la recepción se hace exclusivamente por software, la velocidad de reloj influye en los tiempos, pero habiendo hecho los cálculos concluí que a 57600 bps la diferencia sería mínima, por lo que decidí simplificar las cosas y usar como referencia un reloj de 1 MHz. Todo funcionó bien hasta que se probó Retroterm en una C64 PAL, un modelo que es muy difícil de encontrar en Argentina. Este problema quedó sin resolver por un tiempo, ya que no teníamos herramientas para detectar donde estaba el error.

Continuando con el desarrollo, Pablo había empezado a extender Retroterm usando la versión para ACIA desde VICE, y después se hace cargo también de la versión estándar para el puerto del usuario, publicando la versión 0.12. Aquí también hace un reordenamiento del código, la integración de las versiones estándar y ACIA en el mismo código fuente, y se empieza a publicar en github la versión 0.13. Estamos en el año 2021.

En esta etapa ocurre una sucesión de eventos que llevaron a la solución del problema de comunicación en máquinas PAL. William McCabe, el autor de un por entonces nuevo emulador llamado Z64K, quería soportar la versión de Retroterm para el puerto del usuario, entonces se contacta con Pablo y colaboran para lograr el primer emulador capaz de ejecutar todas las versiones de Retroterm. Luego de eso Pablo empieza a modificar el código de VICE logrando los mismos resultados, y en el proceso mejora la emulación de las comunicaciones en el emulador. La emulación del puerto del usuario resulta tan bien que puede conectar el módem wifi a la PC usando la versión de Retroterm para el puerto del usuario. De esta manera puede tener una idea clara de lo que ocurre durante la comunicación, lo que le permite ajustar el código de recepción de forma que sea compatible con todas las C64, resolviendo el problema que había quedado pendiente. Tiempo después las modificaciones son aceptadas por el equipo de VICE, y él se suma como desarrollador.

Terminadas las mejoras en el código de VICE, decide empezar el desarrollo de Retroterm MSX. Llevábamos un tiempo pensando cómo tendría que ser un port para MSX, y lo que se decidió fue que usaríamos el modo de pantalla 2, que nos daba la posibilidad de tener tanto bitmaps de 256×192 en 16 colores como un modo texto de 32×24, el cual habría que inventar. La idea era soportar en lo posible todas las funciones de Retroterm para Commodore, y ya que no conocíamos lo suficiente de la arquitectura como para lanzar el programa desde el BASIC, decidimos que sería mejor hacer un ejecutable para MSX-DOS, lo cual además nos dejaba toda la memoria libre para descargar juegos a RAM. En cuanto a la conexión, los planes inmediatos eran soportar la RS232 estándar, que pocos MSX incluían, mientras desarrollábamos nuestro propio módem wifi para el puerto paralelo. Por suerte Diego disponía de una Spectravideo SVI-738 que tenía todo lo necesario: unidad de disco incorporada para ejecutar MSX-DOS, y RS232 integrada. Yo había estado armando un módem wifi que pude probar con la SVI, por lo que ya teníamos todo lo necesario para el proyecto.

Aprovechando la experiencia del desarrollo de Retroterm usando VICE, Pablo decide seguir el mismo camino en MSX, investigando el código del emulador OpenMSX para hacer pruebas desde la PC con el mismo módem que usamos en hard real. De la misma manera que había ocurrido con VICE, esto termina en una reescritura del código de comunicaciones de OpenMSX, con cambios que después fueron incorporados oficialmente al emulador.

Mientras tanto, yo estuve diseñando un módem wifi para el puerto paralelo, y creando una terminal básica para probarlo: Microterm. Con la ayuda de Roberto Mandracchia se pudo armar un módem wifi con conector Centronics integrado y se pudo probar una versión limitada de Retroterm, pero este es un proyecto que recién empieza y todavía va a necesitar muchas pruebas para estar listo.

Con el tiempo Retroterm fue sumando características y se fue extendiendo el protocolo TURBO56K, incorporando comandos de manejo de pantalla, ventanas, pantalla combinada de texto y gráficos, streaming de música SID, y la descarga de archivos a disco. También se portó a Commodore Plus/4, donde funciona a una velocidad de 19200 bps usando el mismo módem wifi (zimodem) de Commodore 64, y a MSX, usando por el momento la RS232 estándar del sistema y en el futuro nuestro módem wifi para puerto de impresora, y el cartucho de comunicaciones BaDCaT.

RetroBBS, por otro lado, hoy es un servidor multimedia muy potente que soporta varias conexiones desde Commodore 64, Commodore Plus/4 y MSX. Retroterm incorporó desde muy temprano un sistema de identificación de terminal, que se fue extendiendo para permitir a RetroBBS detectar las características de esa terminal y su plataforma, de manera de adaptar el contenido al juego de caracteres, resolución de texto y gráficos, tipo de sonido y velocidad de conexión. A diferencia de las primeras versiones, que se basaban en contenido binario adaptado específicamente para Retroterm, el nuevo RetroBBS adapta el contenido en el momento, renderizando y componiendo bitmaps para la plataforma particular, o convirtiendo el sonido PCM de los formatos comunes a algo adaptado para la velocidad de esa terminal. Del desarrollo de RetroBBS salió el conversor de imágenes ClashState, que se puede ejecutar de manera independiente para convertir cualquier foto en bitmaps de Commodore 64, Commodore Plus/4, MSX y Spectrum.

En cuanto a mí, cuando dejé de mantener el código de Retroterm me centré en el contenido y la estética de RetroBBS, y en el diseño de circuitos de referencia para el armado de RS232 y módems wifi, que además se pueden ver desde Retroterm. La ironía de este proyecto es que nació porque no quería ver más módems, queriendo desarrollar un programa de presentaciones para un video sobre computadoras portátiles que nunca se hizo. Y al final, el video donde se usó Retroterm para ilustrar las explicaciones, fue el propio video dedicado a presentar Retroterm.

Durante mi tiempo desarrollando Retroterm surgieron otros proyectos relacionados, entre ellos el más obvio es la terminal Microterm para Commodore Plus/4, que estaba basada en el código de Retroterm para ACIA y nació simplemente porque no pude encontrar una terminal PETSCII para conectarme a BBS de Commodore 64. Esto sirvió después como base para portar Retroterm a Plus/4. Pero tal vez lo más inesperado fue el desarrollo de RetroLoader128 y Start Apps, que aunque no parezca deben su existencia a Retroterm.

Como algunos sabrán, la Commodore 128 es la retrocomputadora que más uso, por lo que al pensar en cual podría ser la segunda plataforma soportada por Retroterm, la elección fue obvia, sería la C128, por supuesto en modo 128. Aunque es un sistema bastante diferente, comparte mucho con la C64, por lo que no sería tan complicado adaptar la terminal, excepto por un detalle: no podríamos usar la descarga de juegos directo a memoria, ya que no podemos ejecutar juegos de C64 en el modo 128. Había que hacer algo al respecto.

Muchas veces antes había intentado hacer soft para la Commodore 128, pero después de leer una gran parte de la documentación técnica, todavía no terminaba de entender lo suficiente como para empezar. Esta vez estaba decidido a programar en modo 128, por lo que continué leyendo documentación sobre la memoria, la MMU y lo que ocurre al cambiar al modo C64. Después de hacer unas pruebas descubrí que no se perdía el contenido de la RAM al pasar a modo 64, sino que se perdía después al ejecutar la inicialización de la ROM. Si pudiera pasar a modo 64 de manera manual, evitando que la ROM borrara el programa, podría descargar juegos de C64 desde Retroterm128, para luego ejecutarlos reconfigurando la C128 como una C64.

No pasó mucho tiempo hasta que tuve código que me permitía cargar y ejecutar cualquier PRG de C64 desde el modo 128. Ya tenía lo que faltaba para poder portar Retroterm a C128. Sin embargo, en lugar de portar Retroterm, seguí desarrollando RetroLoader, que primero se integró en un menú hecho en BASIC, para que cualquiera pudiera armar su compilado de juegos de C64 booteable desde el modo 128. Luego se me ocurrió que sería más fácil si el propio programa obtenía la lista de archivos del disco en lugar de que el usuario tuviera que editar el programa BASIC. RetroLoader se había convertido en un navegador de archivos.

Por haber investigado el arranque de la C128, y porque ahora estaba usando RetroLoader128 como mi navegador preferido, tuve la idea de crear un cartucho para el zócalo U36, con un compilado de programas que tendría disponibles al arrancar la máquina. No sería otra cosa que una variación de RetroLoader pero en formato ROM, con un menú de programas en lugar del navegador. Así es como nace Start Apps, que por supuesto incluyó originalmente tanto Retroterm como RetroLoader128.


Del proyecto Start Apps también saldría otro proyecto: InDev Tester.
Pero eso es otra larga historia.

Más información:

Página del proyecto en Pastbytes: https://www.pastbytes.com/retroterm/

Retroterm en github: https://github.com/retrocomputacion/retroterm

RetroBBS en github: https://github.com/retrocomputacion/retrobbs

Resumen: La historia de como un video sobre computadoras portátiles llevó a la creación de una terminal multimedia para computadoras de 8 bits y su servidor multiplataforma, y de como el proyecto impactó en los emuladores Z64K, VICE y OpenMSX.

Destacado

The 20c – Episodio 1 – CPU 6502

Introducción 

Vamos a empezar esta serie con una descripción del CPU 6502, estudiando para qué sirve cada patita de este chip (que básicamente es el pin out) y cómo funciona su arquitectura interna. Vamos a estudiar que registros tiene y para qué sirven. Luego vamos a seguir contando cómo recrear esta placa PCB desde cero y terminaremos con un experimento que nos permitirá ver nuestra primera instrucción del 6502 ejecutándose.

Descripción general del CPU 6502

Un CPU es la unidad central de procesamiento donde se ordena lo que sucede dentro de una computadora y se realizan típicamente los cálculos matemáticos y  el manejo del direccionamiento de la computadora.

El CPU 6502 fue creado por Chuck Peddle y Bill Mensh de MOS Technologies y fue muy utilizado en el final de los años 70 y principios de los 80. Esta familia de CPUs se utilizó en la Apple 1, la Apple 2 como 6502, en la Commodore 64 en su variante 6510 y en el Atari VCS en su variante 6507.

El 6502 todavía sigue siendo muy utilizado teniendo versiones actuales de los fabricantes USM y WDC siendo la versión actual la 65C02 la cuál agrega algunas instrucciones extras de assembler y baja mucho el consumo eléctrico.

Pinout CPU 6502

Este chip posee un formato DIP 40 (dual in-line package) con las siguientes funciones en sus pines o patitas.

VPB (OUTPUT) La B significa Bar o Barra para que este pin se active el voltaje tiene que ser Low o 0v. Este pin sirve para indicar que se está accediendo a una dirección a través de un vector durante una interrupción. Solo está en la versión de WDC del chip 6502 en los otros fabricantes es sólo un GROUND adicional. Con la marca WDC se puede dejar desconectado con las demás marcas se debe conectar a ground.

RDY (INPUT) El pin ready se utiliza para decirle al microprocesador que tiene que frenar y mantener al mismo en el estado actual, congelado, refrescando todos los registros y sin perder ningún dato. Para activarlo y que frene el pin espera un estado low o 0 Volts. Por ejemplo al recibir un estado Low (0 volts) en el pin todas las líneas de output van a mantener los valores de corriente que tenían mostrando qué dirección estaban buscando. Es ideal para hacer un estudio de instrucción por instrucción del chip.

PHI1 o ɸ1 (OUTPUT) Pin de Salida de Reloj, el mismo es una salida de reloj para conectar a otros dispositivos. El PHI1 es típicamente la señal del PHI2 pero invertida.

IRQB (INPUT) Pin de interrupción. Al conectar este pin a 0V, si las interrupciones están habilitadas, el procesador guardará el contenido de los registros actuales y buscará en las posiciones de memoria de vector FFFE y FFFF donde está otra posición de memoria que contiene  la primera instrucción a ejecutar para atender a esta interrupción.

MLB (OUTPUT) El pin de Memory lock se usa para mantener la integridad de las instrucciones Read-Modify-Write en un sistema multiprocesador. Cuando presenta un valor Low o 0 volts indica que algún otro circuito debe arbitrar el ciclo del bus. Es un pin de Output

NMIB (INPUT) Pin de interrupción no enmascarable. Al conectar este pin a 0V el procesador guardará el contenido de los registros actuales y buscará en las posiciones de memoria de vector FFFA y FFFB donde está otra posición de memoria que contiene la primera instrucción a ejecutar para atender a esta interrupción. Este tipo de interrupción es incondicional y siempre será honrada.

SYNC (OUTPUT) Pin de sincronía El ciclo del procesador donde trae el código de operación (OpCode) se indican con el pin SYNC en high. Cuando el procesador busca un código de operación el pin queda en high y queda high por todo el resto del ciclo. Vamos a estudiarlo al diseñar un programa que interprete cuando en el bus de datos se representa una instrucción.

VDD o VCC (INPUT) Pin de Energia. El procesador típicamente trabaja con +5v.

AB0 a AB15 (OUTPUT)  Pines del Bus de Direccionamiento. Son pines unidireccionales en los cuáles el procesador va a escribir las direcciones de los dispositivos a los cuales comunicarse (memorias, otros chip en la placa, registros de I/O, etc). Al ser un bus de 16 bits direcciona hasta 65536 bytes o desde $0000 hasta $FFFF. 

VSS (INPUT) Pin de Ground, este pin se conecta al common ground del diseño.

DB0 a DB7 (INPUT/OUTPUT) Pines del Bus de datos, Este es un bus bidireccional que permite recibir y escribir datos junto con el bit de R/W a memorias y registros de I/O.

R/W (OUTPUT) Pin de Lectura/Escritura. Este pin indica si el procesador está realizando una lectura o una escritura. Cuando se encuentra en 1 o en estado High el procesador está realizando una lectura cuando está en 0 o estado Low una escritura.

NC  No Connect, este es un pin que no se debe conectar ya que no está conectado a nada dentro del procesador. No se utiliza

BE (INPUT) Pin de Bus Enable, cuando este pin esta High o +5v los pines de address, data y RW están activos, cuando está low o 0v quedan con impedancia alta sacando al procesador del bus.

PHI2 (INPUT) Pin de entrada de Reloj, Este pin permite conectar un reloj externo al procesador para sincronizarse con otros dispositivos. Es el pin que vamos a utilizar en nuestros desarrollos para conectar un reloj externo.

SOB (INPUT) Pin de Set Overflow. Este pin cuando recibe un cambio de high a low prende el bit de Overflow en el Status Register del procesador (bit 6). No se usó mucho en el pasado y no se recomienda su uso.

PHI2O (OUTPUT) Pin de Salida de Reloj, el mismos es una salida de reloj para conectar a otros dispositivos con la misma onda que el reloj que recibe en PHI2.

RESB (INPUT) Pin de reset, este pin sirve para realizar un reset del procesador cuando se conecte a 0v. El reset tomará 7 ciclos de reloj y buscará en las posiciones de memoria FFFC y FFFD donde está el vector (otra posición de memoria) que posee la primera instrucción a ejecutar. El reset debe ser mantenido en 0v por lo menos durante dos ciclos de reloj para que sea reconocido.

Recomendaciones Generales de conexión

Se recomienda que los pines RDY IRQ NMI SOB BE estén conectados a +5v a través de una resistencia de 1K.

El pin VP deberá estar conectado a 0v a través de una resistencia de 1K, en modelos no Western Design Center este pin es sólo un GROUND.

Descripción de Funcionamiento del CPU 6502

Arquitectura

Es un procesador de 8 bits ya que todas sus instrucciones en código máquina pueden referenciarse utilizando 8 bits. La arquitectura interna está dividida en dos partes una sección con los registros y otra con las operaciones de control, las señales que provocan transferencias de datos están en la sección de control.

En el diagrama podemos ver que la señal de reset RESB entra a la caja de Interrupt Logic y de Instruction Decode esto es así por qué un reset no es más que una instrucción BRK (código binario 0000 0000) o $00 cargado desde el hardware.

Set de instrucciones

El código máquina del 6502 posee instrucciones que pueden operar sin argumentos, con un sólo argumento explícito y con dos argumentos. 

Agrego algunas instrucciones extras del modelo 65C02 (las marcadas con punto en la siguiente tabla) que NO recomiendo usar para poder mantener compatibilidad con toda la familia del 650X como ser el 6510 y el 6507, ahorran algunos pasos al no tener, por ejemplo, que pasar por el acumulador para guardar el registro X en el stack con la instrucción PHX. 

El 65C02 es una versión más moderna del MOS 6502 siendo una ventaja el ser fully static por lo que se puede parar el clock y los registros no pierden sus valores.

Velocidad de Reloj

El procesador 6502 original soporta una velocidad de reloj de hasta 1Mhz, con versiones modernas soportando mayores velocidades.

Registros

La cantidad de registros y la forma de accederlos se mantienen para toda la familia, estos son los familiares A, X e Y, el Status Register y el Stack Pointer los 5 de 8 bits y el Program Counter de 16 bits donde tendremos las direcciones de memoria de la siguiente instrucción en nuestro programa.

Modos de direccionamiento

El 6502 posee diferentes modos de direccionamiento pudiendo cargar datos directamente a memoria, o un número literal al acumulador, o en forma indexada datos y hasta aplicar funciones que trabajan con el acumulador sin tocar memoria.

Bus de Direccionamiento y Bus de Datos

El procesador posee 16 líneas de direccionamiento (pines A0 a A15) pudiendo manejar entre memoria y registros de I/O hasta 64Kb (2ˆ16 = 65536 bytes) y 8 líneas de datos (pines D0 a D7) para poder mover información de hasta 1 byte por vez.

Circuito de la Placa CPU 6502 de la 20c

El siguiente gráfico muestra el circuito que explica el funcionamiento de la placa CPU 6502.

El circuito posee los siguientes elementos:

SOCKET CPU 6502

El cual está representado físicamente como un socket DIP-40 de 40 pines, a cada uno de estos pines se le conectó un Netlist representando cada una de las funciones de estos pines por ejemplo el netlist A0 representa el pin A0 que estará conectado a todos los elementos que tenga que estar conectados con la línea o trace del address 0. 

Tiene conectado los netlists de A0 a A15, D0 a D7 y todos los netlist de EXPANSION BUS

HEADER ADDRESS

Este es un header hembra de 16 pines el cuál se usa para conectar el address bus, el mismo tiene conectados 16 netlist (o conexiones entre varios pines que tienen la misma información). Estos netlist corresponden a los pines A0 hasta A15. 

Tenemos dos de estos conectores para poder tener la información en la parte superior e inferior de la placa y realizar interconexiones con otras placas.

HEADER DATA

Este es un header hembra de 8 pines el cuál se usa para conectar el data bus, el mismo tiene conectados 8 netlist (o conexiones entre varios pines que tienen la misma información). Estos netlist corresponden a los pines D0 hasta D7.

Tenemos dos de estos conectores para poder tener la información en la parte superior e inferior de la placa y realizar interconexiones con otras placas.

HEADER EXPANSION

Este es un header hembra de 16 pines el cuál se usa para conectar el address bus, el mismo tiene conectados 16 netlist (o conexiones entre varios pines que tienen la misma información). Estos netlist corresponden a algunos netlist conectados directamente a pines del CPU 6502 como ser:

RST, CLOCK, RW, PHI2_OUT, RDY, IRQ, NMI, PHI1_OUT, ML, SYNC, SO, BE, VP 

Y otros que nos permiten pasar información de otras placas si quisiéramos usando los mismos de expansión con otras señales a elección:

E13, E14 y E15

Tenemos dos de estos conectores para poder tener la información en la parte superior e inferior de la placa y realizar interconexiones con otras placas.

HEADER POWER y GROUND

Este header posee dos pines y están conectados a las capas de 5V y de GROUND respectivamente. Tenemos cuatro de estos conectores, uno en cada esquina de la placa.

También tenemos headers de 5V y de GROUND por 8 pines cada uno para poder conectar distintos pines del 6502 que necesitan estar en valores digitales de 0 o 1 y no pueden estar flotando. Están conectados a las capas de 5V y de GROUND respectivamente. Tenemos dos de estos conectores de 5v y dos de GROUND dándonos un total de 16 pines para cada valor. Siempre se recomienda conectarlo a los pines correspondientes del CPU con resistencias de al menos 1K ohm,

CIRCUITO RESET

El mismo consiste en una resistencia conectada a +5v y al botón reset que mantiene el mismo en el valor digital 1. Cuando se pulsa el botón de reset el mismo al estar conectado al pin de reset del 6502 y a GROUND 0v pasa el valor digital 0 al cpu y este comienza el ciclo de reset.

CAPACITOR

Tenemos un capacitor de 0.1 microFaradios para que cuando el CPU arranca pueda disponer del pico extra de energía que necesita

AGUJEROS para TORNILLOS

Para poder fijar nuestra placa a distintos lugares la misma cuenta con 6 agujeros para tornillos de 3mm o M3.

NETLIST

Los componentes están conectados entre sí a través de un objeto llamado netlist el cual nos permite tener diagramas más limpios.

Este funciona de forma tal que todo lo que tenga el mismo nombre pertenece al mismo netlist y deberá estar conectado junto cuando hagamos el PCB (con traces). Así por ejemplo en el diagrama podemos observar el pin 33 del socket del CPU con un netlist llamado D0 deberá estar conectado al pin 1 del header data que también está conectado al netlist D0.

PCB de la Placa CPU 6502 de la 20c

El siguiente PCB explica cómo se ubican los elementos y traces para conectar nuestro circuito. El PCB es de 4 capas teniendo en la capa llamada TOP todas las conexiones de nuestros netlist a través de traces, los cuáles son finas capas de cobre que conectan los mismos como si fueran cables.

Tenemos dos capas especiales llamadas 5v y GROUND donde conectaremos las conexiones de power y ground o masa. Al usar estas conexiones en capas separadas nos ahorramos muchos centímetros de traces que deberían conectarse a pines con los voltajes de 5V y GROUND y podemos conectar directamente estos pines a la capa correspondiente.

Otra ventaja de tener una capa entera para GROUND es poder aislar el ruido eléctrico de las conexiones entre componente.

Por último tenemos la capa de BOTTOM donde se sueldan nuestros componentes y tenemos conexiones adicionales.

Modelado 3D

Cuando terminamos de realizar nuestra Placa debemos proceder al modelado 3D de la misma para observar cómo queda y si nos gusta el lugar donde pusimos cada componente.

Generación de archivos fuente

Para poder mandar a fabricar nuestro PCB deberemos contar con al menos 3 archivos:

  1. Archivo .gerber donde le indicamos al fabricante como armar nuestra placa
  2. Archivo BOM o Bill of materials donde se encuentran todos los componentes que forman nuestra placa con el código de producto del fabricante.
  3. Archivo Pick and Place donde le indicamos al fabricante cómo ubicar los componentes en nuestra placa PCB.

Estos archivos los van a encontrar previamente generados en el github de Osolabs. También incluimos archivos para poder editar el circuito con el software EasyEDA o Altium Designer.

Gerber_v03_CPU6502_4Plane.zip

Este archivo contiene todos los planos para poder generar nuestra placa PCB.

BOM_v03_CPU6502_4Plane.xlsx

Contiene todos los componentes de nuestra placa y el código del fabricante que identifica a ese componente.

PickAndPlace_v03_CPU6502_4Plane.xlsx

Indica en qué parte del PCB va cada componente y en qué capa debe ubicarse.

ProDoc_v03_CPU6502_4Plane.epro

Archivo para EasyEDAPro con el circuito y el PCB el cual puede editarse.

Altium_Circuit_v03_CPU6502_4Plane.schdoc

Contiene el diseño del circuito editable con el programa Altium Designer.

Altium_PCB_v03_CPU6502_4Plane.pcbdoc

Contiene el diseño del PCB editable con el programa Altium Designer.

cpu6502_3dModel.png

Es una imagen del modelo del PCB en 3 dimensiones

cpu6502_Circuit.png

Es una imagen del circuito de la placa CPU 6502

PCB_v03_CPU6502_4Plane_2024-06-29.pdf

Es un PDF con un dibujo de cada capa del PCB

Preparación de las Placa CPU

Al recibir nuestra placa de la fábrica y antes de comenzar a utilizar la misma y al momento que la sacamos de la caja, hay algunas tareas que deberemos hacer para poder hacer uso al máximo de la misma:

  1. Remover los bordes de manipulación de la placa
  1. Limpiar placa con alcohol isopropílico
  1. OPCIONAL – Poner un zócalo ZIF de 40 pines en el socket presente en la placa
  1. Poner el cpu 6502 en el socket
    1. Ajustar a mano las patas del chip para que calcen el socket
    2. Alinear pin 1 con el pin 1 en el socket
    3. Primero insertar un lado del chip, poniendo el mismo en diagonal y luego el otro lado
    4. Verificar que ninguna patita quedó doblada
    5. Hacer presión y ver que todas están bien ajustadas en el socket
  1. Poner Tornillos de soporte de la placa para que esté levantada por encima de la superficie.

 

Guía de Conexión de la placa CPU 6502 de la 20c

Vamos a explicar como conectar los distintos componentes de la placa para dejar esta lista para funcionar en una maqueta. Esta es una configuración con todas las placas que vamos a utilizar aunque todavía no las hayamos vistos. Puedes tener esta sección como referencia para cuando ensambles toda la 20c.

CPU 6502

Para configurar la placa de CPU 6502 vamos a realizar las siguientes conexiones.

  1. Conectamos todos los pines del ADDRESS BUS del A0 al A15  hacia la placa externa a la cual llevamos la señal. Puede ser directamente a la placa ROM o RAM, una placa BUS ADDRESS DATA EXPANSION o cualquier otra a la que llevemos esa señal desde el procesador. Recordemos que las direcciones del address bus se generan en el procesador.
  1. Conectamos todos los pines del DATA BUS del D0 al D15  hacia la placa externa a la cual llevamos la señal. Puede ser directamente a la placa ROM o RAM, una placa BUS ADDRESS DATA EXPANSION o cualquier otra a la que llevemos esa señal desde el procesador.
  1. Conectar al pin de CLOCK del EXPANSION BUS un cable desde la placa de CLOCK header CLOCK 555 OUT pin CLK.
  1. Conectar al pin de CLOCK de otro EXPANSION BUS un cable desde la placa de CPU hacia la placa a la que le querramos dar señal de reloj.
  1. Conectar el pin RDY del EXPANSION BUS a 5v con una resistencia de 1k ohm.
  1. Conectar el pin IRQ del EXPANSION BUS a 5v con una resistencia de 1k ohm.
  1. Conectar el pin NMI del EXPANSION BUS a 5v con una resistencia de 1k ohm.
  1. Conectar el pin SO del EXPANSION BUS a 5v  con una resistencia de 1k ohm.
  1. Conectar el pin BE del EXPANSION BUS a 5v con una resistencia de 1k ohm.
  1. Conectar el pin VP del EXPANSION BUS a 0v  con una resistencia de 1k ohm.
  1. Conectar los pines 5v y GROUND a una fuente de 5V y 0v, respectivamente.

Sugiero la siguiente guía de colores si vamos a utilizar cables con terminales macho/macho tipo dupont:

Experimento 1 – Viendo el proceso de Reset y la instrucción NOP

Veamos cómo funciona el RESET de nuestro CPU y la operación NOP. Para esto nos vamos a valer de un CLOCK externo que estudiaremos en detalle en el el Episodio 2 y de una conexión a un Arduino Mega a través del conector de Arduino el cuál desarrollaremos en el Episodio 3.

Le vamos a indicar a Mano a nuestro CPU 6502 que ejecute la instrucción de no operación NOP, la misma está codificada como EA en las instrucciones del lenguaje máquina del 6502.

EA se traduce en binario cómo 1110 1010 y esto es lo que va a esperar nuestro procesador en sus pines de data para poder leer esa instrucción. Para poder hacerlo vamos a conectar 8 resistencias a nuestros pines de datos de la siguiente forma:

Si corremos una secuencia de reset tocando el botón de RESET del la placa CPU 6502 y observamos el resultado, veremos cómo ejecuta el reset en 7 ciclos de reloj y buscará en las posiciones de memoria FFFC y FFFD donde está el vector (otra posición de memoria) que posee la primera instrucción a ejecutar. Tarda 7 ciclos ya que en RESET no es ni más ni menos que una instrucción BRK o BREAK cargada por hardware a través del pin de RESET.

 El reset debe ser mantenido en 0v por lo menos durante dos ciclos de reloj para que sea reconocido.

Podemos observar que luego de la ejecución va a leer como primera instrucción EA o la instrucción NOP de no operación y continuará así ejecutando ya que la misma está harcodeada con las resistencias. El Program Counter se incrementa en 1 luego de la ejecución de cada instrucción por eso vemos que pasa de EAEA a EAEB, luego EAEC, etc. Siempre obteniendo como código de la próxima instrucción EA. 

Se repite dos veces por que cada instrucción EA toma dos ciclos de reloj en ejecutarse.

Así concluye nuestro primer experimento donde vimos como el CPU 6502 realiza la secuencia de RESET y lee una primera instrucción.

Conclusiones

La Placa CPU 6502 nos va a dejar conectar un CPU 6502 para realizar experimentos con mucha rapidez ya que fácilmente abre los pines del CPU en ADDRESS, DATA y EXPANSION bus y nos da un botón de reset preinstalado.

El CPU 6502 en funcionamiento

Para ver visualmente cómo conectar un CPU 6502 a la 20c les dejo como siempre un video en detalle de la serie. En este vamos a ver cómo se conectan los pines, y nuestro experimento en forma visual indicando. Buscar el video del Episodio 1 

https://www.osolabs.tech/the20c

Referencias

A continuación les dejo algunos links donde profundizar el tema:

WEBSITE

Aquí está el sitio de OsoLabs con todos los videos y artículos.

OsoLabs.tech 

VIDEOS

Aquí el video correspondiente a este capítulo y la lista de todos los videos de esta serie.

https://www.osolabs.tech/the20c

ARTICULOS

Aqui podrán encontrar todos los artículos sobre la 20c:

https://www.osolabs.tech/the20c

CÓDIGO y DISEÑO DE PLACAS PCB

Todos los ejemplos de código de este artículo los pueden encontrar en:

https://github.com/osolabstech/The20c

OTROS RECURSOS

Y como siempre la serie de Ben Eater del 6502 que es excelente

Build a 6502 computer | Ben Eater 

Y la serie de mi creación comparando el 6502 vs 6510 tanto en video como en artículos

https://www.osolabs.tech/6502vs6510

6502 vs 6510 estudio detallado y comparación – YouTube 

C64 a Fondo – Indice

PAPERS

W65C02S 8–bit Microprocessor 

6510 MICROPROCESSOR WITH I/O 

Destacado

VCF East 2024 – ¿Qué es y cómo fue mi experiencia?

Hola! Mi nombre es Jorge Abreu y hoy les quiero contar que son los eventos VCF y como fue mi experiencia participando por primera vez de uno en la VCF East 2024 en New Jersey, Estados Unidos.

Arranquemos primero explicando que es la “VCF” o “Vintage Computer Festival”, que como pueden adivinar del nombre es un Festival orientado a las computadoras retro, básicamente desde el inicio de los tiempos hasta curiosidades de los 90s y 00s. Organizada por distintas agrupaciones dependiendo de la geografía, pero siempre bajo un mismo nombre, la Vintage Computer Federation, cuya misión es preservar la historia de la computación a través de educación, divulgación, conservación y restauración. 

Siempre me gustaron las computadoras, las consolas y los videojuegos, y también el contar historias y compartir experiencias, es así como en mi vida adulta siempre pase por distintos medios hablando ya sea de tecnología o videojuegos, pero con el tiempo me di cuenta de que mi pasión no está en las cosas modernas, sino en lo retro, y si le sumamos el ser originario de Argentina (ahora vivo en Canada, esto es un punto clave para algo más adelante) esto le agrega el condimento a que por supuesto tengo afinidad por las computadoras, consolas y videojuegos que pasaron por Argentina, sobre todo de la época de 8 y 16 bits.

Es así como charlando con un compañero de trabajo que se llama Ricardo, que es originario de Brasil, me propone ir a visitarlo en Estados Unidos y que juntos expongamos una mesa en la VCF East 2024. Nos pusimos de acuerdo y decidimos hacer una exposición sobre computadoras de 8 Bits de Argentina y Brasil.

Ricardo presento las siguientes computadoras de Brasil:

  • TK2000, tk3000iie, Unitron apII, Craft y Apple: Todas clones no oficiales de Apple 2 o sus variantes.
  • TK82c: Clon de la Sinclair zx80.
  • TK85: Clon de la Timex 1500.

Yo presente los siguientes equipos de Argentina:

  • Czerweny CZ Spectrum (Basada en la ZX Spectrum)
  • Drean Commodore 64 (Breadbin) (Commodore 64)
  • TALENT DPC-200 (MSX compatible)
  • Czerweny CZ 1500 (versión de la Timex 1500)
  • Froggy Junior (Clon de Atari 2600)

Con respecto al evento, no solo hubo mesas con exposiciones tanto personales como de organizaciones y museos, sino que además hubo charlas, paneles de discusión, talleres, y hasta un salón dedicado para que los asistentes puedan vender, intercambiar o regalar sus equipos retro. Aproveche y me lleve un manual del Sistema Operativo GEOS para Commodore 64 gratis, no pude comprar nada porque ya me había gastado todo en poder viajar al evento lamentablemente. Un saludo a la gente de las agrupaciones CyberCirujas en Argentina que justamente son una comunidad que se dedican al intercambio de equipos tecnologicos.

Entre las variadas exposiciones hubo de todo, desde microcomputadoras de las que se armaban en kit de los 70s, micro computadoras hogareñas de los 80s, hasta mini computadoras empresariales. En cada mesa todos esperaban contar con pasión lo que estuvieron haciendo con esos equipos, ya sea restaurarlos, programar un juego, o hacerle modificaciones para agregar nuevas capacidades. Obviamente en una de esas mesas nos podían encontrar a Ricardo a mi, en donde la gente se iba fascinada del contraste entre los clones de Apple 2 de Brasil, y los intentos de equipos licenciados de Argentina. En determinado momento se corrió un poco la voz, y vinieron varios Argentinos a visitar la muestra y charlar de sus experiencias con estos equipos décadas atrás. Me pareció una muy linda forma de conectar a estas personas con un pedacito de la historia de su país de origen, más allá de los motivos que les hayan llevado a emigrar. Uno por ejemplo, vino con el hijo, y le mostró cómo era LOGO en español en la Talent MSX, y como era común que se use en la escuela para enseñar a programar dibujando con la tortuga.

Algo muy lindo es que en cada mesa en la que uno iba a ver que exponen, todo el mundo estaba completamente abierto a charlar y contarte en detalle que estabas viendo, que significa, por que era interesante, etc. Lo que generaba charlas super interesantes sobre cuál era tu experiencia o conocimientos, discutir sobre estas cuestiones, en donde te cuentan algo y vos les contas algo parecido que hiciste y ambos aprenden o conocen algo nuevo. También mucha gente ayudando a otros con problemas o a reparar sus equipos. Mucho ambiente de comunidad y sociable, y obviamente todos muy predispuestos a contarle todo en detalle cuando pasaba alguien del público que por ahí no era del ambiente de sistemas. En mi caso por ejemplo, al lado mio estaba la mesa del Home Computer Museum de Países Bajos, y ellos también estaban exponiendo una MSX hecha en ese país, con lo que nos usábamos mutuamente como ejemplo para demostrar las capacidades del estándar MSX, en donde ellos podían mostrar un juego corriendo en vivo en su MSX, parar, poner el cartucho a mi talent MSX de Argentina, y que el juego arranque como si nada aunque sean dos computadoras fabricadas por personas que nunca supieron que los otros existían, pero ambas siguiendo todo el estándar MSX. Y así muchísimos otros ejemplos.

Antes quiero recordarles que algo que hace especial a las VCF es la idea de el mundo retro como comunidad, en donde cada persona con la que uno charla, intercambia experiencias y conocimientos compartiendo lo que cada uno sabe, conoce o experimentó, y ya que estamos contarles que me enteré de que gracias a Espacio TEC vamos a tener VCF en Argentina con la llegada de VCF Latam los 24, 25 y 26 de Abril del 2026. Esto me hace muy feliz y espero que puedan ir a visitar la VCF Latam porque estoy seguro de que va a ser increible!

Para cerrar, les dejo algunas fotos de cosas lindas que vi en la VCF East 2024 y les invito a que vayan a la VCF Latam en 2026!

TK2000 Color Computer (Un Clon de Apple II de Brasil). Equipo de Ricardo Setti. Foto Jorge Abreu.
Una Apple Lisa 2/10! Foto Jorge Abreu.
La fallida IBM PC Jr. Foto Jorge Abreu.
Un clon de Mac de Pioneer conectado a diversos sistemas multimedia como una Webcam y un LaserDisc. Foto Jorge Abreu.
Una de las famosas computadoras de Silicon Graphics, nunca habia visto una en persona. Foto Jorge Abreu.
Una Univac 1219, de las primeras computadoras comerciales de la historia orientada a instituciones militares. Foto Jorge Abreu.
Una PDP-8 de DEC. Foto Jorge Abreu.
Una Sol-20, o Sol terminal Computer, de 1976 fue una de las primeras computadoras en venderse completamente armadas en la historia. Foto Jorge Abreu.
Una computadora BeBox con el sistema operativo BeOS. Foto Jorge Abreu.
El Home Computer Museum de Países Bajos. Foto Jorge Abreu.
Una Laser 128, era una especie de clon de Apple II. Y libros y aplicaciones para el sistema grafico GEOS. Foto Jorge Abreu.
Una presentacion demostrando que hubo terminales con capacidades para realizar graficos y no solo texto. Foto Jorge Abreu.
La consola de videojuegos RCA Studio II. Foto Jorge Abreu.
Aca pueden ver a Joyce Weisbecker jugando su propio juego en una RCA Studio II de 1977. Es considerada de las primeras programadoras de videojuegos de la historia. Foto Jorge Abreu.

Gracias por leer, espero que les haya gustado, y no se pierdan la VCF Latam 2026!

Jorge Abreu.

Destacado

El Hombre detrás de la Máquina (Parte 1)

En esta serie de capítulos veremos algo referido las calculadoras mecánicas antiguas, mi tema de expertise como colaborador dentro de Espacio TEC, y además como coleccionista desde hace ya… ¡un tiempo considerable!

Pero el enfoque no será referido a la descripción de las calculadoras en sí, sino a sus creadores, sus inventores, sus padres por llamarlos de alguna manera. Las historias en estos capítulos estarán enfocadas exclusivamente hacia ellos, sus vidas, sus sufrimientos, sus expectativas, y también a la similitud con seres de nuestro tiempo.

Es bien sabido que en la historia de la innovación se ha dado el fenómeno, casi un cliché, de las parejas con personalidades tan discímiles pero complementarias, que logran el no tan fácil objetivo de sacar adelante una idea, convertirlo en un producto y que sea un éxito. Hay muchos de estos personajes icónicos, pero creo que dentro de la memoria popular podríamos tomar como caso de estudio para nuestra comparativa a Steve Jobs y de Steve Wozniak (Woz para los amigos) y su empresa Apple.

Hablemos un poco de ellos:

1)  Lo de Woz era inventar y construir; lo de Jobs eran el marketing y la venta. Se potenciaron mutuamente. Decidieron trabajar juntos y el 1 de enero de 1976 se lanzaron a la aventura.

2) Woz se encargaba de diseñar y construir el dispositivo (el Apple 1 lo hizo con sus propias manos y en una caja de madera). Y Jobs de venderlo y de desarrollar el futuro de la sociedad.

3) Wozniak era el creativo, Jobs buscaba rédito, que la creatividad está muy bien, pero el dinero está mucho mejor. Creatividad sin dinero, agoniza. Dinero sin creatividad, no hace crecer la empresa.

4) Un ejemplar de la Apple 1 se encuentra hoy en el Instituto Smithsoniano.

Apple I con gabinete de madera                                                                 

Hablemos ahora de la calculadora Comptometer (una de las favoritas de mi colección, y de las más populares entre las de su tipo).

Fue diseñada por Dorr E. Felt en el año 1884, un genio para la mecánica (un hombre con un talento e ingenio natos a un nivel de diseño mecánico tan altos como lo era Wozniak para la electrónica).

Su prototipo al igual que el de Woz también fue hecho en una caja de madera, para ser más exactos en una caja de macarrones que en esa época era de madera.

Prototipo del Comptometer, en su caja de madera

La Comptometer fue la primera calculadora mecánica con funcionamiento a tecla. Era tan rápida para sumar que hoy en día (a 140 años de su invención) no se alcanza su velocidad con una calculadora de mano, ni con un celular abierto ya en la aplicación. Por el contrario, cabe señalar que era muy complicada para las otras operaciones básicas, pues para restar había que sumar complementos y para multiplicar había que poner los dedos de una forma digna del mejor contorsionista. Sin embargo, el uso mayoritario eran operaciones de suma, lo cual la convirtió en una herramienta muy eficiente.

El problema de Mr. Felt era que tenía que competir con el líder de ese momento, el aritmómetro (esta calculadora podía sumar, restar, multiplicar y dividir). Y como si eso fuese poco a los dos años de empezar aparecería otro competidor monstruo: la calculadora de Burroughs. Su gran ingenio técnico no iba a ser suficiente para enfrentarse contra estos dos rivales, lo cual representaba un gran problema… hasta que lo conoció a Robert Tarrant.

Robert Tarrant al igual que Jobs era un genio para el marketing y la venta. Así que al igual que Steve se asoció con Woz, Tarrant se asoció con Felt y ambos se potenciaron mutuamente.

En 1887 formaron una sociedad igualitaria y 14 meses después se constituyó como Felt &Tarrant Company (nada de frutas en este nombre). El trabajo de Felt sería diseñar y construir el dispositivo y el de Tarrant venderlo y desarrollar el futuro de la sociedad.

Hoy cualquiera de nosotros con un dispositivo que llevamos en el bolsillo (léase teléfono celular) hace cualquier cuenta en segundos, desde las simples operaciones hasta algunas mas complejas como obtener una raíz cuadrada o un logaritmo. Pero en aquella época cuando una empresa precisaba un empleado para administración la oferta no era mucha, el empleado era caro y en muchos casos se precisaban unos meses de capacitación hasta aprender a usar la máquina para que esa persona pudiese tomar su puesto. Allí fue donde Tarrant mostró su genio en el marketing, creando escuelas de capacitación en Comptometer a un costo accesible para los alumnos. Fundó 150 sucursales (si, leyeron bien: ciento cincuenta escuelas en 1890), estableciendo centros de capacitación en todo el mundo, llegando a que casi un tercio de estas escuelas estuvieran radicadas en el extranjero. En el apogeo de la “Era del Comptometer” este era el sistema de escuelas privadas más grande del mundo.

Escuela Comptometer en Chicago
Escuela Comtometer en Bombay
Escuela Comptometer en Australia

Esto hizo que “según versiones de la época” cuando se solicitaba un empleado para administración con conocimiento de máquinas de cálculo de 100 postulantes más de 97 estuviesen con su diploma de Comptometer bajo el brazo. Sin contar, claro que estos 97 eran fácilmente reemplazables y tenían menores pretensiones de sueldo. Esto disparó las ventas, ya que era más económico cambiar las calculadoras que seleccionar personal experto.

Entre 1880 y 1915 cuatro eran las empresas líderes en el mundo en calculadoras de oficina, Aritmómetros, Burroughs, Original Odhner y Comptometer. De estas cuatro tres hacían las cuatro operaciones en forma directa y rápida.

La más vendida de ellas solo sumaba… Creo que no hay mucho mas que hablar.

Ah! me olvidaba de mencionar: la primer Comptometer hecha en una caja de macarrones también está en el instituto Smithsoniano.

La hermana de Dorr Felt haciéndole entrega de la primera Comptometer al curador del Instituto Smithsoniano

Vigencia eterna: los famiclones en Argentina

En Argentina muchos la conocemos como la “Family Game”, aunque su nombre original es “Family Computer” y debutó en Japón. Su popularidad en el mercado provocó un aluvión de copias que, en algunos países, se volvieron centrales.

Hoy recorremos la historia de los famiclones. ¿Por qué se siguen vendiendo 42 años después?

***

Cuando Nintendo lanzó la Family Computer (Famicom) allá por 1983, no solo cambió (y muchas hasta dirán “salvó”) la industria de los videojuegos, sino que también desató una ola de copias y clonaciones que persiste hasta el día de hoy.

En Argentina –donde la piratería y la eterna inestabilidad económica siempre estuvieron a la orden del día– la icónica Family Game (fabricada por la empresa argentina Electrolab) fue la versión más popular de estos clones, generando un fenómeno que, cuatro décadas después, todavía sigue vigente.

Pero, ¿qué hace que estas consolas continúen vendiéndose como pan caliente a pesar de los avances tecnológicos?

Sin ir más lejos, yo mismo tengo un RetroBoy en casa, una consola portátil de 8 bits que incluye juegos clásicos como Super Mario Bros 3, Tetris, Arkanoid, Battle City, Ice Climber y Space Invaders.

Igualmente aclaremos que el RetroBoy es un emulador portátil, mientras que las famiclones son dispositivos de hardware electrónico diseñados para imitar el funcionamiento y reproducción de juegos diseñados para el NES y el Famicom.

Las razones del éxito

Vale destacar que la tecnología empleada en estos clones sí ha evolucionado a lo largo de los años. Los clones más antiguos tenían una placa de circuito impreso o circuitos integrados de terceros (IC). Los de ahora utilizan diseños de chip único, con un ASIC personalizado que simula la funcionalidad del hardware original, y a menudo con uno o más juegos incluidos.

Hay varios factores que pueden explicar la permanencia de los famiclones en el mercado. El primero y más obvio es su costo accesible y facilidad de producción. En comparación con las consolas de la novena generación (PS5 o la Xbox Series S), estos clones son extremadamente baratos de producir y comercializar.

Con hardware básico y componentes de bajo costo, muchas de estas consolas se venden a precios inexistentes, más en países como el nuestro dónde tener consolas de videojuegos está cerca de ser un bien lujo.

Esto las hace particularmente atractivas para mercados emergentes (y nostálgicos) como el de Argentina. Por qué, sí, somos muy emergentes y también muy nostálgicos.

Y hablando de nostalgia y retrogaming, la generación que creció con la Family Game y la NES ahora busca revivir su infancia a través de este tipo de experiencias. Yo estoy dentro de ese grupo, eh. Hemos hablado en este blog sobre cómo la sencillez de aquellos juegos ochentosos, junto con su dificultad desafiante, sigue atrayendo a jugadores que buscan experiencias más clásicas.


Y es que títulos como Super Mario Bros., Contra y Adventure Island siguen siendo extremadamente populares. Muchas de estas consolas clónicas vienen con cientos de juegos precargados (aunque repetidos en varias versiones, digamos todo), lo que brinda una oferta atractiva sin necesidad de comprar cartuchos adicionales, que cada vez son más difíciles de conseguir.

Por último, tenemos que mencionar que, en muchos países, la NES oficial nunca tuvo una distribución masiva. En Argentina, por ejemplo, la NES original llegó recién en los años 90, cuando ya estaba en declive en otras partes del mundo, dando lugar a la Super Nintendo. Esto hizo que los clones, como la Family Game, dominaran el mercado local.

Los números en Argentina y el mundo

Hablemos de números. Se estima que en Argentina se vendieron más de 3 millones de unidades de Family Game entre los años 80 y 90. En casa tuvimos dos y actualmente uno de mis hermanos todavía las conserva. En China, los clones de la Famicom, como la “Little Tyrant” (Xiao Ba Wang), fueron un éxito rotundo, con millones de unidades vendidas.

En 2016, la NES Classic Edition (que sí es oficial de Nintendo) vendió más de 2,3 millones de unidades en solo 6 meses, demostrando que la nostalgia sigue siendo un factor clave en la industria.

Mitos y verdades de la Family

Quiero cerrar esta nota famiclónica con algunos mitos y verdades sobre la Family Game. El primero es un clásico: ¿soplar los cartuchos hace que funcionen mejor? Esto es absolutamente FALSO. Lejos de ser una solución, soplar los cartuchos solo aceleraba la corrosión de los contactos. Lo correcto es limpiarlos con alcohol isopropílico.

Hay quienes creen que Sega fue más popular en Argentina porque no había clones de SNES. Este es otro mito que se ha desparramado injustamente por los pasillos. Sí hubo clones de la SNES, como la Super NASA, pero la Genesis tuvo más éxito debido a la cantidad de versiones clónicas más económicas (¡cómo olvidar la “Super Senga”!)

La permanencia de los clones de la Famicom no es casualidad. Y menos en un país como Argentina. Representan una combinación de nostalgia, accesibilidad y cultura pop que sigue cautivando a jugadores de todas las edades.

Aunque la tecnología avance, parece que la Family Game (y sus derivados) seguirán encontrando su espacio en el corazón de los gamers. Ustedes, ¿jugaban a la Family Game? ¿Cuáles son sus títulos favoritos? Compartinos tus experiencias en los comentarios.

Quien escribe, los saluda.

Lupa Sívori

Pueden seguirme en Instagram (@viajarleyendo451). También tengo un blog de vicios personales donde hablo de retrogaming, entre otras cosas.