What to do?

Non-fashion, non-skirt, non-gender discussions. If your post is related to fashion, skirts or gender, please choose one of the forums above for it.
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

What to do?

Post by crfriend »

Warning: This is both somewhat rhetorical and also philosophical with an element of digital archaeology thrown in.

When it comes to computers, I'm primarily a "hardware head" meaning that I deal in gates, solder, wire-wrap, and discrete components. I read schematics and logic prints the way most folks "above a certain age" read road-maps. What I never thought would ever happen is that I'd be digging into deep operating-system code to add a new type of disk drive -- a type of disk drive that was unthinkable at the time when the original code was written.

The original authors are all dead as far as I can tell. (And may they rest in peace, for they deserve it.) It's a very strange feeling to be fiddling with dead guys' code. Extremely strange, in fact.

My quandary is seamlessly merging this very new "device" into the old system and keeping the original code true to its roots.

It looked good for a while until I ran into this:

Code: Select all

MOVE    W,[^D20,,^D380]
The assumption there is that all disk drives will have 20 sectors per track and 380 sectors per cylinder (19 heads). My brain locked up when confronted with that because it invalidates other very wonderful code that was done that kept data like that in tables that were indexed by device-types. All of a sudden I need to know what the original authors were thinking -- and they're not available for comment!

I've reached out to "the usual suspects" and hope that some of them are still alive.

I have no problem at all in correcting bad code when it comes to the modern era, but this is in an historical context and I don't want to get it wrong as it'll live on, likely past my own lifetime!

Ideas, anybody?
Retrocomputing -- It's not just a job, it's an adventure!
User avatar
Jack Williams
Member Extraordinaire
Posts: 2116
Joined: Tue Aug 26, 2008 2:05 pm
Location: Auckland, NZ

Re: What to do?

Post by Jack Williams »

Gosh. This is way beyond my level of expertise. If what I post or reconfigure etc actually happens I am chuffed.
I know that I have to resize a photo to get it up on this site, but don't need to bother on Facebook, Flickr or Tumblr. I guess the bods there do it for me.
Otherwise I get on with submitting my "content" and see if anyone digs it or not.
To me anyway, that's what the dear old internet is for.
Dug up these shots which I had already recized for The Art Of Sound site.
Great that guys are still digging them.
You do not have the required permissions to view the files attached to this post.
User avatar
Jack Williams
Member Extraordinaire
Posts: 2116
Joined: Tue Aug 26, 2008 2:05 pm
Location: Auckland, NZ

Re: What to do?

Post by Jack Williams »

Actually, this is a shot of a publicity photo in the beautifully reproduced workshop manual for this machine:
I managed to get it up big enough that you can read the print.
They are up against Wurlitzer and Seeburg!
You do not have the required permissions to view the files attached to this post.
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

Re: What to do?

Post by crfriend »

Late '50s to early '60s there, Jack? Cool stuff!

Most of the stuff I play with now doesn't make music (or play it, even) and the only sounds that emanate from it tend to be the whir of fans and blowers. They do run programs nicely, tough, and that's what it's all about!
Retrocomputing -- It's not just a job, it's an adventure!
Big and Bashful
Member Extraordinaire
Posts: 2921
Joined: Sat Jan 14, 2006 3:51 pm
Location: Scottish West Coast

Re: What to do?

Post by Big and Bashful »

Well I remember the days when PCs used hard drives with the old CHS (cylinder, head, sector) indexing system, the days before disks grew and the interface had to spoof the OS into believing it was still reading genuine sectors. However, things have evolved a lot since then in th land of PC to HDD interfaces, I imagine you are looking at even older and none PC type hardware, where I have absolutely no experience.
What is the disk and what hardware/software are you trying to force to talk with each other?

Ooh! another thought is just surfacing in the remains of my brain, I have recently seen instances of people using one of those new Raspberry machines to act as an interface between antique computers (It was an original Mac thing) and modernity (The net). The Mac didn't understand IP addresses or any of the protocols in use today, the Raspberry acted as an interface so that the Mac saw something it understood. I have no idea how these new Raspberry cut down computer things work, but they do seem to be finding ways to be useful!
I am the God of Hellfire! and I bring you truffles!
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

Re: What to do?

Post by crfriend »

Big and Bashful wrote:[...] I imagine you are looking at even older and none PC type hardware, where I have absolutely no experience.
What is the disk and what hardware/software are you trying to force to talk with each other?
Indeed, this is pre-PeeCee iron -- and "big iron"/"heavy metal" at that. It's the KI-10 out at the Living Computer Museum in Seattle, and I'm looking to define a new drive type that completely maxes out the C/H/S address space of the bus architecture that disks live on (MASSBUS).

Since the disks are virtual (they live on an emulation device to save risk to the actual antiques) they can be configured with any geometry that one wants; however, the OS will need to be changed so it'll recognize the new type.
I have no idea how these new Raspberry cut down computer things work, but they do seem to be finding ways to be useful!
They're just little tiny computers that have a nice range of interface options. I keep trying to find a use for one, but haven't yet which is why I don't have one.
Retrocomputing -- It's not just a job, it's an adventure!
User avatar
Uncle Al
Moderator
Posts: 3943
Joined: Tue Oct 21, 2003 10:07 pm
Location: Duncanville, TX USA

Re: What to do?

Post by Uncle Al »

When it comes to "digital" control systems.in pipe organs,
the UNIFLEX 3000 has been adapted from a full PC down
to.a Raspberry PI. UNIFLEX has a 12 rank Barton operating
on a Raspberry PI and it even allows remote tuning via any
Wifi controller. A full OS control system on an SD card. :D

What's next :?: ;)

Uncle Al
:mrgreen: :santa: :mrgreen:
Kilted Organist/Musician
Grand Musician of the Grand Lodge, I.O.O.F. of Texas 2008-2009, 2015-2016,
2018-202 ? (and the beat goes on ;) )
When asked 'Why the Kilt?'
I respond-The why is F.T.H.O.I. (For The H--- Of It)
arkie
Junior Member
Posts: 6
Joined: Sat Dec 24, 2011 9:15 pm
Location: Western Arkansas, USA

Re: What to do?

Post by arkie »

We used Emulex controllers (sc21/41?) with CDC 9762 and 9766 drives. We eventually got an RM05 with the washing machine sized Massbus controller. Now all of that data would fit on the smallest drive in my Clariion array.
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

Re: What to do?

Post by crfriend »

arkie wrote:We used Emulex controllers (sc21/41?) with CDC 9762 and 9766 drives. We eventually got an RM05 with the washing machine sized Massbus controller.
What class of system was that on? VAX, pdp11, or something else? Nobody but DEC used MASSBUS as DEC owned the patents on some of the things, notably the connectors. (I don't care if they're ZIF (Zero Insertion Force) -- you can still bend the ruddy pins on 'em.)

I'm working on a PDP-10 system.
Now all of that data would fit on the smallest drive in my Clariion array.
And is possibly several orders of magnitude faster. Ain't technology grand?
Retrocomputing -- It's not just a job, it's an adventure!
Tor
Member Extraordinaire
Posts: 615
Joined: Mon Aug 20, 2012 3:20 am

Re: What to do?

Post by Tor »

Hmmm... Not entirely sure I should try, given that I have very little programming experience - and none with drivers, or anything near that old (all of those systems are legend to me). What does cross my mind (yours too?) is the possibility that someone could have been trying to get it working the right way, but added that as a kluge after getting frustrated with debugging - and then got distracted before fixing it. Seems I've done that kind of thing before, improper and ugly though it may be.
human@world# ask_question --recursive "By what legitimate authority?"
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

Re: What to do?

Post by crfriend »

Tor wrote:Hmmm... Not entirely sure I should try, given that I have very little programming experience - and none with drivers, or anything near that old (all of those systems are legend to me).
If one never tries, then one will never know for sure whether it was possible or not. Recall that this is technology that's been dead for well over a decade, and the last time (other than this past April) I got hands on any of it was 30+ years ago.
What does cross my mind (yours too?) is the possibility that someone could have been trying to get it working the right way, but added that as a kluge after getting frustrated with debugging - and then got distracted before fixing it. Seems I've done that kind of thing before, improper and ugly though it may be.
I'm not willing to put it down to that. The culture when this code was written (1977) was very different than it is now where everything is geared to "get it out the door NOW!" The culture in computing in the late '70s was cutthroat, but in a more genteel way than it is today. Folks were expected to produce quality results that would scale and would still fit within the memory-footprint of the machines of the era.

Yes, I've been forced to produce some really cr@p code on occasion, mainly by incompetent and pernicious managers -- and I've positively hated doing it because some poor SOB is going to have to maintain it when I'm gone. The old adage of "pay it forward" holds in this regard.

In any event, my immediate quandary was solved by looking at pieces of code from later operating systems that included disks with different geometries. One got it "right" (and validated what I wanted to do), and the other was a kludge that hard-coded the value as part of a skip-chain.

I'm not going to rubbish the original author's code, both out of respect for his standing in the community, and out of respect for the dead, but the version that I'll do will be fully-generalized to handle arbitrary disk geometries, and take up, perhaps, a half-dozen more words of core.

Internally, the OS looks at a disk drive as one large contiguous collection of blocks and doesn't worry about the geometry (number of cylinders, heads, and sectors (C/H/S)) -- that gets done at the controller-interface layer where all the drives required the C/H/S addressing notion because that was how things were done at the time. What we're seeing here is the way that the technology advances -- we're seeing it through the lens of the "archaeologist's eye" because we "know how it should be done" (until the next jump happens). This is why it's important to study the past: it helps us to not repeat the mistakes made by our forebears.

I know that this has precisely nothing whatsoever to do with skirts, and that's why it's in the "Off Topic" section. But, does it have anything to do with skirts? It certainly points up that if you never try, you'll never know, and if you don't push your own boundaries you're stuck in a box. I am not an Operating System Programmer, and never have been. I haven't even played one on television. Yet, here I am deep in the bowels of one, adding capabilities and smoothing out decisions that whilst may have made sense when the code was written were invalidated later on. That's pushing one's own boundaries.

If one doesn't push past the expectation of trousers, then one will be confined in them for one's lifetime. Get brave. Push!
Retrocomputing -- It's not just a job, it's an adventure!
Tor
Member Extraordinaire
Posts: 615
Joined: Mon Aug 20, 2012 3:20 am

Re: What to do?

Post by Tor »

crfriend wrote:I'm not willing to put it down to that. The culture when this code was written (1977) was very different than it is now where everything is geared to "get it out the door NOW!" The culture in computing in the late '70s was cutthroat, but in a more genteel way than it is today. Folks were expected to produce quality results that would scale and would still fit within the memory-footprint of the machines of the era.

Yes, I've been forced to produce some really cr@p code on occasion, mainly by incompetent and pernicious managers -- and I've positively hated doing it because some poor SOB is going to have to maintain it when I'm gone. The old adage of "pay it forward" holds in this regard.
From what I've read of that time this makes a great deal of sense. What happens for me tends to be that I'm working until I have to take a break and finally something works. Then I let it work as it does and never quite get back to do the final cleanup - though I do /try/ to keep it neat. Still tends to end up being dedicated code with things hardcoded that really shouldn't be. To be fair, though, my code (what little there is) is relatively unlikely to ever be looked at by anyone else or even run on machines I don't control.

Glad you were able to figure out what needed to be done. Do I read right that a little comment on the line you posted that read approximately "hardcoded for speed/memory" or "fixme" would have been appropriate and made your work a lot clearer?
human@world# ask_question --recursive "By what legitimate authority?"
User avatar
crfriend
Master Barista
Posts: 14612
Joined: Fri Nov 19, 2004 9:52 pm
Location: New England (U.S.)
Contact:

Re: What to do?

Post by crfriend »

Tor wrote:To be fair, though, my code (what little there is) is relatively unlikely to ever be looked at by anyone else or even run on machines I don't control.
It's getting to the point now where some of my code is so out in the open that I'd be extremely embarrassed if I made the sorts of blunders that I was forced to six months ago. One can get away with that sort of thing in embedded or proprietary systems, but not in open or semi-open environments.

Where I was before, shall we say, my emancipation, quick-and-dirty code was the only way to get anything done before the next interrupt arrived and the environment was slowly decaying because of that culture. Those that actually took pride in what they authored were methodically squeezed out and the ones that remained got pushed over the brink of distraction where doing quality work was an impossibility. Now, I have the "luxury" of the time to properly form a proper plan of attack on a problem, time to devise a coding manner that will lend itself to the problem, and time to actually write good code to solve it. In point of fact, the word "luxury" is not the correct one in the foregoing sentence -- it's a necessity if one is to get things right.

It's worth recalling that unless one is writing for throwaway devices (cell' 'phones, iPads, and the like) your code will likely live on for years. Doesn't that thought make it the right thing to do to get it right the first time 'round? Even in spite of the old adage that, "There's never enough time to do it right, but there's always time to do it over."
Glad you were able to figure out what needed to be done. Do I read right that a little comment on the line you posted that read approximately "hardcoded for speed/memory" or "fixme" would have been appropriate and made your work a lot clearer?
There was nothing of the sort. The code is quite thoroughly commented, and some of the comments are extremely useful and cogent. Some, however, could have been left out entirely as being either "less than useful" of outright misleading. The line in question bore a comment of, "blocks per track,,blocks per cyl[inder]". No sh*t Sherlock, but somebody should have foreseen a disk with a different geometry than 19 heads per cylinder and 20 sectors per track. Technology evolves.

Since then, I have read two more recent revisions of the code, done by different authors, that dealt with just such a disk drive. One author decided to hard-code the geometry for that one; the other opted instead to put the geometry in a lookup-table the way that the other three pieces of data are. I know what path I'll be using is.

Part of my problem is that I'm not only a technician, I'm also an historian of the field, and the device and operating system I'm fiddling with is one of the more venerated ones (DECsystem-10 and TOPS-10) going in the technical community -- and I tried crawling into the head of the author. I can understand why he did what he did, and even forgive him for it in the limited time-frame that he may have had. However, I can't forgive him for doing part of the job one way and another part of the job in an incompatible manner. From a purely technical perspective, I recognized the error for what it was -- an expediency -- and formulated a plan to correct it; however, from an historical perspective, I didn't want to "doctor" the code too much and potentially invalidate some of its own history.
Retrocomputing -- It's not just a job, it's an adventure!
Tor
Member Extraordinaire
Posts: 615
Joined: Mon Aug 20, 2012 3:20 am

Re: What to do?

Post by Tor »

crfriend wrote:It's getting to the point now where some of my code is so out in the open that I'd be extremely embarrassed if I made the sorts of blunders that I was forced to six months ago. One can get away with that sort of thing in embedded or proprietary systems, but not in open or semi-open environments.

...

It's worth recalling that unless one is writing for throwaway devices (cell' 'phones, iPads, and the like) your code will likely live on for years. Doesn't that thought make it the right thing to do to get it right the first time 'round? Even in spite of the old adage that, "There's never enough time to do it right, but there's always time to do it over."
True enough. In my defense, part of the reason I end up hardcoding (or semi-hardcoding - at least this can be easier to find and change) the bits to begin with is a lack of programming experience that often means a trip to the manual and some thinking to find out how to do the job right.

I have fun with computers and enjoy programming something now and again (namely, when I have an interesting little problem to solve that doesn't have a ready made version that does the job), but I almost always make my money by modifying physical objects using my hands, augmented by sundry examples of that birthright of humans known as tools. I may have to work to modify an rc, but I can make a piece less than 1/32" in every dimension that is nowhere close to being cuboid, make a place for it, and coerce it into place or sort several pieces up to about 1/16"x1/16" from a few similar waste pieces and coerce them into place - and do so reasonably comfortably when many hours of work are riding on getting it right.
human@world# ask_question --recursive "By what legitimate authority?"
User avatar
Jack Williams
Member Extraordinaire
Posts: 2116
Joined: Tue Aug 26, 2008 2:05 pm
Location: Auckland, NZ

Re: What to do?

Post by Jack Williams »

I've never heard the "adage": "There's never enough time to do it right, but always enough time to do it over." We always used to say: "Do it right and do it once!"
Another was: "If a job's worth doing it's worth doing well." But that might have been in times gone by.
Post Reply