DragonCoCo

A place to discuss everything Dragon related that doesn't fall into the other categories.
prime
Posts: 267
Joined: Fri Apr 10, 2009 1:40 am

DragonCoCo

Post 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.
Rink
Posts: 236
Joined: Mon Sep 05, 2011 7:01 pm

Re: DragonCoCo

Post by Rink »

Super cool!!!
User avatar
robcfg
Posts: 1531
Joined: Sat Apr 04, 2009 10:16 pm
Location: Stockholm, Sweden
Contact:

Re: DragonCoCo

Post by robcfg »

Nice!

Does the pal timing have any effect on the programs when in CoCo mode?
drag0n
Posts: 12
Joined: Sun Jul 08, 2012 1:03 pm

Re: DragonCoCo

Post 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?
prime
Posts: 267
Joined: Fri Apr 10, 2009 1:40 am

Re: DragonCoCo

Post 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.
prime
Posts: 267
Joined: Fri Apr 10, 2009 1:40 am

Re: DragonCoCo

Post 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 244 times
Cheers.

Phill.
Last edited by prime on Thu Oct 04, 2012 3:09 pm, edited 1 time in total.
sixxie
Posts: 1348
Joined: Fri Jul 18, 2008 8:36 am
Location: Hertfordshire
Contact:

Re: DragonCoCo

Post 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.
drag0n
Posts: 12
Joined: Sun Jul 08, 2012 1:03 pm

Re: DragonCoCo

Post 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.
prime
Posts: 267
Joined: Fri Apr 10, 2009 1:40 am

Re: DragonCoCo

Post 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.
drag0n
Posts: 12
Joined: Sun Jul 08, 2012 1:03 pm

Re: DragonCoCo

Post 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 ;)
Post Reply