I spent about 50 years working on IBM mainframes and I wish the Wintel world were as easy to master as the mainframe world. Today’s CISC mainframes have a much larger instruction set than Intel systems. This means there’s a lot more to learn but it also allows the code to be much cleaner, elegant and coherent and by reducing the number of instructions, reduces the logical complexity of programs and thus reduces errors. Coding in Assembler does require a knowledge of the hardware as well as the principles of programming and logic. I’d venture to say that if all the people coding high-level or scripting languages had to understand their hardware at the instruction level, most would be doing something else for a living.
One of the pleasures of working with mainframes was the extraordinary high level of documentation IBM provides. Back in the ’60s they were the world’s 2nd-biggest publisher, right behind the US Government Printing Office. When I worked in the Time/Life Datacenter, our library filled a 15-30 room, 3 walls full of floor-to-ceiling shelves and waist-high shelves down the middle of the room. We had a clerk whose sole job was to apply updates to the manuals, inserting or replacing pages all day long. And we did not have anywhere near the entire IBM library. Today, most people use digital manuals, since keeping paper would require a huge space and lots of updates. (I wonder how many people IBM has keeping their digital documentation updated…) IBM’s software and hardware has grown so much since the ’60s that they may well surpass the GPO today.
There were three types of manuals commonly used by programmers and Systems Programmers:
SRLs (System Reference Library) told how to use the various components and functions of OS. Primarily a guide to coding applications. The Intel world has comparable documents for various software.
PLMs (Program Logic Manuals) described in great detail the logic flow and data used in each component of the OS. Primarily used by Systems Programmers. I haven’t seen the equivalent of these in the Intel world.
Redbooks discussed implementation of OS and its various pieces of software, written by users in the field who were actually doing the work. These were initially an ad hoc effort from IBM World Trade. Primarily used by Systems Programmers. There is some similar material available for Intel-based software, but it’s usually part of install & customize instructions and not always very thorough.
In addition to the official manuals, the source code for the OS is available for the cost of the media. (Source for their encryption may not be publicly available). I learned Assembler from looking at source code of the OS, which also taught me the internals of the OS. There was an Education Center in the Time/Life building and I taught the last week of their Assembler classes, since they didn’t really understand macros very well. I learned macro syntax and functions by doing SysGens – the process by which a customer uses a stripped down version of OS to generate his desired target system. I probably did 2-3 SysGens/week for many months, since customers didn’t have the expertise in the early years. The entire SysGen process was driven by a collection of macros which generated a jobstream to build a customized version of OS.
The early OS didn’t have accounting routines, to track and report resources used by the jobstreams, and many customers needed that, in order to charge costs to various projects or departments. The last thing I did before I left IBM was write macros to generate accounting routines based on the data the customer needed, how he needed it presented and the version of OS he was running. The macros generated the routines themselves and the jobstreams to build and insert the routines into the OS. The macros were about 3000 lines of code.