[Simh] Adding storage to vax running 4.3BSD

Bob Eager rde at tavi.co.uk
Thu May 11 17:02:39 EDT 2017


On Thu, 11 May 2017 22:37:59 +0200
Johnny Billquist <bqt at softjar.se> wrote:

> On 2017-05-11 15:34, Paul Koning wrote:
> >  
> >> On May 11, 2017, at 9:24 AM, Jason Stevens
> >> <jsteve at superglobalmegacorp.com> wrote:
> >>
> >> Ah now that makes more sense!
> >>
> >> On May 11, 2017 5:11:34 AM GMT+08:00, Alan Perry
> >> <aperry at snowmoose.com> wrote:
> >>
> >> Problem solved. Apparently this kernel doesn't know about RA82s. I
> >> changed them to RA81 and it worked fine.
> >>
> >> alan  
> >
> > Yikes.  The whole point of MSCP was to make the software not care
> > about device sizes or geometry.  It's amazing to see Unix get it so
> > badly wrong.  
> 
> True. However, it isn't actually the geometry that cause the Unix
> messup here, but the fact that Unix divided disks into partitions. So
> it needed to know where each partition started. And before
> disklabels, it was hardcoded per disk type.

The origin of the partitioning goes back to the introduction of the
RP03.

UNIX had been written as a 16 bit system, and when we got ours (1975)
it was on RK05s, which only had about 5000 blocks. We moved on to
RP02s, which were again OK, as they were only about 40,000 blocks, and
that number fitted into a 16 bit unsigned integer.

All of UNIX was built round 16 bit values, and it was a major change to
adapt to anything larger. But then the RP03 arrived - around 80,000
blocks; too big.

The solution - minimal work - was to partition the disk into two fixed
pieces (virtual RP02s if you like) at the driver level, and present the
pieces as separate disks to the rest of the system. Very little else
needed modification, although the whole disk was exposed as another
device.

One thing that did have to be fixed was the 'seek' system call, which
couldn't seek over the whole disk as it only handled 16 bits. This was
needed for low level operations on the disk. The solution was to have a
'long seek' system call, which took a bigger offset value. That
survives to this day as 'lseek'.

This kludge was 'justified' as a good way to divide functionality of
the disk, but it was really a kludge!


More information about the Simh mailing list