Page 1 of 1

Announcing the Dragon Toolkit

Posted: Sun Sep 11, 2011 12:42 pm
by rolfmichelsen
For some time I have been experimenting with some code to make it easier to work with the Dragon or the emulators from a Windows environment. The goal has been to create an easy to use general library of Dragon-related functionality and build tools on top of that library. There is still a lot of work needed to be even close to achieving this goal, but it is about time to make the current version available for comments.

The focus so far has been on implementing support for virtual file systems, various disk image formats and corresponding filesystems and even some support for CAS files. The support for DragonDos on VDK or JVC virtual disks is relatively complete. There is read only support for OS-9 and DR-Dos. There is even some experimental support for FLEX, you can list the directory but not much else...

Binaries and source code can be downloaded from http://www.rolfmichelsen.com/dragontoolkit.html.

-- Rolf

Re: Announcing the Dragon Toolkit

Posted: Mon Sep 12, 2011 8:22 pm
by robcfg
Hey Rolf!

Now that's a nice set of functionality!

I'm also making a C++ program to convert wav files to cas files, and I'm trying do a lot of error correction. As soon as I get something that can be used, I'll send it to you and publish it here.

I'm also making a small program to copy .cas data blocks between two files (inspired by CPCTapeXP, nice utility for Amstrad CPC), and it's quite useful as there are tricky wavs to decode.

Do you hear the Dragon roaring? ;)

Re: Announcing the Dragon Toolkit

Posted: Mon Sep 12, 2011 9:37 pm
by rolfmichelsen
Yep, I'm also considering the WAV to CAS decoder. I have some hard to decode tapes lying around, so the motivation is definitively there... How are you thinking about approaching this? I haven't done any coding on this yet, but I'm considering implementing a simple band-pass filer followed by detection of the 0-values in the waveform to estimate the frequency.

-- Rolf

Re: Announcing the Dragon Toolkit

Posted: Mon Sep 12, 2011 10:17 pm
by robcfg
I have the detection of the 0 values plus some error correction. I try to align the bytes, but I guess that would destroy any protection scheme.

I'll send you my code in a couple of days.

Re: Announcing the Dragon Toolkit

Posted: Mon Sep 12, 2011 11:00 pm
by admin
There are not that many protection schemes on the dragon....and none of them are that complex - certainly nothing compared with other platforms.

The most interesting ones are actually quite simple:

1. Length Check - The file is store on the tape as, for example, 20 blocks and then the EOF block - all looks normal.... but the file is longer than it needs to be. The autorun loader actually only reads in the first 18 of the 20 blocks. The program code checks in RAM to see if the last 2 blocks were loaded, and if they were it fails protection. This works well in defeating tape to disk programs.

2. False EOF - An EOF block placed somewhere in the sequence of data blocks - the autorun loader ignores the EOF block and continues to read the data blocks.... a tape to disk program would stop at the EOF block.

Not protection as such, but many custom loaders won't work if the incorrect number of sync bytes exist between blocks - the loaders are often built to load x bytes and if the number of sync bytes is too high, these get loaded as data (usually visible as corruption on the loading screen - Microdeal used this on the PMODE3 "Cuthbert" loaders).

Re: Announcing the Dragon Toolkit

Posted: Sun Dec 18, 2011 10:29 pm
by rolfmichelsen
This project is now hosted as a GitHub repository at https://github.com/rolfmichelsen/dragontools. I have cleaned up the code a bit and the repository now contains a complete Visual Studio 2010 solution, including a general .NET library, tools and some limited tests. New binary distributions will eventually be provided in the downloads section.

-- Rolf

Re: Announcing the Dragon Toolkit

Posted: Mon Dec 19, 2011 11:48 am
by Julian
Nice - I'll take a look tonight and see what you've done :D