[Coco] Drivewire for Dummies - Part 1

Robert Hermanek rhermanek at centurytel.net
Fri Mar 23 09:52:02 EDT 2012


With no prior knowledge I can see how it would be hard to know where to start, so I'll write a few messages here on the assumption of someone having no idea what it is for.

Background:  Once upon a time, if you were lucky you had a color computer with a disk controller.  (If not, you were biting your nails hoping your cassettes loaded.)  If you had a disk system, then you could have up to 4 drives, and they were labelled drives 0 through 3, and you selected which disk drive you wanted to use with the drive command:

DRIVE n

Each of these four physical 5 1/4 floppies would store approximately 160k of data.  Back in the day, this was pretty huge.  Although disks were more reliable and much faster than cassette, disk failures or directory crashes were still quite common.

After the floppy era, hard drives started making an appearance.  Harddrives are orders of magnitude larger (megs vs. kilobytes) however for usage in disk extended basic on a color computer, these larger devices would still have to be presented as "virtual floppies" of 160k each, so that a massive rewrite of DECB (disk extended color basic) would not be necessary, and also to avoid incompatibilities with old software.

HDB-DOS appeared on the scene eventually in order to facilitate connecting to a hard drive from DECB and getting access to your new space in friendly 160k virtual disks.

Next, some very clever folks (insert list of all the geniuses involved here) came up with "DriveWire."  For the coco, it still comes down to be connected to some large "device."  But in fact all read/write disk requests are redirected out the rs-232 port, and a server application on the far side (on a modern PC) will respond to the request and send data back to the coco.  The coco sees this data as the response of a sector read (for example) from a floppy disk, just like back in the day when it was connected to actual coco disk drives via a disk controller.

For drivewire to work then, there are four things you need:

1)  a coco running HDB-DOS
2)  a cable connecting rs-232 to serial port on PC
3)  a drivewire server application running on the PC
4)  a disk image mounted and ready in the drivewire server app.

Now a little discussion of disk images, and people can correct me if I'm wrong.

Once, disk images (files with a DSK extension) were just a handy way of storing the data on a 35 track standard coco disk, so again about a 160k file.  This file simply contains each track, each sector, in order, and the 256 bytes that make up each sector.

For the purpose of drivewire however, these DSK images started being placed in collections, since we didn't want to just work with one virtual floppy, but many virtual floppies.

Going back to the coco running HDB-DOS, there are now two commands for selecting which drive you want to access:

DRIVE n

This is the same command I mentioned above, and it will choose which virtual disk you want to use on the currently selected device.  Now for original coco's running a disk controller, there was no talk of what device you wanted to access--you were accessing your disk controller, and if you were lucky you had more than one drive connected to it.  You could then say DRIVE 0 or DRIVE 3 to access your disks.

When connecting to scsi devices came about, a new command was added:

DRIVE #n

Yes, looks the same except for the # symbol.  This command selects which device you want to access.  For example, if you had a scsi controller connected to your coco, with 2 physical harddrives attached, each of these harddrives would contain their own collections of virtual floppy disks.  So all of the following are possible:

DRIVE #0
    DRIVE 0 - first virtual disk on device 0
    DRIVE 1 - next virutal disk on device 0
    (etc)

DRIVE #1
    DRIVE 0 - first virtual disk on device 1
    DRIVE 1 - next virtual disk on device 1

(etc)

Now we get our sites back on drivewire, and here is what we come up with:

1)  When you use the DRIVE #n command, you are selecting the "device," but for drivewire this simply means which source file (collection) of virtual floppies you wish to use.  This collection is a single file (like a single physical harddrive back in the day) that contains, one after another, virtual floppy disk images.

2)  When you use the DRIVE n command, you are choosing which virtual floppy on the currently selected collection you wish to use.

3)  The real bonus:  Back in the day with physical devices, you were limited to how many devices and disks you had by what you really had--in drivewire there is no limit other than the device and disk #'s have to be a byte value.  That means you can select any device # 0 - 255 (DW4 server), and any drive # 0 to 255 on each device. 256 X 256 = 65,536 virtual disks that can be accessed by a coco connected to a drivewire server.  That's a whole bunch of space!


So a final summary is:

1) Get HDB-DOS running on coco, get server running on PC, get connected with a cable. (we'll get the specifics of the cable soon)
2) In the server application, choose as many disk collections (that will be seen as "devices" in HDB-DOS) mounted as you would like.
3) Select your current collection from the coco using the DRIVE #n command, and then choose your current virtual floppy disk using the DRIVE n command.



More information about the Coco mailing list