Conversión de Tandy CoCo a Dragon

Avatar de Usuario
ron
Mensajes: 18997
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2074 veces
Agradecimiento recibido: 1784 veces

Conversión de Tandy CoCo a Dragon

Mensajepor ron » 15 Oct 2012 13:01

Sabíamos algo del tema, sabíamos que el Tandy CoCo y el Dragon eran parientes, ¿ pero tanto ?, Lafumat insiste y tengo una via de investigación abierta desde hace tiempo.

Al desarrollar el port del XRoar para Dreamcast, aprendí muchas cosas sobre el tema. La última vez que estuve hablando con alguno de vosotros le dije que iba a investigar el tema y que las preguntas, seguro que tenían respuestas. Propongo esta adaptación libre, basada en los textos de Jonnathan Bird.


En todo momento las referencias que hago son al CoCo 1, NO el 2 ni el 3, solamente al 1. Más adelante ya lo comentaremos.


Mucho es lo que se lleva escrito sobre el asunto en los últimos 25 años sobre la similitud y diferencias de estas máquinas. Tenemos que partir de la siguiente base:

CPU, Circuitería de Video, IO, RAM, ROM ( "casi igual" vale !!! más adelante lo vemos ) es idéntica en ambos micros. La principal diferencia es como no el Software.

Aunque ambas máquinas llevan el interprete de Basic de Microsoft y con el mismo dialecto de Basic en realidad estan dispuestos en cada máquina de manera diferente.

Esto significa que aunque podamos cargar y ejecutar programas escritos en Basic al 100 % en los dos ordenadores, cualquier rutina o llamada en código máquina del 6809 fracasará y más si las llamadas son a una rutina cualquiera de la ROM. Para acabar de cabrearse las palabras clave en Basic son numeradas de forma diferente y así evita la carga de cintas en Dragón directamente en el CoCo y viceversa. El resultado final es todo un galimatías.


Nada más lejos de la realidad, existen TRES maneras de evitar esto.

En 1er Lugar: Cualquier programa escrito en BASIC se puede cargar sin ningún problema si se guarda en formato ASCII. Tan solo tendréis que hacer un CSAVE "",A ( La A indica formato ASCII). El código máquina se puede depurar, se pueden reimplementar desde BASIC las llamadas a la ROM apropiada.

En 2do Lugar: Si tenemos 64 Kb de RAM, como es el caso del Dragon 64 y se dispone de una copia del intérprete de la otra máquina( volcado de la ROM), este puede cargarse en RAM y ejecutarse desde allí. Casi casi,

En 3er Lugar: Y por último: substituir las ROM. Casi casi también.


En los TRES Métodos hay fallos, pues los hay. El primero es largo y tedioso, y si se tienen los dos equipos dará lugar a programas duplicados, funcionando en dos discos o cintas en sistemas "supuestamente completamente diferentes". La segunda está bien si se quieren ejecutar programas de la otra máquina de vez en cuando, que también hay que decir es un poco complicado de configurar, ya que no solamente se hace un swopping a los interpretes sino que las Entradas/Salidas debes tenerlas copiadas en la nueva zona para el área de trabajo (0 a 1.023 en la memoria), y en caso de tratarse de discos..... ahí ya ni entro-.

Otro de los problemas más tontos es el del teclado. Esto también te va a pasar en caso de decidirte por la tercera opción ( substituir Roms). Se supone que cuando le cambias ROMS es porque no deseas dejar el micro en la forma original ( Tanto CoCo como Dragon) y es casi como un cambio permanente.

La substitución de los chips de ROM. Lo primero a destacar es que simplemente NO SE PUEDEN INTERCAMBIAR porque si las ROMS de cualquiera de las máquinas. Para que este proceso funcione correctamente, es necesario parchear la ROM previamente. Desde ese punto se asunme que la conversión es de CoCo a Dragon, ya que además de los problemas de espera también está el hecho de que las ROMS del Dragon van soldadas a la placa base, sin zócalo ni socket ni la má que lo pá.

El proceso para parchear la ROM del Dragon es cargandola en RAM y tan solo:

Código: Seleccionar todo

SAVE "DROM", y H8000, y HBFFF, y H8000
       CLEAR 200,16384 CLARO 200,16384
       LOAD "DROM",16384 CARGA "DROM", 16.384


Los parches son los siguientes:

Con la ROM de un Dragon64, el parche para la secuencia de restablecimiento de serie ,
meter H12 ( NOP ) en las siguientes ubicaciones.

Código: Seleccionar todo

       &H7B68 to &H7B6C Y H7B68 a & H7B6C

e. es decir. POKE &H7B68,&H12 POKE y H7B68, y H12
    POKE &H7B69,&H12  etc... POKE y H7B69, y H12 etc ..

       SAVE "DROM",&H4000,&H7FFF,&H8000 SAVE "DROM", y H4000, y H7FFF, y H8000



Con la ROM de un Dragon 32, el parche se aplica en la detección y uso de la secuencia.
Basado en PIA y en la detección de la memoria en la placa.(16 * 16K chips, ó 8 * 32K chips)

La configuración del Tandy se debe establecer en los 8 * 32 K de variedad por:

Código: Seleccionar todo

POKE &H7B7A,&H20 POKE y H7B7A, y H20


Una vez se tiene ya grabada la EPROM, el problema es adaptar una EPROM de 28 pines en un un socket PROM de 24. Afortunadamente la mayoría de los pines son los mismos en ambas EPROMS. Y los hilos restantes se pueden encaminar con cable.

Con este procedimiento se logra, insertar el segundo de los 8K EPROMS Dragón (el que contiene código de un $ A000-BFFF) y el interruptor de encendido. El Tandy debe encender en Modo de color básico. Por lo tanto, se puede comprobar la memoria entre $ $ A000-BFFF simplemente ver y comparar.

Cuando esto está bien, repite el proceso de instalación, esta vez para la EPROM en primer lugar. Obviamente, no se puede comprobar esto si el equipo no se inicia, entonces ya sabes que la EPROM es el problema.

Ya no queda más que un problema, el TECLADO. Encontrar espacio en la rom para parchearlo va a ser complicado. Dragon Data se encargo de hacer los conectores de teclado distintos, podemos decir que " ligeramente diferentes" y por tanto la rutina en ROM que lee el teclado es diferente. Se puede rectificar bien por Hardware o por Software.

Imagen

Voy a seguir investigando y cuando logre cargar la ROM del CoCo en un Dragón y ejecutar los juegos os lo digo. Añadir a todo esto que me comentaron que un cartucho de CoCo en un Dragon funcionó perfectamente..

¿ Os interesa el tema ?

Volver a “Tandy CoCo”

¿Quién está conectado?

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