Conversión de Tandy CoCo a Dragon

Sabíamos algo del tema, sabíamos que el Tandy CoCo y el Dragon eran parientes, ¿ pero tanto ?

Adaptación libre, basada en los textos de Jonnathan Bird.

En todo momento las referencias que se hacen son al CoCo 1, NO el 2 ni el 3, solamente al 1. 

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 cargándola en RAM y tan solo:

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.

&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:

        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 encargó 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.


 
Hay que seguir investigando y cuando se logre cargar la ROM del CoCo en un Dragón y ejecutar los juegos hay que comentarlo. Añadir a todo esto que introduciendo un cartucho de CoCo en Dragon suelen funcionar perfectamente.