Consulta emulación TS2068

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Consulta emulación TS2068

Mensaje por Rickyarg » 29 Dic 2016, 12:10

Buenos días/tardes/noches, antes que nada me presento, soy Ricardo Calcagno, vivo en Argentina y desde hace unas semanas soy el feliz poseedor de un ZX Uno, gracias a la gentileza de Antonio que me ha provisto de una unidad. Asimismo, les solicito disculpas si este post no corresponde a la sección apropiada, y si es el caso el Administrador lo mueva correspondientemente.

Estoy recién tomándole la mano a esto, y quiero emular una Timex-Sinclair TS2068, que fue mi primera máquina. Tengo dudas respecto a las ROMs de la 2068, que como sabrán (y está perfectamente explicado en las FAQs http://www.ngpaws.com/zxunofaq.html#programacion, en el apartado "Memoria adicional") traía 24K de ROM: un bloque principal de 16K, que se carga como en la Spectrum en las primeras $4000 posiciones de memoria princial (HOME); y otro bloque adicional, de 8K, que se cargan en las primeras $2000 posiciones del bloque correspondiente del bloque EX-ROM (a veces se denomina a esta área como "shadow"). Estos bloques se direccionan mediante la paginación horizontal, que entiendo está emulada en el ZX Uno.

Pues bien, las consultas:

a) Cómo hago para cargar estos dos ROMs en la memoria del ZX-UNO? Me imagino que el bloque principal no será problema, pero cómo hago con el segundo bloque?
b) Hay alguna otra cosa que tener en cuenta al emular el hard de la TS2068? O bastaría con cargar los ROMs adecuadamente?
c) Finalmente, la TS2068 venía con un cartucho por ROM, que se accedía mediante el tercer bloque (DOCK). Si uno tuviera imágenes de estos cartuchos, cómo debería cargarlos)?

Desde ya muchas gracias por sus respuestas, y saludos desde Argentina!

Ricardo.

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

Re: Consulta emulación TS2068

Mensaje por antoniovillena » 29 Dic 2016, 17:05

El ZX-Uno soporta modos Timex HiColour y HiRes, además de la MMU horizontal del Timex. Ahora bien, la conmutación de ROM no está implementada, al menos hasta lo que yo sé. Esto ya sería cosa de que McLeod o algún desarrollador de otro core de Spectrum (Kyp o Fabio) se anime a sintetizarlo en su core. La cuestión es, ¿qué software hay que necesite de esta paginación ROM especial? Porque si no hay software que le saque provecho me temo que va a ser más difícil convencerles.

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Re: Consulta emulación TS2068

Mensaje por Rickyarg » 29 Dic 2016, 17:31

Comprendo. El gran inconveniente es que, según tengo entendido, el TS2068 utiliza ambas memorias ROM, haciendo bank switching cuando necesita alguna rutina de uno de los bancos que no está conmutado. Por ejemplo, si no recuerdo mal, en la memoria "shadow" se encuentran, entre otras cosas, los modos de video, las rutinas de carga y grabación de RAM a cassette, creo que también algunas rutinas de interrupciones e inicialización, etc. O sea, no creo que funcione sin ambos bloques y la posibilidad de hacer bank switching. Pero probaré a ver qué sucede.

Mientras tanto, veré si me pongo en contacto por MP con alguno de los desarrolladores que mencionaste, ya que no creo que esta sea una inquietud muy común, visto que esta máquina solamente se comercializó en USA y Latinoamérica.

Muchas gracias por tu respuesta! Saludos. Ricardo.

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

Re: Consulta emulación TS2068

Mensaje por antoniovillena » 29 Dic 2016, 17:35

Pues Fabio es de Brasil, así que lo tendrás "supuestamente" más fácil con él.

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Re: Consulta emulación TS2068

Mensaje por Rickyarg » 29 Dic 2016, 17:41

Ah, bien! Al menos está más cerca.... :D

Muchas gracias.

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

Re: Consulta emulación TS2068

Mensaje por mcleod_ideafix » 01 Ene 2017, 21:38

En lo que respecta a la implementación de las funcionalidades del Timex en el ZX-UNO, puedo aportar lo siguiente:

Están implementados todos los modos gráficos extendidos del Timex: Timex HiColour y Time HiRes, incluyendo el soporte de dos páginas para el modo estándar, de forma que en este modo, la memoria de pantalla puede estar en $4000 o $6000.

Pero como además se implementa un 128K, y éste tiene a su vez dos pantallas, la normal y la shadow, esto significa que en el modo estándar de pantalla, tenemos cuatro páginas, a saber según los valores de dos bits:

Código: Seleccionar todo

A = bit 3 del puerto $7FFD
B = bit 0 del puerto $FF

A B ¦ Direccion
----+---------------------------------
0 0 ¦  $4000
0 1 ¦  $6000
1 0 ¦  $C000 (si se pagina el banco 7)
1 1 ¦  $E000 (si se pagina el banco 7)
También está implementado el puerto $F4, que se usa en conjunción con el bit 7 del puerto $FF. El puerto $F4 es el manejador de la MMU horizontal del Timex. Este manejador trabaja con bancos de 8K. En cada porción de 8K del espacio de direcciones puede haber una de estas tres cosas:
- Memoria proveniente de HOME
- Memoria proveniente de DOC
- Memoria proveniente de EXT

La memoria HOME es la memoria normal de un 128K. Esta memoria puede ser ROM (para las direcciones $0000 a $3FFF) como siempre, o memoria RAM, para direcciones a partir de $4000. Lo que aparezca en el espacio de direcciones del Z80 cuando está activa la memoria HOME depende unicamente del manejador de memoria estándar del 128K o +3. Por otra parte, las memorias DOC y EXT son memorias RAM en su totalidad.

El puerto $F4 usa un bit por cada banco de 8K, siendo el bit 0 el que controla el banco $0000-$1FFF... , hasta el bit 7 que controla el banco $E000-$FFFF. Si el bit está activo, en ese banco aparece una página DOC, o EXT (según el valor del bit 7 de $FF). Cuando se usa la MMU del Timex, la memoria que aparece en los bancos activados por $F4 es o bien toda DOC o toda EXT. No es posible tener bancos con DOC y otros con EXT, ya que sólo hay un bit que indique qué memoria se usa.

El mapa de memoria, contando con el manejador de memoria del 128K, el del +3, y el del Timex, queda así (no se tiene en cuenta la paginación automática del DivMMC en este esquema, que se superpondría a la ROM)

Código: Seleccionar todo

 Banco             HOME            DOC    EXT
------------+--------------------+------+-----
$0000-$1FFF ¦ ROM3/2/1/0 RAM0/4  ¦ DOC0 ¦ EXT0
$2000-$3FFF ¦ ROM3/2/1/0 RAM0/4  ¦ DOC1 ¦ EXT1
$4000-$5FFF ¦ RAM5/1/7           ¦ DOC2 ¦ EXT2
$6000-$7FFF ¦ RAM5/1/7           ¦ DOC3 ¦ EXT3
$8000-$9FFF ¦ RAM2/1/6           ¦ DOC4 ¦ EXT4
$A000-$BFFF ¦ RAM2/1/6           ¦ DOC5 ¦ EXT5
$C000-$DFFF ¦ RAM0/1/2/3/4/5/6/7 ¦ DOC6 ¦ EXT6
$E000-$FFFF ¦ RAM0/1/2/3/4/5/6/7 ¦ DOC7 ¦ EXT7

ROM3/2 disponibles desde puerto $1FFD
ROM1/0 disponibles desde puerto $7FFD
DOC si bit 7 de $FF = 0
EXT si bit 7 de $FF = 1
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Re: Consulta emulación TS2068

Mensaje por Rickyarg » 02 Ene 2017, 22:02

McLeod, muchas gracias por respuesta. Aunque creo que no logro entenderla del todo. Pero lo del Spectrum 128K me ha dado una idea. Estuve viendo que, en los emuladores tipo Spectaculator, Warajevo, etc. la ROM del 128 tiene en realidad dos archivos, uno el archivo 128-0.rom que generalmente contiene el editor y el menú, y el otro 128-1.rom que tiene el basic. Ambos archivos tienen 16KB de tamaño. He leído también que el Spectrum 128K realiza una paginación similar a la TS2068 cuando tiene que leer de cada una de las ROMs mencionadas. La TS2068 también tiene dos archivos, uno de 16KB y otro de 8KB.

Pues bien, el ZXUno emula el 128K, y mi interés ahora es saber de qué manera se guardan estas ROMs en el core de Spectrum, y si se podrá hacer algo similar para las ROMs de la TS2068. Será posible implementar un esquema de este tipo? Y si es así, cómo? Deberé usar el GENROM para generar la ROM a partir de los dos archivos?

Muchas gracias! Saludos. Ricardo.

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Re: Consulta emulación TS2068

Mensaje por Rickyarg » 02 Ene 2017, 22:16

Abrí con un editor los dos ROMs de la Spectrum, 128-0.rom y 128-1.rom; y comparándolo con el ROM que se encuentra para descargar en http://www.atc.us.es/svn/zxuno/firmware/roms/; este último es la concatenación de los otros dos. Lo cual me hace pensar que quizás esto mismo lo debería hacer con las ROMs de la TS2068.

Si los concateno, habrá algo más que tenga que hacer para que funcione? Cambiar algún registro, o algo así?

Muchas gracias! Ricardo.

*EDIT* Acabo de revisar, y en el ZEsarUX la ROM de la TS2068 también es la concatenación de ambos archivos, ts2068-0.rom y ts2068-1.rom....

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

Re: Consulta emulación TS2068

Mensaje por chernandezba » 03 Ene 2017, 22:44

Creo que la duda de Ricardo es cómo definir una entrada en las Roms del zxuno para que cargue la rom de timex 2068. Supongo que habría que habilitar el bit enmmu para activar la paginación timex, pero luego los 24 kb de rom como los gestiona el zxuno en su mapa de memoria?
Por cierto, en ZEsarUX yo emulo el modo de paginación de Timex al seleccionar la TS2068, el Prism y el Chloe.
Pero al seleccionar zxuno NO emulo el modo de paginación de timex (y lógicamente no hago caso del bit enmmu).
La verdad es que en su momento me complicaba un poco la emulación y además a nadie se le había ocurrido usar esa característica del zxuno (hasta ahora) ;)
----

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

Rickyarg
Mensajes: 20
Registrado: 29 Dic 2016, 11:46

Re: Consulta emulación TS2068

Mensaje por Rickyarg » 03 Ene 2017, 23:43

Gracias César por la aclaración! Exactamente, lo que quisiera saber es si existe alguna manera de mapear los 16k+8k=24k de la TS a la memoria del ZXUno. Y si habría que tener en cuenta algún otro detalle. Si me pudieran dar alguna indicación, trataría de levantarla en el ZEsarUX a ver si funciona. Quién sabe, tal vez podamos agregar una máquina más a la lista de las emulaciones....

Muchas gracias! Saludos. Ricardo.

Responder