Page 1 of 12

A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:22 pm
by pser1
Hello,
I would like to share with you a beta version of my project:
A DOSPlus Extender for Drivewire & CoCo-SDC

About one year ago, I was first introduced to Drivewire thanks to Tormod and Ken.
I found that accessing individual files via the DLOAD command was a good solution, but
I felt that we should be able to access the files inside any virtual disc as well.
This meant that the DOS had to be modified to work via Drivewire, creating an HDB-DOS like for the Dragon
I began to toy with DDOS11C and DDOS12A but soon I got some difficult problems with a few important commands
that I was not able to solve, so I forgot about that idea.
Later, on May 2015 I tested the DOSPlus4.9b and fortunately most of the problems I had before were gone or
turned to be easily solvable. I added more hooks to use more and more DOS commands until I was able to use
all of them via Drivewire on adapted vitual discs (VDK files)

In the meantime, I bought a CoCo-SDC module (Darren Atkinson’s design) for my CoCo3 and I found frustrating the fact that,
despite it was ‘hardware’ compatible with Dragon, there was no software to use it till the extent that you need a CoCo
to flash whatever you wanted to put in any SDC bank!
Fortunately, Darren came to help, allowing me access to the communications protocol for that module and gave me
some technical routines to detect the presence of hardware components. My biggest kudos!
From that moment on, I began to add new commands to my extender in order to allow the user to work with the SDC module too,
even commands for flashing / reading the banks have been included.

My test-set was a Dragon64, a Tandy MultiPack Interface, a Lafumat’s disc controller with twin 3.5” floppies and a CoCo-SDC module.
Ken has worked hard as beta-tester and contributed with many great ideas in the analysis / brainstorming phases of this project. Thanks a lot!

The version I am sharing right now seems to be stable, but it should be considered a beta version anyway.
I plan to upload the source code as soon as no more changes are needed to work with it.
So your feedback (comments / suggestions) will be highly appreciated!!

More explanations come in next posts ...

cheers
pere

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:28 pm
by pser1
Project CODE: DOSPlusEXT v0.24. E6 for Drivewire & CoCo-SDC
DESCRIPTION:
It is intended to make it possible to use the standard DOS commands on any VDK file on a Drivewire server,
being the DOS-Plus the chosen operating system.
Of course, these VDKs must be DW4 compatible, so they must have a header 256 bytes long.
You will find attached the small Java app: VDK2DW4.zip that can be used to padd the VDK headers to be 256 bytes long
The result will work in XRoar as well

The part that treats the CoCo-SDC / Floppies on a Tandy MPI is a bit tricky.
If you use just one of them (FDC or SDC), everything will be alright.
But when an MPI is installed, switching between slots will create problems because it is mandatory (in Dragon)
to change at the same time both CTS/ and SCS/ (software and hardware) using $FF7F.
This means that the ROM that is been executed will be unconnected and … most likely the Dragon will hang!
One way to sort it out is to work in MAP1 (all RAM), that way despite we change of slot, the code is still at the same place,
so that’s alright … for the fortunate D64/D200 and Tano owners.
Another chance, a bit more complicated, is to make sure that we have exactly the same ROM version in both slots.
So, the floppy controller has to be modified to accept a 16k EPROM (not that complicated) containing the same version
of the DosPlus and extender. No problem with the SDC, as any bank will serve for that purpose.
This is the only way for the D32 owners to use this extender with a Tandy MPI and both systems (FDC and SDC).

Finally, the SDC accepts files with formats SDF and DSK, this last being something like a VDK file but without the header.
So the same file will have two representations: VDK or DSK (no header)
It would be really great if we could use the same format in both worlds. That would imply that the SDC accepts VDKs
with a 256 bytes long header as DW4 needs right now. This would avoid conversions and so having things in two different formats.

I have built two packs, one for XRoar-Becker Port and another for real Dragons

cheers
pere


****************************************************************************************************************************************************************************************
IMPORTANT
This pack contains the DOSPlus operating system. If the owner of the copyright of that software doesn’t want it
appended/distributed with my extender, please, just let me know in this forum for instance and I will take it away immediately.
Any user that has access to a version of DP4.9b and DP5.0 would be able to apply the hooks to use the extender with a very simple procedure.
****************************************************************************************************************************************************************************************


****************************************************************************************************************************************************************************************
****************************************************************************************************************************************************************************************
DISCLAIMER
DOSPlusEXT v0.24. E6 for Drivewire & CoCo-SDC © PERE SERRAT (2015)

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
****************************************************************************************************************************************************************************************
****************************************************************************************************************************************************************************************

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:34 pm
by pser1
Possible hardware configurations
These are some possible hardware scenarios where you could use this DOSPlus extender:

- You have no floppy controller. By using the extender you will be able to apply all of the DOS commands
to any VDK file in a Drivewire Server. Remember VDKs must be DW4 compatible (256 bytes length header).
All the extra hardware you will need is a converter to connect the parallel port to a server’s USB.
That way you can work with up to 4 units, each linked to a DW4 slot using DosPlus4.9b or DosPlus5.0.

See Tormod’s USB2Parallel adapter at:
viewtopic.php?f=6&t=4270

- You have a floppy controller but no CoCo-SDC. In this case you can configure the 4 units to be floppy or
virtual VDK disks upon your needs. This will allow you to copy a VDK to a physical floppy or the other way round,
simply using the D.O.S. BACKUP command.
In order to communicate with the Drivewire server you will need an adapter (like Tormod’s one)

- You have no floppies but you own a CoCo-SDC module. Then you could do the same than with floppies
but using two units (1-2) linked to SDC drives, the other two being for DW4.
You could even flash any SDC bank with ROMs or whatever you know that could work from $C000 on.
The commands WRITE and SCOPY will be of help for that purpose. Drivewire will require the before mentioned adapter.

- You are the happy owner of a Tandy Multi-Pack Interface compatible with Dragon (I mean not updated to work with CoCo3),
then you can connect there the floppies and the SDC you’d have.
This allows the use of floppies, SDC and Drivewire VDKs at the same time.
You would be even able to copy between floppy and SDC files (DSK or SDF) despite the switching problems commented in Part I

cheers
pere

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:39 pm
by pser1
the DOSPlus add-ons

I have chosen the DosPlus as the Disk Operating System to use in this project after having experienced
some problems with the DDOS11C and DDOS12A.
It seems that DosPlus is a bit more friendly to programmers!
Right now 43 commands can be used with VDK files as if they were floppies.
The only one I have left apart is BOOT, because it usually implies starting another disc system,
so we would lose the access to the extender anyway.

I have added a few new commands to the ‘normal’ DOS ones, they are:
- DWLOAD”Filename” this is a copy of Tormod’s DLOAD included in the modified Dragon Basic ROM.
It allows the use of any dweeb even if you don’t have that modified Basic ROM.
Accepts the version DWLOADN”FileName” to load but without running/executing it.

- MOUNT unit,”Filename” this one asks DW4 to mount the requested file on a free slot and use
this slot number then to link it to the chosen unit. Unit can range between 1 and 4.
If the requested file is already linked to a DW4 slot, there are chances that the server will use that one.

- LINK unit, slotNumber with this one, you link a known Drivewire 4 slot number to any unit .
The DW4 slot number can be 0 or 5-255. The numbers 1 to 4 are reserved for physical drives.
You must ensure that there is a VDK file on that slot number or you will get an IV error when accessing that unit.

- LLINK lists the assignments/links to the four units. If unit 4 is used as a virtual HD, then it will show the disc index in use.

- HDIDX number selects (only on unit 4) a disk inside a virtual HD, made by adding together 180k discs,
maximum quantity being 90, index ranging from 1 to 90

- DOS is a copy of Tormod’s dweeb that allows the user to boot OS-9 or NitrOS-9 from slot 0 of the DriveWire4 server

- LROM is a copy of my dweeb that allows the user to load/exec any ROM file via DW4
In case we just want to load it, we use LROMN instead and it is loaded from $3000 on
Very useful to flash ROMs into any bank in the SDC module

If anyone would prefer to have this in a document, I attach a word doc containig this info

cheers
pere

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:45 pm
by pser1
the added SDC commands

This part has only been possible thanks to the invaluable help of Darren Atkinson.
He has given me access to the CoCo-SDC communications protocol till the extent that now we can even flash banks
with the Dragon, so we don’t need no more to use a CoCo to do that part!
Besides, he has contributed with some complicated hardware detection routines, and of course with
his flashing / erasing SDC routines. Thanks a bunch!

- BANK number switches to that SDC bank and starts it in map0 (ROM), careful with that one!

- BANK number,R starts the bank in MAP1. This is interesting if we want to access floppies
but using an O.S. started from a bank in the SDC. Remember the system needs to switch from SDC to FDC and
we don’t want to hang the system, so all Ram is needed in that case.
Using this trick you can flash any DOS you want to test in the SDC and then play with it in any of
the three possible ‘worlds’ (floppies, SDC, DW4)

- SDRIVE shows the files linked to SDC drives 1 and 2 and their state

- SDRIVEn,[ON || OFF] turns a SDC drive on or off. When it is off, the corresponding FDC drive is on.
That way we could access one floppy and one SDC drive if we want to.

- SDRIVEn”FileName” links the requested file to that drive. Much in the way the MOUNT works for Drivewire.

- SDRIVEn”Filename”,[NEW || DEF] [,180 ||,360 ||,720] creates a DDOS type DSK file or the new special SDF.
By default will create 180k, with requested name. Will link it to the chosen drive.
It is mandatory to DSKINIT that file before using it!

- SDRIVEn,UNLOAD unlinks the linked file so that we could use it in the other drive.
This is not a mandatory command because every time we do SDRIVEn,”FileName” the old attached file is unloaded.

- SDRIVEn,GET shows data about the linked file to that drive, in fact the same shown by SDRIVE
but now related only to the requested drive.

- SDRIVEn,DIM shows the number of sectors that this file (disc) has

- SDIR shows the contents of Current dir folder (paging)

- SDIR GET shows the current directory name only (last leaf, just the name of the directory in the last level of the whole path)

- SDIR? shows the full pathname of the Current directory

- SDIR- shows the contents of the SDC root directory (paging)

- SDIR=”PathName” changes the Current Dir to the requested path

- SDIR”PathName” shows the contents of requested folder.
Careful, if no wildcards used, should end with a / or we will see just the folder name!

Both SDIR and SDRIVE accept wildcards (? and *) when filenames or folder names are entered

I attach here a word doc with this info too.
It contains the info of this post and the one in the next and final one!

cheers
pere

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Thu Sep 03, 2015 6:51 pm
by pser1
and this is the final part of the added SDC commands

- SCHD”PathName” changes the Current Dir to the requested path as ‘SDIR=’ does

- SCHD/ sets the root directory as Current Dir

- SCHD.. sets the parent directory as Current Dir

- SMKDIR”Foldername” creates a directory with the requested name in the Current Dir

- SKILL”FileName” deletes the requested file or empty folder if it exists in the Current dir

- SREN”OldName””NewName” renames a file or a folder ... Careful, no comma between strings.
‘OldName’ must exist in the current dir

- WRITE MEM @bank,source,destination,length will flash a bank in the SDC using the contents of memory
from source to source + length and put it on destination. Example:
WRITE MEM @7,&H4000,&HC000,&H3A00
alternatively WRITE MEM @7 will use these default values/addresses: &H3000,&HC000,&H3F00

And finally a few commands that are of use if you have a Multi-Pack Interface connected to the Dragon
with floppies and/or SDC module in it.

- SLOT number switches to the requested slot number and starts it. If SLOTN is used, it will not change to MAP0
so the slot will change but with the ROM still in MAP1, that way it will be controlling the program flow.
This has the side effect to turn on both drives of the slot we switch to.
For instance if we are working with the floppies and now we want to use both SDC drives, we would have to issue
SDRIVE1,ON and then SDRIVE2, ON … or instead simply SLOTN1 (if SDC is at slot #1)

- SCOPY MEM [@bank || SLOTnum], source,destination,length will copy to RAM any bank of the SDC
or the ROM from a ROMPACK in any MPI slot.
We could use it this way too:
SCOPY MEM [@n || SLOTn] that will use default values/addresses: &HC000,&H3000,&H3F00

I have finally decided to create a doc one page long with all of the new commands added to the DOSPlus
with my extebder, I am attaching this one too

cheers
pere

Ps. Hopefully I have nor forgotten anything. But if you find something that has not been included,
just let me know and I will upload it as well. Thanks for your patience

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Fri Sep 04, 2015 4:52 pm
by KenH
I've been beta-testing Pere's new DosPlus extender for quite a while and I can’t recommend it highly enough!

It's a great ROM alternative to Dragon Dos as it let's you have the best off all worlds: modern fast and reliable floppy alternatives with full compatibility with DragonDos.
Pere has managed to create an extended DragonDos that supports most of the modern storage options.

With a single extended DOS ROM you can load and save programs from either:
1. VDK images stored on an SD Card on a uDW microserver
2. VDK images stored on your PC using a drivewire adapter
3. ROM / BIN /BAS files stored on uDW or DW server without the need for a DWLOAD ROM (through the extenders built in support for DWLOAD)
4. CoCo-SDC floppy emulator board
5. Floppy disks or HXC floppy emulator
6. Additionally, the rom provides Dragon support for the the Tandy MPI

On a 64k dragon you can load the DosPlus extender to MAP1 ram, but the best way to use it is running from ROM on a cartridge or CoCoSDC flash bank.

To burn DosPlus Ext. on rom you need a cartridge that supports 16K roms. Here are a few existing alternatives:
* Rolo's Dragon multi-cartridges
* CoCoEPROMpak
* Flash into one of the CoCo-SDC flash rom banks

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Fri Sep 04, 2015 8:16 pm
by sorchard
Pere, this sounds like an excellent piece of work. Thanks for putting in the time! I look forward to trying it out when I get a chance.

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Sat Sep 05, 2015 7:12 am
by sixxie
This does sound brilliant, I'll have to pull out a CoCo and flash it into the CoCoSDC and have a go with this! And from then on the CoCo need never see the light of day ;)

Re: A DOSPlus Extender for Drivewire & CoCo-SDC

Posted: Sat Sep 05, 2015 9:35 am
by pser1
Hi Ciaran,

You don't need a CoCo any more to flash a CoCo-SDC bank,
You can use your Tano/Dragon with this extender instead!

I added the command
WRITE MEM @bank, source,destination,length that will flash a bank in the SDC using
the memory from source to source + length and put it on destination.
An example: WRITE MEM @7,&H4000,&HC000,&H3A00
or simply: WRITE MEM @7 that will use these default addresses: &H3000,&HC000,&H3F00

cheers
pere