This article has much information about the IBM 360. I want to note here some controversy and skepticism that surrounded the system when it was new. Many computer designers were skeptical that an instruction set could be defined sufficiently accurately in English, or any other way to ensure that programmers, and machine builders would build systems that worked together. This was especially true in matters of privileged instructions and IO instructions. Prior experience had dictated that expensive machines should have more elaborate instructions and that only expensive machines could afford hardware facilities that enabled IO overlapped with computing. Along this vein engineers thought that large machines should have bigger addresses for memory.

Another criticism was that a 360 instruction could not include a full address. When the 360 was new the dominant instruction format was (OP code, index register ref, full address). The most prevalent programming languages offered arrays indexed by integers and the array would acquire a definite address at load time and the address of the array be planted in the instruction stream in instructions that also designated an index register that would hold the variable offset into the array during execution. I was skeptical of this as well.

Micro code removed the barrier to complex instructions in simple machines. Indeed most delivered machines had the full instruction set because the cost and price were small. Microcode could also disguise the real nature of the IO which was in fact not overlapped on the smaller machines.

Some high speed IO devices, such as drums, could not be used on the smallest machines for their bandwidth exceeded the capabilities of the channels of those machines. For a few IO devices there were other timing limitations that the hardware CPU together with the application were required to meet. This would eliminate some CPU models as well as some user written applications. A check sorter would read information from a check and demand a very quick decision from an application on which pocket the check was to be deposited in.

Perhaps the biggest surprise of any was the success of defining an instruction set so precisely and clearly that machines built in different countries could execute the same programs, even privileged programs. See this about that.