Page 1 of 2

DragonCoCo

Posted: Wed Oct 03, 2012 9:46 pm
by prime
Cop[y of what I just posted to the CoCo mailing list as it may also be of interest here.

Hi all,

I've just managed to modify a Dragon 64 to be dual personality, both as a Dragon 64 or a CoCo.

This involves two circuits, one is a 27256 (or bigger) that replaces IC18, and has the normal Dragon rom in the lower 16K and a slightly modified** CoCo 2 rom in the upper 16K, A14 is connected to a switch so that you can select between them.

** The reason for the modified rom is twofold, firstly the Default CoCo rom writes to one of the PIA echoes in the FF04-FF07 area, on the Dragon 64 this is where the ACIA is mapped, so this has to be avoided.
The second reason is that the CoCo 1/2 have to detect what RAM chips are fitted (as does the Dragon 32), whereas the Dragon 64 will always have 8x4164 64Kx1 chips, so the ram detection code is removed.

The other part of the circuit is a little board containing 2 4053 analog multiplexors, that sits in the keyboard cable and who's job it is to re-map the Dragon keyboard layout onto the CoCo one. The select inputs for these two chips, pins 9,10 and 11 are wired together and connected to the A14 switch of the rom circuit.

There is one mod to the main board that is required for this to work, C5 and C2 must be removed, on the Dragon these sit between the PA0 and PA1 lines of the PIA and ground, these are the lines the joystick buttons are connected to, without removing these the first two rows of the keyboard will not work in CoCo mode. The CoCo has these two caps on the other side of the L1 and L2 inductors inline with the buttons, so it may be possible to re-connect them there.

Note at this time I have done no testing of how this affects the joystick.

This way I can power on with the switch in one position and I have a Standard Dragon 64, which will play nicely with standard Dragon programs, and will boot into all ram basic by typing EXEC 48000. In the other position I have a CoCo 2, with 64K CB 1.2 and ECB 1.1.

I have designed a circuit that will hopefully plug into the printer port and convert it to a bit-banger, which will work in CoCo mode, though if the correct software where written there's no reason it shouldn't also work in Dragon mode.

Please also note that all the above was done on a UK Dragon 64, I do have a couple of Tano machines, so at some point I'll try it on them but see no reason why it would not work. However some of the components may be labeled differently.

Cheers.

Phill.

Re: DragonCoCo

Posted: Wed Oct 03, 2012 11:37 pm
by Rink
Super cool!!!

Re: DragonCoCo

Posted: Wed Oct 03, 2012 11:42 pm
by robcfg
Nice!

Does the pal timing have any effect on the programs when in CoCo mode?

Re: DragonCoCo

Posted: Thu Oct 04, 2012 8:08 am
by drag0n
Great news!
How fast can the Dragon run the bitbanger port? Is there any reason why it won't reach 57.6K like the Coco2?
Also could you post here the modified Coco roms?

Re: DragonCoCo

Posted: Thu Oct 04, 2012 9:20 am
by prime
robcfg wrote:Nice!

Does the pal timing have any effect on the programs when in CoCo mode?
I've not done any extensive testing, it shouldn't affect raw CPU speed as that runs at the same clock speed, determined by the SAM, I guess it would only affect programs that synced to the frame sync. But i guess that would also affect a PAL CoCo too.

Of course if you use a Tano Dragon 64 as the basis, this won't be a problem.

Cheers.

Phill.

Re: DragonCoCo

Posted: Thu Oct 04, 2012 9:24 am
by prime
drag0n wrote:Great news!
How fast can the Dragon run the bitbanger port? Is there any reason why it won't reach 57.6K like the Coco2?
Currently I see no reason why it shouldn't but have not yet built the level / polarity converter yet so don't know for certain. Is there any easy way of testing it ? I suppose I could try loading a DriveWire rom and trying to boot with that.
Also could you post here the modified Coco roms?
Sure, I can post the source too, I took the source from the unravelled books and converted it to a form where I can assemble it with mamou, the NitrOS9 / toolshed assembler.

Ok I've attached the modified Colour basic, the Extended basic I used was the standard CoCo one as IIRC this is already compatible.
ColourBasic.zip
Modified Colour basic 1.2, configured to run on the Dragon 64
(447.74 KiB) Downloaded 302 times
Cheers.

Phill.

Re: DragonCoCo

Posted: Thu Oct 04, 2012 12:54 pm
by sixxie
prime wrote: I've not done any extensive testing, it shouldn't affect raw CPU speed as that runs at the same clock speed, determined by the SAM, I guess it would only affect programs that synced to the frame sync. But i guess that would also affect a PAL CoCo too.
PAL CoCo timings are slightly different to PAL Dragon timings - I can't remember the specifics (need to re-measure and actually implement), but the durations differ: Dragon has 2 * 25 line delays inserted, pretty sure CoCo has 1 * 24 line and 1 * 26 line.

For almost all things that difference would be unnoticeable.

Re: DragonCoCo

Posted: Thu Oct 04, 2012 2:07 pm
by drag0n
Running drivewire is probably the easiest way of testing the bitbanger port. Drivewire dos doesn't have to be loaded from ROM. There are versions for loading from cassette and disk as well. Here's the download link
http://www.frontiernet.net/~mmarlette/C ... vewire.zip

The most interesting file there is dw3dos_cc2.trk. This is the OS9 boot track for booting NitrOS9 from drivewire.
I believe that the Dragon (original rom) with your bitbanger port implementation should be able to boot NitrOS9 from Drivewire using a boot disk which has dw3dos_cc2.trk in track 0 starting from sector 3.
This means that for the first time ever (AFAIK) the Dragon will have access to hard drive ! Well at least a virtual hard drive through Drivewire. I guess the next goal would be adapting the SuperIDE software for the Dragon ;)
prime wrote:
drag0n wrote:Great news!
How fast can the Dragon run the bitbanger port? Is there any reason why it won't reach 57.6K like the Coco2?
Currently I see no reason why it shouldn't but have not yet built the level / polarity converter yet so don't know for certain. Is there any easy way of testing it ? I suppose I could try loading a DriveWire rom and trying to boot with that.

Re: DragonCoCo

Posted: Mon Oct 08, 2012 8:03 pm
by prime
Right after some initial testing, I created a drivewire disk saved a file and loaded it back.

It seems that the Dragon 64 (and probably the 32 as well), will work at 56K as the CoCo2.

Next step is I guess to try and boot the DriveWire version CoCo NOS9 on the 64 and see if that works.

The circuit is very simple, just a Max202 and a LS04, the LS04 is needed because the PA1 Tx line has an inverter inside the Dragon, so needs inverting again so that it's correct for the bitbanger.

I'll upload the circuits once I have a verified design.

Cheers.

Phill.

Re: DragonCoCo

Posted: Mon Oct 08, 2012 8:51 pm
by drag0n
Wow, great accomplishment!
Can't wait to see the details and give it a try.
Bringing the Drivewire platform to the Dragon opens so many possibilities - flexible storage, virtual printing , MIDI and even telnet.
Phill, since you have previously ported SuperDos to the CoCo, do you think you can do the opposite now - port HDB-DOS for drivewire over to the Dragon?
This seems like the major next challenge ;)