Unexpected Pi

A very kind colleague of mine has lent me his Raspberry Pi, so that I can have a little play with it. Here it is being hooked up on my workbench:

I used the standard Debian 'squeeze' image, since that's what I've been messing about with recently. After checking that I had internet access, I went off and installed the mono runtime, like this:

sudo apt-get update
sudo apt-get install mono-runtime

...after doing that I ran the C# webserver example that I had already written - and it works a treat! I didn't compile the code on the Raspberry Pi, I simply copied the exe file over and ran it with the mono command. The code was compiled in monodevelop running on Debian in VirtualBox.

Anyway, here is another photo, taken when I was first cheking that I could get online. Umm, I need to tidy up in here again.

More reports will follow I'm sure...

Unix v1: taking IsoCobbler for a spin

After finding that Unix v1 was out there, and that it can run on the PDP-11, I thought that it was an ideal target for taking my IsoCobbler tool for a spin. So this is how I used IsoCobbler to make a bootable CD containing the first version of Unix, circa 1972:

1) Download a copy of SIMH 3.81 for DOS, from this location: http://sourceforge.net/projects/simh/files/simh%20binaries/3-8.1/
2) Inside the "simh-3.8-1_MS-DOSi386-exe.zip" file, find this path: simh/pdp11/unixv1. Extract the 6 files inside to a folder.
3) With the extracted files, rename unixv1.bat to start.bat. This will then be started automatically by the disk image.
4) Now add the files in the folder to a new zip file called content.zip. This zip file will be inflated automatically when your boot disk starts.
5) Get IsoCobbler and move your content.zip file into the same folder as the IsoCobbler binaries.
6) Run CobblerConsole (as an administrator), and enter these commands:
   INS content.zip
   SAVE unix1.iso
7) You should now see a file called UNIX1.ISO in the folder containing the IsoCobbler binaries.

That's it! You have made a bootable ISO containing First Edition Unix. When you boot from the ISO and you're prompted, login as root.  Oh, here's the one I created:

  IsoCobbler CD image with Unix v1

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:


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...

Improved PDP-11 Live CD

  Live CD image

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.

PDP-11: RT-11 Live CD with Basic-11

  Live CD image

[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.

Making a bootable CD-ROM from scratch

  Bootable ISO

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

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:

SHCDX33E /d:CD001 /l:X
SRDISK 10240 /E


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):

 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
MOUNT DU0: C:\boot.dsk

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.

Starting RT-11 in SIMH for the first time

This post continues my SIMH RT-11 tutorial... When you start RT-11 from the install disk the first time, you'll see some text like this:

Welcome to RT-11 V5.3

You have bootstrapped the RT-11 Distribution Disk.  Use this disk to
install your RT-11 system, then store it in a safe place.

RT-11  V5.3  provides an automatic installation procedure which will
back up your distribution disk and build a working system disk which
should  be  used for your work with RT-11.
This  working  system disk will only  contain  the  RT-11  operating
system.  After  the  RT-11  installation  is  complete,  follow  the
installation instructions  packaged  with  any optional languages or
utility software which you will be using.

Press the "RETURN" key when ready to continue.

I usually try to skip the automatic install procedure, since I'm more likely to learn stuff if I do all the setting up by hand.  So after pressing RETURN, and getting asked "Do you want to use the automatic installation procedure?" I type "NO".  After pressing RETURN a couple of times, we should be booted into RT-11.

Remember, if you ever mess up your boot disk and things go wrong, you can just re-copy a fresh version of rtv53_rl.dsk and we will get back to the start point above.