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

Simulador Arduino Altair 8800

Componentes e suprimentos

Arduino Mega 2560
× 1
Arduino Due
Arduino Mega ou Devido são obrigatórios, não ambos!
× 1
LED (genérico)
× 36
Transistor de uso geral NPN
× 36
Resistor 10k ohm
× 36
Resistor 150 ohm
× 36
Mini chave seletora SPDT On-On
Para 16 interruptores de endereço (SW15-0) mais interruptor de alimentação
× 17
Interruptor momentâneo SPDT (On) -Off- (On)
Para opções de função (RUN / STOP / EXAMINE ...)
× 8
Folha de metal para revestimento do painel frontal
× 1
SparkFun Bluetooth Modem - BlueSMiRF prata
Opcional. Conectar isso aos pinos do Arduino TX / RX permitirá que qualquer computador ou telefone com bluetooth atue como um terminal serial para o Altair emulado.
× 1
cartão microSD com adaptador de cartão SD
Opcional. Necessário apenas para emulação de unidade de disco, o que não é necessário para o funcionamento do simulador.
× 1

Aplicativos e serviços online

Arduino IDE
Biblioteca Arduino DueFlashStorage
O Arduino Due não tem EEPROM para armazenamento permanente, mas com esta biblioteca os dados podem ser salvos no -chip de memória flash. Tudo o que foi salvo é excluído ao atualizar o Arduino!
Arduino Due soft_uart library
Uma implementação UART de software que permite que qualquer pino seja usado como uma interface serial (semelhante à biblioteca SoftwareSerial de outras plataformas Arduino). Os arquivos desta biblioteca estão incluídos na fonte do simulador, pois precisei fazer algumas pequenas modificações para integrá-los ao simulador.

Sobre este projeto


Se você gostaria de construir isso, mas não gosta da ideia de começar completamente do zero, confira Kit Altair-Duino de Chris Davis que vem com todos os componentes, um PCB, uma caixa e um Arduino Due pré-programado!

Aqui estão algumas fotos de outras pessoas que criaram este projeto e o tornaram seu:
  • Alan Lowther encontrou um bela caixa de metal para sua versão e conectou um Raspberry Pi para entrada / saída e síntese de voz.
  • Martin Zumr fez uma caixa muito bonita, toda de madeira.
  • Chris Davis ( kb0wwp ) fez um PCB e um lindo caso.
  • Justin Davis fez um Escudo Altair para o Arduino Due.

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

Por muito tempo pensei que seria legal ter um computador Altair 8800 para brincar. Mas Altairs antigos de trabalho são raros e, portanto, caros, custando facilmente US $ 1.500 a US $ 2.500, se disponíveis. Existem algumas outras opções, como altairclone.com, mas ainda custa US $ 600, o que para mim é muito para gastar em um computador que - embora seja muito legal - terá uso limitado. Felizmente, Mike Douglas, o criador do Clone Altair, disponibilizou para a comunidade todos os documentos e softwares antigos que ele buscou 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íveis.

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

Usar o Arduino Mega para conduzir o simulador funcionou bem e foi simples de configurar, mas a emulação funciona com apenas cerca de 25% da velocidade do Altair e pode fornecer apenas 6 KB de RAM emulada (embora no passado isso teria sido muito ) A capacidade de armazenamento permanente (para salvar programas / dados criados no simulador) também é limitada, uma vez que a EEPROM do Mega comporta apenas 4 KB.

O Arduino Due tem bastante memória para suportar 64 KB de RAM emulada e roda muito mais rápido do 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 do flash de 512K não usada pelo próprio simulador para armazenamento permanente.

Usando o Due, agora tenho um simulador Altair 8800 que roda em torno da velocidade original, fornece 64K de RAM emulada, inclui muito software Altair e ainda pode fornecer 32K de armazenamento semi-permanente para carregar e salvar programas e dados no emulador.

Meu objetivo com 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 com que as luzes do painel frontal reflitam o comportamento real tanto quanto possível. Um critério para isso era que deveria ser possível jogar o jogo "Kill-the-Bit" do painel frontal - e é:

Acontece que a simulação é fiel ao original o suficiente para que até mesmo a demo musical do Altair 8800 funcione. Observe que isso depende de um rádio AM captando a interferência eletromagnética gerada pelos circuitos do Altair!

No passado, a Processor Technology lançou uma pequena placa de extensão para o Altair (apenas alguns capacitores e resistores) com software que o tornou um sistema de música respeitável (para a época). Os mesmos acréscimos podem ser feitos no Simulador (consulte a documentação), o que permite reproduzir as músicas criadas para o sistema de música naquela é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:

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

É claro que no final eu não possuo um Altair original, então todas as informações sobre como ele funciona devem vir de documentos e vídeos (veja os agradecimentos abaixo). Pode haver algumas pequenas diferenças, mas, no geral, acho que reproduz muito bem o comportamento original. Uma diferença conhecida (e intencional) é a luz de status do HLDA:no original, ela sinaliza que a CPU reconheceu ter sido interrompida por um dispositivo externo. Esta funcionalidade nunca é usada no simulador, então aqui ela sinaliza que um arquivo (serial / captura de fita / replay) está aberto no momento.





Destaques

  • Reproduz com precisão o comportamento dos elementos do painel frontal do Altair.
  • É executado quase à mesma velocidade do Altair 8800 original (ao usar o Arduino Due) ou 25% da velocidade original ao usar o Arduino Mega.
  • O tamanho da RAM emulada é 64 KB (devido) ou 6 K (Mega)
  • Vários programas Altair estão incluídos e podem ser facilmente carregados no emulador, incluindo Pong, Altair 4K BASIC (o primeiro produto da Microsoft), Altair extendido BASIC, MITS Programming System II (apenas devido), Altair Time Sharing BASIC ( permite que vários usuários usem o BASIC ao mesmo tempo).
  • Os programas de exemplo BASIC e Assembler estão incluídos no software do emulador e podem ser facilmente carregados no BASIC / Assembler.
  • Emula uma placa 88-SIO, 88-2SIO e 88-ACR (interface de gravador de cassete de áudio). Cada dispositivo serial simulado pode ser mapeado para uma interface serial do Arduino. Por padrão, os dois mais comuns (88-SIO e 88-2SIO porta 1) são mapeados para a porta serial principal do Arduino em 115200 baud 8n1, que pode ser acessada via cabo USB. Eu recomendo conectar um dongle serial para Bluetooth aos pinos seriais RX / TX. Dessa forma, qualquer dispositivo habilitado para bluetooth pode servir como um terminal para o Altair.
  • No Arduino Due, tanto a interface serial principal (USB) quanto a interface Serial1 (pinos 18/19) podem ser usadas simultaneamente.
  • Os dados enviados para cada dispositivo serial (incluindo a fita ACR) podem ser capturados e reproduzidos em até 256 arquivos que são mantidos no armazenamento local do Arduino (EEPROM ou FLASH).
  • A interface do cassete suporta o uso dos comandos CSAVE / CLOAD no BASIC estendido (o suporte é automático, sem a necessidade de interação do usuário). Ótimo para desenvolver seus próprios programas BASIC!
  • Emula uma placa de vídeo Cromemco Dazzler (precisa de algum hardware / software adicional, veja aqui)
  • Emula uma placa de terminal de vídeo VDM1 de tecnologia de processador (precisa de algum hardware / software adicional, veja aqui)
  • Emula até 16 unidades de disco 88-DCDD (4 na configuração padrão). A emulação da unidade de disco é opcional, mas requer conectar um cartão SD ao cabeçalho SPI do Arduino. Compatível apenas com o uso do Arduino Due.
  • Emula um controlador de disco rígido 88-HDSK com até 4 unidades de disco rígido conectadas (1 na configuração padrão) e 4 pratos por unidade.
  • Emula uma placa 88-RTC-VI com relógio em tempo real e tratamento de interrupção vetorial. Isso torna possível executar o Altair Time Sharing Basic.
  • Páginas de memória de 256 bytes podem ser salvas no armazenamento permanente e carregadas de volta na memória. Isso fornece uma maneira simples de salvar programas inseridos por meio dos interruptores do painel frontal.
  • Muitas configurações podem ser facilmente alteradas por meio do editor de configuração integrado.

Ao usar o Devido, esteja ciente de que tudo capturado ou salvo no simulador será apagado se você carregar uma nova versão do esboço para o Devido. Isso ocorre porque os dados salvos são armazenados na memória flash, que são apagados ao carregar um novo esboço (o Devido não tem nenhum EEPROM para armazenamento permanente). Se um cartão SD estiver conectado ao Devido, os dados salvos serão armazenados no cartão SD. Nesse caso, os dados não serão perdidos ao carregar um novo esboço.





Documentação


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

No entanto, o simulador inclui uma série de funções extras e software embutido para o Altair que são acessíveis através dos interruptores AUX1 / AUX2 no painel frontal (aqueles foram incluídos, mas não usados ​​no Altair original). Essa funcionalidade é explicada em um documento separado que escrevi durante o desenvolvimento do software para o Simulador. O documento tem muitas páginas e as informações nele contidas sobrecarregariam esta página, portanto, consulte o arquivo Documentation.pdf no repositório de origem.





Instruções de construção


Um dos objetivos era usar o mínimo possível de circuitos de suporte. Tanto o Arduino Mega quanto o Due têm pinos de E / S suficientes para conectar diretamente todos os elementos do painel frontal. Os únicos circuitos adicionais necessários são os transistores e resistores para acionar os 36 LEDs (se os LEDs forem conectados diretamente aos pinos de saída do Aruino e muitos forem ligados ao mesmo tempo, a corrente total excederá os limites do Arduino).

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

Para criar o painel frontal, comecei com uma digitalização de alta qualidade do painel frontal do Altair (encontrado aqui em www.vintage-computer.com) e o imprimi em uma copiadora em papel cartão. Para o apoio (para realmente segurar interruptores e LEDs no lugar), usei uma folha de metal calibre 22, usando uma furadeira regular para criar os orifícios para LEDs e interruptores. 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 folha de metal.

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

Para conectar a chave liga / desliga do painel frontal, eu apenas adicionei um soquete de alimentação (igual ao do próprio Arduino) à caixa, conectei à chave do painel frontal e daí a um plugue de alimentação que se conecta ao Arduino.

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

Antes de enviar o esboço para o Arduino Due, certifique-se de mudar a configuração de otimização do compilador Arduino para "desempenho". Por padrão, ele é definido como "tamanho" (não tenho certeza do porquê, pois o vencimento tem memória flash de 512k). Para fazer isso, carregue o arquivo

c:\ Users \ [user] \ 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 ficará significativamente mais lento.

O software do simulador também pode ser executado em um Arduino básico (Mega ou Due) sem nenhum controle do painel frontal conectado. Isso permite executar alguns dos programas incluídos (aqueles que usam principalmente o terminal serial e não os elementos do painel frontal). Para fazer isso, edite o config.h arquivo de origem e definir #define STANDALONE 1 (em vez de 0). Consulte a seção "Recursos de depuração" na documentação para ver como operar os elementos do painel frontal virtual nessa configuração. Porém, lembre-se de que este não é o uso pretendido para o simulador. Eu sugiro usar emuladores de software baseados em PC se você não quiser construir o hardware do painel frontal. O config.h o arquivo de origem contém várias opções que incluem / excluem a funcionalidade do simulador. As configurações padrão funcionam bem, mas se você quiser ajustar o simulador, este é o lugar por onde começar.





Agradecimentos


Como não tenho um Altair, tive que confiar na obtenção de informações da Internet. Os vídeos de instrução 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 reuniu uma grande quantidade de manuais de hardware e software relacionados ao Altair e os disponibilizou em seu site.

(Observe que os vídeos de Mike são muito úteis para obter algumas idéias sobre o que fazer com o simulador depois de construí-lo)

A ferramenta ADEXER de Martin Eberhard foi inestimável para a depuração de baixo nível do suporte ao disco rígido. Ele também escreveu dois gerenciadores de inicialização usados ​​pelo simulador:o gerenciador de inicialização de disco combo (CDBL) para inicializar discos e minidiscos, bem como o gerenciador de inicialização de disco rígido (HDBL), que é mais curto e mais estável do que o original.

Embora eu mesmo tenha escrito todo o código, incluindo a emulação de CPU, me inspirei no projeto do modelo de núcleo i8080 quando se tratou de obter o cálculo de meio-carry e a instrução DAA implementada de forma eficiente.

O simulador inclui algum software original para o Altair 8800. Outro grande agradecimento a Mike Douglas, que passou incontáveis ​​horas procurando, coletando e fazendo com que este software funcionasse e então o disponibilizou em seu site altairclone.com:
  • Altair 4K BASIC (MITS 1975)
  • Altair Extended ROM Basic (MITS 1975)
  • Altair Time Sharing Basic (MITS 1977)
  • Jogo Kill-the-Bit (Dean McDaniel, 1975)
  • Jogo Pong usando o painel frontal (Mike Douglas)
  • Música 'Daisy, Daisy ...' (Steve Dompier, 1975)
  • Sistema de música (Tecnologia de processador 1977)
  • Sistema de programação MITS II (MITS 1976)
  • Monitor Turnkey Altair (MITS 1977)
  • i8080 CPU Diagnostic (Microcosm Associates, 1980)
  • Exercitador de CPU i8080 (Frank D. Cringle 1994, Ian Bartholomew 2009)

As imagens de disco e disco rígido (incluídas no subdiretório "discos" do arquivo de origem) também foram obtidas de altairclone.com, bem como deramp.com (site pessoal de Mike Douglas). Isso inclui CP / M, várias versões de disco BASIC, Altair DOS (incluindo Fortran) e muito mais. Mais uma vez, Mike fez um trabalho incrível, encontrando todo aquele software e, em seguida, criando imagens de disco funcionais que podem ser usadas pela comunidade Altair. Usei apenas uma seleção do software, então você pode acessar altairclone.com ou deramp.com e verificar mais alguns.





Fórum de discussão


Chris Davis, do Altairduino.com, criou um Grupo do Google para a discussão de questões relacionadas ao Altair-Duino:

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

Fique à vontade para visitar e contribuir com a discussão!

Código

Código do simulador Arduino Altair 8800
https://github.com/dhansel/Altair8800

Esquemas

Em vez de fornecer esquemas completos (muito repetitivos), este documento descreve quais pinos conectar a quais elementos do painel frontal e fornece esquemas para os sub-circuitos (como circuitos de driver de LED). Uma tentativa de mostrar o layout do stripboard em que os LEDs estão conectados para. É um pouco lotado, mas deve ser bom o suficiente para ver como as coisas estão conectadas. O importante é que os componentes de cada LED ocupem não mais do que 5 espaços no stripboard. Dessa forma, os LEDs podem ficar próximos o suficiente para ter o painel frontal no tamanho original. ledstrip_4OVCpRyKQS.fzz

Processo de manufatura

  1. Painel LCD com Arduino para o simulador de vôo
  2. Arduino Spybot
  3. FlickMote
  4. TV B-Gone caseiro
  5. Relógio mestre
  6. Encontre-me
  7. Arduino Power
  8. Tech-TicTacToe
  9. Arduino Quadruped
  10. Joystick Arduino