• Please review our updated Terms and Rules here

IBM 5100 ROS arrangement

I think Christian Corti's the one who must have distributed an annotated ROS disassembly.

If his disassembly is based on my ROS dumps, it might make sense to see whether the mystery instruction was actually OCR'd correctly from the IBM 5100 display. Here are the raw images I used... let's check. $5F1A/$200 = 47.something, so let's look at the 48th image in the album: yep, looks like it's correct. Too bad, no super easy answer :)

It's possible that the $02 argument to CTRL $1 does something mundane like putting the ROS controller into a known "reset" state. I spent a moment looking at the 5100 logics in the MIM, with a particular interest in the top of page 272. There are several things I don't understand about that diagram, but I think it's likely that the Sub Dev Address register holds the choice represented by CTRL $1, and that it's possible that any choice besides APL or BASIC gets represented as "no choice". That would mean that $02 would disable both "+APL Selected" and "+BASIC Selected", which also disables "+Dev Adr 1 Gated", and

(next page)

that means that the bus driver on the bottom right is disabled, so the executable ROS can't drive the bus.

AH, WAIT! I'm wrong. I just remembered that IBM numbers bits backwards. Go back to page 272, note that the SELector at top centre can only hear bits 6 ($02), 5 ($04) and 4 ($08). That means an address of $02 enables "+Dev Adr 1 Gated" with "+APL Selected" and "+BASIC Selected" disabled. (The other bits go into the selector gate, meaning addresses $0F and higher are ignored.)

What that's for I'm not sure about, but I bet the answer lies on page 273. I may come back to it later. I still like my hypothesis of this being a reset of some kind. Maybe it could allow you to set the address counter without actually causing the ROS storage cards to try and look up the address you're setting?
 
For others following along: on the IBM 5110, CTRL $1, #$02 is used to employ (communicate with) the Common ROS (identified as modules 40 and 41 for that system, and is not native PALM instructions -- so it is a "non-executive ROS", meaning it has to be copied from ROS to the RWS and then interpreted, since it is not natively executed).


For the IBM 5100, the Common ROS is module 18, which is part of the BASIC NX ROS (i.e. again, not native PALM instructions). Also in the IBM 5100, it appears the "BASIC ROS" and "APL ROS" are part of the Executive ROS itself (at address 0x1200 and 0x8000 respectively). In other words, it's a bit of a mystery why on the 5100 it would have anything to do with a Device at #$02.


Something in the background of the 5150 development comes to mind -- they had to test the BIOS while they were developing it, so I thought I recall they used some special R/W temporary chip as the BIOS during that development? Maybe those details aren't quite right - but the point is, maybe this is somewhat similar: device #$02 for the IBM 5100 maybe is a "test" device or a temporary proxy to stand in as the Common ROS during development? (because a R/W "ROS" tin can maybe wasn't trivial to wire in??). OR, maybe it is placeholder for an envisioned additional Language support (like FORTRAN?) that was never exercised?

Or said another way, maybe this CTRL $1, #$02 issue is a bit of a "red herring" because it is not executed anyway?


I'm still going under the premise that the PALM processor (and its instructions) and the BASE IO are identical between the 5100/5110 (at least in terms of pinouts). However, recall we determined that there is a Jumper that must be set on the Processor to select between 5100 or 5110 (a Jumper that maybe didn't exist on the 5100 versions). Probably we need to dig into what that jumper is doing (maybe it impacts Device Addressing).
 
maybe this is somewhat similar: device #$02 for the IBM 5100 maybe is a "test" device or a temporary proxy to stand in as the Common ROS during development?

Having spent time looking at the logic diagrams in the 5100 MIM for a while, here's some observations.

On the 5110, the Common and Language ROS card includes the Common and BASIC ROS but not APL, that's on a separate card. You can see this on the System Logic Manual PDF page 4. There, you can also find the mechanism that makes ROS CTRL instructions with arguments $02, $04, $08 (bits 6, 5, and 4) pick Common, APL, or BASIC:

1655592945397.png

Eventually those bits gate whether APL, Basic, or Common ROS data goes out on the data bus. This is at bottom left:

1655654008574.png

I can't fully explain why there's "APL ROS Space" on the Common and Language ROS Card plus a second card dedicated to the APL ROS, but that's a mystery for another time.



Let's now look at the 5100's ROS Control Card logic on PDF page 272 of the MIM. Here's the logic that is controlled by the CTRL values $08/bit 4 (APL), $04/bit 5 (BASIC), and $02/bit 6 (nothing? --- note that unlike the 5110, there's no "Selected" line that comes out from the register).

1655655237020.png

Now go to the next page (still the ROS Control Card) and this part here:

1655654412954.png
Like in the 5110's Common and Language ROS Card, the 5100's Language ROS Card has ROS on it: an 18K ROS. Already that's a surprise, as we had thought that all the non-executable ROS was on separate cards, and the 5100 ROS Control Card was only for controlling the ROS, not for storing any data of its own!

But this ROS is strange. The circled 1 is a connection to the "enable" line that selects only bytes $7800 to $A800 of the BASIC ROS:

1655654617679.png

Even stranger: look up above and note that little box that says "OR DOT". That box denotes a "wired OR", which is a concept you'll remember us talking about for your keyboard project. In this case it simply means that anything that comes out of this memory just mixes with anything coming in over the bus from the executable ROS cards. Huh? Since this ROS is only active for BASIC ROS bytes $7800 to $A800, what can this be for?

I'm not sure what's going on here, but one theory perhaps is that we might have some kind of bank switching at work? As in, sometimes access to the $7800 to $A800 range accesses data on the BASIC ROS card, and other times it accesses data from this mystery ROS? The $02 argument to CTRL could determine this. Unfortunately, I can't yet see any mechanism that would cause the BASIC ROS and the mystery ROS to be accessed at different times. Perhaps if you study the logic diagrams, something might occur to you?

I'm just puzzled.

placeholder for an envisioned additional Language support (like FORTRAN?) that was never exercised?
I can't 100% rule out the idea of some other language, but Fortran would not be an obvious choice here, as it's not really suited to interactive use --- Fortran programs are nearly always written out to some kind of completion and then compiled. The 5100/5110 machines were conceived as "problem solving" machines, as I understand it: the designers envisioned that you would use them to "crunch numbers" as you would today with a spreadsheet. This favours a more interactive dialogue with the computer: collect data, manipulate it with a little program, analyse results, repeat. The fact that the machines were used for business applications with dedicated, reused apps came as something as a surprise, if I understand correctly.

I think that if the 5100 machines could be assumed to have an "extra" language, it would be BASIC. Note that APL was the only language in SCAMP, and APL hews a bit more closely to the "problem solving" design idea, I think.
 
I've also read the original 5100 was intended more for scientists and engineers (perhaps used by various Agency folks -- or if the movie Medicine Man had been made in the 1970s, I could see Dr. Campbell using a 5100 out there in the field!). Then like you said, it was the 5110 that later developed into more a business-oriented product.


Well, this banking idea.... I'm not sure if there is a "hidden ROS" - maybe. But I think that module 18 is the Common ROS (it is one 6KB segment -- but grew into 2x 6KB segments on the 5110, and moved into module 40/41; the BASIC NX ROS also grew for the 5110, and so module 18 is "stuff for BASIC" on the 5110 and not the Common ROS).

What I'm getting as is: That module 18 for the 5100 might be addressed (or expected to be addressed) relative to 0, rather than however it is positioned in the BASIC NX ROS. Just a hunch, no direct evidence that this might be the case (other than that's how it is on the 5110 emulator -- all these ROS's are selected and then addressed as an offset from 0).


And I've verified in the 5100 emulator I have (that runs the Executive ROS), that we don't reach the CTRL $1,#$02 case yet before it fails in CRC'ing the Common/Language ROS at startup (which I'm not sure is a good or bad thing, but I set breakpoints throughout that area, and none of them hit.


I do need to print those portions of both systems Logic diagrams, and spend time comparing them. Recall again how the PALM processor has those compatibility jumpers -- I still don't see anything like that mentioned on the Processor SLM documentation (there is a mention of the Machine Check Jumper)., so I may have to trace what pads/pins those jumpers are connected to (on the physical board) to try to deduce what they might influence.
 
IBM switched the APL from the very cutdown version for the 1130 used in the SCAMP to the more featured APLSV for the 5100. The additions in APLSV include support for files and matrixes which were features available to 5100 BASIC.

IBM may not have known what the 5100 could be used for but I am sure IBM could see who HP's and MCM's customers were. It seems like no mistake that the IBM 5100 TV ad started off with a real estate business use case since that was one of the major markets for the HP 9830.
 
Then like you said, it was the 5110 that later developed into more a business-oriented product.

It's possible, with a mix of "having the features they wanted to put in all along but didn't have time for with the 5100."

Well, this banking idea.... I'm not sure if there is a "hidden ROS" - maybe. But I think that module 18 is the Common ROS (it is one 6KB segment -- but grew into 2x 6KB segments on the 5110, and moved into module 40/41; the BASIC NX ROS also grew for the 5110, and so module 18 is "stuff for BASIC" on the 5110 and not the Common ROS).

Yeah, I admit that it's farfetched. I just don't understand what the mechanism could be for! I can't think of a single case where you'd want to wired-or "blend" two ROSs together (sounds like a great way to get more 1s than you need), and if the two ROSs overlay the same $7800 to $A800 address space, why would you still keep more than one of them?

Maybe the 5100 designers had originally wanted some of the common ROS to live on the ROS Control Card, but at the end of the day, it turned out that it didn't fit? Like I say, I'm just plain puzzled!

And I've verified in the 5100 emulator I have (that runs the Executive ROS), that we don't reach the CTRL $1,#$02 case yet before it fails in CRC'ing the Common/Language ROS at startup (which I'm not sure is a good or bad thing, but I set breakpoints throughout that area, and none of them hit.

Hmm. I guess it's a mystery for later! Eventually we'll get there.

I do need to print those portions of both systems Logic diagrams, and spend time comparing them.

I was doing a bit of this when I was preparing that last post. Unfortunately they are not so easy to compare in my experience --- parts are in all different places, and I think some of the logic that's laid out explicitly in the 5100 diagrams is abbreviated a bit in the 5110 diagrams. It's still 100% worthwhile to spend time poring over them, though.

IBM may not have known what the 5100 could be used for but I am sure IBM could see who HP's and MCM's customers were. It seems like no mistake that the IBM 5100 TV ad started off with a real estate business use case since that was one of the major markets for the HP 9830.

I think this is not incompatible with the idea of the computer as a "problem solving" machine: most of the people in the commercial are talking about the kind of one-off number crunching you do with a spreadsheet. But I think the usage wound up being different: people did make and use dedicated applications that they returned to over and over again.
 
BTW, @stepleton in your IBM 5100 startup video, I noticed something...

APL sequence (fine)...
18 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F


BASIC sequence (what's up with C7 at the end?)
18 10 11 12 13 14 15 16 17 C7



EDIT: Wait, nevermind, the C7 isn't part of ROS checks.... It's very brief, but on the BASIC side the startup also does a couple sequence after "I". It does "J" and "K" and the C7 I think is after whatever "K" is doing. But on the APL side, it doesn't seem to do this "J" and "K" and goes straight to CLEAR WS. Odd. But in any case, no mystery segment/module C7 :D


EDIT: Seems J (E2) and K (H2/H4) aren't done on the APL startup?

1655917737677.png


1655917285164.png
 
Last edited:
Back
Top