Machine Interface The System/38 and its descendants use a machine interface architecture to isolate the
application software and most of the operating system from hardware dependencies, including such details as address size and register size. Compilers for System/38 and its successors generate code in a high-level instruction set known as the
Machine Interface, or MI. MI is a virtual instruction set; it is not the instruction set of the underlying CPU. MI operates on
objects instead of traditional memory addresses or registers. Unlike some other virtual-machine architectures in which the virtual instructions are interpreted at runtime (see
P-code machine), MI instructions are never interpreted. They constitute an intermediate compile time step and are
translated into the processor's instruction set as the final compilation step. The MI instructions are stored within the final program object, in addition to the executable machine instructions. If a program is moved from a processor with one native instruction set to a processor with another native instruction set, the MI instructions will be re-translated into the native instruction set of the new machine before the program is executed for the first time on the new machine. The TIMI (Technology Independent Machine Interface) of OS/400 is a backwards compatible extension of the System/38 MI. As a result, it is possible for a program originally developed on a System/38 to run on current
IBM i hardware without ever being recompiled. The term microcode was used to cover a wide array of low-level code, ranging from traditional
microcode, up to functionality typically associated with the
kernels of other operating systems, as well as the implementation of the integrated database. There were two levels of microcode in the System/38: •
Horizontal Microcode (HMC), which implemented a
register-memory/memory-memory
instruction set architecture known as the
internal microprogramming (IMP) instruction set Certain low-level and performance sensitive functionality such as task (i.e. process) scheduling and message passing were implemented directly in microcode as part of the Horizontal Microcode. The Horizontal Microcode resided in
control store; it corresponded to traditional microcode. •
Vertical Microcode (VMC), which implemented the Machine Interface in terms of the IMPI architecture; this was implemented by translating MI code into IMPI code and executing it. It also implemented the integrated database, and other components of the operating system which could not be implemented in terms of MI instructions. This was implemented using a mixture of
PL/MP and IMPI assembly. Early AS/400 systems inherited the System/38 microcode structure, but the term microcode was dropped, leading IBM to rename the layers to the
Vertical Licensed Internal Code and
Horizontal Licensed Internal Code.
Control Program Facility The operating system of the System/38 is the
Control Program Facility (CPF). CPF is not related to the
System Support Program operating system of the IBM System/34 and System/36. CPF objects are files, programs, message queues, user profiles, and libraries. While CPF is considered to be the operating system of the System/38, it sits on top of the System/38 Machine Interface layer, and consequently much of the traditional operating system functionality of the platform is implemented in the Horizontal and Vertical Microcode. The System/38 also has the distinction of being the first commercially available IBM
Midrange computer to have a
database management system (DBMS) integrated into the operating system. The operational control language of the System/38 is called
CL, for
Control Language. CL programs, similar in concept to
shell scripts, can be
compiled and executed
natively. The System/38 was designed with security built in as part of its architecture. Each object or library can have access controlled on a user-by-user basis. This has been continued and expanded throughout the AS/400 and iSeries computer lines. ==Successor system==