I've heard that the terms vertical and horizontal just refer to the way
the listings were printed.  The vertical instructions were printed down
the page, as usual, but the horizontal code was printed in boxes
progressing left to right across the page.

The horizontal microcode, or HMC, of the CISC machines (S/38 & AS/400)
was the lowest level.  (IBM seems to be running out of acronyms and has
recycled HMC to mean "Hardware Management Console" now.)  It was what is
normally called microcode in the EE world.  That is, code that resided
in memory separate from main memory (IBM called it control store) and
controlled the hardware chips to execute the vertical microcode machine
instructions, essentially interpretively.

The vertical microcode, or VMC, wasn't microcode at all, the way anybody
outside IBM understands the term.  It was just the assembly or machine
language of the CISC processors.  In fact, it closely resembled the
machine code of the 360/370/390 mainframes.  Anybody remember
base-displacement addressing or the MVC instruction?  The assembly
source language was called PL/MP (Programming Language/Micro
Programming, or some such), and was, I've heard, originally compiled on
an MVS system in Rochester for the S/38 and the early AS/400's.

RISC (PowerPC) processors don't have microcode (unless it's on the chip
itself), so there isn't any "horizontal microcode" layer.  All of the OS
is encoded in PowerPC machine code.

SLIC is the low-level portion of the OS that replaces VMC, written
(mostly) in C++.  It resides in modules on the load-source disk and
comprises the 5722-999 component.  Although mostly C++ written from
scratch for the RISC AS/400's, there are a few modules with names that
start with '#' and 'V' which were brought over from CISC.  '#' modules
were written in PL/MP, while 'V' modules were written in Modula-2, if
you can believe that!  The C++ modules were at one time compiled on an
RS/6000 runing AIX.  I'm not sure what compilers they use nowadays.

You can print a list of the SLIC module names in SST by selecting 2
"Licensed Internal Code (LIC) data", then 9 "LIC Link Map", then 1
"Module List".

The "MI" level programs reside in QSYS and are known as 5722-SS1.  MI is
a high-level assembler language which compiles into a binary machine
code defined in the MI reference manual.  For example the op-code for
the CPYBLA instruction is x'10B2'.  But that binary MI is only a
temporary compile-time "intermediate code".  IBM, who love obfuscation,
call it IRP, Intermediate Representation of a Program.  During a
compile, it's translated into first W-code (a stack-oriented
intermediate code), then NMI (new MI) then finally, by a program called
the "optimizing translator", into PowerPC machine code.

The famous TIMI (Technology-Independent Machine Interface) refers to the
fact that the MI component is written in PL/MI (both on CISC and RISC). 
To change to the PowerPC platform, they just had to change the backend
of the compilers, the "optimizing translator", to generate PowerPC
machine code instead of VMC machine code.  The SLIC layer they chose to
re-implement almost entirely in C++.

So the only machine code that ever executes on RISC iSeries is PowerPC
machine code.  (Unless you count Java byte-codes, which can be executed
interpretively by a Java Virtual Machine executing PowerPC machine code


On Wed, 2004-09-01 at 10:01, Joe Pluta wrote: 
> > From: Dave McKenzie
> > 
> > The modified machine instruction in UNDELM is in the VMCRD subroutine
> > (showing its CISC heritage: VMC was the "vertical microcode" on
> > CISC--what is called SLIC, System Licensed Internal Code, on RISC).
> This is interesting stuff for me, Dave.  I remember the terms vertical
> and horizontal microcode, and I never quite understood which was on top
> of which, and why.  I understood that they provided the
> software/hardware isolation that has done us such service over the
> years, but not the exact mechanism.  And now with the SLIC, I am less
> sure as to how that works.  Would you care to share a little more of
> your wisdom with a layperson?
> <grin>
> Joe

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2022 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.