General

PDP-11 MUD – Building the production box

Initially I have decided to run the MUD on a microPDP-11/73 running BSD 2.11 Unix.

The chassis was fitted with a 4MB memory card, a third party eight channel DZV-11, a ethernet card and a CMD CQD-220 SCSI controller with a 18GB SCSI disk in an external case.

To get BSD onto the disk, I hooked it up to a PC running simh and prepared a suitable disk image.

One problem I encountered was that the standard MSCP driver wasn’t fully compatible with the CMD CQD-220 controller. To resolve this it is necessary to compile a patched boot block. This can be found here:  rauboot.s (original site).

To install, I fired up the disk image I was planning on using in SIMH and performed the following steps:

  • cd /usr/src/sys/mdec/
  • mv rauboot.s rauboot.s.orig
  • vi rauboot.s
  • i (For insert)
  • pasted in above copy of rauboot.s
  • after the paste completed, ESC :wq!  (write and quite)
  • make    (rebuilds the mdec files)
  • cp rauboot /mdec
  • dd if=/mdec/rauboot of=/rra0a count=1

Once the disk image was prepared and working, the SCSI disk was hooked up to the SIMH box (running under linux) and the ‘dd’ command used to copy the disk image onto the disk.

Having done that, the disk was reconnected to the PDP and booted up into BSD 2.11. The ethernet was connected up to my office network (via a AUI transceiver). The /etc/netstart and /etc/hosts files were tweaked to assign the box an IP, subnet and gateway on the local network and /etc/inetd.conf modified to enable the FTP server. The PDP was then rebooted into multiuser mode and the network confirmed to be workin

PDP-11 MUD

I’ve frequently been questioned as to why I collect old computers and what they actual do. This has traditionally been a hard question to answer although this is equally true of most collecting hobbies (why do people preserve Model-T fords when a modern car does the job so much better!).

However it has left me with a desire to find an interesting practical use for my machines. One of my earliest computing experiences and fondest memories was playing Essex MUD via the JANET network and so I’ve decided to write a MUD for the PDP-11 and use a mixture of terminals and micros to provide user access and to control non-player characters.

The game will be written in C under BSD 2.11 with DZ11’s providing shell access. The game itself will run as a single process, non-blocking daemon accessed via sockets. This has the advantage of providing serial and network (using telnet) access to the game.

Initially I will develop the game under SIMH, with a uPDP-11/73 with an RD54 used as the production machine. Ultimately I hope to move it all over to a UNIBUS machine, either an 11/40 or one of my 11/70s, but I’ll start simple to begin with.

Non player characters will be implemented on BBC micros in BASIC. The BBCs will interact with the PDP via serial.

I expect development to take 2-3 months of evenings and I’ll report back here regularly on how things are progressing. Once something is working I’ll put a simh version online for people to play with.

Inventory: My Module Spares

This is a list of spare modules I have in my collection:

G7273 X 10 – U – Bus Grant & Non-processor grant
M105 X 8 – Q -Device selector for PDP-11
M4002 – U – KWV11-C Programmable Real-Time Clock
M7390 – Unknown
M7513 – Q – RQDX extender for RQDX1
M7555 X 20 – Q – RQDX3 MFM Winchester and floppy disk controller
M7559 – Q – TQK70 TMSCP controller for TK70
M7680 – ? – RK05
M780 – U – KL11 Teletype transmitter & receiver for KL11, 110 baud
M7800 X 3 – U – DL11 Async transmitter & receiver
M7816 – U – DQ11-AB Bus selectors and block check
M7820 – U – KW11 Interrupt control, 7-bits, 1 per PDP11 peripheral
M7822 – U – DU11 Synchronous serial line interface.
M7823 – U – KW11-W Watchdog timer module
M7846 X 3 – U – RX11 RX01 floppy disk controller
M7860 X 2 – U – DR11-C M786+M105+M7821; general device interface to PDP11
M7864 – U – DR11-L DR11-L, 2 word unibus input interface
M7946 – Q – RXV11 RX01 8″ floppy disk controller
M8020 – Q – DPV11-M Single-line serial EIA sync interface
M8300 – O – KK8E Major registers
M8310 – O – KK8E Major register control
M848 X 2 – O – KP8E Power fail and auto-restart
M8554 – U – DTE20 (Unibus Interrupt Control) [ KL-10D ]
M8946 – Unknown
M8951 – Unknown
M920 – U – UNIBUS connector
M930 X 5 – U – Bus terminator
M9312 – U – Bootstrap terminator
M9396 – Unknown
M935 X 2 – OMNIBUS bridge
M981 – Unknown
M9970 – U – M997, H854 Facing Edge

DECWriter III Rebuild

00001.jpgTo give a nice period console to my 11’s I decided to have a crack at rebuilding the DECWriter III that has sat forgotten in the corner of my office for the last few months. The terminal was in a pretty mucky state, so I started with a deep clean using solvent based cleaning fluids. This quickly took of the layers of muck that had built up and revealed a very clean terminal.

The lid was then removed and the innards cleaned out. All the sound proofing foam was removed as it had started to turn to mush. A couple of the mounting pillars which hold the lid to the case have sheered off and so these will need to be glued back into place.

With the terminal cleaned, power was cautiously applied and the voltages confirmed to be correct.

Having confirmed the power was ok, paper was loaded and a serial loop back plugged into the serial port and the terminal was powered back on. Typing on the keyboard resulted in activity from the print head although no actual print (the ribbon was dried out). I then help SETUP and T together to put the console into test print mode and the head went into over overdrive and slowly but surely the ribbon started to deliver ink. The print quality is fairly good, although the first row appears to be dead.

Next on the todo list is to fit a new ribbon (I have 4 on the way) and see if I can restore line 1 to life.

New Arrivals: TC11 + TU56, TU55s and an 11/40

Some highly treasured items have just joined my collection, a TC11 and TU56 together with a further 3 TU55 drives and parts to build up a second 11/40.

I plan to use the TC11 and TU56 on my forthcoming 11/40 rebuild.

TC11

TC11

TU55

TU55

TU55

TU55

TU55

TU55

HOWTO: Create a MSCP MAP in RT-11

RT-11 is restricted to each devices is limited to 32MB of usable space. This is due to the filesystem using a 16-bit field to represent blocks, giving a maximum of 65535 x 512 byte blocks.

For larger MSCP disks, such as RD53, RD54, RA series and third party disks, all is not lost. Within RT-11 a mechanism exists to partition the disk into multiple logical drives allowing you to access the remaining disk space.

To achieve this, issue the commands:

SET DU[id] DEVICE=[unit]
SET DU[id] PART=[part]
SET DU[id] PORT=[port]

Where:

  • id is the numerical number of the DU devices you wish to map onto your device. This is in the range 0-7 on versions of RT-11 prior to 5.4
  • unit is the unit number of the device you wish to map onto the DU device.
  • part is the ‘partition’ number within the device you wish to map. So PART-0 would be the first 32MB of the disk, PART=1 would be the next 32MB and so on
  • port is the MSCP device number. If you only have a single MSCP controller on you machine this would be PORT=0

So for example, if you have  an RD54 currently on DU0, you could access the remaining space with the commands:

SET DU1 PORT=0
SET DU1 DEVICE=0
SET DU1 PART=1

SET DU2 PORT=0
SET DU2 DEVICE=0
SET DU2 PART=2

SET DU3 PORT=0
SET DU2 DEVICE=0
SET DU2 PART=3

You will now have 4 devices, DU0,1,2,3 each with 32MB of space.

Whilst this is very useful, there is a bit of a sting in the tail in that the DU id range is only 0-7 on all but the most recent versions of RT-11. This limits you to a maximum of 8 32MB devices, which whilst a huge amount of space by PDP-11 standards, still doesn’t allow you to access all of the space on some of the more modern disks.

HOWTO: Create Logical Disks under RT-11

Logical disks are a convenient way of getting round the lack of a directory structure in RT-11. A logical disk is a file which can be mounted as a virtual storage device.

To make a logical disk:

  1. Create an empty file to act as your logical disk:

    CREATE [filename]/ALLOCATE:[number of blocks]

    For example:
    CREATE GAMES.DSK/ALLOCATE:500

  2. Mount the file as a logic disk:

    MOUNT LD[number]: [filename]

    For example:
    MOUNT LD0: GAMES.DSK

  3. Initialize the new logical disk:

    INITIALIZE LD[number]:

    For example:
    INITIALIZE LD0:

  4. You should now have a working logical disk. Try typing DIR LD[number]: to confirm. You can now subsequently remount this disk at any time using the MOUNT command from step 2.

The collection gets a new home

00002.jpgFor the last couple of years my collection of old computers has had to be stored in a barn (thankfully a dry one). Now my children are finally starting to grow up (they are now 5 and 3) and my business is running smoothly, I can finally turn my attentions back to my beloved old iron.

I’ve therefore taken the plunge and set aside a spare room I have at my office to housing the collection. The challenge now is to move everything over (and there is a lot) and start to catalogue the contents of the numerous boxes of parts I’ve accumlated over the last few years.

My aims for the new home are to:

  • Provide room for 8 racks work of equipment
  • Have two desks, one for repair/renovation work and another to house terminals for accessing the machines
  • Have racking sufficient to store all of my spare parts and software media.
  • Keep it all neat and tidy!

The rooms is roughly 300 sqr ft so fitting in the 8 racks shouldn’t be a problem. I’ve decided to place a row of 4 against the back wall with no rear access and a further row of 4 in the main body of the room . I suspect I will come to regret the lack of rear access on the first row but the room is too small to allow it. The saving grace should be that the racks are all on casters and so I can wheel them out to gain rear access when needed.

The storage racking is heavy duty racking that I purchased from Big Dug (http://www.bigdug.co.uk)
. I’m a big fan of their racking having previously used it to store large Dell servers used by my business. Their budget shelving units can take between up to 150kg per shelf, are easy to assemble (boltless), and are a great price. Blows away anything you can get from the local DIY store.

I retrieved all of the machines and parts from my barn in a LWB Transit. To save my back from taking too much damage, I got hold of a set of ramps from my neighbours business (http://www.rampco.co.uk). These proved invaluable as racks could be simply pushed up the ramps straight onto the van. Previously I have had to tilt the racks over and slide them onto the van which leads to damage to the myself and the machines.

Once everything was transported to its new home, I sorted all the loosely defined boxes of parts. This was a most satisfying process as to be frank I had no idea of what I actually had and lots of exciting goodies turned up.

So now its all in its new home and sorted, I have no excuse any more to put of restoring everything to working order.

The 11/05 returns to life

Over the last few days I’ve returned one of my PDP-11/05s to life.

These are the steps I went through to get it back to the land of the living.

A general clean of the interior which had become full of the remains of its foam sound insulation. I removed this with a combination of gentle brushing, a vacuum cleaner and an air gun.

As the machine had been powered successfully within the last few years I decided to take the risk of not reforming the capacitors and powered it up. Thankfully this paid off and the machine sprang back into life.

Fairly quickly it became obvious that neither of the fans were in particuarly good shape, one being completely stalled and giving of a loud electrical hum and the other requiring jump starting with a pencils to get going. I removed both of these and replaced them with spares I had lying around. I intent to replace these with some brand new ones from Farnell

Now when powered up, all sounds well. I checked voltage levels with a multimeter and everything was spot on.

Next up I confirmed that memory was working by depositing all 0’s and all 1’s into various memory locations and read them back to confirm all was as it should be.

Having confirmed the memory was correctly functioning, I toggled in a test program to output a stream of characters to the console, hooked up a terminal and hit run. A stream of characters flowed onto the terminal screen confirming that the CPU was correctly operating.

Next up will be to hook up an RX01 and boot into RT-11.

Inventory: 3rd party QBUS cards

I have the following 3rd part QBUS controllers:

  • Emulex QT13 – Tape controller
  • Emulex QD21 (4 off) – ESDI disk controller – Emulates MSCP
  • Emulex QD32 – SMB-E controller – Emulates MSCP
  • Emulex CS09 – 16 port serial – emulates DHV11
  • Emulex SC03 – SMD controller – emulates RM11/RM03
  • Emulex TC02 – Tape controller (Pertec) emulates TS11
  • Emulex CS02 – 16 line RS422 controller – emulates DHV11
  • Spectra Logic 15/25 – SMB controller
  • Dilog DQ3256 – SMB controller
  • Dilog DQ130 – Pertec tape (TS11 emulation)
  • Dilog DQ132 – Pertec tape (TS11 emulation)
  • Dilog DQ142 – Pertec tape (TS11 emulation)
  • SCD-RQD11/EC – Unknown poss ESDI