Emulación bajo ESP32

Avatar de Usuario
Radastan
Mensajes: 191
Registrado: 09 Sep 2016 11:32
Agradecido : 7 veces
Agradecimiento recibido: 65 veces

Re: Emulación bajo ESP32

Mensajepor Radastan » 11 Jun 2021 08:07

Último mensaje de la página anterior:

Una preguntita: si uso una placa ESP32 que no tenga salida VGA, es decir, que tenga salidas normales como los Arduino... ¿se pueden redefinir los pines de e/s sin problema y usar esa placa, no? Lo digo porque por Aliexpress están por menos de 4€.

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 11 Jun 2021 16:11

Radastan escribió:Una preguntita: si uso una placa ESP32 que no tenga salida VGA, es decir, que tenga salidas normales como los Arduino... ¿se pueden redefinir los pines de e/s sin problema y usar esa placa, no? Lo digo porque por Aliexpress están por menos de 4€.

Respuesta corta SI, respuesta larga Si, peroooooooooo ...
Dependiendo de lo que quieras hacer, no sólo se puede usar una placa ESP32 con usb (sin falta de TTGO VGA32), sino directamente, un ESP32 en breadboard. Necesitarás mirar la características del ESP32 que viene en dicha placa.

- FABGL funciona con ESP32 a 160 Mhz y 240 Mhz, con 1 y 2 núcleos.
- ESP32Lib de Bitluini funciona con ESP32 a 240 Mhz, con 1 y 2 núcleos.

Hay modos de video y emuladores, que requieren 2 núcleos, 240 Mhz y PSRAM.
En fabgl podemos elegir los pines que queramos, tanto en el modo RGB (3 bits) de 1 bit por componente, como RRGGBB (6 bits) de 2 bits por componente, diciéndole los que queremos:

Código: Seleccionar todo

VGAController.begin(GPIO_NUM_22, GPIO_NUM_21, GPIO_NUM_19, GPIO_NUM_18, GPIO_NUM_5);

Algo parecido se hace también en ESP32Lib:

Código: Seleccionar todo

vga.init(vga.MODE320x240, RED_PIN_3B, GRE_PIN_3B, BLU_PIN_3B, HSYNC_PIN, VSYNC_PIN);       
vga.init(vga.MODE320x240, redPins, grePins, bluPins, HSYNC_PIN, VSYNC_PIN);

El DAC para RGB (3bits)(1 bit por componente),es decir, 8 colores, no requiere resistencias.

En definitiva, que para el video, podemos usar cualquier pin.

Para el sonido, por el contrario, si se usan osciladores (modo analógico), en fabgl y esp32lib va a calzador el pin 25 en I2c (no deja cambiarlo). Emuladores que usan osciladores, por ejemplo, el de AMSTRAD CPC, el del ZX Spectrum con la emulación del AY y la Gameboy.
Para las ondas cuadradas, de por ejemplo el emulador del ZX Spectrum en modo 48K o el emulador de CHIP8, se puede usar cualquier pin, porque es la típica salida nivel alto bajo, como arduino de toda la vida.

Y luego está el tema de la PSRAM, sólo el WROOM tiene PSRAM dentro del encapsulado, que puede llegar hasta 4 MB, aunque hay casos reconocidos, de 2 MB, o incluso menos, por estar corrupta. Si el emulador o lo que vas a hacer, necesita PSRAM, tendrás que tenerlo en cuenta al pedir a china.

Avatar de Usuario
Radastan
Mensajes: 191
Registrado: 09 Sep 2016 11:32
Agradecido : 7 veces
Agradecimiento recibido: 65 veces

Re: Emulación bajo ESP32

Mensajepor Radastan » 15 Jun 2021 08:13

https://es.aliexpress.com/item/1005001621901111.html?spm=a2g0s.9042311.0.0.533863c0aiLNWB

Por 4€ puesta en casa...

4Mbytes Flash
Memoria 520Kb
Reloj: 240Mhz (un núcleo dedicado al procesador WiFi)

Que si, que sólo tiene 520Kb, pero para trastear es un chollo.

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 15 Jun 2021 16:19


Tiene muy buen precio y está muy bien. Yo diría, que si valdría, pero como la placa no la tengo, no puedo poner la mano en el fuego, y no se si tiene alguna particularidad de configuración para que sea compatible con PLATFORMIO o con el IDE de Arduino. Sólo se puede saber si alguien lo ha probado.
Tal y como viene la foto, trae un WROOM, así que en principio no tiene PSRAM. Si fuera WROOVER o compatible, si.

Yo pensaba que te referias a una placa como esta, que si fijo que tiraría, y también está a precio de derribo (2,90€ + 1,24 de gastos de envio):
Imagen
Esta vendría sin psram, al ser un WROOM. Si se pilla una con WROVER, ya sube un poco más y dependiendo del fabricante, puede llegar a ser 6€ como la lilygo.

Lo que mola de todo esto, es justo el que uno mismo se puede construir todo, y no hace falta esperar a compras conjuntas, ni esperar por tiradas, ni por stocks, ni fabricantes ni cosas rarunas del mundo retro, que cada día mete miedo.
Por ejemplo, si quisieramos emular la VECTREX (ya tengo el emulador portado a ESP32), como tiene sólo 1 bit de color, podemos usar sólo un chip ESP32 con los cables directos a VGA (sin resistencias) y sin falta de un DAC, usando el modo RGB 3 bits para el video. El teclado no lo necesitamos, con una norma ATARI en pull-up, ya tendriamos un joystick. Es decir, que con sólo un chip ESP32 y cables, sin necesidad de resistencias ni soldar, ya tenemos una retro máquina, a precio de chiste en 5 minutos.
Y de esta forma podemos tener una máquina emulada, sin falta de tener que usar nuestro equipo de trabajo.

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 19 Jun 2021 09:57

La Vectrex es muy fácil de portar al ESP32, y tiene mucho encanto por su pantalla vectorial.
Aquí se puede ver lo que he modificado:
https://www.youtube.com/watch?v=pJX1VhIOsV8
He partido del emulador de John Hawthorn para PC, simplificándolo, quitando las dependencias de sdl_gfx y sdl_image, dejando sólo la rutina principal de dibujo de lineas aalineRGBA adaptada, que es lo que interesa.
Trabajo sobre el modo de video RGB de 3 bits (8 colores) a 640x480, por lo que sobra memoria en la TTGO VGA32.

Aunque todos los emuladores que estoy portando funcionan nativamente en x86, mi intención futura, además de que funcionen en TTGO VGA32, es también portarlos a HTML5, sin usar webassembly ni asm.js. De esta forma, desde cualquier dispositivo (PC, tablet, tv box, móvil) sin falta de instalar nada, se pueda probar el funcionamiento antes de subirlo al ESP32. Esto incluye también el emulador de zx spectrum con el core de José Luis.

zxpope
Mensajes: 324
Registrado: 02 Ene 2018 02:25
Agradecido : 125 veces
Agradecimiento recibido: 155 veces

Re: Emulación bajo ESP32

Mensajepor zxpope » 19 Jun 2021 10:40

Cómo se pasa de C a HTML sin WASM?

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 19 Jun 2021 11:29

zxpope escribió:Cómo se pasa de C a HTML sin WASM?

Con mucho cuidadin. -grin -grin Como toda la vida cuando se ha portado desde diferentes lenguajes, es decir, portando el código (línea a línea) en C y C++ a js siguiendo el estandar HTML5. Si usase Emscripten con Webassembly o asm.js, ganaría en tiempo de desarrollo, incluso en ejecución bajo algunas condiciones determinadas, pero pierdo en compatibilidad.

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 25 Jun 2021 22:01

Le toca el turno al ZX81 para la TTGO VGA32 v1.2:
https://www.youtube.com/watch?v=TP1LB-TgL7U
Le he añadido la lectura de cinta.

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 29 Jun 2021 20:46

El SimZ80 de PC (x86) del que parto para el port en ESP32, no emula ciclo exacto (no lleva conteo de ciclos), ni tiene ULA, ni soporta 100% de CPU, ni soporte de cinta, ni muchísimas cosas. Es más, el autor (Andre Leiradella) realiza un apaño para parchear la ROM y así que el video funcione, dado que el video en el ZX81, se ejecutan opcodes desde memoria de video. Así que he añadido intercepción de la rutina de cinta (pfile), memoria 0x347, he añadido una pseudo temporización de vsync, basándome en 8 lecturas de filas y columnas de teclado en cada supuesta generación de video. También he añadido una emulación del modo pseudo hires. Es muy sucia, porque no la ejecuta al vuelo, al no usar ULA, la realizo de manera preprocesada .También he añadido una supuesta detección del modo pseudo hires en caliente para cambiar el modo de video.
Este emulador, justo por todas esas cosas que no tiene, lo hace super interesante y divertido. Es como dejar de comer un delicatesen, para pasar a comer una hamburguesa o un kebab. En definitiva, que cuanto más cerdo, más me encanta.

https://www.youtube.com/watch?v=McrEtGyuP1c

Se puede ver una demo de un bitmap desde BASIC (family guy) en modo pseudo hires, así como la intro (JSW1K)
Imagen

zxpope
Mensajes: 324
Registrado: 02 Ene 2018 02:25
Agradecido : 125 veces
Agradecimiento recibido: 155 veces

Re: Emulación bajo ESP32

Mensajepor zxpope » 02 Jul 2021 12:21

hola ACKerMan

comparto tu entusiasmo por la emulación de la arquitectura minimalista del zx81
creo que puede quedar todo muy elegante

no comprendo lo que comentas de la emulacion del video.
¿no coloca el zx81 los caracteres a presentar en una zona de memoria?
esos caracteres pueden ser renderizados por una rutina que los envie al HDMI, por ejemplo

este juego, creo que fué un hito en la historia de la computacion doméstica:
https://en.wikipedia.org/wiki/1K_ZX_Chess

aqui para que necesitas ?vsync?

respecto a la ROM del zx81, has tenido que tocarla?

gracias por exponer publicamente tus trabajos

bye

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 02 Jul 2021 15:57

zxpope escribió:no comprendo lo que comentas de la emulacion del video.
¿no coloca el zx81 los caracteres a presentar en una zona de memoria?

Cada vez somos más locos por el minimalismo. -drinks
Si, para el modo texto (32x24), no hay problema, se hace como comentas tirando de zona de memoria, y funciona bastante bien. El simZ80 del que parto (https://github.com/optixx/zx81-emulator) lo hace así. El problema es el modo pseudo hires (256x192), que la poca documentación que he visto genera el video por instrucciones, y seleccionando areas en función de I, por ejemplo 0C00h..0DFFh, es decir, habría que implementarlo al 100% con ULA incluida, o eso me da la sensación a mi. Por eso, como no hay emulación de ULA, para este modo hago algo de andar por casa accediendo al buffer de video y al set ROM de caracteres dejando un modo pseudo hires cutrón, que me permite 256x192, pero 1 bit de cada byte, aunque lo deje aleatorio, me queda fatal.

zxpope escribió:este juego, creo que fué un hito en la historia de la computacion doméstica:
https://en.wikipedia.org/wiki/1K_ZX_Chess
aqui para que necesitas ?vsync?

El simZ80 no tiene tabla ni parecido de conteo de ciclos por instrucción, es decir, que no sabe los ciclos que esta consumiendo exactamente por instrucción. El autor, le puso un bucle de procesar 100000 instrucciones por generación de frame, que son las que el autor basó para sus pruebas, sin poner delays, y dejando que se actualice SDL, por lo que es demasiado rápido. Todo esto se puede ajustar a mano, e incluso sabiendo más o menos las instrucciones que un zx81 puede ejecutar por segundo, y ajustando a 50 fotogramas por segundo, nos da un valor aproximado, que claro, no es el exacto, pero nos vale. Lo otro es poner los ciclos a mano, o usar otros de los cores que existen por este hilo.
Así que la opción más cómoda y rápida que encontre para tirar millas, es que sabiendo que en cada generación de frame (vsync) el zx81 se lee del puerto de teclado, pues se consigue una bonita marca de temporización en este punto, de forma, que ahi es donde ponemos la espera de tiempo, porque es donde realmente ya ha ejecutado todas las instrucciones del frame. Esto, como digo, es de andar, por casa, es una forma de tirar millas, cada uno, puede usar lo que más le guste a la hora de sincronizar.

zxpope escribió:respecto a la ROM del zx81, has tenido que tocarla?

Metí la rom del proyecto, pero hice la modificación que dice el autor para generación de video, ya que está parcheado:

Código: Seleccionar todo

  /* load rom with ghosting at 0x2000 */
  memcpy( memory + 0x0000, rom, 0x2000  );
  memcpy( memory + 0x2000, rom, 0x2000 );
 
  /* patch DISPLAY-5 to a return */
  memory[ 0x02b5 + 0x0000 ] = 0xc9;
  memory[ 0x02b5 + 0x2000 ] = 0xc9;


También he añadido la posibilidad de poder escribir en los primeros y segundos 8K, es decir, donde está la ROM.

Código: Seleccionar todo

void z80_write( struct z80* z80, WORD a, BYTE b )
{
 //don't write to rom
 #ifdef use_lib_writerom0
  if ((a < 0x2000) || (a >= 0x4000))
  {
   memory[ a ] = b;       
  }
 #else
  #ifdef use_lib_writerom1
   if (((a >= 0x2000) && (a < 0x4000)) || (a >= 0x4000))
   {
    memory[a]= b;
   }
  #else
   if (a >= 0x4000)
   {
    memory[ a ] = b;
   }
  #endif
 #endif
}

zxpope
Mensajes: 324
Registrado: 02 Ene 2018 02:25
Agradecido : 125 veces
Agradecimiento recibido: 155 veces

Re: Emulación bajo ESP32

Mensajepor zxpope » 02 Jul 2021 18:04

hola,

yo tenia un zx81 por casa regalo de alguien que ya no recuerdo.
pero deje de verlo al irme a estudiar a la universidad
sospecho que mi madre hizo limpieza
nunca me he atrevido a preguntar. la culpa fué mia... sin duda

VSYNC
entendido
el retroceso de cuadro ocurre a la frecuencia de red 50hz
y justo en ese momento se lee el teclado.
sospechaba que intentabas hacer algo tipo ZX87 y para eso necesitas tiempos.
no me parece tampoco nada dificil hacer una tabla que convierta de opcode a numero de ciclos
para tener un reloj en tiempo real
llegado a ese punto, puedes saber cada vez que sube o baja la señal de video, a que pixel corresponde
aunque podrias conseguir efectos "tele rota" pero en el mundo digital

MODO-TEXTO
tengo una plaquita ESP32 con una camara de video que compre para otro invento.
creo que me puedo conectar a ella via serie RS232
Quitando la parte de SDL, el emulador podria enviar la memoria de video por el puerto serie.
con eso seria suficiente para ejecutar un zx81 y jugar al ajedrez, por ejemplo
o quizás al manic-miner :-)

PASANDO EL JUEGO DE .P a .H
como ya adelantas, como no hay memoria secundaria (cassete de 60minutos),
idea: pasar el fichero .P directamente a la memoria RAM declarada en el el emulador.
seguramente, ya has pasado por aqui, verdad?

gracias por tus comentarios
ZXPOPE

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 03 Jul 2021 14:58

zxpope escribió:yo tenia un zx81 por casa regalo de alguien que ya no recuerdo.
pero deje de verlo al irme a estudiar a la universidad
sospecho que mi madre hizo limpieza

Eso creo que le ha pasado a casi todos los que estamos por aqui, -grin , o lo han tirado las madres, los padres y posteriormente de mayores, la pareja. -grin El zx81 lo tenía el amigo de mi padre, siempre que venia por casa, lo traia, y era lo más parecido a un portátil en la época. En aquel entonces, que estaba en 1º de EGB, el CPC, MSX y demás, requerian de un buen brazo para cargar con ellos para un cuerpo escombro. -grin

zxpope escribió:el retroceso de cuadro ocurre a la frecuencia de red 50hz
y justo en ese momento se lee el teclado.

Exacto, en concreto, justo cuando se ha terminado de leer 8 veces de las filas del puerto de teclado.

zxpope escribió:PASANDO EL JUEGO DE .P a .H
como ya adelantas, como no hay memoria secundaria (cassete de 60minutos),
idea: pasar el fichero .P directamente a la memoria RAM declarada en el el emulador.
seguramente, ya has pasado por aqui, verdad?

El simZ80 sólo tenia la ROM y cargaba el BASIC, nada de poder cargar juegos. Así que lo primero que meti fue la carga de .P (pfiles), que está tirado, sólo hay que interceptar cuando ocurre la llamada (LOAD) a la rutina de lectura de cinta de ROM(0x347), y volcar directamente a memoria el pfile desde 0x4009 en adelante:

Código: Seleccionar todo

void load_prog()
{
 int i;
 int tope = gb_list_pfile_size[gb_id_cur_pfile];
 for(i=0;i<tope;i++)
 {
  memory[(0x4009+i)]= gb_list_pfile_data[gb_id_cur_pfile][i];
 }
}


//En el loop del emulador
z80_step( &z80 );   
if (z80.pc == 0x347)
{
  load_prog();
  z80.pc=0x207;
}

Esta rutina no controla el RAMTOP ni demás variables de sistema, así que es básico sólo para probar un par de juegos. Se puede plagiar también como lo hace el emulador sz81 http://sz81.sourceforge.net/.
La idea de usar el simZ80 frente a otros emuladores, radica en la simplificación a la hora de resolver los problemas. No gestiona ni la ULA, ni las NMI, ni demás, por tanto, para los puristas o gente que busca la exactitud, puede que no les interese mucho. La clave está en ver hasta que punto puede ser útil, y hasta donde pueden realizarse pequeñas modificaciones, que permitan paliar sus limitaciones, sin mucho esfuerzo. Al ser tan simple, sus requerimientos hardware son muy bajos, e incluso se pueden reducir muchísimo más.
Si se quiere perfección, es evidente, que habría que irse a portar el emulador sz81.

zxpope
Mensajes: 324
Registrado: 02 Ene 2018 02:25
Agradecido : 125 veces
Agradecimiento recibido: 155 veces

Re: Emulación bajo ESP32

Mensajepor zxpope » 05 Jul 2021 14:40

hola amigos
hola ackman

HORROR
ayer quise compilar el emulador de optixx en mi linux
pero al hacer apt install libsdl2 el gestor de paquetes decidio que ya no necesitaba las X
y un poco mas, me deja sin computadora
:-)
frustrado, continué sin sistema gráfico, a pelo.
eliminé todas las llamadas a SDL y veo que realmente queda un simulador muy muy muy elegante

PANTALLA
como parto de algo que ya funciona, solo es cuestion de no romper nada.
en la memoria, la variable D_FILE apunta a la pantalla, pero veo
que no es ASCII, tengo que mapear los contenidos.
https://problemkaputt.de/zxdocs.htm#zx8 ... ckgraphics

CARGA DESDE CINTA
respecto a la entrada de datos, parece que emulando pulsaciones de tecla no deberia ser imposible.
todo tiene pinta de divertido!

DEPURACION
pregunta
como "depuras" un sistema emulado, es decir, tienes algun debuger para ver como se ejecutan
las instrucciones del sistema emulado?
quizas sea tan tonto como un printf trabajado

salud
zxpope

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 05 Jul 2021 18:19

zxpope escribió:como parto de algo que ya funciona, solo es cuestion de no romper nada.
en la memoria, la variable D_FILE apunta a la pantalla, pero veo
que no es ASCII, tengo que mapear los contenidos.

Correcto, el zx81 no entiende de ASCII, el modo de video texto (buffer DFILE 32x24), básicamente permite valores de 64 caracteres en modo normal y 64 en modo invertido (bit 7). Por eso se requiere una conversión de cada código de 64 valores a un ASCII o lo que queramos.
Imagen
Eso se encarga el procedimiento update_screen, que aunque el emulador usa SDL_BlitSurface, yo lo tengo sustituido por una rutina que dibuja 8x8 pixels a partir de la ROM de caracteres, que estaría en la posición 0x1E00, y que se calcularía:

Código: Seleccionar todo

 rom [0x1E00 + ((id_car<<3))]

El zx81 el modo de video son opcodes, es decir, que por cada línea de 32 caracteres, tienes una instrucción HALT en el propio buffer DFILE, así como al inicio del frame. Así que te las tienes que saltar. Lo puedes ver todo en la rutina update_screen.
El simZ80 usa SDL de 32bits, así que lo he convertido a 8 bits con paleta, en concreto a 8 colores para el modo de 3 bits de la TTGO VGA32.
Si no vas a usar SDL, como me pareció entender (terminal WIFI o Serie), sólo tienes que mapear la conversión de 64 a ASCII, y te olvidas de los 8x8 pixels.
zxpope escribió:como "depuras" un sistema emulado, es decir, tienes algun debuger para ver como se ejecutan
las instrucciones del sistema emulado?
quizas sea tan tonto como un printf trabajado

Eso, como todo, ya es personal, y lo que uno usa y le viene bien, a otra persona, le puede venir mal.
Principalmente tiro de trazas (printf log a texto de toda la vida), y luego en tiempo real tengo también chivatos visuales, así como trazas visuales de contenido de datos en la ventana de SDL. También tengo dumpeados de contenido de memoria y puertos a nivel visual gráfico, o sea, que me muestra la ocupación de algo con colores y pixeles (parecido al emulador cuzebox). Y también añado opciones de dumpeado de contenido, para ver la memoria en un momento dado. Y luego, esta el típico break point en el IDE de C++ en cualquier parte del ejecución del programa, para algún caso raro.
Algunos cores (Jose Luis Sánchez) y emuladores como el Toy C64 o el uzem (uzebox) tienen su propio manejador de break points a nivel de emulador.

zxpope
Mensajes: 324
Registrado: 02 Ene 2018 02:25
Agradecido : 125 veces
Agradecimiento recibido: 155 veces

Re: Emulación bajo ESP32

Mensajepor zxpope » 06 Jul 2021 00:05

me ha dado guerra haber puesto € en lugar de libra,
ya no estamos en el mundo del los 8 bit-ascii sino en los 16-utf
pero zas... ahí tienes el resultado de pulsar J

Código: Seleccionar todo

##zx81 407D 16509 K##
|
00   |                                |
01   |                                |
02   |                                |
03   |                                |
04   |                                |
05   |                                |
06   |                                |
07   |                                |
08   |                                |
09   |                                |
10   |                                |
11   |                                |
12   |                                |
13   |                                |
14   |                                |
15   |                                |
16   |                                |
17   |                                |
18   |                                |
19   |                                |
20   |                                |
21   |                                |
22   |                                |
23   |LOAD L                          |

l=92 pc=0x02c9






ackman,
que hace poner el PC a 207? es regresar al modo slow desde fast o algo asi?
como lo has descubierto?!?!?

if (z80.pc == 0x347) { load_prog(); z80.pc=0x207

Avatar de Usuario
ackerman
Mensajes: 482
Registrado: 05 Feb 2019 21:32
Ubicación: Asturias
Agradecido : 224 veces
Agradecimiento recibido: 569 veces
Contactar:

Re: Emulación bajo ESP32

Mensajepor ackerman » 09 Jul 2021 20:13

zxpope escribió:que hace poner el PC a 207? es regresar al modo slow desde fast o algo asi?
como lo has descubierto?!?!?

Casi todos los emuladores usan la misma técnica, si miras por ejemplo el código del emulador sz81 (http://sz81.sourceforge.net/#downloads), se puede ver. Salta al proceso de la rutina de video (L0207 ), que es donde está el programa a ejecutar, sino estaría ejecutando la ROM. En cuanto al pc=0x347, es justo la rutina del LOAD, así que detecta que se ha invocado a la carga. Por internet existe documentación del resto de offset para demás comandos.

Por lo que has puesto, ya tienes el emulador funcionando, así que ya está.


Volver a “ESP32 TTGO VGA32”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado