HDB-DOS for Dragon 32 and 64/Tano

A place to discuss everything Dragon related that doesn't fall into the other categories.
Post Reply
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

HDB-DOS for Dragon 32 and 64/Tano

Post by tormod »

Dear Dragon-owners,

I ported HDB-DOS to the Dragon 32 some weeks ago, and have finally tested it on real hardware and pushed the bits to the Toolshed repo which houses the official HDB-DOS source tree [1].

I have tested the DriveWire functionality on my Dragon 32 with an inverting USB serial adapter. The adapter is equivalent to Ken's adapter in his DriveWire post [2]. Note he was back then "cheating" using a CoCo BASIC ROM :)

Retrocanada has tested it with the SuperIDE cartridge and also helped identify a couple of bugs. He also posted a video [3].

[1] http://sourceforge.net/p/toolshed/code/ ... ee/hdbdos/
[2] viewtopic.php?f=5&t=781
[3] http://www.youtube.com/watch?v=U3ACnIQ- ... e=youtu.be

What is HDB-DOS?

HDB-DOS is based on RSDOS from Radio Shack, enhanced by Cloud-9 to work with hard drives controllers such as the SuperIDE cartridge, as well as DriveWire (through the CoCo bitbanger serial port). HDB-DOS extends Color Basic the same way as Dragon DOS extends Color Basic.

Using the Dragon HDB-DOS port you are using the normal Dragon BASIC ROM, only the disk commands are taken care of by HDB-DOS. Currently, HDB-DOS does not support the Dragon floppy disk controllers, but using a CoCo disk controller should be possible.

What is DriveWire?

DriveWire is a serial protocol and disk image server running on an external computer, allowing floppy disk commands and data (and more) to be sent over the serial line. This way you can do without any real floppy drives and access virtual ones instead.

The Dragon HDB-DOS port uses the bit-banger port like on the CoCo (accessed through the parallel printer port on the Dragon). It does not use the serial port available on Dragon 64. Support for this should be possible, but the transmission rate would be limited by the Dragon 64 UART.

How to get started with HDB-DOS on the Dragon

You can build your own images from the HDB-DOS source code. This makes sure you get all latest fixes, and you can build a custom image for your needs. Currently a few example targets are included in the Makefile:

Code: Select all

make hdbdw3dgn32ram.wav
will create an HDB-DOS version for using DriveWire that will load into the upper 8K RAM of a Dragon 32 (starting at $6000), in the form of a WAV file that you can load via the cassette interface. If you, like me, don't have any physical disk drive, nor a EPROM programmer or similar, and only have 32K of RAM, this is the way to go.

After powering up the Dragon, reserve space for HDB-DOS, load the tape file and boot HDB-DOS:

Code: Select all

CLEAR 200, &H5FFF
CLOADM
EXEC
Or if you have a SuperIDE or other similar hard-drive controller:

Code: Select all

make hdblbadgn.rom
will create an HDB-DOS version for IDE (LBA) interfaces that can be burned to a ROM cartridge (running at $C000), or in the case of the superIDE, flashed to its ROM emulator.

See the Makefile for which flags to tweak. Basically "-DDW" is for DriveWire, while "-DIDE -DUSELBA" is for SuperIDE. Use "-DORG=0x6000" for loading into RAM at $6000 (default is cartridge at $C000). And don't forget "-DDRAGON" :)

Now you must have the DriveWire server running on your external computer. I am using the old C-based DriveWire 3 server, but the newer Java-based DriveWire 4 server is probably recommended. Set the "CoCo type" to CoCo 2 (57600 baud). More information and links can be found at Cloud-9's DriveWire page [4].

[4] http://www.frontiernet.net/~mmarlette/C ... Wire3.html

Load disk image collections into the server. In DW3 mode, each server disk file contains 256 disk images. You can start up with an empty file. After loading it into the server as (server) Disk 0, you can format for instance a disk image 9 from your Dragon using

Code: Select all

DRIVE #0
DSKINI 9
See the DriveWire documentation [5] on disk images and disk image files. In DW3 mode, DRIVE #N selects server disk file, whereas DRIVE N selects a disk image (virtual floppy) within the current server disk file.

Now you can use DIR, SAVEM, LOADM etc as described in the HDB-DOS manual [6].

[5] http://sourceforge.net/apps/mediawiki/d ... _DriveWire
[6] http://www.frontiernet.net/~mmarlette/C ... B-DOS.html

Who wants to use this?

This is of special interest to Dragon users without physical floppy drives, and those who don't have the possibility or desire to replace the Dragon ROM with a CoCo ROM for running DriveWire. Also interesting is the possibility to run this on a Dragon 32, which cannot run the DriveWire-enabling NitrOS-9 operating system.

Coming up next

"DWDOS" for HDB-DOS: Loading 8K of HDB-DOS from tape takes quite some time. Similar to the small DWDOS program that loads Nitros-9 from DriveWire, I'll make a small (ca 500 bytes - loads quickly from tape) stub that downloads the 8K HDB-DOS via DriveWire instead. UPDATE: Here

Dragon Drivewire-USB adapter kits: Integrating USB-serial, an inverting gate, and a proper printer connector. For those without real RS232 ports on their external computer and not wanting to solder together their own solution. UPDATE: Here

Enjoy!
Tormod
Last edited by tormod on Thu Aug 22, 2013 7:18 am, edited 2 times in total.
retrocanada76
Posts: 45
Joined: Tue Jul 23, 2013 3:26 pm

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by retrocanada76 »

will create an HDB-DOS version for using SuperIDE that can be burned to a ROM cartridge (running at $C000).
Actually for use with SuperIDE you will use the provided FLASH.BAS/FLASH.BIN (they come on stock clould9 CF) on a real coco to burn one of the flash banks. I use bank 0 for Dragon and leave the default banks 2 for Coco and 3 for CocoDW. Once I get the dragon adpater I will burn the DragonDW on bank 1.

Unfortunately, the SuperIDE is a discontinued product from Cloud-9. They retired the product as they are developing their next-gen device using SD. But as far as I know it's completely different and HDB-DOS will need to be re-written for it. Hey Tormod, more work comming :)
retrocanada76
Posts: 45
Joined: Tue Jul 23, 2013 3:26 pm

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by retrocanada76 »

Also, this is kinda strange because you cannot use dragondos disk on it, you should use rsdos disks with rsdos binary files. So it will be needed a converter to extract the binaries from .vdks and put then inside .dsks. Then they can be inserted into the superIde or read through DW.

Basic files from coco must be saved in ASCII prior to be read on tano/dragon. From vdks I have no clue probably add a preamble/postamble, etc.
KenH
Posts: 182
Joined: Fri Oct 12, 2012 9:50 am

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by KenH »

retrocanada76 wrote: So it will be needed a converter to extract the binaries from .vdks and put then inside .dsks.
I think that Rolf's Dragon Tools should be able to handle the conversion between DragonDOS VDK format to RSDOS DSK.
Basic files will need further processing to re-tokenize. There were a couple of tools to take care of that, perhaps they could be integrated into DragonTools to make the process eaiser.
Rink
Posts: 236
Joined: Mon Sep 05, 2011 7:01 pm

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by Rink »

Sounds great. Think I'll be giving this one a try.
User avatar
rolfmichelsen
Posts: 296
Joined: Wed Apr 08, 2009 8:43 pm
Location: Oslo, Norway
Contact:

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by rolfmichelsen »

KenH wrote:I think that Rolf's Dragon Tools should be able to handle the conversion between DragonDOS VDK format to RSDOS DSK.
Basic files will need further processing to re-tokenize. There were a couple of tools to take care of that, perhaps they could be integrated into DragonTools to make the process eaiser.
DragonDos Tools can read and write VDK and DSK virtual floppies and provides relatively complete support for DragonDos diskettes. I once started adding support for RSDOS, but I've only implemented very basic features. It should be relatively easy to add the necessary features to support a DragonDos to RSDOS filesystem copy kind of functionality. I'll have a quick look just for the fun of it to see if progress can be made this weekend.

In the meantime, it is possible to use dragondos.exe to extract files from a DragonDos filesystem and then use something like imgtool to write it back to an RSDOS filesystem. dragondos.exe will provide information about load and execution addresses when extracting machine code programs. There is no support for decoding tokenized BASIC or converting between different token encoding schemes. That's also something I've been thinking about as support for additional filesystems are added, but it has not been at the top of my list just yet...

-- Rolf
retrocanada76
Posts: 45
Joined: Tue Jul 23, 2013 3:26 pm

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by retrocanada76 »

Yup, I'm actually doing it, I changed the DragonDosTool to add me the preamble/postamble for binary files and I add them to a dsk using toolshed's decb (actually DragonDos already writes me a batch file to add all the extracted files at once) and they are working fine. Except for some games that uses specific memory positions incompatible with hdb-dos.

Also, the .RUN files they don't work too. But you just need to runm the .bin instead.
User avatar
tormod
Posts: 416
Joined: Sat Apr 27, 2013 12:06 pm
Location: Switzerland
Contact:

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by tormod »

Here is the promised DWDOS-like "quick loader" for bootstrapping from tape. The WAV tape file loads in just a couple of seconds. On EXEC it loads and boots the 8K long HDBDOS via DriveWire in ca 4 seconds. Please read the included README file, especially note the CLEAR address of 5DFF.

For comparison, loading the 8K via tape takes ca 50 seconds.
Attachments
dwhdbdos.zip
(updated disk image to work on DriveWire 4 server)
(12.97 KiB) Downloaded 462 times
Last edited by tormod on Sun Mar 23, 2014 12:15 pm, edited 3 times in total.
KenH
Posts: 182
Joined: Fri Oct 12, 2012 9:50 am

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by KenH »

I have done some tests with HDB-DOS on my Dragon Tano (native roms) and Dragon 32, with limited success.

All tests were done with HDB-DOS rom images which were flashed (using my CoCo3) on bank0 of the SuperIDE.

On the Dragon32:
1) HDB-DOS/SuperIDE with hdblbadgn.rom is stuck on the boot screen after displaying "HDB-DOS 1.4 LBA ON DRAGON" (the cursor never shows up)
Image

2)HDB-DOS/DW compiled using

Code: Select all

hdbdw3dgn.rom: ../cocoroms/ecb_equates.asm ../cocoroms/dragon_equivs.asm hdbdos.asm
	$(AS) -DDW -DLevel=1 -DDRAGON $+ -o$@
(using the SuperIDE just as a rompak for HDB-DOS) work fine! :D

On the Tano Dragon
both roms above will not boot, showing a garbled screen.
Image

This is strange because the exact same configuration (Tano+SuperIDE) obviously works fine for Luis (retrocanada), so I could be doing something wrong.
I've attached the rom images I've used, perhaps someone else can give it a try. I've also used the SuperIDE rom Luis posted here viewtopic.php?f=3&t=4135&start=10#p8653 with the same results.
thanks,
Ken
Attachments
hdbrom.zip
hdbdos roms
(13.74 KiB) Downloaded 340 times
retrocanada76
Posts: 45
Joined: Tue Jul 23, 2013 3:26 pm

Re: HDB-DOS for Dragon 32 and 64/Tano

Post by retrocanada76 »

Let me ask: You rebuild it yourself ?

If so you need to include your superIDE configs on it:

* IDE Hardware Offsets
DATAADDR equ $FF50

...

HDBHI fcb $05 HDB-DOS Offset hi-byte
HDBLO fdb $2ddc HDB-DOS Offset lo-word

Otherwise it will hang, not find a disk, etc.

Look my previous posts, I attached my hdbdos rom. You can use it.
Post Reply