Índice:

Emulador autônomo retro CP / M: 8 etapas
Emulador autônomo retro CP / M: 8 etapas

Vídeo: Emulador autônomo retro CP / M: 8 etapas

Vídeo: Emulador autônomo retro CP / M: 8 etapas
Vídeo: Building a Standalone Z80 CP/M Computer (part 1) 2024, Novembro
Anonim
Emulador autônomo retro CP / M
Emulador autônomo retro CP / M

Este projeto usa o módulo VGA32 ESP v1.4 para executar uma combinação ou RunCPM e FabGL para fornecer um computador autônomo executando um sistema equivalente ao CP / M 2.2. Popular durante a década de 1980 como um sistema operacional para pequenos computadores. Você pode voltar no tempo e revisitar softwares antigos, como Wordstar, Supercalc, Adventure e Zork.

É uma cortesia independente do projeto FabGL que forneceu o software para executar um monitor VGA padrão e teclado PS / 2.

O sistema operacional principal é uma versão modificada do RunCPM, foi bifurcada do trabalho original no Github e adicionei a biblioteca FabGL para permitir que ela seja usada em uma tela em vez de em um console serial.

Só gostaria de agradecer muito a ambos os projetos. Mantenha o bom trabalho!

O software foi testado em pelo menos duas versões de hardware. Um o VGA32 ESP v1.4 (vendido pronto). Em segundo lugar, minha versão anterior, eu construí a partir de um módulo ESP32 do Wroom e retirei bits de computadores antigos.

O site Github abaixo contém informações importantes sobre essas configurações, bem como o software modificado pronto para instalar.

Este projeto é sobre a instalação do software, não sobre o hardware.

Suprimentos:

Um módulo VGA32 ESP V1.4 (testado). Encontrado em eBay / aliexpress / amazon etc

O IDE Arduino instalado em um computador, suponho que, se você está lendo isso, você já o possui.

Instale o pacote de suporte ESP32 para Arduino IDE. https://github.com/espressif/arduino-esp32 Veja a etapa 1

A biblioteca FabGL https://www.fabglib.org/ você não precisa baixar nada, o IDE do arduino pode fazer isso por nós, consulte a etapa 2.

Baixe uma cópia do RunCPM modificado em

Etapa 1: instale o suporte ESP32 para Arduino (opcional)

Instale o suporte ESP32 para Arduino (opcional)
Instale o suporte ESP32 para Arduino (opcional)

Você pode muito bem já ter feito isso, se você fez, pode pular esta etapa.

visite https://github.com/espressif/arduino-esp32 e siga as instruções de instalação usando o gerenciador de placas, como este:

Instruções de instalação usando Arduino IDE Boards Manager =============================================== ===============

Link de lançamento estável:

Instale o IDE upstream atual do Arduino no nível 1.8 ou posterior. A versão atual está no site do Arduino.

Inicie o Arduino e abra a janela Preferências.

Insira um dos links de lançamento acima no campo URLs adicionais do gerente da placa. Você pode adicionar vários URLs, separando-os com vírgulas.

Abra o gerenciador de placas em Ferramentas> menu Placa e instale a plataforma esp32 (e não se esqueça de selecionar sua placa ESP32 em Ferramentas> menu Placa após a instalação).

Etapa 2: Adicionando a Biblioteca FabGL ao IDE

Adicionando a biblioteca FabGL ao IDE
Adicionando a biblioteca FabGL ao IDE
Adicionando a biblioteca FabGL ao IDE
Adicionando a biblioteca FabGL ao IDE

Usando um esboço em branco no IDE do Arduino, certifique-se de ter selecionado sua placa ESP no menu Ferramentas, Placas. (No momento em que este artigo foi escrito, o VGA32 ESP não estava listado, eu escolhi uma placa do Dev Kit genérica).

No menu Sketch, escolha Incluir Biblioteca e, a seguir, escolha Gerenciador de Biblioteca.

Na caixa de diálogo de pesquisa digite FabGL e espere que apareça na lista abaixo, agora clique no botão Instalar.

finalizado

Etapa 3: Adicionando Biblioteca de Cartão SD adicional usada por RunCPM

Adicionando biblioteca de cartão SD adicional usada por RunCPM
Adicionando biblioteca de cartão SD adicional usada por RunCPM

Isso é quase o mesmo que a etapa anterior, mas em vez da pesquisa FabGL por SDFat

No menu Sketch, escolha Incluir Biblioteca e, a seguir, escolha Gerenciador de Biblioteca. Na caixa de diálogo de pesquisa digite SDFat e espere que apareça na lista abaixo, provavelmente você terá que rolar a lista para baixo.

Você pode escolher entre duas versões:

1, SdFat por Bill Greiman

2, SdFat - Garfo Adafruit

Eu tentei os dois, ambos parecem funcionar bem. Mas o projeto RunCPM recomendou a segunda opção "Adafruit Fork", no entanto, nas notas mais recentes agora diz:

Todas as placas agora usam a biblioteca SdFat, aqui:

Portanto, agora escolho a primeira opção para este projeto.

finalizado

Etapa 4: Baixe o projeto RunCPM modificado

Baixe o projeto RunCPM modificado
Baixe o projeto RunCPM modificado
Baixe o projeto RunCPM modificado
Baixe o projeto RunCPM modificado

Visite o site do Github, Clique no botão CODE e baixe como um arquivo ZIP

Salve este arquivo em algum lugar (normalmente em um diretório chamado Arduino.

Descompacte o arquivo no mesmo local, ele produzirá uma pasta chamada RunCPM-master

finalizado

Etapa 5: abrir e revisar o programa RunCPM e compilar

Abra e analise o programa RunCPM e compile
Abra e analise o programa RunCPM e compile

Agora você pode usar o arquivo IDE do Arduino, menu Abrir. Navegue até a pasta que você compactou acima.

Dentro desta pasta está outra chamada RunCPM. Abra a pasta.

Dentro dessa pasta está um arquivo.ino chamado RunCPM.ino. Este é o arquivo principal do projeto - abra-o.

Agora você pode visualizar o projeto, ler os comentários, etc. Faça alterações se precisar corresponder à sua versão do VGA32 -ESP. Deve ser pré-configurado para V1.4 da placa.

Agora você pode clicar em compilar e fazer upload, supondo que você tenha o VGA32 ESP conectado, ele carregará o emulador para o seu dispositivo.

IMPORTANTE: O VGA32 pode ter um problema com o cartão SD neste momento, portanto, não o conecte para saber. Veja a última etapa abaixo para mais informações.

Etapa 6: Crie um cartão SD pronto para inicializar o seu RunCPM

Este é talvez o mais truque das etapas. Eu sugiro que você leia o README.md do site do Github para saber como fazer isso. Aqui está minha lista do que fazer:

Presumo que você tenha um cartão SD em branco ou não esteja interessado em manter nenhum arquivo naquele que possui, isso irá apagá-lo.

1, formate o cartão SD como FAT-32

2, Crie algumas pastas chamadas A, B, C D etc (até P essas serão as unidades de disco ao executar CP / M). Observe que são maiúsculas.

3, Em cada pasta que você criar Crie outra pasta chamada 0 (isso é um zero) e opcionalmente 1, 2, 3 etc (até 15) Então as pastas são Áreas de Usuário na emulação CP / M. Você só precisa da pasta 0 para começar.

4, Na pasta do projeto baixado no diretório arduino, encontre a pasta chamada CCP. Este contém várias versões do CP / M Command Console Proccessor. Copie o chamado CCP-DR.60K para a raiz do seu cartão SD.

5, agora encontre a pasta no diretório do projeto chamada DISK, ela contém um arquivo A. ZIP, você precisa descompactar este arquivo para o diretório chamado A / 0 / em seu cartão SD. (veja também o arquivo 1streadme para mais informações). Infelizmente, ele não tem o "0" na lista de pastas, portanto, você precisa descompactar para uma pasta temporária primeiro e, em seguida, copiar o conteúdo da pasta A para A / 0 / no cartão SD.

6, quando você tiver feito as etapas acima, você terá um cartão SD com uma estrutura como esta:

F: CCP-DR.60K

/ A / 0

/1STREAD. ME

/ASM. COM

/…. etc

/ B / 0

/ C / 0

etc

Se você receber erros sobre não é possível carregar o CCP etc, ao tentar inicializar a partir do cartão SD, verifique se tudo está no ritmo certo!

Em uma tentativa de tornar este estágio um pouco mais fácil, eu carreguei uma versão pronta do acima, com a adição de software cp / m nela e também baixei aqui https://github.com/coopzone-dc/RunCPM/blob / master /… e descompacte-o na raiz de um cartão SD formatado. Isso deve ajudá-lo a começar, então você pode criar o seu próprio mais tarde.

Eu também recomendo que você leia o guia de configuração no Github Repo, ele tem uma descrição das pastas que você precisa.

Etapa 7: conectar um monitor VGA e teclado

Conecte um monitor VGA e teclado
Conecte um monitor VGA e teclado

Desconecte a alimentação da placa VGA32 ESP.

Conecte seu monitor VGA

Conecte um teclado PS / 2 Reconecte a alimentação à placa VGA32 ESP, você deve ver as luzes do teclado piscando e cerca de 10 segundos depois uma imagem aparecerá na tela com um prompt CP / M!

Importante: O VGA32 tem um problema ao usar o cartão SD e o soft reset, por isso é importante DESLIGAR A ENERGIA como a primeira etapa acima. Consulte a última etapa para obter mais informações.

Vá embora …

Etapa 8: Problema com o cartão SD no módulo VGA32

Problema com cartão SD no módulo VGA32
Problema com cartão SD no módulo VGA32
Problema com cartão SD no módulo VGA32
Problema com cartão SD no módulo VGA32

A foto acima mostra meu segundo cartão ESP32 (feito em casa), funciona bem e não tem o problema abaixo. Eu sei que não é um problema de software, por favor, leia abaixo sobre a versão VGA32.

No meu módulo VG32 ESP (v1.4), o cartão SD usa GPIO12, isso não é recomendado pela Espressif Systems, pois este pino é usado na inicialização para detectar a tensão de trabalho para a memória interna. Eu gostaria que alguém tivesse contado para o cara que fez essa placa VGA32! Pode ser diferente no seu, então espero que você não tenha esse problema.

Os problemas são:

1, Incapaz de carregar um esboço quando o cartão está conectado.

2, depois de pressionar o botão de reset, ele trava até que o cartão SD seja removido. Em seguida, ele inicializa em uma tela de erro dizendo que não há cartão SD! Você pode colocar o cartão e redefinir novamente e ele funcionará pela segunda vez.

Este problema pode ser corrigido (mas tem um risco), consulte o README.md em

ou você sempre pode desligar / ligar o power power para iniciar a placa. Por algum motivo, isso parece funcionar bem. Além disso, se você precisar recarregar o software RunCPM, deverá primeiro remover o cartão SD.

Este é um trecho do README. MD que explica o problema. Eu usei a correção e ela funciona bem, MAS devido à sua natureza o risco é seu, continue lendo …

No entanto, as configurações do VGA32 ESP parecem ter um conflito nas configurações GPIO do cartão SD.

Funciona, mas para fazer o upload, você deve remover o cartão SD e, após uma reinicialização suave, você deve remover o cartão SD e substituí-lo seguido por outra reinicialização. Funciona bem com uma inicialização ou reinicialização a frio. Se você puder ajudar a corrigir isso, por favor me avise. ATUALIZAÇÃO 11Oct2020: O VGA32 ESP v1.4 usa GPIO12 (MTDI, leitura na inicialização / redefinição). Este pino determina a voltagem para a RAM, Voltage of Internal LDO (VDD_SDIO). Quando o cartão SD está presente, ele puxa este pino para cima e o ESP32 pensa que a tensão da RAM deve ser 1.8V, sem o cartão SD este pino tem pull-down interno para definir a tensão da RAM para 3.3V. Na verdade, isso é mencionado nas notas dos exemplos fornecidos no projeto FABGL, para citar: notas sobre GPIO 2 e 12 - GPIO2: podem causar problemas na programação. O GPIO2 também deve ser deixado desconectado / flutuante ou direcionado para baixo, a fim de entrar no carregador de inicialização serial. No modo de inicialização normal (GPIO0 alto), GPIO2 é ignorado. - GPIO12: deve ser evitado. Ele seleciona a tensão do flash. Para usá-lo, desative os efusões de configuração de detecção de GPIO12 com: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V WARN !! Bom para ESP32 com voltagem de 3,3 V (ESP-WROOM-32). Isso irá BRICK seu ESP32 se o flash não for 3.3V NOTE1: substitua "/dev/cu. SLAB_USBtoUART" com sua porta serial NOTE2: espefuse.py está disponível para download em

Isso indica que o GPIO12 deve ser evitado, uma pena que ninguém disse ao fabricante da placa VGA32 ESP!

CORRIGIDO: tentei a opção de definir a voltagem do flash para substituir o uso de GPIO12 e posso confirmar no meu ESP vga32, funciona! Problema resolvido sem mais problemas com o cartão SD. Recomendo que você verifique, verifique e pense cuidadosamente sobre como criar um TIJOLO se você decidir experimentá-lo também. Não estou recomendando isso como uma ação, mas para mim funcionou.

Recomendado: