AS/400 Machine Level Programming
Table of contents
Chapter 0: Introduction - - - - - - - 0-1
Why Program at the Machine-Level? 0-1
What is the Machine-Level? - - - - - - - 0-1
Above and Below the MI 0-1
Old MI and New MI - - - - - - - - 0-1
Is MI Hard and Arcane? 0-1
What About All Those MI-Instructions? - - - - - - 0-2
Small Programs or Large Programs 0-2
Why is MI so Secret? - - - - - - - - 0-2
Chapter 1: Getting Your Own MI-Compiler - - - - - - 1-1
MI-Compilers 1-1
Create Program (QPRCRTPG) API - - - - - - 1-1
Detailed Explanation of Each Parameter (Boring) 1-2
The MI-Compiler Front-End - - - - - - - 1-4
The CRTMIPGM Command 1-7
Hello World - - - - - - - - - 1-8
MI Functional Reference Manual 1-10
Chapter 2: Data Types and Your First Real MI-Program - - - 2-1
Data Types 2-1
Character Data Type - - - - - - - - 2-1
Numeric Data Types 2-2
Data Names - - - - - - - - - 2-2
Comments 2-3
Hexadecimal Constants - - - - - - - - 2-3
Convert Hexadecimal to Character 2-3
Compile Errors - - - - - - - - 2-4
Conditions and Branching 2-4
Labels and Branch Points - - - - - - - 2-5
Short Form of Instructions 2-5
Structured Data - - - - - - - - 2-5
Our First "Real" MI-Program 2-7
Chapter 3: Pointers, Pointers, and Pointers - - - - - - 3-1
Space Data Object 3-1
Setting a Space Pointer - - - - - - - - 3-2
Explore Pointers: Materialize Invocation Stack 3-2
Static Storage Method - - - - - - - - 3-2
Dealing with Exceptions 3-4
Automatic Storage Allocation - - - - - - - 3-5
Instruction Pointers 3-6
Chapter 4: Arithmetic and Timestamps - - - - - 4-1
Timestamps 4-1
Convert Timestamp to Date and Time - - - - - - 4-1
Converting to a Date 4-2
Complete Program to Show Current Date and Time - - - - 4-3
Leap Seconds 4-4
Higher Resolution in Later Versions - - - - - - 4-5
Chapter 5: Calling Other Programs - - - - - - 5-1
External Program Objects 5-1
Obtaining a System Pointer - - - - - - - 5-1
Initializing a System Pointer 5-1
Resolving a System Pointer - - - - - - - 5-1
Copying a System Pointer 5-2
System Entry Point Table (SEPT) - - - - - - 5-2
Counterfeiting a Pointer 5-2
Encapsulated Objects - - - - - - - - 5-2
The Argument List 5-2
Program Call Example - - - - - - - - 5-3
Relative Branch Conditions 5-4
An Optimization - - - - - - - - - 5-5
The System Entry Point Table 5-5
Chapter 6: RISC Code for Setting a Pointer - - - - - - 6-1
Set Space Pointer From Pointer 6-1
Documentation About the PowerPC - - - - - - 6-1
AS/400 RISC PowerPC Machine Architecture 6-1
System Service Tools - - - - - - - - 6-2
Dissecting SETSPPFP 6-4
LQ - Load Quadword Instruction and Pointer Tag Bits - - - - 6-4
TXER Instruction 6-5
ORI - OR Immediate Instruction - - - - - - - 6-6
ADDI - Add Immediate Instruction 6-6
RLDICL Instruction - - - - - - - - 6-6
Condition Register 6-7
BC - Branch Conditional Instruction - - - - - - 6-7
BLA - Branch with Link to Absolute Address Instruction 6-8
Link Register - - - - - - - - - 6-8
Addresses, Segments, Offsets, and SLIC 6-8
LD - Load Doubleword Instruction - - - - - - 6-9
RLDICR Instruction 6-9
SETTAG Instruction - - - - - - - - 6-10
STQ, Store Quadword Instruction 6-10
Final Annotated SETSPPFP Code - - - - - - - 6-10
Chapter 7: Accessing Arbitrary Data in Memory - - - - - 7-1
Accessing Arbitrary Data 7-1
Set Space Pointer From Any Pointer - - - - - - 7-1
Counterfeiting the Pointer 7-1
Accessing Encapsulated Program Code - - - - - - 7-2
Using the Debugger 7-3
System Domain Objects - - - - - - - 7-4
Going System State 7-5
This Does Not Work on a CISC Box - - - - - - 7-5
Chapter 8: Getting/Setting File Member Information - - - - - 8-1
File Member Information 8-1
File Member Cursors - - - - - - - - 8-1
The Member Header 8-1
Converting Dates to Timestamps - - - - - - 8-3
Must be System State 8-3
Parameters - - - - - - - - - 8-3
Command CHGMBR and Command Processing Program CHGMBRCL 8-4
Command Processing Program - - - - - - - 8-5
The Complete MIMBRINF Program 8-6
Chapter 9: The Work Control Block Table - - - - - - 9-1
Tasks, Processes, and Jobs 9-1
Job Names - - - - - - - - - 9-1
Finding Work Control Block Tables 9-1
The Process Communication Object - - - - - - 9-1
The Master (Root) WCB Table List 9-2
Scanning the WCB Tables - - - - - - - 9-3
Testing if a Pointer is Null 9-3
Searching a Work Control Block Table - - - - - - 9-3
Scanning WCB for Device Name 9-4
Checking the Job Status - - - - - - - 9-4
Putting It All Together 9-5
Performance - - - - - - - - - 9-7
A Faster Way of Locating Jobs 9-7
Format of the Job Index Header - - - - - - - 9-7
Format of the Job Index Entry 9-8
Addressing the Job Index - - - - - - - 9-8
Finding Entries in the Job Index 9-9
A Faster Version, MIWCBFND - - - - - - - 9-9
A Brief History of WCBT Problems 9-11
Chapter 10: Internal Sorting, Combsort - - - - - 10-1
Sorting Internal Data 10-1
Bubble Sort - - - - - - - - - 10-1
Combsort 10-2
MI-Version of Combsort - - - - - - - 10-2
Override Program Attribute 10-3
The Sort Double Loop - - - - - - - - 10-3
Complete Combsort Code 10-4
Using Instruction Pointers - - - - - - - 10-4
Testing Combsort 10-5
Generating Random Numbers - - - - - - - 10-5
Measuring Processor Time Spent 10-5
Calling Combsort - - - - - - - - 10-6
Computing N log2 N 10-6
Compute Mathematical Function with 1 Argument - - - - - 10-7
Computing Time Differences 10-7
Simple Numeric Editing - - - - - - - - 10-8
The Complete MITSTCMB Test Program 10-8
Performance Results - - - - - - - - 10-10
RPG Version of COMBSORT 10-11
Chapter 11: The Machine State Register. - - - - - 11-1
Machine State Register (MSR) 11-1
Privilege Level - - - - - - - - - 11-2
The MFMSR/MTMSRD Instructions 11-2
Running in Supervisor Mode - - - - - - - 11-3
Finding the SLIC Code for Call Program 11-3
Retrieving Machine Registers - - - - - - - 11-5
Getting General-Purpose Registers 11-5
Getting Special-Purpose General-Use Registers - - - - - 11-6
STD Instruction 11-7
Getting the Machine State Register - - - - - - 11-8
The Program State 11-8
The Floating Point Bit - - - - - - - - 11-8
Chapter 12: Input/Output in MI Using the SEPT - - - - 12-1
A File Compressor/Decompressor 12-1
The User File Control Block - - - - - - - 12-1
How Do We Know This Stuff? 12-2
Setting Library/File/Member - - - - - - - 12-2
Some AS/400-S/38 History 12-3
Control Flags - - - - - - - - - 12-3
More Control Flags 12-4
The FCMPRS (File Compress) Command - - - - - - 12-4
Command-Processing Program 12-4
Parameter Block - - - - - - - - 12-4
The System Entry Point Table (SEPT) 12-5
Opening a File - - - - - - - - - 12-6
The Open Data Path 12-7
Data Management Entry Point Table - - - - - - 12-9
I/O Routines 12-10
The Data Management Option List - - - - - - 12-10
The Data Management Control List 12-12
Filling the Input Area - - - - - - - - 12-12
Compressing the Input 12-12
Write the Compressed Records - - - - - - - 12-13
Getting the System Name 12-14
Decompressing the Data - - - - - - - 12-14
Compression Ratio 12-15
The Complete Program - - - - - - - - 12-15
Chapter 13: File Conversion and Hashing - - - - - 13-1
Minimum File Transformation: COPY 13-1
Generic File Transformer Command - - - - - - - 13-2
Translating the Data From a File 13-3
A GREP-Like Utility - - - - - - - - 13-4
A KWIC (KeyWord-In-Context) Version of GREP 13-5
Calculating a File Digest - - - - - - - 13-6
Clearing the File Before Output 13-8
Variable Length Part of the UFCB - - - - - - 13-8
Blocking Records to Increase I/O Performance 13-8
With/Without Level Check - - - - - - - 13-8
Chapter 14: Password Encryption on the AS/400 - - - - - 14-1
Password Protected Access 14-1
Password Rules - - - - - - - - 14-1
Retrieving the Encrypted Password 14-1
Algorithm for the 1st Encrypted Password - - - - - - 14-2
Using CIPHER to DES-Encrypt 14-4
Algorithm for the 2nd Encrypted Password - - - - - 14-5
Why Seven Characters Instead of Eight? 14-7
The Magic Constant - - - - - - - - 14-7
The Compleat MIENCPWD Program 14-8
The Brute-Force Attack - - - - - - - - 14-10
Passwords Stored in the Clear! 14-10
A Password Checking Utility - - - - - - - 14-10
Real Security 14-12
Chapter 15: Program Validation Value - - - - - - 15-1
The Program Validation Value 15-1
States and Domains - - - - - - - - 15-1
Saving/Restoring Programs 15-1
Calculating the Program Validation Value - - - - - - 15-1
The ILE Program Model 15-2
Our TEST Program - - - - - - - - 15-2
Object Header 15-2
Program Header - - - - - - - - 15-3
The AS/400 Security Oracle 15-3
Effective Address Translation - - - - - - - 15-4
Page Protection Bits 15-5
Writable Program Header - - - - - - - 15-5
History Log 15-5
Program Version Table - - - - - - - - 15-6
Program MICLNPGM to Clean Patch Information and History Log 15-7
Program Maintenance Header - - - - - - - 15-9
Module Table 15-10
Module Header - - - - - - - - - 15-10
Module Version Table 15-11
Procedure Table - - - - - - - - 15-12
RISC Instructions 15-12
Module Constants - - - - - - - - 15-13
Primary Associated Space 15-13
Which Components Go Into the PVV? - - - - - - 15-13
Diffusion and Confusion 15-13
Program MIPGMVV Computes the PVV - - - - - - 15-14
Clearing the History Log on V4R4+ 15-16
Digitally Signed Objects - - - - - - - 15-16
Chapter 16: User-Defined 5250 Datastream I/O - - - - - 16-1
Display Files 16-1
The MIHWORLD Program - - - - - - - 16-2
Data Management Option List 16-3
Data Management Control List - - - - - - - 16-3
Device Control (or Name) Block 16-3
Machine Space Pointers - - - - - - - 16-4
Datastream Format 16-4
Buffer Format - - - - - - - - - 16-4
Datastream Commands 16-4
Orders - - - - - - - - - 16-6
Field Control Word 16-7
Field Format Word - - - - - - - - 16-7
Screen Attributes 16-8
Explanation of the Magic Constants - - - - - - 16-9
Chapter 17: A Simple Screen I/O Interface - - - - - - 17-1
Describing Screen Files 17-1
Item Introducer - - - - - - - - 17-2
Logical Attributes 17-2
Cursor Position - - - - - - - - 17-3
The Contiguous Data Block 17-3
The MITSTSCR Test Program - - - - - - - 17-4
Command Keys 17-4
The MISCRNIO Screen Handler - - - - - - - 17-4
File control Block and Data Management Entries 17-5
Buffer Formats - - - - - - - - 17-6
Orders 17-7
Command Key Translation - - - - - - - 17-7
Data Content Translation 17-8
Attribute Translation - - - - - - - - 17-8
Current Cursor Position 17-8
The Screen Handler Code - - - - - - - 17-9
Open Terminal 17-9
Close Terminal - - - - - - - - - 17-9
Write to Terminal 17-9
The VERIFY MI-Instruction - - - - - - - 17-10
The XLATE MI-Instruction 17-10
Calculating Where to Place the Cursor - - - - - - 17-11
Read from Terminal 17-11
Format of MDT Input Fields Returned - - - - - - 17-12
Finding Field With Cursor 17-13
Chapter 18: (SCV) Supervisor Call Vectored - - - - - 18-1
The SCV/RFSCV Instructions 18-1
How Is the SCV Used? - - - - - - - - 18-1
The SCV Dispatch Code 18-1
RLDIMI Instruction - - - - - - - - 18-2
Tracing and Single-Step Mode 18-3
ADDIS Instruction - - - - - - - - 18-3
SCV 10 Handler 18-4
The Blocked Instruction Flag Table - - - - - - 18-4
Other SCV Calls 18-6
What Did We Learn? - - - - - - - - 18-6
Chapter 19: Calculating Archimedes' Constant, Pi - - - - 19-1
An Amazing Formula for Pi 19-1
Computing the Square Root - - - - - - - 19-1
The MIPIPKD Program 19-2
The MIPIFLT Program - - - - - - - - 19-3
The Original S/38 Program, MIPIS38 19-4
Chapter 20: Exception Handling - - - - - - 20-1
Exceptions and Events 20-1
Declaring an Exception Monitor - - - - - - - 20-1
The Exception Identifier 20-2
Searching for Exception Descriptions - - - - - - 20-2
Materialize an Exception Description 20-2
Modifying an Exception Description - - - - - - 20-3
Monitoring Exceptions: The MIDECEXC Program 20-3
Exception General and Specific Data - - - - - - 20-4
Return from Exception 20-5
Signaling Exceptions: The MISIGEXC Program - - - - - 20-6
Materialize Invocation Attributes 20-6
Signaling an Exception - - - - - - - - 20-7
Various Errors 20-8
Preventing Messages in the Joblog - - - - - - 20-9
Chapter 21: Walking the ODP Chain - - - - - - 21-1
The Open Data Path 21-1
Searching Work Control Block Tables - - - - - - 21-1
The Data Management Communication Object 21-2
The DMQC Root - - - - - - - - - 21-2
The SETSPPO MI-Instruction 21-3
A DMCQ Open Entry - - - - - - - - 21-5
Locating the ODPs 21-5
Structure of the ODP - - - - - - - - 21-6
The Open Feedback 21-6
The I/O Feedback - - - - - - - - 21-7
Data to Collect about an Active File 21-7
The MIODPWLK Program - - - - - - - 21-8
Chapter 22: How to Generate a Truly Random Number - - - - 22-1
What is a Random Number? 22-1
Use of Randomness - - - - - - - - 22-1
Bad Seeds 22-1
The Entropy Pool - - - - - - - - 22-2
Sources of Entropy 22-2
Timing Information - - - - - - - - 22-3
Entropy Pool Format 22-3
The Yield Time - - - - - - - - 22-4
Resource Management Data 22-4
Processor Utilization - - - - - - - - 22-5
Storage Management Counters 22-5
Main Storage Pool Information - - - - - - - 22-6
Disk Storage Information 22-7
Activity Level Control Data - - - - - - - 22-8
Can We Measure the Amount of Entropy in the Pool? 22-9
Aging the Entropy Pool - - - - - - - - 22-9
The Get Entropy Program (MIGETETP) 22-10
The Internal State - - - - - - - - 22-10
Generation of Entropy 22-11
The Entropy Monitor Program (MIETPMON) - - - - - 22-12
Conclusion 22-13
TCP/IP Flaw Because of Lack of Randomness - - - - - 22-13
Chapter 23: Automatic Refresh of Display - - - - - - 23-1
The Automatic Refresh Problem 23-1
DDS Specification for the Display File - - - - - - 23-1
ASSUME (Assume) Keyword 23-1
CFnn (Command Function) Keyword - - - - - - 23-1
KEEP (Keep) Keyword 23-1
OVERLAY (Overlay) Keyword - - - - - - - 23-1
USRDFN (User-Defined) Keyword 23-2
INVITE (Invite) Keyword - - - - - - - - 23-2
Invited Devices 23-2
General-Purpose Time-out Program - - - - - - 23-3
The DDS for the Invited Device 23-3
RPG Versions of the Time-Out Program - - - - - - 23-4
Call Stack for WRKACTJOB Command 23-4
The QDMACCIN Program - - - - - - - 23-5
Changing the Time-out Value Dynamically 23-6
The MIINVDSP Invited Display Program - - - - - 23-6
Automatic Refresh Driver Program MIAUTREF 23-8
The CVTEFN MI-Instruction - - - - - - - 23-10
The ROLLUP / ROLLDOWN Problem 23-10
Acknowledgements - - - - - - - - 23-11
Chapter 24: Editing of Numeric Variables - - - - - - 24-1
The Importance of Editing 24-1
Edit Codes and Edit Words - - - - - - - 24-1
COBOL Pictures 24-1
The EDIT MI-Instruction - - - - - - - 24-2
The Edit Mask 24-2
Parameter Length Conformance - - - - - - - 24-4
Left-Justifying the Number 24-4
Chapter 25: Machine Indexes - - - - - - - 25-1
What is a Machine Index? 25-1
Binary Radix Trees. - - - - - - - - 25-1
The Index Instructions 25-1
Security Level 40+ Considerations - - - - - - 25-1
The Search Engine Problem 25-2
Index Object Subtypes - - - - - - - - 25-2
Creating the Index 25-2
Reading the File Member - - - - - - - - 25-5
Extracting Words 25-6
Inserting an Entry - - - - - - - - 25-7
Internal Structure of an Index 25-8
Iterating over All Members of a File - - - - - - 25-9
Insertion Speed 25-11
Searching the Index - - - - - - - - 25-11
Building a Screen 25-13
Searching for the Word - - - - - - - - 25-14
Chapter 26: The AS/400 Memory Explorer - - - - - - 26-1
Examining Memory without SST 26-1
Accessing Arbitrary Memory - - - - - - - 26-1
Preserving Tag Bits 26-2
Screen Layout - - - - - - - - - 26-3
Arrays of Fields 26-3
The Explorer Program (MIEXPLR) - - - - - - 26-4
The DATA to Show 26-4
Stacking/Unstacking of Addresses - - - - - - 26-4
Showing the Screen 26-4
Enter: Specifying the Location of the Data - - - - - 26-6
Paging Down/Up to See More 26-7
The HOME or PCS Position - - - - - - - 26-7
Look at Memory at Another Address 26-7
Detecting a Pointer - - - - - - - - 26-8
The CMPPTRT MI-instruction 26-8
Unstacking to Previous Address - - - - - - - 26-9
Displaying Timestamps 26-9
Disassembling Instructions - - - - - - - 26-9
Exiting the Program 26-10
Building the Screen Image - - - - - - - - 26-10
Determining the Pointer Description 26-11
Ready-made AS/400 Explorer - - - - - - - 26-11
Chapter 27: Inside a Save File - - - - - - 27-1
Why Save-Files? 27-1
The Internal Save Format - - - - - - - - 27-1
The Dump Space 27-2
Dump Space Management Instructions - - - - - - 27-2
Checksums 27-2
Dump Space Header - - - - - - - - 27-2
The Dump Space Data Pages - - - - - - - 27-2
The Dump Descriptor 27-3
Dump Descriptor Catalog - - - - - - - - 27-3
Extended Object Information 27-4
Show Object in a Save File, MIOBJSAV - - - - - - 27-4
Walk Descriptors in Save File, MIWLKSAV 27-7
Modifying a Save File - - - - - - - - 27-9
Save File Integrity? NOT 27-9
Single-Level Store? Maybe Not Always - - - - - - 27-10
"Flushing" a Save File to Disk 27-10
Changing Module Information, MICHGMOD - - - - - 27-10
Save Files for CISC Architecture 27-13
Chapter 28: Recursion, Entropy, and the End of the World - - - - 28-1
Recursive Procedures 28-1
Summing of Integers - - - - - - - - 28-1
Equipartition of Energy 28-2
Distinguishability of Particles - - - - - - - 28-3
"How Many Ways to Distribute 10 Units of Energy among 5 Distinguishable Particles?" 28-3
A Computer Simulation - - - - - - - - 28-3
Programming Idioms 28-4
Storage Attributes - - - - - - - - 28-4
Calling MIADSUMR 28-5
A Parameter That Is Not a Pointer - - - - - - 28-6
An Iterative Version, MIADSUMI 28-6
Sample Results (Combinatorial Explosion) - - - - - 28-7
Method of Finite Differences 28-8
A Note About the Programs for This Chapter - - - - - 28-8
The Tower of Hanoi 28-8
Fibonacci Numbers - - - - - - - - 28-11
Chapter 29: Changing Your Machine's Serial Number - - - - 29-1
What Legitimate Reason Can You Have For This? 29-1
A True Horror Story - - - - - - - - 29-1
The MATMATR Instruction 29-2
Finding the SCV Function - - - - - - - 29-2
OS/400 is Developed Under UNIX 29-2
Contents of the Data Segment - - - - - - - 29-2
Get the Serial Number 29-3
The HDTA Object - - - - - - - - 29-4
System Values 29-5
What Happens at the Next IPL? - - - - - - - 29-5
Place of Manufacture 29-6
The "Software" Serial Number - - - - - - - 29-6
Pure conjecture (Probably Incorrect) 29-6
A Little More History 29-6
Chapter 30: The Advanced Encryption Standard - - - - 30-1
The Need for a New Encryption Standard 30-1
The New Encryption Standard - - - - - - - 30-1
The Rounds 30-1
Copy Bits Logical (CPYBTL) - - - - - - - 30-2
Generated RISC Code for MI-Version 30-3
Generated RISC Code for C-Version - - - - - - 30-3
Optimized RISC Code for C-Version 30-4
C-Version of AES - - - - - - - - 30-4
Defining an Encryption Round 30-5
Defining a Decryption Round - - - - - - - 30-6
Key Expansion 30-6
The Encryption/Decryption Process - - - - - - 30-8
Operating Modes 30-8
Electronic Codebook Mode - - - - - - - 30-9
Cipher Block Chaining Mode 30-9
The File Encryption Program, MIFAES - - - - - - 30-10
Encryption/Decryption Speed 30-11
Compiling and Binding the C-Programs - - - - - - 30-11
The AES C-Program 30-11
The AESTEST Testprogram - - - - - - - 30-12
Chapter 31: The Object Information Repository - - - - 31-1
Extended Common Object Information 31-1
Work with Object Command (WRKOBJ) - - - - - - 31-1
The OIR (Object Information Repository) 31-2
Work with OIR (MIWRKOIR) - - - - - - - 31-3
Must be System State 31-5
The Change Object Description API (QLICOBJD) - - - - - 31-5
Fields in the OIR 31-5
The MISHWOIR Test Program - - - - - - - 31-7
What is in the Additional OIR Records? 31-11
Chapter 32: Immune against Check Object Integrity - - - - - 32-1
Checking Object Integrity 32-1
Hacking CHKOBJITG? - - - - - - - - 32-1
Using CHKOBJITG 32-1
Disowning an Object - - - - - - - - 32-2
The User Profile as a Machine Index 32-3
Defense in Depth (The Alter Log) - - - - - - 32-3
Format of Alter Log Entries 32-4
Clearing the Alter Log - - - - - - - - 32-5
How Did We Know the Address of the Alter Log? 32-5
Chapter 33: Analysis of SCV 7, Program Call - - - - - 33-1
Program Calls 33-1
Adopted Authority - - - - - - - - 33-1
The Program State Attribute 33-1
Generated Code for CALLX Instruction - - - - - - 33-1
The SCV 7 Dispatch Code 33-2
The #AICAPGM Module - - - - - - - 33-2
Check State Attribute 33-3
Finally Calling the Program - - - - - - - 33-4
Entering the Called Program 33-4
The STDU RISC-Instruction - - - - - - - 33-4
Returning from the Called Program 33-4
Format of the Invocation Stack Frame, ISF - - - - - 33-5
Chapter 34: Anatomy of a User Profile - - - - - - 34-1
The Central Role of a User Profile 34-1
Getting User Profile for a Job - - - - - - - 34-1
Object Specific Header 34-2
Privileged Instruction Bits in User Profile - - - - - - 34-2
Special Authority Bits in User Profile 34-2
Object Audit Level - - - - - - - - 34-3
User Audit Levels 34-3
A Dangerous Program - - - - - - - - 34-4
The Associated Space 34-4
Qualified Values - - - - - - - - 34-5
Various User Profile Flags 34-5
Language, Country, and Character Set IDs - - - - - - 34-5
User Options 34-6
Objects Owned by User Profile - - - - - - - 34-6
Chapter 38: Source and Debug Information - - - - - - 38-1
ILE Programs and Modules 38-1
OIR-Information for Modules - - - - - - - 38-1
Change Licensed Object Description, QLICOBJD 38-2
Anatomy of a Module - - - - - - - - 38-2
The HLL Symbol Table 38-3
View Descriptors - - - - - - - - 38-3
Descriptor Types 38-5
No Debug Source - - - - - - - - 38-5
Why Make the Symbol Table Inaccessible? 38-5
Changing Source/Debug Information, MICHGMOD - - - - 38-5
The Bound Program 38-8
The BNAS Information - - - - - - - - 38-8
Debug Source Information 38-11
Appendix A: MI-Instructions Quick Reference - - - - - A-1
MI-Instruction Quick Reference A-1
Computational and Branching Instructions - - - - - A-1
Pointer/Resolution Instructions A-6
Space Management Instructions - - - - - - - A-7
Independent Index Instructions A-7
Authorization Instructions - - - - - - - A-7
Program and Invocation Instructions A-8
Exception Management Instructions - - - - - - A-9
Queue Management Instructions A-9
Object Lock Instructions - - - - - - - A-10
Context Management Instructions A-10
Heap Management Instructions - - - - - - A-10
Resource Management Instructions A-11
MI Support Functions Instructions - - - - - - A-11
Date/Time/Timestamp Instructions A-11
Appendix B: Object Type/Subtypes - - - - - - - B-1
Object Type/Subtypes B-1
Object List - - - - - - - - - B-1
Appendix C: PowerPC Instruction Set Quick Reference - - - - C-1
Instructions Sorted by Mnemonic C-1
Appendix D: SEPT Entries in the User Domain - - - - - D-1
System Entry Point Table Entries D-1
Entries Sorted by Number - - - - - - - D-1
Entries Sorted by Name D-13
Appendix E: SCV 10 Function Numbers - - - - - E-1
Supervisor Call (Vectored) Functions E-1
Appendix F: Open and I/O Feedback Areas - - - - - - F-1
Open Feedback Area F-1
I/O Feedback Area - - - - - - - - F-6
Common I/O Feedback Area F-6
I/O Feedback Area for ICF and Display Files - - - - - - F-8
I/O Feedback Area for Printer Files F-10
I/O Feedback Area for Database Files - - - - - - F-10