I have been messing around a bit more with editing disk images and my IsoCobbler application. Here is a newer version (and source in Visual Studio 2010) now with some extra features.
There are commands like NEW, which allows you to start from scratch with a blank FAT formatted floppy image (the 1.44 or 2.88Mb variety). You can also LOAD and then EXPAND your existing 1.44Mb images and IsoCobbler will attempt to make them into 2.88Mb ones, trying to keep the boot sector working in the process.
After writing the EXPAND command, which needs to transplant the boot sector and hack it around a little bit, I decided to implement an MBR command as well. This allows you to put in your own boot sector, or save the existing boot sector from a floppy disk image. Anyway, for details of all the commands, see the "Help" file included in the downloads. This version still expects all the files to be in the root, it doesn't support folders yet (which might be next on my list actually).
So after all that messing about, I have gotten as far as building my own boot sector in x86 assembler (using NASM, The Netwide Assembler) which in turn boots into my own simple kernel (and when I say kernel, I mean Hello World application). IsoCobbler did of course make a bootable ISO out of that experiment, so I have a bootable CD that runs my own bootloader and then starts my Hello World code as the kernel. Umm, now I'm feeling the need to go off and write a 'proper' kernel (in C probably). It seems that making a program to help me build CD-ROM images has gotten all out of control, since I seem to be considering the idea of building my own OS as a consequence. Right, I'm off to visit Bran's Kernel Development Tutorial, I may be quite some time...
By popular demand, here is a PDP-11 Live CD that is configured to auto-run the 'Dungeon' game (aka Zork) in a PDP-11 emulator. Well OK, when I say 'popular demand' I mean that a colleague of mine mentioned it in idle conversation...
I got the game files from here: http://www.dbit.com/pub/pdp11/rt11/games/
And if you don't know about the historic computer game of Zork, I suggest you have a read on wikipedia: http://en.wikipedia.org/wiki/Zork.
The previous PDP-11 Live CD that I made is great, but it only works with IDE CD-ROM drives, so you cannot use it if you have a SATA or USB CD-ROM. Which is a shame. So I wanted to make a version that doesn't rely on having CD-ROM drivers for DOS, since it's unlikely that I'd be able to support all of the different types of drive. I have tried to get my external USB CD-ROM drive to work under DR-DOS and found that I couldn't make it go.
So, for a few days I have been struggling to create an "El Torito" hard disk image, so that I could make a CD bootable version of a hard disk. I haven't gotten it to work yet. I even tried this (twice actually) by taking the HxD hex editor to an ISO file. I've given up for the time being, but I'll probably come back to it.
However, I can get floppy disk "El Torito" images to work perfectly, including the 2.88 Mb variety. That's how I got the previous Live CD to start (but I was only using a 1.44 Mb image that time). So with a bit of lateral thinking I realised that my PDP-11 disk compresses quite well. So I went off an got an UNZIP program for DOS, from here ... or to be specific, I downloaded unz600x3.exe from: ftp://ftp.info-zip.org/pub/infozip/msdos/.
This means that I can fit DR-DOS into a 2.88 Mb floppy image along with a compressed copy of the PDP-11 emulator and disk. Since everything is inside the 2.88 Mb image, we don't need to load CD-ROM drivers in DOS. It means that this bootable ISO will work with SATA and USB CD-ROM drives, it doesn't need the drivers since it's all done by the BIOS and the magic of El Torito. Cool.
[NOTE: I have since made a better version here.]
This ISO image of a bootable CD is the combination of two different threads I have been working on: how to make bootable CDs and how to set up RT-11 with Basic in SIMH, the PDP-11 emulator. This CD only works if you have an IDE CD-DROM drive though.
So I took the bootable CD image that I had already made and added SIMH for MS-DOS. Then I added my RT-11 / Basic-11 disk image. I set SIMH to start up automatically from a 16Mb RAM disk. It all seems to work. It is pretty fast in comparison to a real PDP-11! Because it is running from a DOS RAM disk, you get read/write access under RT-11 (until you switch the power off). But it does mean that you can't mess it up since you get a clean install each time you boot the CD. Oh, and if you're looking for a manual on Basic-11 I've posted some stuff here.
So... if you'd like to have a play with an ancient operating system, give it a try. Burn the ISO to a CD or boot it directly in Virtual PC or VirtualBox. I've tried it with as little as 32Mb RAM, and it works fine. When I get time, perhaps I'll do an ancient Unix Live CD as well.
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:
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).
Here is a way to make a blank floppy disk image that you can use in Oracle VirtualBox. It's a hacked around version of this. You just make a batch file with these DOS commands in:
if exist blank.img del blank.img
for /l %%i in (0,1,31) do echo 01234567890123456789012345678 >>blank1.img
for /l %%i in (0,1,35) do type blank1.img >>blank2.img
for /l %%i in (0,1,39) do type blank2.img >>blank.img
After running it, you end up with a working disk image, and here is a version that I then reformatted inside a virtual machine. I've since found that you can use these images in Windows VirtualPC too, although there is no UI to attach them, you have to edit the xml files of your virtual machine manually.
I realised that if I could get a floppy disk that booted into RT-11 v5.3, then I might be able to add the DECUS C compiler and have a boot disk and C compiler. This is the procedure I used to make my first RT-11 v5.3 boot disk.
Using SIMH, boot into RT-11 v5.3, making sure that you have blank RX33 disk image attached as DK1:. Then use these RT-11 commands to copy the files to the floppy disk image:
COPY/SYS SY:*.SYS DK1:*.SYS
COPY SY:VBGEXE.SAV DK1:
COPY SY:DIR.SAV DK1:
COPY SY:BUP.SAV DK1:
COPY SY:DUP.SAV DK1:
COPY SY:IND.SAV DK1:
COPY SY:LINK.SAV DK1:
COPY SY:KEX.SAV DK1:
COPY SY:PIP.SAV DK1:
COPY SY:V5USER.TXT DK1:
COPY SY:STARTX.COM DK1:
COPY SY:UCL.* DK1:
Then, shut down SIMH. We'll next use PUTR to make the RX33 disk image bootable (this assumes that you have called the image rx33.dsk and that it is in the same folder as PUTR):
MOUNT a: rx33.dsk /rx33 /rt11
That's it. The RX33 image should now be bootable. Try it out in SIMH to make sure.