Reflección acerca de eMSX++

Par flyguille

Prophet (3028)

Portrait de flyguille

24-08-2004, 01:46

Primer punto: Tema conceptual!.

El eMSX++ fue originalmente propuesto como una mother basada en el ez80, por lo tanto sería GRAVE no incluir el ez80 por default.

Si la mother se encareció es porque han agregado al z380 en la misma bolsa, cuando en realidad es un chip más lento (33mhz si recuerdo bien), y el código es de 32bits lo que requiere más memoria.

Mientras que el eZ80 con respecto al z80 es muy similar.

DIFERENCIAS a DESTACAR:

Acerca del set de comandos:

los comandos inservibles y no usados NUNCA en ningún programa MSX tales como:

LD A,A
LD B,B
LD C,C
LD D,D
LD E,E
LD L,L
LD H,H

Han sido cambiados por otros que actuan como shifts para el comando que siga que lea/escriba la memoria.

Que significa esto?

que si nosotros usamos un simple LD A,(HL), se usará como normalmente pasa siempre en MSX

pero si nosotros usamos nuevo SHIFT y luego LD A,(HL), la dirección HL ya no se refiere a los primeros 64kb del bus del ez80, sino a cualquier dirección dentro de los 16MB, o sea, ese SHIFT convierte a LD A,(HL) en LD A,(eHL), o algo así.

Como esos comandos son los únicos que varían en el eZ80 y bajo MSX nunca se usan.... en ese sentido es totalmente compatible

Estos shifts no solo afectan al direccionamiento de LD A,(HL) sino a todos los comandos que tengan un registro que apunten a una dirección de memoria.

Por esa razon cualquier compilador puede ser facilmente adaptado.

El gran problema del eZ80 es que las primeras 256 direcciones de I/O están ocupadas por dispositivos onchip.

Lo cual obligaría a correr los programas de MSX1 / 2 / TR bajo un emulador. Que simplemente translade las direcciones de I/O y sea transparente en el resto. Y para la compatibilidad a nivel TIMING que también emule el timing.

Esta solución de SOFTWARE es muy fácil de implementar. Y esto haría absolutamente innecesaria la presencia de un Z80 real.

Yo al principio veía a este desarrollo como "la proxima generación de MSXs", sobre todo porque un eZ80 corriendo a 50mhz, es algo así como un z80 corriendo a 200mhz, ya que el eZ80 es tan bueno como el R800 y corre a 50mhz REAL!.

Pero al conocer los ultimos he ido re-pensando un poco.

Sin embargo no tengo ningún problema de que en la mother haya un z80 real corriendo a 3.5 o 7 o 10mhz...

Lo que a mí me decepcionó es que no se colocara un conector tipo SIMM de los viejos de 30pins, para aprovechar todas esa memorias de 1,2 o 4mb que tenemos tiradas en alguna caja.

También me decepcionó que solo tenga 512k, porque entonces ya no sería "la siguiente generación". El tema se ha ido desvirtuando hasta no ser más que una solución de hardware onboard como si tubieramos una MSX2+ con varios cartuchos de diferentes items.

Y ya eso le terminó de sacar el brillo.

Recuerdan el merchandasing de la PC cuando se saltó de la 80186 a la 286?

Un procesador para el soft de hoy, y otro para el soft de mañana!. Ese es el camino correcto y la historia lo dice!.

Lpadial , solo piensa en el hardware, y solucionar todo por hardware no solo incrementa costos (y todos sabemos que cuando más costoso es al alcance de menor público estará).

Todos ya hemos visto infinidad de costosas tarjetas que no tuvieron éxito. Y los puntos que determinaron el fracaso fueron

.Costo
.Falta de documentación.
.Falta de standarización
.Falta de acuerdo mutuo con la comunidad.

Los desarrolladores de hardware solo piensan como desarrolladores de hardware y no ven las necesidades de los desarrolladores de software que si le pueden dar un gran apoyo.

Ok hablemos de hardware

Quieren saber que mató al standard MSX aparte de la pirateria en europa?.

Lo hiso el sistema de slotting/subslotting en primer medida.
Lo hiso el lento acceso a la VRAM.

Dos puntos claves!. Dos cuellos de botella.

Sin esos 2 problemas la msx hubiera durado 3 o 4 años más.

Recién con el advenimiento de las MSX con memory mapper se solucionó parcialmente el tema del slotting.

Y es que switchear el slot/subslot mediante todo el procedimiento estandarizado que lamentablemente no se puede optimizar sin perder estandarización, es lento!. Impide la rápida conmutación de páginas para el traspazo sinmultaneo de información entre 2 slots que están en la misma página.

Y desde el punto de vista de un entorno de trabajo real, desascelera todo los procedimientos si se desea dar soporte sinmultaneo a varios mappers en diferentes slots.

Y es ahí cuando ví la posibilidad con el rango de direccionamiento extendido del eZ80.

La idea, es que cuando no se usen los 64k básicos, se puedan acceder a los 16 slots visibles (4slotsx 4 subslots c/u), en forma lineal. Que el engine de la mother convierta la dirección lineal real del eZ80 en una no SLOTTEADA, en realidad esto es muy sencillo, y no requiere retocar casi NADA... solo hacer que cuando A23 valga 1 A19 y A18 determinen el SLOT y A17 y A16 determinen el subslot, y al mismo tiempo bloqueen la normal acción del slotting standard.

Con esa sencilla maniobra, se podrán hacer LDIRs entre slots sin importar donde estén mapeados.

Será mucho más sencillo y rápido acceder a dispositivos como el cartucho IDE a la alta velocidad.

Es decir, no propongo hacer algo que sea incompatible con MSX, sino que tenga modos alternativos de hacer lo mismo en forma mejorada!.

Acerca del otro cuello de botella, el de la VRAM, un acceso directo mediante otro rango de addressing del ez80 es más complicado, de hecho mucho más complicado.... Pero que beneficios tendríamos!!!!!!!!.

Acerca de la cantidad de VRAM mappeada espero como mínimo 4mb , si trae menos , para mí no vale la pena gastar tanto para comprarla.

Todas estas ideas yo ya se las hice llegar en su oportunidad a LPADIAL. Solo espero que las haya escuchado.

Sobre la solución de software propuesta:

La idea de cuando vi este desarrollo, era:

creala con un eZ80 como base (aunque un z80 no molestaría siempre y cuando se pueda desactivar si es posible mediante un switch). Y en esa forma.

Correrla a 50mhz, que toda la mother escepto los chips msx standards lentos como el VDP y PSG soporten esa velocidad.

Que el timing se puede ajustar por software con un bucle de espera.

Y yá

Instalar un OS (cualquiera seá, para mi es más importante el tema MSX revival, que mi proyecto personal).

El OS correrá a 50mhz, y las aplicaciones hechas para el mismo también.

Una aplicación será un emulador de MSX2+, como solo debe emular el timing y el rango de I/O es muy facil de hacerlo. De esa forma la mother se puede vender sin infringir LEYES de COPYRIGHT porque el mismo usuario deberá colocar la ROMs en el emulador, tal como sucede con todos los emuladores.

Para lograr un timing perfecto y de esa forma una compatibilidad 100%, se puede ofrecer una ayudita desde el punto de vista desde el hardware.

Propongo:

Un registro de 8 bit leible mediante alguna I/O, que guarde un valor que se vaya incrementando al ritmo de 3.58mhz, y que cuando se acceda al mismo en modo escritura, el contador se resetee.

Esa pequeñisima ayuda es de gran valor para emular el timing PERFECTAMENTE y FACILMENTE!!!.

Es decir, correr todo el soft de hoy en el emulador y todo el soft de la proxima generación MSX en el OS que corre a 50mhz o a la velocidad que dé.

Cualquier OS puede ser sencillamente adaptado, así sea UZIX WIOS MNBIOs o lo que venga.....

Y eso sería un valor agregado más al desarrollo.

!login ou Inscrivez-vous pour poster

Par pitpan

Prophet (3145)

Portrait de pitpan

08-10-2004, 11:53

Mi "refleccion" es todavia mas corta y contundente:

SE ESCRIBE "REFLEXION".

Y no he puesto tildes porque estoy con un teclado ingles, que conste.

Par flyguille

Prophet (3028)

Portrait de flyguille

08-10-2004, 15:10

no problem pitpan.... gracias por avisar