Thursday, May 26, 2016

System 1 Disc Architecture & Driver

I have been poking around the C-CC system to try and figure out what drive it was on.
Looks like all the LU's resided on a single 32MB drive that was partitioned into 5 spaces.

See the PDF for a layout of the drive.

The driver is incredibly complex. My guess is that the controller was fairly simple, which required a lot more work to be done by the software driver.

( I remember the first CDC drives we attached --- They found this dirt cheep controller and asked me to write the driver.When reading a block of data, I even had to read the preamble to the sector and verify the drive was in the right place before passing the data on to the system !! )

Anyway, this driver is going to be a bugger to reverse engineer. There are a ton of obscure data instructions which make no sense without documentation. But I have not been able to track down any similar drive layout anywhere on the net, so I don't know what we are dealing with.
So writing C code to support these I/O commands is going to be really tricky.

Just a heads up.


I extracted the disc layout from the CONFIG file on the MicroTech Tape-C-LU0 tape. I have attached the source version of that CONFIG for your enjoyment. If you are interested, the Manager Reference Manual explains more about CONFIG and this disc table that begins at location 1400 in CONFIG. It has the ONLY say in how disc drives are used when the system is running.

I have to say I really do not know what the term "Zebra programming model" means, so I don't have any idea how that impacts what we are doing here. If you can point me to some descriptions of this model, I can take a look.

More good news ......
It turns out that the CC layout is not too different from the Diablo 44, in terms of where the DMAP file (and a few others) need to reside.
I am fairly convinced that with a little tweaking from a PHP script, I can maneuver the disc blocks into a bootable format. Also, the D44 is big enough to hold both of the smaller LU's, so we can then fit all 5 LU's on 4 drives.

My current brick wall is that I'm fighting another quirk with the INSTALL processor. I have already isolated what I think is the Diablo 44 driver and set up our working IRIS CONFIG file so that I should be able to install an empty simH drive file as a secondary D44 drive (syntax is #INSTALL 1.0). It almost works, but hangs at the last minute and fails to complete the install. Once I track this down and get a good install, it will tell me more about the DMAP layout, verify my cylinder layout, and create a sector zero for that unit that should be close to a bootable version.

Plugging away,


btw -- I have figured out that the extra driver I was trying to work with is definitely NOT a Diablo-44. It looks to be a variation of the Diablo-31, of which there were several models. It is not supported by simH.

The good news is that the DG manual gives excellent doc on the Century 114, which was about 32MB, is supported by simH, and is quite similar in operation to the other device 33 drives. 

I am going to write a Century 114 driver, and see if that will boot.


The disk architecture report has a question:  

"Drive has 160 (0240) sectors per cylinder
Probably either 10 tracks of 16 sectors each
or else 5 tracks of 32 sectors each"

According to Bruce's analysis of the Minicom utility performance, it is the latter.

"The 40 MB disk drive has a geometry of 442 cylinders, 5 heads, 32 sectors/track (head)."

Hopefully, this is helpful.

It sounds like he did a similar procedure to determine this like you did, except on the Minicom utility (which, by the way, is the first file on each of the 2 tapes on the C-CC set).

When Bruce explains how he got this information from the Minicom utility:

"The cylinder/head/sector information was determined by monitoring the tape-to-disk LUN backup operation disk reads - these were the actual cyls/hds/sects actually written for the corresponding LUN backups.

I just did the following quick (hopefully correct) calculation:

Each cylinder has 81,920 bytes (5 heads * 32 sectors * 512 bytes = 81,920 bytes/cylinder), and LUN0 has 16 cylinders: 16 cylinders * 81,920 bytes/cylinder = 1,310,720."

Again, this is an excerpt from :


Ah --- the plot thickens.

I would appear that Bruce's numbers from the Tape Utility are the intended LU configuration. And since the backup appears to have succeeded, the disk would indeed have had to be that large.

However, the numbers I sent were the actual LU's that IRIS ran with, at least during the last IPL before the backup.
I just noticed that LU4 was configured as 0106 cylinders instead of 0160. My guess is that someone did a typo and missed their error. It is highly unlikely that they intended to leave that much of the drive unused.IRIS limited LU4 to a much smaller figure. Whatever else the Tape utility picked up for the remaining 052 cylinders is probably left over from a prior use of the drive.
When I get around to configuring a full system, I will be able to verify the actual LU size from the DMAP file on LU4. It defines what blocks are available in each cylinder.

The reason I could not be sure of how many tracks and sectors there were is because IRIS could only handle up to 16 sectors per track in its configuration. If you had a drive with more sectors, you had to try to pretend it was something else that you could program around. A typical solution was to double the number of tracks and divide the sectors in half. Then when you broke up a relative disk block number into its Cylinder, Track and Sector (which most controllers needed), the driver could then convert back to the proper track and sector just before formatting the command word. The CC system was set for 10 tracks and 16 sectors. But a physical unit with 5 tracks and 32 sectors would be defined that way as well.

On another note, I probably mis-spoke a few things. To be clear, the CC drive that held the 5 LU's was definitely NOT a Century 114. We may never know what it was.

The good news is that a Century 114 is about 24MB in size, which means attaching 2 of them should be sufficient to bring up all five LU's. I just have to combine the 5 LU's into 2 files.



What is the best way to find this config file within LU0 when looking at LU0 as a whole single file?

No comments:

Post a Comment