IsoCobbler: a tool to make bootable ISO images

What with all this fiddling around with boot disks and ISO files, I found that there were not many tools around to do *exactly* what I wanted ... namely edit a 2.88Mb bootable floppy image and turn that into a bootable ISO.  So I've written IsoCobbler.  It doesn't have a GUI, it is command driven, but it suits my purposes.  Even though it looks very retro, this is a C# application running on .Net 4.  Here is a screenshot of it in action, on Windows 7:

IsoCobbler

It comes with a default boot image included, and makes it simple for anybody to edit it.  You can insert your own zip file called "content.zip" containing a batch file called "start.bat" along with any DOS applications you want.  Anything inside "content.zip" will be extracted into a RAM Disk and "start.bat" will be executed when the boot disk runs.

I guess that it might also be useful for creating some sort of emergency boot disk, you could load the zip file with all kinds of tools.

So here is the application (you'll need .Net framework v4 installed and it's best to run it as an administrator) and the source code (Visual Studio 2010).  Please drop me a line if you find it useful.  If I get time I may fiddle with it some more...

Making a bootable CD-ROM from scratch

  Bootable ISO
Download


I've been experimenting with the mkisofs tool to make bootable ISO images for burning onto CD. This tool can be downloaded from the CDRTOOLS site (make sure you use the latest *stable* release).

The command line I'm using is:
mkisofs.exe -J -N -l -v -relaxed-filenames -b Floppy.img -volid "BootCD" -o "BootCD.iso" CDfiles

...where "CDfiles" is the name of a folder containing the floppy disk image (named "Floppy.img") as well as anything else you want to put onto the CD-ROM.  I'm doing this from a command prompt in Windows 7 and it seems to work very well.

To make the CD bootable I've been using my bootable floppy image.  This causes the CD-ROM to boot as if it were a floppy disk. You'll see the files inside the disk image appear as if it were a real floppy drive when the CD boots up. I've included the the generic CD-ROM drivers, and you should see the actual CD-ROM appear as drive X:.

You'll also get a 10Mb RAM drive, giving you some *writable* disk space to play with.  This version simply boots to a basic DR-DOS system, but I'm blogging it since it may come in handy for other purposes...

You can burn the resulting ISO image to a CD, or simply try it out by attaching the ISO in Virtual PC or VirtualBox and booting from it.  Here is a screenshot of the ISO booted in Virtual PC:

The ISO booted in Virtual PC

DR-DOS boot floppy image

 Boot floppy image
Download


One of the results of all this DR-DOS memory stick work was that I also created a bootable floppy disk image.  I created it using Microsoft Virtual PC ... but the resulting disk image would be bootable in VirtualBox too.  I manually edited the xml files to attach the virtual floppy disk in Virtual PC, as described here. This disk image just boots DR-DOS with a CD ROM driver, some memory management and a RAM Disk driver.

My next step will be to use this floppy disk image to build a bootable CD.  I will then use that as the basis for my revised PDP-11 Live CD.  I'll probably use SIMH for DOS since I don't expect that I'll be allowed to redistrubute the demo version of Ersatz-11 (although I think that Ersatz is a better emulator).

Enhancements to the DR-DOS boot stick

I've made a few enhancements to the DR-DOS boot stick that I made, so here are the details. Just copy the files mentioned to the root of the boot disk.  I believe that everything used is free for non-commercial use.  Here goes:

The OAKCDROM.SYS generic CD-ROM driver (will work with most IDE CD-ROM drives) I got my version from here. Open the zip file and look inside the "Floppy" subfolder.  Just copy OAKCDROM.SYS to the boot disk.

In addition to the CD-ROM driver, I've used a MSCDEX replacement called SHSUCDX, which is linked to from here.  I've downloaded the "shcdx33e.zip" version. Just copy the SHCDX33E.COM file to the boot disk.

For memory management I've added two things:
  HIMEMX - copy both EXE files
  CWSDPMI - just copy CWSDPMI.EXE (in the bin folder)

And finally, I've added a RAMdisk driver... we need to copy the SRDISK.EXE and SRDXMS.SYS files.

To get all those files to work we also need to edit AUTOEXEC.BAT and CONFIG.SYS:

AUTOEXEC.BAT
-----------------
CWSDPMI
SHCDX33E /d:CD001 /l:X
SRDISK 10240 /E
%SRDISK1%:

CONFIG.SYS
--------------
LASTDRIVE=Z
DEVICE=himemx.exe
DEVICE=OAKCDROM.SYS /D:CD001
DEVICE=SRDXMS.SYS

So now if we boot from the memory stick we'll have X: mounted as the CD-ROM (if you have one) and the current drive will be an empty 10Mb RAM drive.  We also have better memory management.  It should be a reasonable DOS system, and to the best of my knowledge everything I have used is free for non-commercial use - good for the hobbyist that wants to run a DOS machine.

Emulating from DR-DOS on a memory stick

I decided that it would be cool to have an emulated PDP that was bootable from a memory stick.  Then I could simply boot from a USB pen drive straight into a PDP-11.  To do this, I decided  to use a different emulator than SIMH - Ersatz-11.  It's free for hobbyist use.  Not only does Ersatz-11 have a good DOS based emulator (meaning that you don't have to boot into Windows first) but I believe that it will give access to the physical COM ports, althought I have not tried that feature yet.  I tried to get it to run under FreeDOS, but whilst Ersatz-11 would start; I could not get it to read any disk images.  So in the end I switched to DR-DOS, which was harder to install... but ran the emulator without any errors.

Here are some brief notes on how I got it working (from a Windows 7 machine):

- Make an empty FAT formatted USB pen drive bootable into FreeDOS with unetbootin
  Just select FreeDOS 1.0 under 'Distribution', and then select your pen drive at the bottom and click OK.
  This was the easiest way I found to make a DOS type boot disk, but we don't actually want FreeDOS.
- Now, make a DRDOS folder on your pen drive and save the DR-DOS binaries in there
  [I'm using version 7.01.06]
- Make a DRSYS folder on the pen drive and save the DR-DOS varant of FreeDOS SYS binaries in there
- Download and copy the Ersatz-11 DOS files onto an E11 folder on the pen drive
- Copy your own PDP-11 boot disk image to your pen drive

Now we can reboot and start FreeDOS from the pen drive.  When asked, boot into FreeDOS as a simple LiveCD, we don't need more than that.  It should boot to drive A: and your pen drive will appear as another drive (for me, it was drive C).  Now try the following (WARNING! this assumes your pen drive is now C, change the drive letter if your one is different, don't blame me if you mess up your hard disk):

 C:
 cd DRSYS
 sys C:\DRDOS C:\
 cd \

 copy C:\DRDOS\*.* C:\
 del C:\*.img
 del C:\ub*.*
 del C:\*.cfg
 del C:\*.c32

The pen drive should now be bootable in DR-DOS rather than FreeDOS, so reboot and start from the pen drive again.  [There will be a LDLINUX.SYS file left over from FreeDOS that we can't delete right now.  If you want to, come back and delete this file by plugging your pen drive into another machine with a better OS.]

You should now be able to start Ersatz-11, with something like this:

cd E11
E11
MOUNT DU0: C:\boot.dsk
BOOT DU0:

That's it!  You should be able to emulate a PDP-11 under DR-DOS.  In Ersatz-11, hit <SHIFT>+<ENTER> twice to stop emulating, then type 'exit' and press enter to quit to DOS.  If you put the 'mount' and 'boot' commands into a file called E11.ini inside the E11 folder and create an autoexec.bat file in the root of the pen drive to start the emulator, the pen drive should automatically boot into the emulation from now on.