[Coco] Dragon64 / NitrOS9 Question

Tormod Volden lists.tormod at gmail.com
Thu Jan 5 18:03:46 EST 2017


On Wed, Jan 4, 2017 at 12:08 PM, Bill Pierce wrote:
> I'm reposting this as many may have missed it over the holidays and I reall need this info.
>
> Dragon guys... I have been working on my "BootMajik" automated NitrOS9 boot making utility and I want to include the Dragon64 as well as the Tano Dragon64.
> I know the Dragon has a paralell port and that port is supported in the NitrOS9 repository in the builds for the Dragons. My question is on the serial interface. Is the Dragon serial port the same as a Coco or does it require a different driver?
> The disks built for the Dragon and available in the repo have descriptors for the serial port (t2 & t3, Serial Pak?), but no driver (??). The "bootlist" supplied on the disk for making new os9boot files is absolutely useless as it seems to be the Coco2 bootlist and not the Dragon. In fact, the bootlists on all the NitrOS9 disks need a major makeover as all are incorrect in that they reference files that don't exist or files that have been renamed. These really need reworking and I hope to get to that soon.
> Which reminds me, does anyone know if the RBSuper drivers (lltc3, llide, & llsdc) and the drivewire drivers work on the Dragon?

The differences between Dragons and CoCo 1/2 are smaller than many people think.

1. The main difference is the BASIC ROMs. Actually the Dragon BASIC
ROM content is 80% the same as the Extended RS BASIC, but things are
shuffled around so ROM call addresses are different, and the Dragon
has the "extended" part integrated and not patched in via RAM hooks.
Machine language programs that use BASIC ROM calls can therefore often
be ported simply by changing the ROM call addresses.

2. The second difference is the keyboard matrix. The rows have been
shifted two steps, except the one with ENTER, SHIFT, etc. As an
example, the FUZIX kernel checksums the BASIC ROM to see what machine
it is running on (there is not much other ways to detect that) simply
to translate the keyboard table accordingly - it is exactly the same
kernel running on both. Machine language programs that use their own
keyboard scanning routines therefore need patching when porting.

3. The Dragons have a parallel port. Actually it is simply the same
PIA outputs which also are feeding the keyboard matrix that are taken
out through a buffer to the parallel port connector. Plus ACK, BUSY
and STROBE signals! And these three signals are on exactly the same
PIA pins used for the bit-banger serial port in the CoCo. This makes
it rather easy to make an adapter fitting into the parallel port which
gives a serial port 100% software compatible with the CoCo serial port
- what is known as the Dragon DriveWire adapters :) So for us with
such adapters, we can use e.g. the same DriveWire drivers as on CoCo.

4. The Dragon 64 / Tano / 200 have a real serial port (UART or ACIA).
It is limited to 19200 baud so slower than bit-banging (typically
57600 baud) but offer the advantage of interrupt-driven I/O and not
holding up the CPU like the bit-banging code does. So far I haven't
seen anyone writing e.g. DriveWire drivers for the ACIA. They would be
very similar to the drivers for external RS232 cards that some people
plug into their CoCos. The Dragon 32 doesn't have any ACIA.

5. The floppy disk drives and controllers sold for the Dragon (from
Dragon Data, Cumana, etc) are different than the ones sold for the
CoCo. They use different disk geometries etc. The DOSes are also
different, use different syntax, and are of course written to hook
into the Dragon BASIC or into the RS BASIC respectively so you can't
just plug a RSDOS controller into a Dragon (well unless you put CoCo
BASIC ROMs into the Dragon - some people do that with a switch to
choose between RS or Dragon BASIC). Note that for instance HDBDOS
(which is based on RSDOS and thus supports the RS floppy disk
controllers and drives) has been ported to the Dragon BASIC (by
remapping ROM calls as mentioned in point 1 above) so you can (at
least theoretically, don't know if anyone tried yet) use an RS disk
controller and drives on a Dragon with Dragon BASIC and HDBDOS ROM on
the controller.

When it comes to NitrOS-9, before we get to floppy disk drives, and
stay with DriveWire, the "coco2" port runs fine on a Dragon with the
simple change of the keyboard routine.

What is called the "d64" port in NitrOS-9 is mostly about support for
the Dragon Data disk controllers and drives. And for instance the boot
sectors must be laid out differently if you are booting via Dragon
DOS.

So if you are using a Dragon but without Dragon Data (or compatible)
disk controllers, and you don't care about the ACIA (because you are
using the bit-banger) you can use the CoCo2 port with the Dragon
keyboard routine.

IMO we should try to move away from the old assumptions that if you
have a Dragon you'll have Dragon Data disk controllers and so on, and
make the NitrOS-9 build system based on capabilities and finer
characteristics (which can be populated by standard profiles such as
"Dragon with Dragon Data disk drives", by all means). This will make
it easier to match and mix from what has been, unnecessarily, two
worlds.

I could add that *most* of the Dragons have PAL video output for 50Hz,
whereas *most* of the CoCos have NTSC video output for 60Hz. There was
historically a relation between regional TV video frequencies and
power grid frequency, but don't get confused if you see variables
called PwrLnFrq in the NitrOS-9 code - there is nothing in these
machines locked to the power grid frequency - it is just video sync
frequencies derived from the internal crystal.

Best regards,
Tormod


More information about the Coco mailing list