Older synthesizers can be fascinating technology. They are often used for many years by their owners, long after the original manufacturer no longer supports them. Witness how many people know what a Moog is or who made a DX7. I normally play an Ensoniq ASR-10 in my church band. In it's day, the ASR-10 was Ensoniq's flagship product. Even now it's still quite a capable sampler, as were its older brethren in their day. And even though Creative have successfully removed Ensoniq as a company, I discovered there are still people making new sounds, disks and CD-ROMS for the ASR-10 and its older brother, the EPS 16plus, which I also used to own.
All of Ensoniq's samplers had booted off diskette and used them for storing their sounds and sequences. And many-a-time I'd been attracted by the thought of being able to manipulate these from my PC. Unfortunately, the problem with technology like that from 10 or more years ago is that computer technology has moved on. The EPS used 3.5" double-sided, double-density diskettes, formatted to about 800K. Not only are new DSDD disks difficult to purchase, the humble floppy drive is fast disappearing from modern PCs. Moreover, the format is not DOS compatible, necessitating special software to read and write them.
As it happens, a small industry sprang up around sorting out this sort of problem. For Ensoniq disks, particularly, a company called Giebler Enterprises has been around for a long time and has some versatile utilities for manipulating Ensoniq disks and files. Unfortunately (again!), the utilties are all DOS-mode only. Whilst at the time of writing, I have several PCs, one is a Windows ME laptop with a USB drive, a second runs Windows 2000 with no floppy drives, and two more are running Linux. Whilst I'm familiar with DOS and would be happy to use it again, why should I acquire another PC just to run these utilities?
But what if I could get Linux to work with Ensoniq disks? If I was lucky, I would only need to
change some parameters for the floppy drive and then I could
cp /dev/fd0 with impunity.
If I was lucky...
It turns out that armed with a fairly recent fdutils, it is
possible to do everything that is required to an Ensoniq disk, except perhaps format them. On Debian v3,
apt-get install fdutils will get you version 5.3. This is recent enough.
A shell script that uses
If you give it a parameter of
BTW, there are four minor changes to make to the script so that it reads and writes ASR-10 images. I'll post the alternate script eventually. Especially as I managed to obtain a second-hand ASR-10 recently.
Of course, so many of the downloadable images are in Giebler's EDE format. Fortunately, it has been documented. :-)
I haven't written an EDE packer because I haven't seen a need. As far as file compression goes, there is little point in the way the EDE format skips empty sectors in this day and age. I also haven't made any of my own images available, so haven't encountered people expecting an EDE image...
What about formatting, I hear you ask?
The EPS disk format is 80 tracks of 10 sectors of 512 bytes. The tracks are numbered 0 to 79, the heads 0 and 1 and the sectors 0 to 9 (0 to 18 for the ASR format). PC disks have sectors numbered from 1, not 0, so the Linux floppy driver will not be able to read, write or format an EPS disk as a block device unless you patch it (see below).
I was going to write a shell script that either uses
fdrawcmd to format and EPS disk a
track at a time, or codes up a few options to
superformat. However, I got the patch below
working easier than I thought I would, so I never tried this. If you aren't going to patch your
kernel, you will have to keep formatting them in your sampler.
If you would instead prefer to use commands like
cp /dev/fd0 disk.img you will need to patch and
compile a few things. The first thing you need is the zero sector patch off the fdutils page. This patches the floppy driver in the Linux
kernel, so you will need to recompile it. The 2.4.25 patch will patch 2.4.18, BTW (this is the kernel
in Debian v3). It had been submitted to linux-kernel for inclusion in the kernel proper, but it appears
to have fallen through the cracks. The fdutils maintainter has re-submitted it.
(If you are fortunate enough to be using a distro where the floppy driver is a module, then you only need to recompile the module and re-load it. I was not so lucky.)
Secondly, you will need fdutils v5.4 and the patch off the page mentioned above. This patch will
undoubtedly make it into v5.5 of fdutils. Amongst other things, it adds options to
getfdprm to let you set and get the zero-sector setting with
zerobased. You will need to copy the patched fd.h from the kernel source tree
into include/linux/ before you compile the patched fd-utils.
The advantage of this approach is two-fold. Firstly, reading and writing EPS disks is much easier and quite
a bit quicker. And secondly, you can use
fdformat to format your disks. This won't lay down an
EPS file system, however. To do that, you need to write a blank image. To make one of those, format a disk
in your EPS, then copy the image off this disk. Now you have a blank image for formatting on your PC.
If you need a little more assistance in doing this bit, here's what you do. These instructions should work for you if you've installed Debian v3 (aka "Woody") with the 2.4 kernel (install option "bf24") or any distro based on Debian v3 with kernel 2.4. They assume you are familiar with the command line, and some assumptions have been made about directory locations.
It is assumed that you have downloaded all required files into /usr/src.
apt-get install kernel-source-2.4.18
apt-get install kernel-package
tar xvfj kernel-source-2.4.8.tar.bz2
patch -p1 < ../zeroBased-2.4.patch
make-kpkg --revision=some.useful.string kernel_image
dpkg -i lernel-image-2.4.18_some.useful.string_i386.deb
shutdown -r now
Now we can build fdutils.
cp kernel-source-2.4.18/include/linux/fd.h /usr/include/linux/
tar xvfz fdutils-5.4.tar.gz
patch -p0 < fdutils-5.4-20040228.diff
Okay, your new fdutils are now setup! To change the floppy drive to be EPS compatible, do
setfdprm /dev/fd0u800 ds dd sect=10 zerobased. I suggest that device because it's closest
to the EPS's capacity, but you can choose any other or even make your own node, if you like
mknod /dev/fd0eps b 2 120, for example). Once that's done, you can
dd to and from
/dev/fd0eps) with no problems.
fdformat even works. :-)