Hola a todos, estoy usando la placa TTGO VGA32 v1.4, que por cierto va estupendamente. Con la librería FabGl estoy emulando un PC con DOS. Tengo unos programas que por allá el año 1989 hice con Quick Basic para un proyecto. He podido arrancar el QB perfectamente y ejecutar alguna Demo, pero estos programas míos, tanto la versión .BAS como la .EXE (compilada en su día en QB) dan error. El error hace referencia a que en estos programas uso SCREEN 9 (640 x 350, 16 colores) y parece que no es compatible con la máquina emulada. He hecho funcionar sin problemas estos programas en mi MAC con DOSBox, sin embargo, en el TTGO no hay manera. De hecho, probando en QB un simple programa de una línea con SCREEN (7, 8, 9, 10, …) ya da error, con SCREEN 0, 1 y 2 funciona.
Pienso que se puede deber a los drivers de la pantalla o la configuración del monitor con FabGl. ¿Podéis echarme una mano? Muchas gracias.
Emulación bajo ESP32
Re: Emulación bajo ESP32
Caliban escribió:Hola a todos, estoy usando la placa TTGO VGA32 v1.4, que por cierto va estupendamente. Con la librería FabGl estoy emulando un PC con DOS. Tengo unos programas que por allá el año 1989 hice con Quick Basic para un proyecto. He podido arrancar el QB perfectamente y ejecutar alguna Demo, pero estos programas míos, tanto la versión .BAS como la .EXE (compilada en su día en QB) dan error. El error hace referencia a que en estos programas uso SCREEN 9 (640 x 350, 16 colores) y parece que no es compatible con la máquina emulada. He hecho funcionar sin problemas estos programas en mi MAC con DOSBox, sin embargo, en el TTGO no hay manera. De hecho, probando en QB un simple programa de una línea con SCREEN (7, 8, 9, 10, …) ya da error, con SCREEN 0, 1 y 2 funciona.
Pienso que se puede deber a los drivers de la pantalla o la configuración del monitor con FabGl. ¿Podéis echarme una mano? Muchas gracias.
Pásate por el subforo de Presentaciones, por favor. Es obligatorio.
El que nada emprendió, nada terminará.
Re: Emulación bajo ESP32
Enhorabuena por pasarte al lado oscuro del ESP32 y el minimalismo.Caliban escribió:Pienso que se puede deber a los drivers de la pantalla o la configuración del monitor con FabGl. ¿Podéis echarme una mano? Muchas gracias.
El emulador de Fabrizio Di Vittorio está basado en el 8086Tiny de Adrian Cable, pero reduciendo cosas, en concreto sólo dejando la CGA:
https://jaybertsoftware.weebly.com/8086-tiny-plus.html
Esto te sirve para poder hacer pruebas previas.
De todo el código de fabgl, lo que más te interesa en su github, son los 4 archivos del directorio src/emudevs:
https://github.com/fdivitto/FabGL
Código: Seleccionar todo
graphicsadapter.h
graphicsadapter.cpp
i8086.h
i8086.cpp
Código: Seleccionar todo
0x01 Texto 40x25
0x03 Texto 80x25
0x05 320x200 4 colores
0x06 640x200 2 colores
Modo Hercules 720x348
Los modos 7,8,9 son de EGA, mirando código rápidamente, se ve que no están soportados, al igual que el modo de 160x100 del paku paku.
La solución es o ponerse en contacto con el autor, o modificar código, que es tan sencillo como interceptar la interrupción de BIOS de modo de video 0x10, y luego dumpear a la zona de video dicho modo a un buffer nuevo o el propio de la CGA, al estilo como se hace con el dumpeo del modo Hercules.
Este emulador consume 2 MB de PSRAM, en concreto 1 MB para la RAM y otro MB para protección de escritura.
Aunque tengo portado el 8086-tiny-plus para ESP32 usando sólo SRAM, la versión que tengo pública, al final la dejé con el port del Fake86, porque se consigue más compatibilidad con el XT:
https://github.com/rpsubc8/ESP32TinyFake86
Aquí si tengo soportado el modo 160x100 del paku paku, pero los modos EGA y VGA los eliminé (ahorrar SRAM), así que tampoco te tirará los modos 7,8 y 9 del qbasic. Es un emulador que centré para sólo SRAM, en concreto el modo 640x200 lo reduce a 320x200 físicamente.
La forma de añadir dicha funcionalidad, es similar a lo contado anteriormente. Todos los emulatas se parecen, está todo inventado.
Re: Emulación bajo ESP32
Muchas gracias por la rápida y excelente respuesta. Voy a investigar un poco a ver si consigo algún resultado.