Nuevo core de Jupiter ACE

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nuevo core de Jupiter ACE

Mensaje por antoniovillena » 09 Nov 2015, 10:49

antoniovillena escribió:Está parcheado para usar teclado de spectrum. Tengo que desparchear. Luego te comento también lo del color, desde el emulador se conmuta con f7.
Ups. Se me ha ido la olla. Lo del parche no tiene nada que ver, es de la ROM original del Jupiter Ace. En este caso se trata de un bug, que tengo que corregir. No sé si pasa también en la versión con tokens (probablemente sí). Intentaré corregirlo durante la semana.

Respecto a los colores, es muy parecido al modo texto del MS-DOS (modo 3h). Hay una zona de caracteres y una de atributos. La zona de atributos está en $4000-$42ff. No recuerdo exactamente el formato, creo que eran 2 nibbles, el inferior para tinta y el superior para fondo. El bit alto de cada nibble es el brillo y no existe flash (el flash que ves del cursor se hace por software).

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Nuevo core de Jupiter ACE

Mensaje por mcleod_ideafix » 09 Nov 2015, 12:02

antoniovillena escribió:Respecto a los colores, es muy parecido al modo texto del MS-DOS (modo 3h). Hay una zona de caracteres y una de atributos. La zona de atributos está en $4000-$42ff. No recuerdo exactamente el formato, creo que eran 2 nibbles, el inferior para tinta y el superior para fondo. El bit alto de cada nibble es el brillo y no existe flash (el flash que ves del cursor se hace por software).
Por las pruebas que he hecho en tu emulador parece que usas el mismo formato de atributos del Spectrum, pero ignorando el bit 7 de flash en hardware. Imagino que en la rutina de interrupciones es cuando lo usas para alternar paper y tinta. ¿Por qué no has dejado el flash por hardware?

Otra cosa: ¿se puede cambiar el valor del color del border? La sentencia BORDER sólo me cambia el color de las dos líneas inferiores, pero no sé si es que es porque tu emulador no muestra el borde, o porque ese borde no cambia.

Para implementar esto mismo en el ZX-Uno tendría que partir el bloque de 16K que hay entre 4000h y 7FFFh en dos bloques: uno de 1K de doble puerto que cubra esta zona compartida con los atributos, y otro de 15KB de simple puerto. Lo que pasa con este sistema es que no es compatible con el Jupiter ACE original, ya que en el original, la zona de memoria de 4000h en adelante se usa como memoria de usuario y no está reservada. Si este sistema de color sólo se puede usar con Bascolace, entonces para eso mejor conmuto a un Spectrum real. La gracia del color en el Jupiter ACE es que se pueda usar desde el Forth, ¿no? Igual se puede adoptar algún mecanismo similar al que ha usado Paul Farrow para su interface que da color a un ZX81 y que además "colorea" juegos existentes.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nuevo core de Jupiter ACE

Mensaje por antoniovillena » 09 Nov 2015, 13:22

mcleod_ideafix escribió: Por las pruebas que he hecho en tu emulador parece que usas el mismo formato de atributos del Spectrum, pero ignorando el bit 7 de flash en hardware. Imagino que en la rutina de interrupciones es cuando lo usas para alternar paper y tinta. ¿Por qué no has dejado el flash por hardware?
Por 2 razones: porque iba implementado en hardware con componentes discretos y porque también se necesita flash con el hardware original del Jupiter Ace. El cursor del BASIC del spectrum necesita parpadeo.
mcleod_ideafix escribió: Otra cosa: ¿se puede cambiar el valor del color del border? La sentencia BORDER sólo me cambia el color de las dos líneas inferiores, pero no sé si es que es porque tu emulador no muestra el borde, o porque ese borde no cambia.
No lo tengo contemplado en hardware, por simplicidad. Aunque en FPGA sería más sencillo y deseable implementarlo.
mcleod_ideafix escribió: Para implementar esto mismo en el ZX-Uno tendría que partir el bloque de 16K que hay entre 4000h y 7FFFh en dos bloques: uno de 1K de doble puerto que cubra esta zona compartida con los atributos, y otro de 15KB de simple puerto. Lo que pasa con este sistema es que no es compatible con el Jupiter ACE original, ya que en el original, la zona de memoria de 4000h en adelante se usa como memoria de usuario y no está reservada. Si este sistema de color sólo se puede usar con Bascolace, entonces para eso mejor conmuto a un Spectrum real. La gracia del color en el Jupiter ACE es que se pueda usar desde el Forth, ¿no? Igual se puede adoptar algún mecanismo similar al que ha usado Paul Farrow para su interface que da color a un ZX81 y que además "colorea" juegos existentes.
Hombre si el clon es sólo de Jupiter Ace sí que tiene gracia, porque puedes tener 2 sistemas en la misma máquina. Pero en nuestro caso podemos tener ambas máquinas. Para hacerlo compatible con el Jupiter Ace original habría que hacer cambios en la ROM de todas formas, independientemente del sistema hardware de coloreo que elijamos. Habría que estudiar cómo hacerlo para que el coloreado sea sencillo de aplicar a los juegos.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nuevo core de Jupiter ACE

Mensaje por antoniovillena » 09 Nov 2015, 13:26

Con que lo hayas hecho funcionar con el hardware estándar del Jupiter ACE ya me doy más que satisfecho. Si quieres probar la carga en cinta (evidentemente no tenemos el feedback del borde) aquí tienes un programa BASIC que debe funcionar, puedes cargarlo con Tapir.

http://jupiler.retrolandia.net/games/bustout.tap

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Nuevo core de Jupiter ACE

Mensaje por mcleod_ideafix » 09 Nov 2015, 14:40

antoniovillena escribió:Para hacerlo compatible con el Jupiter Ace original habría que hacer cambios en la ROM de todas formas, independientemente del sistema hardware de coloreo que elijamos. Habría que estudiar cómo hacerlo para que el coloreado sea sencillo de aplicar a los juegos.
Había un sistema de color para el ACE, que implementé en primera instancia hace ya tiempo, y que por lo que recuerdo, funcionaba de forma transparente a la ROM y al propio hardware original.

La cosa era que tú tenías un puerto de E/S donde guardabas un valor de atributo, de forma que cada vez que el Jupiter ACE escribiera en una celda de RAM de pantalla, el hardware de color copiaba el valor de ese registro de E/S en una celda equivalente en una memoria aparte (esnifando el bus de la CPU). Luego, otra parte del hardware cogía e iba recorriendo esa memoria de atributos al mismo tiempo que se recorre la memoria de pantalla, mezclando el valor de los píxeles con el del atributo de cada celda.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nuevo core de Jupiter ACE

Mensaje por antoniovillena » 09 Nov 2015, 14:46

Pues resulta interesante esto que comentas. Se puede aplicar al esquema actual, extendiéndolo. Y las modificaciones en la ROM serían pequeñas: añadir un nuevo comando de color y modificar la rutina de escritura en pantalla para que se escribiesen ambos bytes.

Nota: En caso de que la mayoría de juegos no empleen la ROM para imprimir sino que escriban directamente en memoria de video, la escritura del byte atributo se puede hacer por hardware como comentas.

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Nuevo core de Jupiter ACE

Mensaje por mcleod_ideafix » 09 Nov 2015, 16:59

antoniovillena escribió:Nota: En caso de que la mayoría de juegos no empleen la ROM para imprimir sino que escriban directamente en memoria de video, la escritura del byte atributo se puede hacer por hardware como comentas.
Que yo sepa, la gran mayoría de juegos para el Jupiter ACE se escribieron no en ensamblador, sino en Forth. O si acaso, usando algo parecido al "ensamblador embebido" dentro de palabras de Forth.
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
mcleod_ideafix
Mensajes: 831
Registrado: 27 Sep 2015, 00:14
Ubicación: Jerez de la Frontera
Contactar:

Re: Nuevo core de Jupiter ACE

Mensaje por mcleod_ideafix » 09 Nov 2015, 17:09

antoniovillena escribió:Pues resulta interesante esto que comentas. Se puede aplicar al esquema actual, extendiéndolo. Y las modificaciones en la ROM serían pequeñas: añadir un nuevo comando de color y modificar la rutina de escritura en pantalla para que se escribiesen ambos bytes.
Este sistema de color llegó a existir como hardware real, y creo que está también implementado en el EightyOne. No sé si hay juegos que lo usen. Puedes ver cómo funciona aquí: http://www.jupiter-ace.co.uk/hardware_colour_board.html
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Nuevo core de Jupiter ACE

Mensaje por antoniovillena » 09 Nov 2015, 19:11

Sí, creo que me lo enseñaste antes. Si no hay ningún juego que soporte este hardware veo que es complicarse mucho.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Nuevo core de Jupiter ACE

Mensaje por chernandezba » 09 Nov 2015, 22:11

Hola

Leyendo este hilo me acuerdo de un emulador de Júpiter ace que se ejecuta en spectrum +2a/+3, dado que utiliza el modo de paginación Ram en Rom para emular el ace

http://www.fruitcake.plus.com/Sinclair/ ... er_Ace.htm

Está hecho por Paul farrow, el mismo del interfaz spectra. Yo he probado varios juegos del ace y funcionan bien, excepto aquellos en que utilizan caracteres no estandard de la rom.

Saludos
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Responder