90/30 information needed

36 views
Skip to first unread message

sboy...@gmail.com

unread,
Apr 26, 2021, 10:52:50 AM4/26/21
to Univac Emulators
If anyone out there knows of anyone with a secret cache of 90/30 engineering documents in their basement, I am looking for information on the DIAG instruction. It is looking like a 90/30 emulator is not going to be possible without this information.

Any help is appreciated.

Thanks

Andy Fowler

unread,
May 13, 2021, 9:28:55 AM5/13/21
to Univac Emulators
Is this the same as the IBM DIAGNOSE instruction which is operation code X'83' and has no assembler mnemonic.

Andy

Charlie Gibbs

unread,
May 13, 2021, 2:24:00 PM5/13/21
to Andy Fowler, Univac Emulators, Stephen Boyd
On 2021-05-13 6:28 a.m., Andy Fowler wrote:

> Is this the same as the IBM DIAGNOSE instruction which is operation code
> X'83' and has no assembler mnemonic.
> re ..
> https://www.ibm.com/docs/SSB27U_6.4.0/com.ibm.zvm.v640.hcpb4/hcpb427.htm

That link has gone 404, but I searched in the area and found backhanded
references to the diagnose instruction being used to manage virtual
machines. This is no doubt an outgrowth of that terse comment in the
360 POO: "The purpose of the I2 field and the operand address may be
defined in greater detail for a particular CPU and its appropriate
diagnostic procedures." I guess a VM running under CP is "a particular
CPU". :-)

--
cgi...@surfnaked.ca (Charlie Gibbs)

Charlie Gibbs

unread,
May 13, 2021, 3:55:54 PM5/13/21
to Stephen Boyd, Andy Fowler, Univac Emulators
On 2021-05-13 11:35 a.m., Stephen Boyd wrote:

> If you really want to know how all the VM stuff works I can dig a lot of
> that out of the Hercules emulator source code. Not  that it does us any
> good.

Yes, I think we're drifting off-topic here. Whatever DIAG does on
the 90/30 probably has no relation to what it does on any IBM system.
On the bright side, you seem to be figuring out the 90/30 version
enough to get the emulator going. :-)

--
cgi...@surfnaked.ca (Charlie Gibbs)

Charlie Gibbs

unread,
May 13, 2021, 9:50:22 PM5/13/21
to Stephen Boyd, Andy Fowler, Univac Emulators
On 2021-05-13 2:01 p.m., Stephen Boyd wrote:

> On 5/13/21 3:55 p.m., Charlie Gibbs wrote:
>
>> Yes, I think we're drifting off-topic here.  Whatever DIAG does on
>> the 90/30 probably has no relation to what it does on any IBM system.
>> On the bright side, you seem to be figuring out the 90/30 version
>> enough to get the emulator going.  :-)
>
> It's very much a case of 2 steps forward 1 step back right now. But slow
> progress is being made. I'm going to have a fairly large piece of OS/3
> documented by the time I'm done though. I'm getting really tired of
> single stepping through the supervisor trying to figure out why
> something doesn't work the way it should. I'd kill for the source code
> to OS/3.

Might as well dream big...

BTW your cheque arrived today - thanks. I hope you get some fun
(and maybe a few pixels-- err, vectors) out of that U100.

--
cgi...@surfnaked.ca (Charlie Gibbs)

Stephen W. Boyd

unread,
May 16, 2021, 12:13:53 PM5/16/21
to Charlie Gibbs, Stephen Boyd, Andy Fowler, Univac Emulators
Well, I finally managed to get past the point where I've been stuck for
the last week or so. I finally managed to decode what OS/3 was doing. It
was looping through all of the PUBs to see which devices were actually
present. It turns out that what OS/3 was expecting in response to a
non-existant device was completely at odds with what the programmers
reference described.

Ah well, another bit of OS/3 dis-assembled and documented.

Now it is trying to write to SYSRES and I haven't got that command
implemented yet. On the the next adventure.

Steve

Andy Fowler

unread,
May 17, 2021, 8:26:51 AM5/17/21
to Univac Emulators
Well done Steve .. Is the byte after the operation code x'83' a register or address?

Stephen W. Boyd

unread,
May 17, 2021, 9:18:51 AM5/17/21
to u9200-e...@googlegroups.com


On 5/17/21 8:26 a.m., Andy Fowler wrote:
> Well done Steve .. Is the byte after the operation code x'83' a register
> or address?

Andy;

The byte after the opcode seems to be immediate data that specifies what
the DIAG is supposed to do. For example:

DIAG X'104'(R4),15

The 15 is the function code that tells DIAG to loop through a collection
of linked lists. R4 contains the address of the start of the list in the
lower half word. The upper half word of R4 and the offset in the
instruction tell DIAG what to look for in the table. The winning entry
is returned in R5.

Bizarre, isn't it?

Steve

Stephen W. Boyd

unread,
May 17, 2021, 1:18:37 PM5/17/21
to u9200-e...@googlegroups.com

I finally figured out what LPSW with an immediate operand of 1 does. It
forces the LPSW instruction to use the program register set rather than
the register set specified by the current PSW.

Go figure.

I've gotten to the point where I am starting to get some informational
messages sent to the console. But every time I think things are really
starting to come together I hit another road block. Grr!!!!!

Steve

sboy...@gmail.com

unread,
May 20, 2021, 4:42:06 PM5/20/21
to Univac Emulators
Progress is slowly being made. I have gotten to the point where I can see the empty job slots displayed at the top of the console. Now I have work to do on the uniscope emulator before I can go much further.

Charlie Gibbs found this in one of his System 80 tomes explaining what the DIAG instruction does . I can't confirm the first 4 for the 90/30 but 830E looks plausible based on what I have seen. And 830F is definitely the same as what the 90/30 does. Great work Charlie!

 8300  EXD    Execute diagnose
8301  RESET  Reset
8302  STS    Store status
8383  IPL    Initial program load
830E  LRC    Longitudinal redundancy check
830F  SWLS   Switch list scan



Reply all
Reply to author
Forward
0 new messages