Émulateur autonome rétro CP/M : 8 étapes
Émulateur autonome rétro CP/M : 8 étapes
Anonim
Émulateur autonome rétro CP/M
Émulateur autonome rétro CP/M

Ce projet utilise le module VGA32 ESP v1.4 pour exécuter une combinaison ou RunCPM et FabGL pour fournir un ordinateur autonome exécutant un système équivalent à CP/M 2.2. Populaire dans les années 1980 en tant que système d'exploitation pour les petits ordinateurs. Vous pouvez remonter le temps et revisiter d'anciens logiciels tels que Wordstar, Supercalc, Adventure et Zork.

C'est une gracieuseté du projet FabGL qui a fourni le logiciel pour exécuter un moniteur VGA standard et un clavier PS/2.

Le système d'exploitation principal est une version modifiée de RunCPM, il a été dérivé du travail original sur Github et j'ai ajouté la bibliothèque FabGL pour lui permettre d'être utilisé sur un écran plutôt que sur une console série.

Je voudrais juste dire un grand merci aux deux projets. Continuez votre bon travail!

Le logiciel a été testé sur au moins deux versions de matériel. Un le VGA32 ESP v1.4 (comme vendu prêt à l'emploi). Deuxièmement, mon ancienne version, j'ai construit à partir d'un module Wroom ESP32 et de morceaux de vieux ordinateurs.

Le site Github ci-dessous contient des informations importantes sur ces configurations ainsi que le logiciel prêt à installer modifié.

Ce projet concerne l'installation du logiciel, pas le matériel.

Fournitures:

Un module ESP VGA32 V1.4 (testé). Trouvé sur eBay/aliexpress/amazon etc

L'IDE Arduino installé sur un ordinateur, je suppose que si vous lisez ceci, vous l'avez déjà.

Installez le pack de support ESP32 pour Arduino IDE. https://github.com/espressif/arduino-esp32 Voir étape 1

La bibliothèque FabGL https://www.fabglib.org/ vous n'avez rien à télécharger, l'IDE arduino peut le faire pour nous, voir l'étape 2.

Téléchargez une copie du RunCPM modifié à partir de

Étape 1: Installez le support ESP32 pour Arduino (facultatif)

Installer le support ESP32 pour Arduino (facultatif)
Installer le support ESP32 pour Arduino (facultatif)

Vous l'avez peut-être déjà fait, si vous l'avez fait, vous pouvez sauter cette étape.

visitez https://github.com/espressif/arduino-esp32 et suivez les instructions d'installation à l'aide du gestionnaire de cartes, comme ceci:

Instructions d'installation en utilisant Arduino IDE Boards Manager============================================ ================

Lien de sortie stable:

Installez l'IDE Arduino en amont actuel au niveau 1.8 ou supérieur. La version actuelle se trouve sur le site Web d'Arduino.

Démarrez Arduino et ouvrez la fenêtre Préférences.

Entrez l'un des liens de version ci-dessus dans le champ URL supplémentaires du gestionnaire de carte. Vous pouvez ajouter plusieurs URL en les séparant par des virgules.

Ouvrez Boards Manager dans le menu Outils > Carte et installez la plate-forme esp32 (et n'oubliez pas de sélectionner votre carte ESP32 dans le menu Outils > Carte après l'installation).

Étape 2: Ajout de la bibliothèque FabGL à l'IDE

Ajout de la bibliothèque FabGL à l'IDE
Ajout de la bibliothèque FabGL à l'IDE
Ajout de la bibliothèque FabGL à l'IDE
Ajout de la bibliothèque FabGL à l'IDE

À l'aide d'un croquis vierge dans l'IDE Arduino, assurez-vous d'avoir sélectionné votre carte ESP dans le menu Outils, Cartes. (Au moment d'écrire ces lignes, le VGA32 ESP n'était pas répertorié, j'ai choisi une carte de kit de développement générique).

Dans le menu Esquisse, choisissez Inclure la bibliothèque, puis choisissez Gestionnaire de bibliothèque.

Dans la boîte de dialogue de recherche, tapez FabGL et attendez qu'il apparaisse dans la liste ci-dessous, cliquez maintenant sur le bouton Installer.

fini

Étape 3: Ajout d'une bibliothèque de cartes SD supplémentaire utilisée par RunCPM

Ajout d'une bibliothèque de cartes SD supplémentaire utilisée par RunCPM
Ajout d'une bibliothèque de cartes SD supplémentaire utilisée par RunCPM

C'est presque la même chose que l'étape précédente mais au lieu de FabGL, recherchez SDFat

Dans le menu Esquisse, choisissez Inclure la bibliothèque, puis choisissez Gestionnaire de bibliothèque. Dans la boîte de dialogue de recherche, tapez SDFat et attendez qu'il apparaisse dans la liste ci-dessous, vous devrez probablement faire défiler la liste.

Vous avez le choix entre deux versions:

1, SdFat par Bill Greiman

2, SdFat - Fourchette Adafruit

J'ai essayé les deux, ils semblent tous les deux fonctionner correctement. Mais le projet RunCPM a recommandé la deuxième option "Adafruit Fork", mais sur les dernières notes, il est désormais indiqué:

Toutes les cartes utilisent désormais la bibliothèque SdFat, à partir d'ici:

Alors maintenant, je choisis la première option pour ce projet.

fini

Étape 4: Téléchargez le projet RunCPM modifié

Télécharger le projet RunCPM modifié
Télécharger le projet RunCPM modifié
Télécharger le projet RunCPM modifié
Télécharger le projet RunCPM modifié

Visitez le site Github, Cliquez sur le bouton CODE et téléchargez sous forme de fichier ZIP

Enregistrez ce fichier quelque part (normalement dans un répertoire appelé Arduino.

Décompressez le fichier au même emplacement, il produira un dossier appelé RunCPM-master

fini

Étape 5: Ouvrez et passez en revue le programme RunCPM et compilez

Ouvrir et examiner le programme RunCPM et compiler
Ouvrir et examiner le programme RunCPM et compiler

Vous pouvez maintenant utiliser le fichier IDE Arduino, menu Ouvrir. Accédez au dossier que vous avez uzipé ci-dessus.

À l'intérieur de ce dossier se trouve un autre appelé RunCPM. Ouvrez le dossier.

À l'intérieur de ce dossier se trouve un fichier.ino appelé RunCPM.ino. C'est le fichier principal du projet - ouvrez-le.

Vous pouvez maintenant visualiser le projet, lire les commentaires, etc. Apportez des modifications si vous devez correspondre à votre version de VGA32 -ESP. Il doit être pré-configuré pour la V1.4 de la carte.

Vous pouvez maintenant cliquer sur compiler et télécharger, en supposant que votre VGA32 ESP soit connecté, il téléchargera l'émulateur sur votre appareil.

IMPORTANT: Le VGA32 a peut-être un problème avec la carte SD à ce stade, alors ne le branchez pas pour le savoir. Voir la dernière étape ci-dessous pour plus d'informations.

Étape 6: Créez une carte SD prête à démarrer votre RunCPM depuis

C'est peut-être la plus rusée des étapes. Je vous suggère de lire le README.md du site Github pour savoir comment procéder. Voici ma liste de choses à faire:

Je suppose que vous avez une carte SD vierge ou que vous ne souhaitez pas conserver de fichiers sur celle que vous avez, cela l'effacera.

1, formatez la carte SD en FAT-32

2, créez des dossiers appelés A, B, C D etc (jusqu'à P, ce seront les lecteurs de disque lors de l'exécution de CP/M). Attention ce sont des majuscules.

3, dans chaque dossier que vous créez, créez un autre dossier nommé 0 (c'est un zéro) et éventuellement 1, 2, 3, etc. (jusqu'à 15). Ensuite, les dossiers sont des zones utilisateur dans l'émulation CP/M. Vous n'avez besoin que du dossier 0 pour commencer.

4, à partir de votre dossier de projet téléchargé dans le répertoire arduino, recherchez le dossier appelé CCP. Celui-ci contient différentes versions du processeur de console de commande CP/M. Copiez celui appelé CCP-DR.60K à la racine de votre carte SD.

5, recherchez maintenant le dossier dans le répertoire du projet appelé DISK, il contient un fichier A. ZIP, vous devez décompresser ce fichier dans le répertoire appelé A/0/ sur votre carte SD. (voir aussi le fichier 1streadme pour plus d'informations). Malheureusement, il n'a pas le "0" dans la liste des dossiers, vous devez donc d'abord décompresser dans un dossier temporaire, puis copier le contenu du dossier A vers A/0/ sur la carte SD.

6, lorsque vous aurez effectué les étapes ci-dessus, vous aurez une carte SD avec une structure comme celle-ci:

F: CCP-DR.60K

/A/0

/1STREAD. ME

/ASM. COM

/…. etc

/B/0

/C/0

etc

Si vous obtenez des erreurs concernant l'impossibilité de charger CCP, etc. lorsque vous essayez de démarrer à partir de la carte SD, vérifiez que tout est au bon rythme !

Pour tenter de rendre cette étape un peu plus facile, j'ai téléchargé une version prête à l'emploi de ci-dessus, avec un logiciel cp/m supplémentaire dessus ainsi que le télécharger à partir d'ici https://github.com/coopzone-dc/RunCPM/blob /master/… et décompressez-le simplement à la racine d'une carte SD formatée. Cela devrait vous aider à démarrer, puis vous pourrez créer le vôtre plus tard.

Je vous recommande également de lire le guide d'installation sur le Github Repo, il contient une description des dossiers dont vous avez besoin.

Étape 7: connectez un moniteur et un clavier VGA

Connecter un moniteur et un clavier VGA
Connecter un moniteur et un clavier VGA

Débranchez l'alimentation de la carte ESP VGA32.

Connectez votre moniteur VGA

Connectez un clavier PS/2 Reconnectez l'alimentation à la carte ESP VGA32, vous devriez voir les voyants du clavier clignoter et environ 10 secondes plus tard, une image apparaîtra à l'écran avec une invite CP/M !

Important: le VGA32 a un problème lors de l'utilisation de la carte SD et de la réinitialisation logicielle, c'est pourquoi il est important de COUPER LE COURANT comme première étape ci-dessus, voir la dernière étape pour plus d'informations.

C'est parti…

Étape 8: Problème avec la carte SD sur le module VGA32

Problème avec la carte SD sur le module VGA32
Problème avec la carte SD sur le module VGA32
Problème avec la carte SD sur le module VGA32
Problème avec la carte SD sur le module VGA32

La photo ci-dessus montre ma deuxième carte ESP32 (faite maison), cela fonctionne bien et n'a pas le problème ci-dessous. Je sais donc que ce n'est pas un problème logiciel, veuillez lire ci-dessous la version VGA32.

Sur mon module VG32 ESP (v1.4), la carte SD utilise GPIO12, ce n'est pas recommandé par Espressif Systems car cette broche est utilisée à la mise sous tension pour détecter la tension de fonctionnement de la mémoire interne. J'aurais aimé que quelqu'un en parle au gars qui fabrique cette carte VGA32 ! C'est peut-être différent sur le vôtre, alors j'espère que vous n'aurez pas ce problème.

Les problèmes sont:

1, impossible de télécharger un croquis lorsque la carte est branchée.

2, après avoir appuyé sur le bouton de réinitialisation, il se verrouille jusqu'à ce que la carte SD soit retirée. Ensuite, il démarre sur un écran d'erreur indiquant pas de carte SD ! Vous pouvez mettre la carte et réinitialiser à nouveau et cela fonctionnera la deuxième fois.

Ce problème est réparable (mais présente un risque) voir le README.md sur

ou vous pouvez toujours faire un hard power off/on pour démarrer la carte. Pour une raison quelconque, cela semble fonctionner correctement. De plus, si vous devez télécharger à nouveau le logiciel RunCPM, vous devez d'abord retirer la carte SD.

Il s'agit d'un extrait du fichier README. MD qui explique le problème. J'ai utilisé le correctif et cela fonctionne bien, MAIS en raison de sa nature, le risque est le vôtre, lisez la suite…

Cependant, les paramètres du VGA32 ESP semblent avoir un conflit avec les paramètres GPIO de la carte SD.

Cela fonctionne, mais pour télécharger, vous devez retirer la carte SD et après une réinitialisation logicielle, vous devez retirer la carte SD, puis la remplacer, suivie d'une autre réinitialisation. Cela fonctionne bien à partir d'une mise sous tension ou d'une réinitialisation matérielle. Si vous pouvez aider à résoudre ce problème, faites-le moi savoir. MISE À JOUR 11Oct2020: Le VGA32 ESP v1.4 utilise GPIO12 (MTDI, lu à la mise sous tension/réinitialisation). Cette broche détermine la tension de la RAM, la tension du LDO interne (VDD_SDIO). Lorsque la carte SD est présente, elle tire cette broche vers le haut et l'ESP32 pense que la tension de la RAM devrait être de 1,8 V, sans la carte SD, cette broche a un pull-down interne pour régler la tension de la RAM à 3,3 V. Ceci est en fait mentionné dans les notes d'exemples fournis sur le projet FABGL, pour citer: notes sur GPIO 2 et 12 - GPIO2: peut poser problème sur la programmation. GPIO2 doit également être soit laissé non connecté/flottant, soit bas, afin d'entrer dans le chargeur de démarrage série. En mode de démarrage normal (GPIO0 élevé), GPIO2 est ignoré. - GPIO12: à éviter. Il sélectionne la tension de flash. Pour l'utiliser, désactivez le paramètre de détection GPIO12 avec: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V WARN!! Bon pour ESP32 avec une tension de 3,3 V (ESP-WROOM-32). Cela BRICK votre ESP32 si le flash n'est pas de 3,3V NOTE1: remplacez "/dev/cu. SLAB_USBtoUART" par votre port série NOTE2: espefuse.py est téléchargeable sur

Cela note en outre que GPIO12 doit être évité, dommage que personne n'a dit au fabricant de la carte ESP VGA32 !

CORRIGÉ: j'ai essayé l'option de réglage de la tension du flash pour remplacer l'utilisation de GPIO12 et je peux confirmer sur mon ESP vga32, cela fonctionne ! Problème résolu plus de problèmes avec la carte SD. Je vous exhorte à vérifier, à revérifier et à réfléchir attentivement à la création d'une BRIQUE si vous décidez de l'essayer également. Je ne le recommande pas comme une action, mais pour moi cela a fonctionné.