Autor Tema: Altair 8800 clone [con PIC18F4550]  (Leído 6004 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Altair 8800 clone [con PIC18F4550]
« en: 25 de Mayo de 2011, 13:09:22 »
Hola!

Hace algún tiempo, buscando la forma de llevar a buen puerto el proyecto del "Ordenador con un PIC de 40 pines" comencé a indagar un poco sobre la "arquitectura" de los primeros ordenadores personales. Asi fue como -inevitablemente- me encontré mirando una y otra vez los esquemas y manuales del Altair 8800.

Analizar esos circuitos me llevaron dos conclusiones. La primera de ella es que nunca voy a poder hacer un ordenador basado en un PIC que pueda ejecutar un programa a una velocidad "razonable". Y la segunda, que quizás no sería tán complicado encarar la construcción de un "clon" de un ordenador que está a punto de cumplir los 40 años. Así fue como nació este proyecto.

El Altair, del que pueden encontrar cientos de web con mucha informacion (o leer una entrada en la zona "museo" de uControl), era un ordenador muy limitado (según nuestros estándares) que poseía un microprocesador Intel 8080 de 8 bits (bus de datos de 8 bits, de direcciones de 16 bits), que estaba originalmente equipado con 256 bytes de RAM (ampliables a 64KB o mas), sin teclado ni monitor (aunque se podian agregar "terminales" de video), etc. Este era su aspecto:


Si quería crear un clon de está máquina, lo primero sería poder "emular" el micro Intel 8080. Y por eso comencé. Usando JALv2, durante unos 20 o 30 días me dedique a escribir un programa de unas 3000 líneas que es capaz de tomar uno a uno los bytes de una memoria "simulada", ver a que opcode del i8080 corresponde, leer los operandos correspondientes (si existen) y ejecutarla. Durante esta "ejecución" se actualizan los valores de los registros, memoria, etc, tal como si fuese un micro real. Aquí les pongo algunos vídeos de ese programa ejecutando pequeños programas en ASM del i8080 y mostrando el estado de los registros y demás en un LCD:




Ejemplo de como el chip 18F4550 simula un Intel 8080 al sumar dos números de 16 bits.

(Hay algunos vídeos más en mi canal de Youtube)

En este momento, el código (pobremente depurado) que corre el PIC es capaz de ejecutar unas 65 mil instrucciones ASM del i8080 por segundo. Esto es unas 10 veces mas lento que el micro original. Pero....funciona.  ;)

Una vez que conseguí que un PIC18F4550 lograse hacer las cosas que normalmente hace un i8080, llegó el turno de comenzar a pensar en como implementar el panel frontal. Después de analizar un poco el asunto y molestar a varios amigos del foro en privado, me convencí de hacer una placa de circuito impreso enorme, sobre la que montar directamente los LEDs, las llaves y toda la electrónica necesaria. Quedó un PCB de dos caras, que mide unos 37x12 centímetros. Semejante tamaño no es fruto de la cantidad de integrados involucrados, sino por que intenté que el tamaño final de este clon fuese el mismo que el de la máquina original. Aqui hay algunas fotos del mismo:







Y finalmente, llaves y LEDs, a la misma altura para que luego quedasen bien al insertarlos en el frente:







La idea era poner, como frente, un acrílico. Pero una cosa es tener la idea, y otra muy diferente concertarla. Afortunadamente, un amigo del foro Retrocomputación que vive en Capital Federal encontró una casa que trabaja en acrílicos, y con un sistema láser me lo perforaron y grabaron todos los "labels" de los elementos del panel frontal.

Así quedó el "clon" con el acrílico ya perforado y grabado, listo para usar:










Obviamente, no se parece mucho al original. El problema va a ser conseguir un gabinete adecuado, parecido al de la foto que ves más abajo, y -si es posible- más adelante cambiar el frente por uno que no sea transparente y tenga la chapa de aluminio con el nombre de la máquina, etc. Este es el gabinete que tenia la máquina original.


Y aquí hay un vídeo de una de las primeras pruebas de los registros de desplazamiento del frente:


A medida que vaya teniendo más material para mostrar pasaré por aquí para postearlo. La idea es que este clon se comporte igual que el original, aunque a una velocidad menor. Obviamente, para jugar un poco va a venir muy bien.

Para terminar, les dejo un video de la máquina "de verdad", para que tengan una idea de como se programan estos bichos, usando las llaves como "teclado" y los LEDs como "pantalla":


Antes de terminar (por ahora) no puedo dejar de dar las gracias a todos los que me ayudaron a que este "clon" puedise existir. Amigos, GRACIAS!

¡Nos vemos pronto!


PD: No logré poner los videos de Youtube como corresponde.....ni bien me acuerde como se hace edito y los arreglo ;)
« Última modificación: 02 de Junio de 2011, 17:38:56 por aitopes »
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #1 en: 27 de Mayo de 2011, 15:43:34 »
Encuentro genial lo que has hecho Ariel, te felicito.

Una pregunta, en lugar de usal JALv2, no te atreves a intentar hacer el código directamente en assembler para lograr una velocidad más cercana (si no igual) a la del original Altair 8800?

Saludos y mis felicitaciones nuevamente.  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #2 en: 27 de Mayo de 2011, 17:44:24 »
Felicidades amigo, una muestra mas que con dedicación todo se logra.

SALUDOS!


Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #3 en: 31 de Mayo de 2011, 15:37:30 »
Gracias por los comentarios!!!!

En este momento estoy terminando de dejar todo funcionando. Quiero usar la EEPROM que agregue como una especie de "disco duro", para guardar hasta 128 programas de 256 bytes cada uno, y agregar la posibilidad de que esos programas puedan transferirse desde y hacia una PC via USB (todo está previsto en la placa). No estoy seguro de que la memoria del PIC alcance para el tema USB.

Cuando eso esté implementado, voy a intentar migrarlo a ASM. El programa, contra todo lo que pueda parecer a primera vista, no es muy complejo. Y lo tengo todo separado en funciones, por lo que la migracion podría ser bastante sencilla.

Ya les contaré como va todo ;)

Gracias de nuevo!

Un abrazo.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #4 en: 01 de Junio de 2011, 15:17:35 »
Si te animas a usar ASM, vas a descubrir que no es tan complicado como lo pintan, quizá da mas trabajo hacer algunas cosas pero pienso que para emular un microprocesador vas a encontrar que te facilita la vida, porque seguramente muchos de los opcodes del Altair tendrán similitudes con los propios del PIC, hay veces que simular funciones muy básicas de un micro con un lenguaje de alto nivel es mucho más difícil que hacerlo con un lenguaje de bajo nivel, donde el comando puede que hasta sea directo.
Además si quieres una manito me avisas y te ayudo.

Salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #5 en: 01 de Junio de 2011, 15:32:41 »
IMPRESIONANTE! MIS FELICITACIONES! ;-)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #6 en: 02 de Junio de 2011, 15:55:15 »
Además si quieres una manito me avisas y te ayudo.

Salud  8)

¡Lo voy a tener en cuenta! ;)


IMPRESIONANTE! MIS FELICITACIONES! ;-)

Muchas gracias!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #7 en: 02 de Junio de 2011, 18:18:33 »
Hoy me pude poner un rato y "emprolijar" código que tenia en pruebas, en varios archivos, etc, y ya tengo funcionando las funciones de "consulta" de memoria con las llaves "EXAMINE/EXAMINE NEXT", de "carga y actualizacion" mediante la llave "DEPOSIT/DEPOSIT NEXT" y el "RESET".

Dado que tambien ejecuta el código, solo tengo que convertir esa funcion en una que en lugar de ejecutar todo el programa solo ejecute las instrucciones de una, para poder implementar las funciones correspondientes a "RUN/STOP" y "SINGLE STEP".

Calculo que estoy mas o menos al 90% de recorrido total ;)

Luego queda el tema de "PROTECT/UNPROTECT" la memoria (nada grave), hacer que los leds de "status" se correspondan con el estado de la maquina (deberia ser facil, tengo todo en variables y una funcion que escribe cada LED) y guardar/recuperar programas de la EEPROM (hasta 128 programas de 256 bytes cada uno) mediante las dos llaves auxiliares.

El tema de mandar esos programas a la PC via USB lo veo complicado por que estoy quedandome sin recursos en el PIC.

Si algun dia lo paso a ASM, quizás quede lugar para eso. Por ahora, me voy a enfocar en dejarla funcionando y luego veré que hacer.

En un rato subo un video de la maquinucha funcionando :)

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado SavageChicken

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 931
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #8 en: 02 de Junio de 2011, 18:47:06 »
Esperamos el video entonces.

salud  8)
No hay preguntas tontas...
Solo hay tontos que no preguntan.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #9 en: 02 de Junio de 2011, 19:04:54 »
Tarda bastante en subir por que mi conexion es muy mala.  :(

Recien me tomé el trabajo de cargar un programa completo que viene en el manual de la maquina original, indicando paso a paso como operar con las llaves para cargarlo y luego comprobar que este ok, y siguiendo los paso uno a uno pude cpmprobar que lo que hace el "clon" se ajusta a la máquina original  :-/

Espero hacerme tiempo el fin de semana para ajustar el tema de la ejecución, y a jugar!  :D
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #10 en: 02 de Junio de 2011, 19:10:20 »
Aqui está!

Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #11 en: 02 de Junio de 2011, 22:18:14 »
 :-/ :-/ :-/ :-/

Excelente .. Felicitaciones!!!

Saludos
El papel lo aguanta todo

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #12 en: 03 de Junio de 2011, 08:06:26 »
te felicito ariel por el trabajo ,por la voluntad y paciencia de programar eso¡¡¡¡  :shock:
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #13 en: 03 de Junio de 2011, 12:18:55 »
Me encanto!! Felicitaciones Ariel!! La verdad q es un laburo impresionante, sin mencionar el acabado impecable :wink:
Pensar q gracias a este aparato bill gates construyo su imperio jaja.
Saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Altair 8800 clone [con PIC18F4550]
« Respuesta #14 en: 03 de Junio de 2011, 12:48:11 »
Gracias!
Todavia falta el gabinete, la idea es que quede lo mas parecida posible. De hecho, es posible que cambie el acrilico del frente por uno "ciego" con los colores y tipografias del original....Ya veremos.

Por lo pronto, hoy ejecuté los primeros programas sin problemas. Increiblemente, ejecutaron al primer intento! :-/

Obviamente, había ido probando cada rutina por separado, pero el hecho de "ensamblar" todo, dale a la llavecita y que corra de una es algo que no tiene precio  :D
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert