Tabla de contenido:

Emulador retro CP / M Stand Alone: 8 pasos
Emulador retro CP / M Stand Alone: 8 pasos

Video: Emulador retro CP / M Stand Alone: 8 pasos

Video: Emulador retro CP / M Stand Alone: 8 pasos
Video: MyZ80 CP/M Emulator running on AmigaOS 4.1 under DOSBox Emulator 2024, Noviembre
Anonim
Emulador Retro CP / M Stand Alone
Emulador Retro CP / M Stand Alone

Este proyecto utiliza el módulo VGA32 ESP v1.4 para ejecutar una combinación o RunCPM y FabGL para proporcionar una computadora independiente que ejecuta un sistema equivalente a CP / M 2.2. Popular durante la década de 1980 como sistema operativo para computadoras pequeñas. Puede retroceder en el tiempo y volver a visitar software antiguo como Wordstar, Supercalc, Adventure y Zork.

Es una cortesía independiente del proyecto FabGL que proporcionó el software para ejecutar un monitor VGA estándar y un teclado PS / 2.

El sistema operativo principal es una versión modificada de RunCPM, se ha bifurcado del trabajo original en Github y he agregado la biblioteca FabGL para permitir su uso en una pantalla en lugar de en una consola en serie.

Solo me gustaría dar las gracias a ambos proyectos. ¡Sigan con el buen trabajo!

El software se ha probado en al menos dos versiones de hardware. Uno, el VGA32 ESP v1.4 (como se vende listo para usar). En segundo lugar, mi versión anterior, la construí a partir de un módulo Wroom ESP32 y deseché bits de computadoras viejas.

El sitio de Github a continuación contiene información importante sobre estas configuraciones, así como el software modificado listo para instalar.

Este proyecto trata sobre la instalación del software, no sobre el hardware.

Suministros:

Un módulo VGA32 ESP V1.4 (probado). Encontrado en eBay / aliexpress / amazon, etc.

El IDE de Arduino instalado en una computadora, supongo que si estás leyendo esto, ya lo tienes.

Instale el paquete de soporte ESP32 para Arduino IDE. https://github.com/espressif/arduino-esp32 Vea el paso 1

La biblioteca FabGL https://www.fabglib.org/ no necesita descargar nada, el IDE de arduino puede hacer esto por nosotros, vea el paso 2.

Descargue una copia del RunCPM modificado de

Paso 1: Instale el soporte ESP32 para Arduino (opcional)

Instale el soporte ESP32 para Arduino (opcional)
Instale el soporte ESP32 para Arduino (opcional)

Es posible que ya lo haya hecho, si lo ha hecho, puede omitir este paso.

visite https://github.com/espressif/arduino-esp32 y siga las instrucciones sobre la instalación usando el administrador de placas, así:

Instrucciones de instalación usando Arduino IDE Boards Manager ========================================= ===============

Enlace de versión estable:

Instale el IDE actual de Arduino ascendente en el nivel 1.8 o posterior. La versión actual está en el sitio web de Arduino.

Inicie Arduino y abra la ventana Preferencias.

Ingrese uno de los enlaces de publicación anteriores en el campo URL adicionales del administrador del tablero. Puede agregar varias URL, separándolas con comas.

Abra Boards Manager desde Tools> Board menu e instale la plataforma esp32 (y no olvide seleccionar su placa ESP32 desde Tools> Board menu después de la instalación).

Paso 2: Agregar la biblioteca FabGL al IDE

Adición de la biblioteca FabGL al IDE
Adición de la biblioteca FabGL al IDE
Adición de la biblioteca FabGL al IDE
Adición de la biblioteca FabGL al IDE

Usando un boceto en blanco en el IDE de Arduino, asegúrese de haber seleccionado su Tablero ESP en el menú Herramientas, Tableros. (En el momento de escribir este artículo, el VGA32 ESP no estaba en la lista, elijo una placa Dev Kit genérica).

En el menú Sketch, elija Incluir biblioteca, luego elija Administrador de biblioteca.

En el diálogo de búsqueda, escriba FabGL y espere a que aparezca en la lista de abajo, ahora haga clic en el botón Instalar.

finalizado

Paso 3: Agregar una biblioteca de tarjetas SD adicional utilizada por RunCPM

Adición de una biblioteca de tarjetas SD adicional utilizada por RunCPM
Adición de una biblioteca de tarjetas SD adicional utilizada por RunCPM

Esto es casi lo mismo que el paso anterior, pero en lugar de la búsqueda FabGL de SDFat

En el menú Sketch, elija Incluir biblioteca, luego elija Administrador de biblioteca. En el diálogo de búsqueda, escriba SDFat y espere a que aparezca en la lista de abajo, probablemente tendrá que desplazarse hacia abajo en la lista.

Puede elegir entre dos versiones:

1, SdFat por Bill Greiman

2, SdFat - Tenedor Adafruit

He probado ambos, ambos parecen funcionar bien. Pero el proyecto RunCPM recomendó la segunda opción "Adafruit Fork", sin embargo, en las últimas notas ahora dice:

Todos los tableros ahora usan la biblioteca SdFat, desde aquí:

Así que ahora elijo la primera opción para este proyecto.

finalizado

Paso 4: descargue el proyecto RunCPM modificado

Descargue el proyecto RunCPM modificado
Descargue el proyecto RunCPM modificado
Descargue el proyecto RunCPM modificado
Descargue el proyecto RunCPM modificado

Visite el sitio de Github, Haga clic en el botón CÓDIGO y descárguelo como un archivo ZIP

Guarde este archivo en algún lugar (normalmente en un directorio llamado Arduino.

Descomprima el archivo en la misma ubicación, producirá una carpeta llamada RunCPM-master

finalizado

Paso 5: Abra y revise el programa RunCPM y compile

Abra y revise el programa RunCPM y compile
Abra y revise el programa RunCPM y compile

Ahora puede usar el menú Abrir Arduino IDE File. Navega a la carpeta que subiste arriba.

Dentro de esta carpeta hay otra llamada RunCPM. Abra la carpeta.

Dentro de esa carpeta hay un archivo.ino llamado RunCPM.ino. Este es el archivo principal del proyecto, ábralo.

Ahora puede ver el proyecto, leer los comentarios, etc. Realice cambios si necesita hacer coincidir su versión de VGA32 -ESP. Debe estar preconfigurado para V1.4 de la placa.

Ahora puede hacer clic en compilar y cargar, suponiendo que tenga su VGA32 ESP conectado, cargará el emulador en su dispositivo.

IMPORTANTE: El VGA32 puede tener un problema con la tarjeta SD en este punto, así que no lo conecte para saberlo. Consulte el último paso a continuación para obtener más información.

Paso 6: Cree una tarjeta SD lista para iniciar su RunCPM desde

Este es quizás el paso más engañoso. Le sugiero que lea el archivo README.md del sitio de Github sobre cómo hacer esto. Aquí está mi lista de qué hacer:

Supongo que tiene una tarjeta SD en blanco o no está interesado en guardar ningún archivo en la que tiene, esto lo borrará.

1, formatee la tarjeta SD como FAT-32

2, cree algunas carpetas llamadas A, B, C D, etc. (hasta P, estas serán las unidades de disco cuando ejecute CP / M). Tenga en cuenta que son mayúsculas.

3, en cada carpeta que cree Cree otra carpeta llamada 0 (eso es un cero) y opcionalmente 1, 2, 3, etc. (hasta 15) Luego, las carpetas son áreas de usuario en la emulación CP / M. Solo necesitas la carpeta 0 para comenzar.

4, desde la carpeta del proyecto descargado en el directorio arduino, busque la carpeta llamada CCP. Contiene varias versiones del procesador de consola de mando CP / M. Copie el llamado CCP-DR.60K a la raíz de su tarjeta SD.

5, ahora busque la carpeta en el directorio del proyecto llamado DISK, contiene un archivo A. ZIP, necesita descomprimir este archivo en el directorio llamado A / 0 / en su tarjeta SD. (también vea el archivo 1streadme para más información). Desafortunadamente, no tiene el "0" en la lista de carpetas, por lo que primero debe descomprimirlo en una carpeta temporal y luego copiar el contenido de la carpeta A en A / 0 / en la tarjeta SD.

6, cuando haya realizado los pasos anteriores, tendrá una tarjeta SD con una estructura como esta:

F: CCP-DR.60K

/ A / 0

/1STREAD. ME

/ASM. COM

/…. etc

/ B / 0

/ C / 0

etc

Si obtiene errores sobre no se puede cargar CCP, etc.cuando intenta arrancar desde la tarjeta SD, ¡verifique que tenga todo al ritmo correcto!

En un intento de hacer esta etapa un poco más fácil, he subido una versión lista para usar de lo anterior, con el software cp / m adicional y también lo descargo desde aquí https://github.com/coopzone-dc/RunCPM/blob / master /… y simplemente descomprímalo en la raíz de una tarjeta SD formateada. Debería ayudarte a empezar y luego podrás crear el tuyo propio más tarde.

También te recomiendo que leas la guía de configuración en Github Repo, tiene una descripción de las carpetas que necesitas.

Paso 7: conecte un monitor y un teclado VGA

Conecte un monitor y un teclado VGA
Conecte un monitor y un teclado VGA

Desconecte la alimentación de la tarjeta VGA32 ESP.

Conecte su monitor VGA

Conecte un teclado PS / 2 Vuelva a conectar la alimentación a la tarjeta VGA32 ESP, debería ver parpadear las luces del teclado y, aproximadamente 10 segundos después, aparecerá una imagen en la pantalla con un mensaje CP / M.

Importante: El VGA32 tiene un problema al usar la tarjeta SD y el reinicio por software, por eso es importante APAGAR LA CORRIENTE como el primer paso anterior. Consulte el último paso para obtener más información.

Lejos te vas …

Paso 8: Problema con la tarjeta SD en el módulo VGA32

Problema con la tarjeta SD en el módulo VGA32
Problema con la tarjeta SD en el módulo VGA32
Problema con la tarjeta SD en el módulo VGA32
Problema con la tarjeta SD en el módulo VGA32

La foto de arriba muestra mi segunda tarjeta ESP32 (hecha en casa), esto funciona bien y no tiene el problema a continuación. Entonces sé que no es un problema de software, lea a continuación sobre la versión VGA32.

En mi módulo VG32 ESP (v1.4), la tarjeta SD usa GPIO12, esto no es recomendado por Espressif Systems ya que este pin se usa al encender para detectar el voltaje de trabajo para la memoria interna. ¡Ojalá alguien le hubiera dicho al tipo que hizo esta tarjeta VGA32! Puede que sea diferente al tuyo, así que es de esperar que no tengas este problema.

Los problemas son:

1, no se puede cargar un boceto cuando la tarjeta está enchufada.

2, después de presionar el botón de reinicio, se bloquea hasta que se retira la tarjeta SD. Luego se inicia en una pantalla de error que dice que no hay tarjeta SD. Puede colocar la tarjeta y reiniciar nuevamente y funcionará la segunda vez.

Este problema se puede solucionar (pero tiene un riesgo) consulte el archivo README.md en

o siempre puede hacer un apagado / encendido duro para iniciar la placa. Por alguna razón, esto parece funcionar bien. Además, si necesita volver a cargar el software RunCPM, primero debe quitar la tarjeta SD.

Este es un extracto del archivo README. MD que explica el problema. He utilizado la solución y funciona bien, PERO debido a su naturaleza, el riesgo es suyo, siga leyendo …

Sin embargo, la configuración del VGA32 ESP parece tener un conflicto con la configuración GPIO de la tarjeta SD.

Funciona, pero para cargar debe quitar la tarjeta SD y, después de un reinicio suave, debe quitar la tarjeta SD y luego reemplazarla, seguida de otro reinicio. Funciona bien desde un encendido o un reinicio completo. Si puede ayudarme a solucionar este problema, hágamelo saber. ACTUALIZACIÓN 11Oct2020: El VGA32 ESP v1.4 usa GPIO12 (MTDI, leer al encender / reiniciar). Este pin determina el voltaje para la RAM, voltaje del LDO interno (VDD_SDIO). Cuando la tarjeta SD está presente, tira de este pin hacia arriba y el ESP32 cree que el voltaje de la RAM debe ser de 1.8V, sin la tarjeta SD, este pin tiene un menú desplegable interno para establecer el voltaje de la RAM en 3.3V. En realidad, esto se menciona en las notas de los ejemplos proporcionados en el proyecto FABGL, para citar: notas sobre GPIO 2 y 12 - GPIO2: puede causar problemas en la programación. GPIO2 también debe dejarse desconectado / flotante, o estar bajo, para ingresar al cargador de arranque en serie. En el modo de arranque normal (GPIO0 alto), GPIO2 se ignora. - GPIO12: debe evitarse. Selecciona el voltaje del flash. Para usarlo, desactive la configuración de detección GPIO12 con: python espefuse.py --port /dev/cu. SLAB_USBtoUART set_flash_voltage 3.3V ¡ADVERTENCIA! Bueno para ESP32 con voltaje de 3.3V (ESP-WROOM-32). Esto bloqueará su ESP32 si el flash no es de 3.3V NOTA1: reemplace "/dev/cu. SLAB_USBtoUART" con su puerto serie NOTA2: espefuse.py se puede descargar desde

Esto señala además que GPIO12 debe evitarse, ¡una lástima que nadie le haya dicho al fabricante de la tarjeta VGA32 ESP!

CORREGIDO: He probado la opción de configurar el voltaje del flash para anular el uso de GPIO12 y puedo confirmar en mi vga32 ESP, ¡funciona! Problema solucionado no más problemas con la tarjeta SD. Le insto a que compruebe, vuelva a comprobar y piense detenidamente en la creación de un LADRILLO si decide probarlo también. No lo recomiendo como acción, pero para mí funcionó.

Recomendado: