Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô

Componentes e Materiais

Arduino Mega 2560 × 1
Arduino Due (alternativa ao Mega – use apenas um dos dois) × 1
LED (genérico) × 36
Transistor NPN de Uso Geral × 36
Resistor 10k Ω × 36
Resistor 150 Ω × 36
Chave seletora miniatura SPDT On-On (para 16 chaves de endereço + chave de alimentação) × 17
Chave momentânea SPDT (On)-Off-(On) (para chaves de função RUN/STOP/EXAMINE...) × 8
Chapa metálica para suporte do painel frontal × 1
Módulo Bluetooth SparkFun BlueSMiRF Silver (opcional – permite usar qualquer dispositivo com Bluetooth como terminal serial) × 1
Cartão microSD com adaptador SD (opcional – necessário apenas para emulação de unidade de disco) × 1

Aplicativos e Serviços Online

Sobre o Projeto

Se você gostaria de construir este projeto mas não quer começar do zero, confira o kit Altair-Duino de Chris Davis, que vem com todos os componentes, PCB, gabinete e um Arduino Due pré-programado!

Aqui estão algumas fotos de outras pessoas que construíram este projeto e o personalizaram:

Se mais alguém quiser compartilhar sua criação, avise-me e publicarei aqui. Adoraria ver a variedade de versões que as pessoas criam!

Há muito tempo pensava que seria legal ter um computador Altair 8800 para brincar. Mas Altairs funcionais são raros e caros, custando facilmente $1.500–$2.500 quando disponíveis. Existem outras opções, como altairclone.com, mas ainda custa $600, o que para mim é muito para gastar em um computador que, embora muito legal, terá uso limitado. Felizmente, Mike Douglas, criador do Altair Clone, disponibilizou à comunidade todos os documentos e software antigos que caçou e usou ao criar o clone. Graças ao trabalho de Mike, há uma riqueza de informações sobre o funcionamento interno do Altair e seus periféricos mais populares convenientemente disponível.

Em algum momento, olhei as especificações do Arduino Mega 2560 e comecei a me perguntar se ele teria pinos I/O suficientes para apenas conectar os LEDs e chaves do painel frontal do Altair e escrever meu próprio software de emulação. Acontece que o Arduino Mega tem exatamente o número certo de pinos I/O. Então, eu só tinha que fazer meu próprio clone do Altair.

Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô

Usar o Arduino Mega para rodar o simulador funcionou bem e foi simples de configurar, mas a emulação roda a apenas cerca de 25% da velocidade do Altair e só pode fornecer 6 KB de RAM emulada (embora na época isso fosse muito). A capacidade de armazenamento permanente (para salvar programas/dados criados no simulador) também é limitada, já que a EEPROM do Mega comporta apenas 4 KB.

O Arduino Due tem memória suficiente para suportar 64 KB completos de RAM emulada e roda muito mais rápido que o Mega. Além disso, o Due pode salvar dados na memória flash em tempo de execução. Isso torna possível usar qualquer parte dos 512 KB de flash não usados pelo próprio simulador para armazenamento semipermanente.

Com o Due, agora tenho um simulador Altair 8800 que roda aproximadamente na velocidade original, fornece 64 KB de RAM emulada, inclui muito software do Altair e ainda pode fornecer 32 KB de armazenamento semipermanente para carregar e salvar programas e dados no emulador.

Meu objetivo para este projeto era chegar o mais próximo possível da sensação "real" do Altair 8800 ao trabalhar com o simulador. Isso inclui fazer as luzes do painel frontal refletirem o comportamento real o máximo possível. Um critério para isso era que deveria ser possível jogar o jogo de painel frontal "Kill-the-Bit" – e é:

Acontece que a simulação é fiel o suficiente ao original para que até a demonstração de música do Altair 8800 funcione. Note que isso depende de um rádio AM captar a interferência eletromagnética gerada pela circuitaria do Altair!

Na época, a Processor Technology lançou uma pequena placa de extensão para o Altair (apenas alguns capacitores e resistores) com software acompanhante que transformava o Altair em um sistema de música respeitável (para a época). As mesmas adições podem ser feitas no Simulador (veja a documentação) o que permite tocar as músicas criadas para o sistema de música na época. Aqui está um exemplo:

Outra extensão historicamente importante do Altair foi a placa gráfica Cromemco Dazzler. Usando uma extensão de software ou hardware, o Simulador também pode emular essa placa:

Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô
Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô

Outra extensão de software/hardware permite que o Simulador emule a placa de vídeo Processor Technology VDM-1:

Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô

Claro que no final eu não possuo um Altair original, então toda informação sobre como ele funciona teve que vir de documentos e vídeos (veja agradecimentos abaixo). Pode haver algumas diferenças menores, mas no geral acho que reproduz o comportamento original bastante bem. Uma diferença conhecida (e intencional) é a luz de status HLDA: No original, ela sinaliza que a CPU reconheceu ter sido parada por um dispositivo externo. Essa funcionalidade nunca é usada no simulador, então aqui ela sinaliza que um arquivo (captura/reprodução serial/fita) está atualmente aberto.

Destaques

Importante ao usar o Due: Tudo capturado ou salvo dentro do simulador é apagado se você enviar uma nova versão do sketch para o Due. Isso ocorre porque os dados salvos são armazenados na memória flash, que é apagada ao enviar um novo sketch (o Due não tem EEPROM para armazenamento permanente). Se um cartão SD estiver conectado ao Due, os dados salvos são armazenados no cartão SD. Nesse caso, os dados não serão perdidos ao enviar um novo sketch.

Documentação

Como o simulador funciona exatamente como o Altair 8800, a documentação original do Altair (facilmente encontrada no Google) fornecerá todas as informações necessárias para operar as chaves do painel frontal.

No entanto, o simulador inclui várias funções extras e software embutido para o Altair acessíveis via chaves AUX1/AUX2 no painel frontal (essas chaves existiam mas não eram usadas no Altair original). Essa funcionalidade é explicada em um documento separado que escrevi durante o desenvolvimento do software do Simulador. O documento tem muitas páginas e as informações nele contidas sobrecarregariam esta página, então consulte o arquivo Documentation.pdf no repositório de código fonte.

Instruções de Construção

Um objetivo era usar o mínimo possível de circuitos de suporte. Tanto o Arduino Mega quanto o Due têm pinos I/O suficientes para conectar diretamente todos os elementos do painel frontal. O único circuito adicional necessário são os transistores e resistores para acionar os 36 LEDs (se os LEDs fossem conectados diretamente aos pinos de saída do Arduino e muitos ligassem ao mesmo tempo, a corrente total excederia os limites do Arduino).

Criar esquemáticos completos para este projeto seria tedioso, repetitivo (36 circuitos idênticos de driver de LED, fiação para 32 chaves) e não muito útil. Por isso, o documento de esquemáticos contém tabelas detalhadas sobre quais elementos são conectados a quais pinos do Arduino e os esquemáticos dos subcircuitos individuais (como drivers de LED). Também adicionei um arquivo Fritzing para mostrar o layout dos componentes do driver de LED na placa de tiras (stripboard).

Para criar o painel frontal, comecei com uma digitalização de alta qualidade do painel frontal do Altair (encontrada em www.vintage-computer.com) e mandei imprimir em uma gráfica em cartolina. Para o suporte traseiro (para realmente segurar chaves e LEDs no lugar), usei uma chapa de metal de 22 gauge, usando uma furadeira comum para criar os furos para LEDs e chaves. Os circuitos de driver de LED são soldados em pedaços de stripboard que são soldados diretamente aos LEDs, que por sua vez são mantidos no lugar pela chapa metálica.

O painel frontal é mantido no lugar e na vertical por uma caixa de madeira simples. A caixa não é tão profunda quanto o Altair original (porque só precisa segurar o painel frontal e o Arduino).

Kit Simulador Altair 8800 Baseado em Arduino – Construa e Programe um Computador Retrô

Para conectar a chave Liga/Desliga do painel frontal, apenas adicionei uma tomada de alimentação (igual à do próprio Arduino) à caixa, conectei-a à chave do painel frontal e desta a um plugue de alimentação que se conecta ao Arduino.

Ao usar o Arduino Due, a emulação de até 16 unidades de disco 88-DCDD pode ser ativada conectando um cartão SD à porta SPI do Due. A última página do documento de esquemáticos mostra a fiação necessária em detalhes.

Antes de enviar o sketch para o Arduino Due, certifique-se de alterar a configuração de otimização do compilador do Arduino para "performance". Por padrão, ela é definida como "size" (não sei por que, já que o Due tem 512 KB de flash). Para fazer isso, abra o arquivo

c:\Users\[usuario]\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.9\platform.txt

em um editor de texto e altere qualquer ocorrência de "-Os" para "-O3". Você pode pular esta etapa, mas o simulador rodará significativamente mais lento.

O software do simulador também pode rodar em um Arduino básico (Mega ou Due) sem nenhum controle de painel frontal conectado. Isso permite rodar vários dos programas incluídos (aqueles que usam principalmente o terminal serial e não os elementos do painel frontal). Para fazer isso, edite o arquivo fonte config.h e defina #define STANDALONE 1 (em vez de 0). Consulte a seção "Debugging capabilities" na documentação para ver como operar os elementos virtuais do painel frontal nessa configuração. Lembre-se, porém, que este não é o uso pretendido do simulador. Sugiro usar emuladores baseados em PC totalmente em software se você não quiser construir o hardware do painel frontal. O arquivo fonte config.h contém várias chaves que incluem/excluem funcionalidades do simulador. As configurações padrão funcionam bem, mas se você quiser ajustar o simulador, este é o lugar para começar.

Agradecimentos

Como não possuo um Altair, tive que confiar em informações da internet. Os vídeos instrutivos do Altair 8800 produzidos por Mike Douglas (deramp5113) do altairclone.com foram de grande ajuda e são muito interessantes de assistir. Além de produzir os vídeos, Mike coletou uma riqueza de manuais de hardware e software relacionados ao Altair e os disponibilizou em seu site.

(Nota: os vídeos de Mike são muito úteis para ter ideias sobre o que fazer com o simulador depois de construí-lo)

A ferramenta ADEXER de Martin Eberhard foi inestimável para depuração de baixo nível do suporte a disco rígido. Ele também escreveu dois boot loaders usados pelo simulador: o combo disk boot loader (CDBL) para inicialização de discos e mini-discos, bem como o hard disk boot loader (HDBL), que é mais curto e estável que o original.

Embora eu tenha escrito todo o código, incluindo a emulação da CPU, eu me inspirei no projeto i8080 core model para implementar eficientemente o cálculo de half-carry e a instrução DAA.

O simulador inclui algum software original para o Altair 8800. Outro grande agradecimento a Mike Douglas, que passou incontáveis horas caçando, coletando e fazendo esse software funcionar e depois disponibilizou tudo em seu site altairclone.com:

As imagens de disco e disco rígido (incluídas no subdiretório "disks" do arquivo fonte) também foram obtidas do altairclone.com e do deramp.com (site pessoal de Mike Douglas). Estas incluem CP/M, várias versões de BASIC em disco, Altair DOS (incluindo Fortran) e mais. Novamente, Mike fez um trabalho incrível encontrando todo esse software e criando imagens de disco funcionais que podem ser usadas pela comunidade do Altair. Eu usei apenas uma seleção do software, então você pode querer ir ao altairclone.com ou deramp.com e conferir mais.

Fórum de Discussão

Chris Davis do Altairduino.com configurou um Grupo do Google para discussão de perguntas relacionadas ao Altair-Duino:

https://groups.google.com/forum/#!forum/altair-duino

Sinta-se à vontade para visitar e contribuir para a discussão!

Código

Código do Simulador Arduino Altair 8800

https://github.com/dhansel/Altair8800

Esquemáticos

Em vez de fornecer esquemáticos completos (muito repetitivos), este documento descreve quais pinos conectar a quais elementos do painel frontal e fornece esquemáticos para os subcircuitos (como circuitos de driver de LED).

Uma tentativa de mostrar o layout da stripboard à qual os LEDs estão conectados. Está um pouco apertado, mas deve ser suficiente para ver como as coisas estão conectadas. Importante: os componentes para cada LED ocupam no máximo 5 espaços na stripboard. Assim, os LEDs podem ficar próximos o suficiente para ter o painel frontal no tamanho original.

ledstrip_4OVCpRyKQS.fzz

Processo de manufatura

  1. Painel de Controle para Flight Simulator 2020 com Arduino Nano – Display LCD e CDI
  2. Construa um Spybot Controlado por Bluetooth com Arduino
  3. FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
  4. DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
  5. Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
  6. Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
  7. Soluções de Energia Otimizadas para Projetos Arduino
  8. Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
  9. Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
  10. Volante Joystick Arduino Personalizado para Jogos