Talk:IBM System/360 architecture

model-dependent features
Some parts of the architecture are specifically called out as model-dependent. I recommend a section listing these. John Sauter (talk) 19:29, 7 September 2010 (UTC)

differences between models
Some features differed between models, even though they were not on the architectural list. I am thinking of imprecise interrupts on the larger systems. I think it would be sufficient to mention in passing, when describing a feature, that it was not implemented the same way on all models. John Sauter (talk) 19:29, 7 September 2010 (UTC)


 * I did an edit that included some architectural deviations and plan to mention multple imprecise interrupt when I get to program checks. Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:53, 7 September 2010 (UTC)

models that were very different
The System/360 model 20 was a System/360 in name only. IBM acknowledged this by titling the manual which listed software as being for System/360 models 22 and above. The exclusion of the model 20 needs to be mentioned. The models 44 and 67 also departed significantly from the standard architecture. John Sauter (talk) 19:29, 7 September 2010 (UTC)


 * I'll add a comment that the 360/20 was not really a S/360. The 360/67 complied with the architecture and could run standard S/360 software. The 360/44 was an edge case; it was missing the SS instructions but with the Commercial Instruction Feature you could simulate them and run standard software. Shmuel (Seymour J.) Metz Username:Chatul (talk) 21:54, 7 September 2010 (UTC)

level of detail
We need to be careful about the level of detail. It would not be a good idea to paste in the whole IBM manual (even if it were not a copyright violation) because that level of detail is too great for an encyclopedia article. For example, I do not think we should list all of the instructions, or all of the characters of EBCDIC, though of course we should summarize them. I think it would be a good idea to characterize the I/O devices that were available, but not to attempt to list them all. For example, we could say that card readers, line printers and card punches were important peripherals&mdash;that's unusual enough in today's world that it deserves mention, but the speed of the various printers and card readers would be unnecessary. John Sauter (talk) 02:06, 8 September 2010 (UTC)


 * I have no intention of documenting every instruction, and didn't plan on saying anything about character sets beyond what is needed to explain zones in decimal arithmetic. Not only would character charts be TMI, but they would be misplaced in an architecture section. I probably need to discuss classes of instructions in order to clarify the condition code.


 * I didn't plan to mention specific devices at all, except where needed to illustrate the need for specific features. As above, there are more appropriate places to discuss them. In particular, I plan to add DASD details to the CKD article some time after I have deuserfied the architecture article and proposed a merge. Shmuel (Seymour J.) Metz Username:Chatul (talk) 12:16, 8 September 2010 (UTC)

Operators controls
I have some problems with the last update.


 * 1) The architecture specifies the controls, but not their appearance.


 * 1) Most of the material doesn't relate to the architecture and belongs in other sections of the IBM System/360 article.


 * 1) The material on Initial Program Load does not include the details that the architecture does specify. I'd like to replace the whole thing with

Operator controls
The architecture of System/360 specified the existence of several common functions, but did not specify their means of implementation. This allowed IBM to use different physical means, e.g., pushbutton versus image on a CRT, for selecting the functions on different processors.

Initial Program Load
Initial Program Load is an architected process for loading a program when there isn't a loader available in storage, usually because the machine was just powered on or to load an alternate operating system. This process is sometimes known as Booting.

As part of the IPL facility the operator has a means of specifying a 12-bit device address, typically with three hexadecimal dials. When the operator selects the Load function, the system performs a System Reset, sends an IPL channel command to the selected device in order to read 24 bytes into locations 0-23 and causes the channel to begin fetching CCW's at location 8. At the completion of the I/O, the system stores the I/O address in the halfword at location 2 and loads the PSW from location 0.

I'm not sure whether to include the details on prefixing. Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:01, 8 September 2010 (UTC)


 * I think your rewrite is fine, except I would say &ldquo;Read IPL channel command&rdquo; instead of &ldquo;IPL channel command&rdquo; and &ldquo;at the completion of the Read&rdquo; instead of &ldquo;at the completion of the I/O&rdquo;. John Sauter (talk) 21:44, 8 September 2010 (UTC)


 * I have personal experience only with System/360 models 40, 50 and 67, but in looking at photographs of the other models it strikes me that the cluster of controls which includes the Load button and the IPL address dials is exactly the same across all the models. That is what makes me think that the layout is part of the architecture.  I will look for a good photograph; perhaps it can be included in the article. John Sauter (talk) 21:44, 8 September 2010 (UTC)


 * I have added a generic drawing of the operator controls. John Sauter (talk) 13:37, 10 September 2010 (UTC)


 * Back before there was such a thing as bitsavers, I threw out some of the manuals that I now want to refer to :-(


 * I've updated the text, with a bit more verbiage, e.g., Read IPL is Read with all modifier bits zero. Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:59, 14 September 2010 (UTC)


 * The I/O addresses for System/360 were only 11 bits, since the largest channel number was 6. The dials aren't strictly hexadecimal since the leftmost only runs from 0 to 7.  (I never understood why you could specify channel 7 for the IPL address, but 6 was the highest channel number.)  I also did some minor wordsmithing. John Sauter (talk) 03:38, 15 September 2010 (UTC)


 * I wish that you had commented on the proposed text when I posted it here, instead of waiting until I edited the article. Actually the I/O address is 16 bits: See Input/Output Addressing in


 * I'l revise the text to match PoOps, with a footnote that the value is limited to 0-6. Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:25, 15 September 2010 (UTC)
 * Thanks for the reference; I had missed it. Here is the quotation for future readers: &ldquo;An I/O device and the associated access path are designated by an I/O address. The I/O address is a 16-bit binary number and consists of two parts: a channel address in the eight high-order bit positions and a device address in the eight low-order bit positions.  The channel-address field provides for identifying up to 256 channels, out of which only channels 0-6 may be installed; channel-addresses 7 and up are considered invalid.&rdquo; John Sauter (talk) 16:13, 15 September 2010 (UTC)


 * One other point of confusion is that while the address is defined as 16 bits, the processing of IPL is defined as storing 12 bits into the interrupt code in the doubleword at location 0.


 * All of which raises another question: I've been including pages numbers in references as I create new sections of the article; is that TMI, or should I continue doing so? Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:00, 15 September 2010 (UTC)

(indenting reset)

As I read A22-6821-7, page 123, only 11 bits are stored, but the remainder of the 16-bit field is made zero: &ldquo;When the device provides channel end for the last operation of the chain, the I/O address is stored in bits 21-31 of the first word in storage. Bits 16-20 are made zero. Bits 0-15 remain unchanged. The input operation and the storing of the I/O address are not performed when IPL is initiated by means of the external-start lines.&rdquo;


 * Whoops; I didn't catch the part about not storing for an external start line. I'll have to fix that when I describe the multisystem feature. Thanks for catching it. Shmuel (Seymour J.) Metz Username:Chatul (talk) 21:00, 15 September 2010 (UTC)

In my opinion, when referring to such large documents, page numbers are required. John Sauter (talk) 18:28, 15 September 2010 (UTC)

Footnote Style
Footnotes are used in the article for two purposes: parenthetical explanations and references. I suggest dividing them into two groups, as described in Wikipedia's style page on footnotes:. If there are no objections I will do this. John Sauter (talk) 18:48, 15 September 2010 (UTC)


 * Keep in mind the intent to merge into IBM System/360, so if you split references in one article then you should do it in both. I've used group=NB elsewhere, but have no objections if you prefer another group tag. Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:48, 15 September 2010 (UTC)


 * I went ahead and split the References section here, but must also do it in the main S/360 article. Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:57, 17 September 2010 (UTC)

Nested footnotes
In several cases I've had footnotes where it seemed appropriate to provide a citation and page number for verification. For this purpose I've been using. Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:34, 15 October 2010 (UTC)

Problems with wikitable layout
I've run into some formatting issues with wikitable and I'm not sure what markup I need to get the desired effect.

produces

How do I get the text in the cell block indented? How do I get the column headers left adjusted? Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:00, 16 September 2010 (UTC)
 * You could force it by using one (or more) HTML space entities . I've done that above. I don't believe wikitables allow for indenting inside of them. Ctrl+f on Help:Tables for "indent" and you'll see what I mean. Killiondude (talk) 18:28, 16 September 2010 (UTC)


 * That was the first thing I tried; it gives a paragraph indent rather than a block indent. Wrapped text is not indented.


 * There's also the question of how to left align a column header; the align=left attribute seems to work only in cells, not in headers. Shmuel (Seymour J.) Metz Username:Chatul (talk) 11:57, 17 September 2010 (UTC)
 * I can't find anything about the header alignment (you might want to ask at Help talk:Table), but for indenting (see Help_talk:Table/Archive_1 from Aug 2007):

I'd like to indent within a table cell without a bullet. How can it be done? WriterHound 03:16, 23 August 2007 (UTC)


 * Here's one way to do it. Unfortunately, the wikimarkup is rather ugly.
 * {| class="wikitable"

! column 1 !! column 2
 * 11 no indent || 12 no indent
 * 21 indented 1
 * 21 indented 1
 * 21 indented 1
 * 21 indented 1

22 no indent
 * 31 indented 2
 * 31 indented 2
 * 31 indented 2


 * 32 no indent
 * 41 indented 3
 * 41 indented 3
 * 41 indented 3


 * 42 indented 1
 * 42 indented 1


 * }
 * —EncMstr 14:15, 23 August 2007 (UTC)

Hope that helps - basically, you'll need to spread your table code out over a few lines using single pipes rather than double ones! -- Phantom Steve /talk &#124;contribs \ 12:34, 17 September 2010 (UTC)


 * Actually, I don't find the markup ugly. Thanks. Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:57, 17 September 2010 (UTC)
 * I think meant that each row is spread out code-wise, rather than being on one line! But I'm glad I could help -- Phantom Steve /talk &#124;contribs \ 17:34, 17 September 2010 (UTC)


 * That was what I thought he meant, and I don't find it ugly. When I write HTML I tend to put tags on separate lines, so I find it natural to do the same with wiki markup. De gustibus. Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:38, 17 September 2010 (UTC)

{| class="wikitable" !

head
! style="text-align:left;"| code (this is ! style="text-align:left;"| code )  % Gryllida talk 12:55, 17 September 2010 (UTC)
 * "First of all, you can use blockquote tag to ident text inside of tables, even if the text is long."With the normal text around. % Gryllida talk 12:51, 17 September 2010 (UTC)
 * "First of all, you can use blockquote tag to ident text inside of tables, even if the text is long."With the normal text around.
 * indented text ('|' and ": indented text" must be on different lines) % Gryllida talk 12:58, 17 September 2010 (UTC)
 * indented text ('|' and ": indented text" must be on different lines) % Gryllida talk 12:58, 17 September 2010 (UTC)
 * indented text ('|' and ": indented text" must be on different lines) % Gryllida talk 12:58, 17 September 2010 (UTC)
 * indented text ('|' and ": indented text" must be on different lines) % Gryllida talk 12:58, 17 September 2010 (UTC)


 * indented text ('|' and ": indented text" must be on different lines) ~
 * indented text ('|' and ": indented text" must be on different lines) ~


 * }

You see, I basically used 'text-align:left;' CSS style in the heading. I used it instead of the 'align' attribute, which doesn't exist for the html element it gets parsed into. I also placed text onto a next line for the colons to indent it. It appears to work. Please let me know if you expect a different result or want more features. % Gryllida talk 13:01, 17 September 2010 (UTC)


 * I'll always want new features, e.g., anchors in a cell that I can refer to from a wikilink, but you've given me the answers that I needed. Thanks. Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:57, 17 September 2010 (UTC)

After making 'head' a section, this link points to it, as described at Help:Link. I'm not sure whether linking to non-heading objects is possible; I've not seen it be used in other articles. % Gryllida talk 23:23, 17 September 2010 (UTC)

Recent edit by Alan Liefting?
A recent edit by User:Alan Liefting had a description of External links, but the actual change was deleting

I suspect that he meant to delete the External links section created by the article creation wizard. Is there any reason not to revert the change?

Also, should the categories be at the beginning rather than the end? Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:10, 29 September 2010 (UTC)


 * I now suspect that he deliberately removed the categories because it was a user page. I've reverted the edit and changed the categories to category links, e.g.,


 * &#091;&#091;&#058;Category&#058;Computer architecture]]
 * &#091;&#091;&#058;Category&#058;IBM System/360 mainframe line]]
 * Shmuel (Seymour J.) Metz Username:Chatul (talk) 01:31, 3 October 2010 (UTC)

Style for page references
I've been using for references to specific pages in IBM System/360 Principles of Operation; the references display properly bot I get too many backlinks in the references section. I'm considering something like A22-6821-7, e.g.
 * foo A22-6821-7

Is that reasonable, or should I leave the back links alone? If I should remove them, is this the best way to do so? Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:15, 10 October 2010 (UTC)


 * It is regrettable that limitations of the wiki software force you to find a different way to express yourself, but that's life. Do whatever you need to do to make the article both readable and credible.  John Sauter (talk) 17:32, 11 October 2010 (UTC)

Should I include Program interrupt codes that are not part of the architecture?
The 360/67 generates program interrupt codes 16 and 17, the Model 65 MP generates interrupt code 18 and models 91 and 95 generate multiple imprecise interrupts. I mention these deviations in footnotes; should I include the codes in the mainline, or stick to what is architected? Shmuel (Seymour J.) Metz Username:Chatul (talk) 23:43, 10 October 2010 (UTC)


 * In my opinion, they should go in the mainline, with appropriate notes about which models use them. I regard the architecture of System/360 as not necessarily what is in the Principles of Operation manual, but what IBM actually shipped.  The fact that the multiprocessing model 65 used code 18 rather than 16 implies that there was a process to allocate program interrupt codes, even after the architecture document was completed.  I also think that dynamic address translation and the control registers should be considered part of the architecture, since they were retained in the System/370. John Sauter (talk) 17:26, 11 October 2010 (UTC)

Example of using PCI
I don't believe that a Set Sector command chained to a No-Op would accomplish anything for uptimizing page placement. I think that you meant Read Sector, but that still raises issues of orientation and timing. I believe that a Read Sector command chained to a read of a dummy record might work, although it would be dicey.

The only S/360 devices that supported RPS were the 2305 fixed-head disk and 33xx moving-head disks. For the former there were 8 exposures, so that sort of trick would be unnecessary, while for the latter there was mechanical motion for seeks.

A better example might be PCI fetch, although that got ugly when you got into the code.

In the meantime I'll change drum to disk, since no IBM drums had RPS, but I believe that we need a better example. Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:40, 17 October 2010 (UTC)


 * My memory of this trick is vague, which is why the example is vague. The idea was to implement RPS on devices like the IBM 2301 that didn't have RPS built-in.  I think it involved a loop of Search CCWs, each for the next sector, interspersed with CCWs that did nothing.  At the PCI interrupt the do-nothing CCW would be changed to a Write, which would write the page onto the next sector to come under the heads.  I don't think this would work with a moving-head disk, because the head movement time would dominate.  If I remember the 2301 correctly, you had to select the head and sector in the search command.  Perhaps the trick involved modifying the next search command to specify the correct head, and the following do-nothing command to write the page. Note that RPS required a block-multiplexor channel, which wasn't available on the early IBM 360 systems.  John Sauter (talk) 14:28, 17 October 2010 (UTC)


 * There was no CCW command code on the 2301 that dealt with sectors. You may be thinking of using a command chain with a Read Count chained to a CCW with PCI. All S/360 DASD that supported RPS came with or after the block mux. Shmuel (Seymour J.) Metz Username:Chatul (talk) 09:20, 18 October 2010 (UTC)


 * I wish I could find a copy of the IBM 2301 component description manual on-line, because I don't remember its commands. By analogy with other DASD, I imagine there was a command which searched for a particular sector.  It would have been followed by a TIC back to the search command, and then a Read or Write of that sector.  The search command would specify the address on the 2301, which would consist of a head number and a sector number, since the device didn't have cylinders.  Perhaps it would be better to remove the whole example, but I would like to see some motivation for PCI.  I think an encyclopedia should have explanations for features, unlike a reference manual that just has to describe them. John Sauter (talk) 15:52, 18 October 2010 (UTC)


 * No IBM DASD prior to the 2305 had a command to search for a sector. You can find a description of the 2303, which is similar to the 2301, in . A typical channel program would be

Set File Mask Seek Search Id Equal TIC *-8 Read Data

The seek involved no mechanical motion, and the division into cylinders was an arbitrary concession to programming convenience. Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:28, 18 October 2010 (UTC)


 * I found the manual for the IBM 2301, at . It appears that the IBM 2301 is a four-bit parallel version of the IBM 2303, with a very similar instruction set.  The 2301 has 200 tracks, each about 4 times the length of the 2303's 800 tracks.


 * Imagine the tracks of an IBM 2301 all formatted for 31 512-byte records. Now consider the following channel program:

Set File Mask for write data and seek cylinder Seek cylinder: select track 0-199 for record 1 Read home address Read R0 Search ID equal record 1 of this track TIC *-8 Read with skip and PCI flags, count is 512 bytes Seek cylinder with PCI flag: select track 0-199 for record 2 Search ID equal record 2 of this track continue as above until the Read with skip for record 31 TIC back to the Seek cylinder for record 1


 * This channel program will place very little burden on the CPU and memory until there is a need to read or write a record. The PCI interrupt can record which record is currently under the read heads, so disk space for a newly-allocated page can be allocated just before the current rotational position of the drum.  Whether or not this is done, there can be 31 queues, one for each record address.  When a read or write operation reaches the head of the queue, its Seek and Search commands are modified to select the correct track, and its Read with Skip command is modified to read or write the particular record.  The PCI interrupt for the following  Seek command will complete the read or write operation and modify the preceeding command to do the next operation in its queue.


 * By using PCI, the drum can be kept constantly busy transferring data when the load is heavy. The latency is reduced from an average of 8.6 milliseconds to effectively 0. When the allocation trick is effective in finding a free record just ahead of the current position, write latency for new pages can be reduced to nearly 0 even under light load.


 * Also, under light load the drum must first find the index mark, then rotate to the position of the record to be read or written. Using this constantly-running channel program there is no need to find the index mark before searching for the needed record, so on average you save half a rotation time per record, or 8.6 milliseconds.  John Sauter (talk) 16:25, 19 October 2010 (UTC)


 * There are multiple issues with that channel program, the most important of which was that a selector channel was far too expensive to tie up that way.


 * Less serious nits:
 * There's no need for a Read Home Address
 * There's no need for more than one seek, and on a device with only one cylinder there's no distinction between seeking a track or a cylinder.
 * A seek specifies a particular track, not a range.
 * There's no need for more than one search; you can chain a Read Data to a Read Count or Read Data.
 * ITYM just after the current record.


 * I would propose one or more of
 * Communications via a 2701, 2702 or 2703
 * Chained scheduling in BSAM and QSAM
 * PCI Fetch in OS/360 MVT


 * The last (PCI Fetch) is hairy enough that I'd mention it without going into details.


 * Note that with the block multiplex channel, and especially with the introduction of the Suspend facility and the Resume I/O instruction, MVS/SP was able to make effctive use of a Seldom Ending Channel Program (SECP) for paging without tying up the channel. That's something to mention with S/370 architecture, but not S/360. Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:28, 19 October 2010 (UTC)


 * I was assuming that the selector channel had only the IBM 2820 attached, because performance was very important to the application. Paging for a time-sharing system would be a good example.  Alternatively, if an infrequently-used controller was also attached to the selector channel, the 2820 loop could be stopped while the selector channel communicated with the other device.  I put a seek before each search because in general you would select a different head for each record position.  Although the 2301 does not really have cylinders, the 2820 pretends it does by grouping tracks together, hence the need to seek by cylinders, even though the command just selects the heads.  When I wrote &ldquo;select track 0-199&rdquo; I meant that the command should select a particular track, and that the range of valid track numbers is 0 to 199.  I performed the extra search because of the intervening Seek command.


 * I did intend to say that a newly-created record could be allocated just after the current rotational position. Also, looking at the channel program again, I see that the first Seek should have the PCI flag, since it marks the beginning of the interval between record 31 and record 0.


 * I was disappointed to note that neither the IBM 2841 manual nor the IBM 2820 manual contained any examples of using PCI. Perhaps my attempt to create an example, based on stories I heard about the IBM System/360 model 67 at Stanford, are far-fetched.  I don't know anything about how the telecommunication devices were programmed; perhaps, as you suggest, they would be a better source of an example to motivate PCI. John Sauter (talk) 19:42, 19 October 2010 (UTC)


 * The 2301 was rather small; I would not expect an installation to have only one, so a dedicated channel is unlikely.


 * A single seek is all you need as long as either all searches are on the same track or you use multi-track commands for consecutive records.


 * I wouldn't expect programming examples in a hardware manual, nor would I trust them if they were there.


 * The best example that I can think of to explain in detail would be chained scheduling, because I know that I still have the documentation. If I still have my BTAM and QTAM logic manuals then I might reconsider. Shmuel (Seymour J.) Metz Username:Chatul (talk) 21:33, 19 October 2010 (UTC)


 * If you are only using the 2301 for paging, and your computer has 1 MiB of core, the 4 MB 2301 would probably be enough. If you are using more pages than that you would probably be thrashing even with two 2301s on two selector channels.


 * I envisioned the channel program as changing heads between records, so at each record time there would be a good chance of a record you wanted to process being under the active heads. If you can only change tracks at the index point, reading or writing a large number of randomly-chosen records will take many more revolutions.


 * The IBM 2841 and 2820 manuals do contain programming examples, but unfortunately none involve using the PCI flag.


 * I agree that a telecommunications example of PCI would be better than this paging example. John Sauter (talk) 22:06, 19 October 2010 (UTC)

&ldquo;not part of the architecture&rdquo;
I think we have a terminology problem when we describe something that is &ldquo;not part of the architecture&rdquo;. The title of the article is IBM System/360 Architecture. so why do we describe features that are not part of the architecture? My answer is that the architecture is not limited to what IBM described in the Principles of Operations manual, but includes everything shipped under the name System/360 except the model 20. It is, of course, valuable to note model-dependent differences, but I think it would be less confusing to say that a feature is not part of the formal architecture definition. John Sauter (talk) 22:19, 22 October 2010 (UTC)


 * The term architecture refers to a formal description intended to promote interoperability. Even when the architecture documents certain features as optional, it specifies that their behaviors, when installed, be compatible among different models. Non-architected features such as extended channels and emulator features have incompatible technical details on different processors. Shmuel (Seymour J.) Metz Username:Chatul (talk) 10:15, 25 October 2010 (UTC)


 * In that case there should be an introductory paragraph at the beginning of the article explaining this, and noting that some &ldquo;non-architected&rdquo; features are described in the article because they are notable even though not part of the architecture. John Sauter (talk) 14:01, 25 October 2010 (UTC)


 * Does my last update address your concerns? I'm considering deuserfying the article once I've filled in the operator controls. Shmuel (Seymour J.) Metz Username:Chatul (talk) 21:46, 25 October 2010 (UTC)


 * Yes, that introduction captures the point very well, I think. John Sauter (talk) 22:30, 25 October 2010 (UTC)

part 1
I've been thinking that there should be a paragraph or two at the front of the article that motivates the idea of having an architecture at all. I'm not sure I've got all of my facts straight, but here's what I've been thinking about:


 * In the late 1950s and early 1960s, IBM had four incompatible computer systems to address four segments of the computer market: small commercial customers (the 1400-series), large commercial customers (the IBM 7080), scientific calculations (the 7090-series) and the top of the scientific market (the IBM 7030). This was considered inefficient, for several reasons: (1) peripherals and operating system software needed to be developed differently for each market, (2) customers who wanted to do both commercial and scientific calculation had to buy two systems, with the possibility that the scientific machine might not be from IBM, and (3) small customers who grew unto large customers had to discard their old programs and write new ones, which also opened the door to non-IBM solutions.  To solve these problems IBM introduced a series of program-compatible and I/O-compatible computers, from small to large, and with options for commercial processing, scientific processing, or both.  The IBM System/360 was &ldquo;a full circle of computing&rdquo;.


 * The small models were the 8-bit 360/30, the 16-bit 360/40 and the 32-bit 360/50. They were intended as a growth path for commercial users.  The large models were the 64-bit 360/65 and 360/75, which were intended for scientific users, though they provided a growth path for commercial users who had outgrown the 360/50.  To keep the top end of the scientific market, IBM also delivered the 360/91, 360/95 and 360/195.  The 360/44 was an attempt to break into the small scientific market, and the 360/67 was aimed at the time-sharing market. John Sauter (talk) 22:53, 25 October 2010 (UTC)


 * Don't forget the 7070, plus the various follow-ons: 1410, 7010, 7040, 7044, 7072, 7074, 7094, 7094 II.


 * The various 7000 series lines did share peripherals. The only exception that I'm aware of is the unit record equipment on the 709x line.


 * To some extent the 707x line addressed both the large commercial and medium scientific markets.


 * Don't confuse the architecture with the implementations. The address, data and instruction sizes visible to the programmer were the same on all models, regardless of the internal buses used.


 * The text that you wrote reads more like an introduction to the S/360 than an introduction to the concept of architecture. I suggest adding it to the main article, and writing a different architecture lead-in addressing the issues of interoperability and portability. The programming differences among the 1401, 1440 and 1460, or between the 7040/7044 and the 7090/7094, might serve as a examples of what a formal architecture specification is intended to prevent. The lead-in should include a link to Computer architecture. Shmuel (Seymour J.) Metz Username:Chatul (talk) 09:43, 26 October 2010 (UTC)


 * I mentioned the size of the internal buses to distinguish the models&mdash;it is shorthand for &ldquo;cheap and slow&rdquo; up to &ldquo;expensive and fast&rdquo;. The predecessors to the IBM 360 involved program-compatible and I/O device compatible lines of computers.  The IBM 7090 was close to compatible with the 709, and it with the 704.  The IBM 7094 was very closely compatible with the 7090, as was the 7094 II.  These, however, were successive machines, each an improvement over its predecessor, and with previous machine compatibility as a selling point.  The IBM 360, by contrast, was a set of simultaneous machines, directed at different parts of the computer market but nevertheless program and I/O compatible.  It was a novel extension of the compatibility concept.  I would like to find a way to convey that new idea. John Sauter (talk) 14:50, 26 October 2010 (UTC)


 * Why not say slower and faster if that was what you meant? Also, the original lineup was somewhat different from what actually shipped, e.g., the 60, 62, 90 and 92 disappeared and replacement models shipped.


 * the 7044 and 7094 were successors to the 7090 and 7094, but they were very much not compatible.


 * GE introduced the 625 and 635 concurrently, so the idea isn't new by the time the System/360 came along. What was new was publishing a formal architecture document and making it available to the general public. Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:06, 26 October 2010 (UTC)


 * On peripherals, I oversimplified. The lineup for the 7000 series was


 * Card and print units derived from old EAM equipment, effectively dead because an offline 1401 was more cost effective. Used on 7070, 7080 and 7090.
 * Console on the 7070, derived from 024 and not much used.
 * 7300 disk drive, based on the 355 and killed by the 1301.
 * 729 tape drives, common to all processors except the 7072, which used the cheap 7330.
 * Card and print equipment from the 1401, used on the 1410, 7010, 7040 and 7044.
 * 1301 and 1302 disk drives, used by the 1410, 7010, 707x, 704x, 7080 and 709x.
 * HyperTape®, used by the 1410, 7010, 707x, 704x, 7080 and 709x. Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:06, 26 October 2010 (UTC)


 * I agree that slower and faster would be better. I didn't mention the models 60, 62, 70 and 92 because they were never shipped.  I think it is better to forget them, and just write about real computers.  Even IBM has forgotten the models 64 and 66.


 * I don't think the GE 600 series qualifies as an architecture with several concurrent implementations, because the various machines differed only slightly according to the Wikipedia article: GE-600 series. By contrast, the System/360 models 30, 40, 50 and 65 were completely independent implementations.  Even the 360/65 and 360/67 differed more than the GE 600-series.  Eventually the rest of the industry did follow IBM's lead; DEC had several concurrent implementations of the PDP-11 and VAX, for example.


 * I don't know much about the peripherals used in the early 1960s, except for the IBM 7090 and 1401. As I recall, the IBM 1301 could be attached to both an IBM 7090 and an IBM 1401, but the attachment was not directly to the data channels but through the IBM 7631 file control, which appears to have been the direct ancestor of the IBM 2841.  It had a Sense command, and 8-bit mode.  At Stanford we interfaced our DEC PDP-1 to it, using a modified DEC 131 data channel.  I have not been able to find a functional characteristics manual for the IBM 7631, but it wouldn't surprise me if it had options for IBM 1400-series attachment and options for IBM 7090 attachment, using the 7909 channel.  By contrast, the IBM 2841, which also supported the IBM 1301, only had one kind of channel attachment, thanks to the standardization of the I/O bus protocol. John Sauter (talk) 20:13, 26 October 2010 (UTC)


 * You could attach a 1311 to a 1401, but not a 1301. You could attach a 1301 to a 1410. The channel attachment to the 7631 was the same for the 704x, 707x, 7080 and 709x. AFAIK the 1301 was not supported on a S/360, although the 2302 was based on it.


 * I'll check when I get home whether I have a manual specifically for the 7631, but I definitely have the programming information for the 1301. Also, http://bitsavers.org/pdf/ibm/7090/A22-6785_1301_1302_on_709x.pdf is available online. Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:51, 26 October 2010 (UTC)


 * Thank you for the IBM 7090 manual. It confirms my suspicion that the IBM 7631 had separate options for communicating with the 7000-series and the 1400-series, though the options were characterized as different models of the 7631.  I was wrong about the IBM 2841 supporting the 1301, but it did, as you said, support the 2302, which looks very similar. John Sauter (talk) 04:04, 27 October 2010 (UTC)


 * I'm pretty sure that the 7010 attaches to the 1410 version of the 7631.


 * The 2302 is based on the 1302, which in turn is based on the 1301. The major difference is that while the 1301 and 1302 had format tracks on every cylinder, the 2302 used self formatting CKD records. Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:04, 27 October 2010 (UTC)


 * I think the IBM 7010 could be regarded as the follow-on to the IBM 1410, rather than a member of the 7000-series. The IBM 7631 uses the same interface to attach to both, whereas a different interface is used to attach to the IBM 7090 and similar machines. 18:27, 27 October 2010 (UTC)

part 2
So where does this leave us on the question of a motivation paragraph? It appears that IBM was supporting two incompatible lines in the early 1960s: a commercial line which included the 1401, 1410 and 7010; and a scientific line which included the 7090, 7094 and 7094 II. There was also a supercomputer, the IBM 7030, which was incompatible with both. The IBM 360 unified these three lines into one, with multiple implementations to satisfy different markets: the models 30-50 to replace the 1401, 1410 and 7010; the models 65 and 75 to replace the 7090, 7094 and 7094 II, and the model 91 and its successors to replace the 7030. In addition the model 44 was introduced to address the low-end scientific market, and the model 67 for the time-sharing market. How does that sound? John Sauter (talk) 18:37, 27 October 2010 (UTC)


 * I'd suggest a Wikilink to Computer architecture as motivation, possibly with some text to tie IBM's situation into the general issue.


 * IBM had a lot more than 2 incompatible lines.
 * 1401 related
 * 1401, 1440 and 1460 were very similar but had programming differences
 * 1410 and 7010 were compatible with each other and had a 1401 comparability mode to accommodate, e.g., the difference in address size
 * 7030 Stretch was a large scientific computer that was withdrawn except for those who had put in early orders.
 * 7070, 7072 and 7074 were decimal computers with floating point; the 7070 and 7074 were used for both commercial and scientific applications, while the 7072 was strictly for scientific applications, due to the slow 7330 tape drives.
 * 704 related
 * 7040 and 7044 were compatible with each other and intended as low cost alternatives to the 7090 and 7094; they shared many instructions but were significantly different.
 * 7090, 7094 and 7094 II were the top of the line for scientific computing unless you ordered a Stretch before the cutoff
 * 7080 was a character-oriented decimal computer of importance mostly to those who had migrated from a 705.


 * I make that 5-7 incompatible lines, depending on whether you count the 704x as separate from the 709x and whether you count the 1401/1440/1460 as separate from the 1410/7010. The split between commercial and scientific would be


 * Commercial
 * 14xx and 7010
 * 707x
 * 7080


 * Scientific
 * 7030
 * 704x
 * 707x
 * 709x


 * I'd say that the 360/65 was the natural replacement for the 707x and 7080 as well as the 709x, that the 360/50 and 360/65 were the natural replacements for the 7040 and 7044, and that the 360/91 was too slow to replace the 7030. But most of this material belongs in IBM System/360, not here, unless they are merged, which would be my preference. Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:01, 28 October 2010 (UTC)


 * I think your summary of IBM's many incompatible computer lines makes a wonderful motivation for replacing them all by a single program- and I/O interface-compatible line. What I am not sure of is how to say it in the context of an article without providing too much detail.  IBM's problem was the diversity, and how can you convey that concisely? Perhaps a footnote?  Perhaps just leaving it on the discussion page and summarizing it in the article?  John Sauter (talk) 22:04, 28 October 2010 (UTC)


 * My recommendation would be to add a wikilink to IBM System/360 and put the detail there. If That makes it oto large, perhaps split out the history into a separate article. I'd discuss the latter on talk:IBM System/360 before doing it. Shmuel (Seymour J.) Metz Username:Chatul (talk) 09:26, 29 October 2010 (UTC)

Final changes?
Before I deuserfy the article, there are a couple of issues that I'd like to raise.


 * 1) While the rest of PoOps talks about 6 being the highest channel number, there was an update in 1970 that described using the Channel 6 mask as a summary mask for the remaining channels. I've reworded the footnote for the mask, but there might be other changes that you want to make to reflect that.
 * 2) There's a stylistic question of italic versus bold for section lead-ins.
 * 3) I'm not sure whether to describe the load switches for the 360/67-2.

Tentatively I plan to move the article next week. Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:11, 5 November 2010 (UTC)


 * The version of Principles of Operations that we reference doesn't seem to have the note about the channel 6 mask applying to all channel numbers over 5, even though the 360/195 did that. I do think we should regard the channel 6 mask that way, but if there is documentation for it beyond the 360/195 manual, it would be nice to reference it.  I haven't been able to follow note 17, which bears on this subject.  Does it have a typo, or just refer to a different version of the document?


 * Part of my revision was to update the citation: revised by  and ; I believe that the descriptions of summary masking and of the block multiplexer channel were added by GN22-0361. Shmuel (Seymour J.) Metz Username:Chatul (talk) 00:15, 7 November 2010 (UTC)


 * I am disappointed that there is no URL for GN22-0361. John Sauter (talk) 02:56, 7 November 2010 (UTC)


 * I don't have an opinion on the italic versus bold stylistic question, but I have been thinking about a different stylistic question. I tend to write about System/360 in the past tense, since all of the machines are out of service.  However, it could be argued that the architecture of System/360 is eternal, like a mathematical equation. We use present tense for mathematical truths, such as &ldquo;two plus two is four&rdquo;, so perhaps we should use the present tense for the architecture of System/360.  In any event, I think we should be consistent.


 * I would love to see the load switches for the 360/67-2 described; I have no idea what they looked like.


 * Did you check ? Shmuel (Seymour J.) Metz Username:Chatul (talk) 00:15, 7 November 2010 (UTC)


 * In the big portrait near the front the load switches are too small to make out. In the system panel diagram it appears that the only addition to the standard configuration is the addition of the prefix selection switch.  I expected to see the left dial include channels 8 to 15&mdash;without them how to you IPL from a disk on a high-numbered channel?  Looking at the 360/195 manual, I see the standard diagram, but the text states that positions 7 through D of the left dial are used with the extended channel feature.  That says to me that the left load unit rotary dial is marked differently in a 360/195 with extended channels.  I wonder if the same was true of the 360/67-2 with two 2846 components? John Sauter (talk) 03:13, 7 November 2010 (UTC)


 * My guess is that there is a separate dial for channel controller. Did you check the text or only the picture? Shmuel (Seymour J.) Metz Username:Chatul (talk) 11:25, 7 November 2010 (UTC)


 * I can't make out the rotary dials in the &ldquo;portrait&rdquo; on page 4. The text (page 9) says that the channel controllers can be re-numbered from the configuration control panel, and that only the one numbered 0 can be accessed in standard PSW mode.  Perhaps the system reset part of IPL places the computer in standard PSW mode, so the load function can address only channel controller 0.  If you want to IPL from a device on channel controller 1, you must flip a switch on the configuration control panel to make it channel controller 0.  That sounds pretty clumsy.  The diagram on page 41 shows only three dials, and the leftmost goes only up to 7.  However, the text in the 360/195 manual stated that all the channels could be selected by the left dial, so perhaps the same was true of the 360/67-2. John Sauter (talk) 13:06, 7 November 2010 (UTC)


 * Devices 800-FFF would be on channel controller 1, so the text on p. 9 that you cited would seem to rule them out. The 360/195 was not offered in an MP configuration and did not use MP channel controllers, so all channels are treated the same for addressing purposes. Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:04, 7 November 2010 (UTC)


 * I think the article is ready for deuserfitication. John Sauter (talk) 02:41, 6 November 2010 (UTC)

Next steps and assessment request
What a great amount of work has gone into this already!

I can offer a starting point for some next steps.

While the article's statements are straightforward and factual, the lack of citations throughout gives the appearance of plagiarism or copyright violation. (To be clear: I did not examine the sources, and do not allege either.) I see the level of detail was discussed in a been discussed in this thread above. Every fact in the article needs to be verifiable in reliable sources. The citations should indicate where to look. I see there are a number of citations, but other sections contain none.

The PoOps links confuse me. Do those refer to one of the citations?

The article contains many tiny sections, some of which may be better presented in list format. A formatting option that may be helpful is:
 * Significance exception
 * Recognized when the fraction in a floating-point add or subtract operation is zero

which displays like this:
 * Significance exception
 * Recognized when the fraction in a floating-point add or subtract operation is zero

To continue to improve the article, I think reviewing these may be helpful:
 * Citing sources and Verifiability
 * Manual of Style (layout)
 * Manual of Style (lead section)

I assessed the article start-class based on concerns about referencing, many tiny sections, and a problem with the lead. I'm happy to continue to help as best I can. I also posted a message on the main IBM System/360 talk page. Good luck as you proceed! --Pnm (talk) 18:59, 16 December 2010 (UTC)


 * The PoOps citations were intended to be page number citations in, which has . I'll have to investigate why PoOps isn't working.


 * Regarding interrupts, I wanted anchors for each of those so that I could link to them from other articles.


 * If you have time, please take a look at the discussion of my merge proposal at . Any major changes to the lead-in would best be done after there is a consensus on the merge. Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:32, 16 December 2010 (UTC)


 * I edited the above post to move it out of the middle of mine. (This is OK to do when responding to reaaaally long posts, but in this case it's confusing.)


 * I fixed one instance of the PoOps problem in . If that makes sense, feel free to fix the rest – or I will if you'd rather not.


 * Regarding anchors, you can accomplish that without sections by doing this:

<a name="int_exp_overflow"/>


 * Regarding the merge proposal: I've done so in the other thread. --Pnm (talk) 23:17, 16 December 2010 (UTC)


 * Normally I use ; the reason that I used PoOps was to avoid the back links; I had so many citations of A22-6821-7 (PoOps) that the back links made the footnote look cluttered. I'll try <a href="#PoOps#>PoOps</a> and see whether that works. Do you have an alternative suggestion for generating the link without a back link? Thanks. Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:10, 17 December 2010 (UTC)


 * I tried using <a href="#PoOps">Principles of Operation</a> and it rendered as a literal instead of as an anchor tag. What am I doing wrong? Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:29, 17 December 2010 (UTC)
 * <a> tags don't work. You want . / ƒETCH  COMMS  /  22:15, 17 December 2010 (UTC)
 * It turns out that I had a typo; when I fixed it my PoOps worked as intended. Shmuel (Seymour J.) Metz Username:Chatul (talk) 01:05, 19 December 2010 (UTC)
 * It's OK to have a lot of footnotes, anyway. / ƒETCH COMMS  /  22:21, 17 December 2010 (UTC)
 * The issue was a large number of references to the same footnote leading to a massive list of back links. Shmuel (Seymour J.) Metz Username:Chatul (talk) 01:05, 19 December 2010 (UTC)
 * While 100 backlinks obviously aren't helpful, as far as I can tell they don't cause a problem. Citations produced with &lt;ref&gt; have the advantage of being very clear and understandable to readers and editors. --Pnm (talk) 03:02, 19 December 2010 (UTC)
 * My thinking was that having backlinks to main sections would be usefull, and that that utility would be destroyed by having too many back links. If I keep things this way then I probably should mention it in the article lead-in. Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:33, 19 December 2010 (UTC)
 * Is IBM System/360 architecture the only section that has too many subsections? Shmuel (Seymour J.) Metz Username:Chatul (talk) 01:05, 19 December 2010 (UTC)
 * I think each section having many entries of the same type (data formats, program interrupt, channel status, unit status, and operator controls) would be more concise and clear in the format I suggested above. --Pnm (talk) 03:02, 19 December 2010 (UTC)
 * Most of those sections have a wikitable giving a format or a breakdown of codes, followed by narrative subsections. How about moving the narrative subsections into the appropriate cless in the table, with tags? Would that preserve the navigation links in Contents at the beginning of the article? Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:33, 19 December 2010 (UTC)
 * Removing the subsections will remove them from the contents. That will help – the contents is difficult to use because it's so long. --Pnm (talk) 02:24, 21 December 2010 (UTC)

Reason for reversion of good faith edit
I reinstated the text ''This article describes I/O from the CPU perspective. It does not discuss the channel cable or connectors, but there is a summary elsewhere and details can be found in the IBM literature .'' for two reasons.


 * The primary reason for the sentence was to explain that the articles does not contain details that might be expected based on the title.
 * The revision that I reverted had dropped one of the two citations. Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:05, 19 December 2010 (UTC)


 * I had removed the sentence because it sounds unencyclopedic to write about this and other articles. If the article should contain details which it doesn't, it would be better to use expand section until a summary is written. If the article doesn't need the details, it would sound more natural to use a hatnote that refers to the other section (or simple prose with a wikilink). I think the IBM reference should be provided at the target page instead. --Pnm (talk) 18:06, 19 December 2010 (UTC)


 * An article in an encyclopedia may include text in its lead-in to clarify its scope.


 * There is no article on the electrical and mechanical architecture of S/360 I/O channels, although there is a FIPS standard for them. If someone wants to write such an article I'll be happy to link to it. Shmuel (Seymour J.) Metz Username:Chatul (talk) 23:07, 19 December 2010 (UTC)

Lead-in
Writing better articles states ''The article should begin with a short declarative sentence, answering two questions for the nonspecialist reader: "What (or who) is the subject?" and "Why is this subject notable?"''; however, Writing better articles presents examples of first sentences that do not answer the second question. Is it legitimate to address notability in a separate sentence, as those examples appear to imply?

I'm thinking about what the lead-in paragraph should be if the article is not merged into the main article. How does this look?


 * The IBM System/360 architecture is a formal specification of the IBM System/360, applicable to all models, independent of implementation. It forms the basis for the architectures of subsequent IBM mainframes from the IBM System/370 through the current IBM System z. This article covers the architecture from the perspective of the CPU and the programmer; electrical and mechanical details can be found in the literature
 * Some deviations from the architecture were notable because they served as prototypes for features of the S/370 architecture or because of their importance in scientific computing; these are included in some of the reference charts with footnotes that they are not part of the architecture.
 * IBM documented the processor and I/O architecture of the S/360 in manuals that apply to all models of the System/360 with the exception of the 360/20 and the 360/44 . Some models have features beyond those specified in the architecture, e.g., emulation instructions, paging. Finally, some models have minor deviations from the architecture..
 * The architecture of the System/360 is independent of its implementation on any specific processor, and includes the following elements.

If the above look good then I'll replace the existing lead-in. Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:12, 20 December 2010 (UTC)


 * To improve on what you have:
 * Make sure the lead summarizes the article.
 * It doesn't need so much detail as the NB's provide – save that for the body.
 * You don't need to provide citations to claims in the lead that are substantiated in the article.
 * I question whether saying "this article" is good style for Wikipedia articles. --Pnm (talk) 01:11, 21 December 2010 (UTC)


 * Two clarification questions:
 * What does "some deviations from the architecture" refer to?
 * What does "the architecture is independent of its implementation on any specific processor" mean? --Pnm (talk) 01:11, 21 December 2010 (UTC)


 * Some of the notes don't really fit in with the body.


 * Manual of Style (lead section) does say editors should balance the desire to avoid redundant citations in the lead with the desire to aid readers in locating sources for challengeable material. The question is whether I've struck the right balance.


 * Can you suggest alternative wording for describing the scope of the article?


 * some deviations from the architecture primarily refers to paging.


 * the architecture is independent of its implementation on any specific processor means that the architecture specifies behavior as observed by the programmer rather than the hardware used to achieve that behavior. Most models of the S/360 had microcode in read-only storage (ROS) to simulate the S/360 instruction set and, for the low end models, to implement the I/O channels. The larger models had hard wired instructions. Programs ran the same regardless of how the instructions and channels were implemented.


 * Should I add a wikilink to Shmuel (Seymour J.) Metz Username:Chatul (talk) 12:02, 21 December 2010 (UTC)

Merge of Load Program Status Word instruction complete
✅ I did the merge from the Load Program Status Word instruction article. Jeff Ogden (talk) 17:39, 14 June 2011 (UTC)

Interrupt versus Interruption
The article uses the words "interrupt" and "interrupt" interchangeably. As a matter of style, should we use only one of the words? Alternatively, should we discern a subtle difference between them, and use them in accordance with that difference? Perhaps Interrupt is the verb and Interruption is the noun? John Sauter (talk) 18:33, 1 September 2011 (UTC)


 * What is the difference between "interrupt" and "interrupt"? Sam Tomato (talk) 05:28, 16 December 2014 (UTC)

I have converted the word &ldquo;interrupt&rdquo; to &ldquo;interruption&rdquo; whenever it was used as a noun. This makes the style consistent within the article, and reflects the usage in Principles of Operation. The label on the Interrupt key, is, of course, unchanged. John Sauter (talk) 13:46, 7 September 2011 (UTC)


 * "System Interruption" sounds awful as used for the section title. It has been about 43 years (yes 43, I was a teenager then) since I read the POPS but I really doubt it says "System Interruption" in that context. Sam Tomato (talk) 05:28, 16 December 2014 (UTC)


 * I'm putting this in as a reply to your comments, but some of the points apply to the original question.
 * interruption is only a noun while interrupt can be either a noun or a verb.
 * As nouns, interrupt and interruption are synonymous.
 * While I don't agree that interruption sounds terrible, the usage should be consistent with the vendor documentation, e.g., Principles of Operation.

Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:00, 17 December 2014 (UTC)

Recent edit by User:Gsyhiap
The phrase Interruptions from More than Seven Channels is a section name in the cited manual, not a descriptive term. As such, it should have remained inside the  <sup  tags. Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:55, 6 August 2013 (UTC)

Capture ranges
To clarify my recent edit, any control unit that attaches multiple devices will have an address capture range on the channel, regardless of the channel type. Some examples of multi-device controllers on a byte multiplexor channel are

Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:46, 8 March 2015 (UTC)
 * 2701, 2702 and 2703
 * 2821

Example code
Could someone provide a simple example of S/360 assembler code, similar to the "Example code" sections for other CPUs (e.g., MOSTEK 6502, Z80, i8086, MC68000 etc.)? A simple subroutine that implements a strlower function would suffice to show simple looping, comparisons, and register/memory operations. A more complex example (e.g., a floating-point matrix multiplication subroutine) would also be fine, but the concern is to keep the code fairly short, since the whole point is to illustrate what typical S/360 assembler code looks like in a short space (20~40 source lines) space. — Loadmaster (talk) 22:34, 12 May 2016 (UTC)

Architecture is more than the instruction set
The System/360 architecture covers far more than just the instruction set. It covers, e.g., the interrupt system, the channel architecture. Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:15, 4 March 2018 (UTC)


 * Yes, an instruction set architecture does cover more than just the instruction set:


 * "An ISA defines everything a machine language programmer needs to know in order to program a computer. What an ISA defines differs between ISAs; in general, ISAs define the supported data types, what state there is (such as the main memory and registers) and their semantics (such as the memory consistency and addressing modes), the instruction set (the set of machine instructions that comprises a computer's machine language), and the input/output model."


 * So what part of the S/360 architecture isn't part of an instruction set architecture? "The input/output model" covers the external interrupts and channels. Guy Harris (talk) 20:33, 4 March 2018 (UTC)


 * It seems that instruction set architecture is likely a subset of computer architecture or at most a synonym - in either case I suggest the current language is preferred either because it is more complete or it is a style choice. Frankly I had never hear of ISA used in this manner although apparently Patterson "Computer Organization and Design" considers them synonyms.  Tom94022 (talk) 00:24, 5 March 2018 (UTC)


 * The computer architecture article explicitly admits to the term having two definitions:


 * "In computer engineering, computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems. Some definitions of architecture define it as describing the capabilities and programming model of a computer but not a particular implementation. In other definitions computer architecture involves instruction set architecture design, microarchitecture design, logic design, and implementation."


 * So if "computer architecture" "[describes] the capabilities and programming model of a computer but not a particular implementation", that would match what the discussion at Talk:Instruction set architecture and Talk:Instruction set architecture seemed to settle on for the meaning of "instruction set architecture", making them synonyms. If "computer architecture" also "involves ... microarchitecture design, logic design, and implementation", it covers more than instruction set architecture does - and more than the architecture described by this page does - so "instruction set architecture" would be a subset of "computer architecture". Guy Harris (talk) 00:38, 5 March 2018 (UTC)


 * "The term “computer architecture” was coined by IBM in 1964 for use with the IBM 360. Amdahl, Blaauw, and Brooks [1994] used the term to refer to the programmer-visible portion of the instruction set." (see Introduction F.1: The IBM 360/370 Architecture. Maybe this helps to answer the questions.--Fabian USA (talk) 00:53, 5 March 2018 (UTC)


 * The question is what is the appropriate term given current usage in the industry, not necessarily what is used in Wikipedia. Patterson's 2005 definition is
 * "instruction set architecture Also called architecture. An abstract interface between the hardware and the lowest level software of a machine that encompasses all the information necessary to write a machine language program that will run correctly, including instructions, registers, memory access, I/O, and so on."


 * which pretty much makes them synonyms. Either way, the I don't think there is anything wrong with the current language but doesn't this suggest that the instruction set architecture and computer architecture articles should be combined.  Tom94022 (talk) 01:30, 5 March 2018 (UTC)
 * My edit.--Fabian USA (talk) 02:40, 5 March 2018 (UTC)


 * That being Hennessy and Patterson's definition of "instruction set architecture", which matches what instruction set architecture says. Their definition of "computer architecture", from the sixth edition of Computer Architecture: A Quantitative Approach, however, is as given in the citation (for the fifth edition), and they also say


 * A few decades ago, the term computer architecture generally referred to only instruction set design. Other aspects of computer design were called implementation, often insinuating that implementation is uninteresting or less challenging.


 * We believe this view is incorrect. The architect's or designer's job is much more than instruction set design, and the technical hurdles in the other aspects of the project are likely more challenging than those encountered in instruction set design.  We'll quickly review instruction set architecture before describing the larger challenges for the computer architect.


 * So that sounds as if they're talking about "computer architecture" in the engineering discipline sense (see my comment below about "computer architecture" the discipline vs. "a computer architecture" the specification), and that's clearly not at all synonymous with "instruction set architecture". "A computer architecture" in the specification sense is either the same as, or a superset of, "an instruction set architecture".


 * Unfortunately, as I also note below, computer architecture uses the term in both senses, although it mostly discusses it in the "engineering discipline" sense. Guy Harris (talk) 21:16, 5 March 2018 (UTC)


 * As an example, the physical connection between the channels and the control units (but not between the control units and the devices) is part of the architecture.


 * BTW, the sentence "An ISA defines everything a machine language programmer needs to know in order to program a computer." in the lede of Instruction set architecture covers far more than anything that any computer designer every intended for the term. E.g., nobody at IBM would consider the CCW opcodes of the various peripheral devices to be part of the architecture, but you certainly need to know them in order to write a program that uses them; you have a similar issue with I/O ports and memory mapped I/O on Intel. Shmuel (Seymour J.) Metz Username:Chatul (talk) 17:14, 5 March 2018 (UTC)


 * So it appears that we have "computer architecture" the engineering discipline, which "involves instruction set architecture design, microarchitecture design, logic design, and implementation." and we have the notion of a "computer architecture" specification or set of specifications, which specify both programmer-visible characteristics (the "instruction set architecture") and peripheral-designer-visible characteristics such as channel and other bus interfaces. It looks as if computer architecture is trying to cover both of those ideas; presumably the S/360 architecture is "a computer architecture" in the latter sense.


 * (I say "set of specifications" because the S/360 Principles of Operation just covers the ISA (and some front panel stuff); the physical channel interface isn't covered there, it's covered in, for example, IBM System/360 I/O Interface Channel to Control Unit Original Equipment Manufacturers' Information.)


 * And, yes, that statement in the instruction set architecture article needs clarification; not only would driver writers need to know about the particular device registers/command codes/etc. for the device for which they're writing a driver, even though that's not part of the ISA, but people writing code to run on a particular OS would need to know the OS APIs, and people writing code to run inside a particular OS would need to know its kernel-level programming interfaces, even though those aren't part of the ISA (in most cases; for example, System/38 and IBM i MI, as an ISA, is an exception). Guy Harris (talk) 19:59, 5 March 2018 (UTC)


 * To add to the fun, some CCW opcodes are part of the architecture and must be recognized by all controllers, while most are specific to certain types of devices and are beyond the purview of the architecture. There are not very many of the first type on the S/360 but somewhat more on z. Shmuel (Seymour J.) Metz Username:Chatul (talk) 20:44, 5 March 2018 (UTC)

Register chart
In the table "IBM S/360 registers" the footnote says "* Note that IBM documentation numbers the bits in reverse order to that shown above, i.e., the most significant (leftmost) bit is designated as bit number 0."

That being so, why not just number the bits left to right (0 to 63) and just drop the note. Peter Flass (talk) 15:27, 7 March 2018 (UTC)


 * I believe the reasoning is that a modern audience is accustomed to seeing bits numbered from right to left starting at 0. That convention started after the IBM System/360 was announced, and has now become universal.  I believe it started with the little-endian PDP-11 in 1970.  John Sauter (talk) 20:31, 7 March 2018 (UTC)


 * ...and is also used in the documentation for the big-endian M68000. Guy Harris (talk) 20:46, 7 March 2018 (UTC)

I've redone the infobox with charts cut from S/370 articles, including the PSW, S/360 bit numbering and a note that IBM documents it that way. Should I also drag in the 360/67 Extended PSW format from Program status word? --Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:01, 11 June 2021 (UTC)
 * There's other M67-only stuff in the article, so you might as well put the extended PSW format in there too. Guy Harris (talk) 19:26, 11 June 2021 (UTC)

Should OS-related material be removed here and added to the relevant OS articles?
I recently did an edit to remove scare quotes from attention table and to add a footnote, and it occurred to me that the sentence really did not belong in an article on software. Should it be added to OS/360 and successors and removed from here? Likewise for any other text relating to software. Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:21, 9 August 2019 (UTC)


 * Given that S/360 could, and did, run several different OSes (including some non-IBM ones), I'd say most OS-related stuff doesn't belong here, other than perhaps short notes giving the way some OS used a particular architectural feature as an example of how to use it. The "attention table"/"attention index" stuff sounds more like "how OS/360 happened to handle attention indications" than "here's how all OSes for S/360 have to handle attention indications", so I don't see it as belonging here. Guy Harris (talk) 16:48, 9 August 2019 (UTC)


 * Agreed this is not the place for specific OS implementation material - should the "attention table"/"attention index" stuff just be truncated or can it be moved? Any other OS stuff needing editing?  Tom94022 (talk) 00:06, 10 August 2019 (UTC)


 * Maybe some of the stuff in the description of "Program-controlled interruption", but an example of how that is used is worth including. Guy Harris (talk) 01:48, 10 August 2019 (UTC)

Style: capitalization of instruction names
The article currently refers to the Execute instruction in all caps. PoOps generally has it in all caps, e.g., "Execute: An EXECUTE instruction", but the heading for the instruction description is "Execute". What style should the article use for this and other instructions? --Shmuel (Seymour J.) Metz Username:Chatul (talk) 11:16, 30 July 2021 (UTC)

In running text EXECUTE is written all-caps. In tables and titles Execute is mixed-case. I recommend we do the same. Also, Principles of Operatons refers to the operand of EXECUTE as its &ldquo;subject instruction&rdquo;&mdash;I think we could do that also. John Sauter (talk) 14:00, 30 July 2021 (UTC)

Which category to link?
As the lede says: The IBM System/360 architecture is the model independent architecture for the entire S/360 line of mainframe computers, including but not limited to the instruction set architecture. (emphasis added) Since "instruction set architecture" is a subset of "computer architecture" it seems if we must have one category link that it should be to the parent category, , which, BTW apparently has been linked since at least 2010. Tom94022 (talk) 18:54, 1 January 2023 (UTC)
 * The intent was for the aricle to include high-level text on the channel architectire, but to relegat low level details to Bus and Tag. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 22:18, 1 January 2023 (UTC)
 * The article also describes the operator controls, which were in the Principles of Operation, with more detail than I'd expect for an abstract description of the machine's architecture (it talks about buttons - "keys" - to be pressed, and rotary dials to select the IPL device). I'd say that definitely goes beyond even a "here's what the I/O instructions cause to happen, including how the channels work" description of an instruction set, taking it into territory well outside the ISA. Guy Harris (talk) 23:10, 1 January 2023 (UTC)

Sorry I didn't make this clear, but insists that there be only one category namely, "Instruction set architectures". Personally, I have no problem with both appearing, but if it has to be one category then IMO it should be "Computer architecture". I opened this talk to prevent what was looking like an edit war. Suggestions/Comments? Tom94022 (talk) 17:47, 2 January 2023 (UTC)
 * If the reason for te insistence that this article not both be in Category:Computer architecture and Category:Instruction set architectures is that the latter is a subcategory of the former, and normally, an article shouldn't be placed in a category and a subcategory of the first category, then this strikes me as a sign that there are, or should be, one or more categories in which some or all of the non-ISA stuff in this article in this article belongs, and those categories should be created if necesssary, and then this article should be put into them. Guy Harris (talk) 19:52, 2 January 2023 (UTC)
 * I don't understand how, e.g., channel status, unit status, pertain to ISA. If you remove then you need multiple categories, some of which don't currently exist, e.g.,.
 * I don't understand how, e.g., channel status, unit status, pertain to ISA. If you remove then you need multiple categories, some of which don't currently exist, e.g.,.

Big-endian versus big-endian
Apparently, some browsers do not treat a cross-reference to Big-endian as a reference to big-endian, so we should make sure that cross references use the same case as the target. There was a notice on this Talk page pointing out this problem. I deleted the notice when I corrected the reference. John Sauter (talk) 19:21, 9 January 2023 (UTC)
 * That's not what Cewbot was complaining about.
 * What it said was:
 * The following web anchors are no longer available.
 * big-endian
 * and what it meant was that the Endianness page no longer has a "Big-endian#with 8-bit atomic element size and 1-byte (octet) address increment" anchor, so that link just goes to the Endianness page.
 * The fix is to just link to big-endian, which redirects to [[endianness].
 * Big-endian and big-endian both work; Wikipedia hugely depends on capitalization not matching here. Guy Harris (talk) 19:32, 9 January 2023 (UTC)
 * Sorry for my incorrect edit, and thank you for fixing the actual problem. 20:45, 9 January 2023 (UTC)
 * The Cewbot messages are not the easiest to figure out. What they show is the triggering wikilink, so the problem is that the page in the link no longer has an anchor with the name given after the page name and "#", and Cewbot couldn't find another anchor that looked enough like it to conclude that the anchor had been renamed.  (Sometimes Cewbot either misses one that is the new name or is overly eager to conclude that it found a new name; links to the OS version entries in the big tables that were in iOS version history, but disappeared when they were hidden due to copyright violation concerns, were "fixed" to point to an entry for a different major release.) Guy Harris (talk) 21:10, 9 January 2023 (UTC)

How to handle S/370 architecture
Currently there is an IBM System/370 article but no corresponding architecture article. One way to deal with that is to expand this article to include S/370, exclusive of S/370-XA and S/370-ESA. The alternatives are to expand the S/370 article, which might make it too big, or to write a separate S/70 architecture article. Which of these seems most reasonable? Shmuel (Seymour J.) Metz Username:Chatul (talk) 05:55, 5 February 2023 (UTC)
 * A lot of the stuff convered here applies all the way to System/390, and even to z/Architecture with the register sizes doubled. There are articles such as x86, which covers everything from 16-bit to 64-bit x86, with IA-32 for 32-bit x86 and x86-64 for 64-bit x86.
 * Perhaps an "IBM System/3x0 architecture" or something such as that can cover the common characteristics (as the equivalent of x86), with separate articles for S/360, S/370, S/370-XA, S/370-ESA, S/390, and z/Architecture, indicating what stuff was added, what stuff was changed and what stuff was dropped. Guy Harris (talk) 09:21, 5 February 2023 (UTC)
 * I like Guy's suggestion, but it seems very ambitious. If the manpower cannot be found to do it, perhaps instead we could have a System/370 architecture page which references the System/360 architecture page and then describes the differences.  John Sauter (talk) 15:23, 5 February 2023 (UTC)

If wiki evers gets a heavy duty markup language I would be willing to craft a single master article with conditional logic and separate articles that invoked the master article with appropriate parameters. Even if I knew that was going to happen in the long run, there's still the issue of how to handle it in the mean time. Should we have a chain of architecture articles where each references the article for the latest predecessor, or should they all reference the S/360 article. At first glance, I would go for downward referencing z, ESA (combining 370 and 390), XA and S/370 architecture articles. And, yes, manpower is an issue. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:11, 5 February 2023 (UTC)
 * How about one article along the lines of Case Study: IBM'5 SYSTEM/360-370 ARCHITECTURE? Tom94022 (talk) 23:35, 5 February 2023 (UTC)
 * That's an interview; I'm not sure how that would translate to an article.
 * x86 is an example of an article about an ISA that's been through a number of revisions, including two size-doublings (16-bit -> IA-32 -> x86-64) and two changes of memory management unit styles (nothing -> segmentation in the 80286 -> segments inside a paged address space in the 80386; there's some stub segmentation in 64-bit mode). DEC Alpha has the base instruction set and several extensions.  ARM architecture family had one thing S/3x0 did, namely expanding the addressing (26 bits to 32 bits) without a size change; the page is a bit of a mess because the ARM architecture family is a bit of a mess, with the original 32-bit ARM ISA, the compressed Thumb, the followon compressed Thumb-2, and the 64-bit ARM ISA, which not only doubles the number of registers, as x86 did when it went 64-bit, but also removes predication for most (if not all) non-branch instructions, in addition to three "profiles" - for "A"pplications, "Real-time", and "M"icrocontroller - and a bunch of extensions.  Those might offer some patterns for an S/3x0 page. Guy Harris (talk) 00:35, 6 February 2023 (UTC)
 * If nothing else, that probably should be in See also for the current article. Should the cite conference be https://share.confex.com/share/117/webprogram/Session9220.html or https://share.confex.com/share/117/webprogram/Handout/Session9220/IBM%20zArchitecture%20CPU%20History.pdf?
 * "That" being the "Evolution of The IBM Mainframe Architecture" presentation, not the "case study" interview, presumably, and "See also" presumably being "External links", as "See also" is for other Wikipedia pages.
 * Either one would probbly work, as the second has the contents, but the first links to it. I'd be inclined to point directly to the PDF. Guy Harris (talk) 05:38, 8 February 2023 (UTC)
 * I've added to further reading. The handout name links to the PDF; there is no PDF of the actual session. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:25, 8 February 2023 (UTC)
 * I've added to further reading. The handout name links to the PDF; there is no PDF of the actual session. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 15:25, 8 February 2023 (UTC)

Those pages are for microprocessor ISAs, which means what they have for I/O is a "minicomputer I/O" design, with one or more of I/O port instructions and memory-mapped I/O addresses, rather than a full channel I/O system as on S/3x0. They also are processors, not systems, so they don't have operator control functions specified in the architecture, as S/3x0 does all the way up to the lastest z/Architecture Principles of Operation. Those pages don't have any examples that would help there.

Most of, , , , and can cover everything up to z/Architecture, with the doubling of GPR sizes mentioned for z/Architecture and the addition of IEEE floating point mentioned for S/390 and z/Architecture.

Various parts of would be incorporated into sections of the S/3x0 architecture page.

would be expanded for BC and EC mode.

Another section might cover 24-bit real addressing, 24-bit virtual addressing, 31-bit addressing, 64-bit addressing, and multiple address spaces. Guy Harris (talk) 02:39, 6 February 2023 (UTC)
 * Are you proposing a horizontal or verticle extension. I.e., which of the are you proposing?
 * {| class="wikitable"
 * {| class="wikitable"

! Horizontal ! Vertical
 * + Horizontal versus vertical article structure
 * 1) Section on S/360 feature 1 (e.g. instruction length)
 * 2) S/370 extension
 * 3) S/370-XA extensions
 * 4) ESA/370 extension
 * 5) ESA/390 extension
 * 6) z/Architecture extension
 * 7) Section on S/360 feature 2
 * 8) S/370 extension
 * 9) S/370-XA extension
 * 10) S/370-ESA extension
 * 11) S/390-ESA extension
 * 12) z/Architecture extension
 * 13) Full S/360 architecture
 * 14) S/370 extensions
 * 15) S/370-XA extensions
 * 16) ESA/370 extensions
 * 17) ESA/390 extensions
 * 18) z/architecture extensions
 * }:Either way I would recommend citing the relevant announcement letters. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 13:00, 6 February 2023 (UTC)
 * Is there a typo in the horizontal section - 1. and 2. are the same. Regardless, I prefer vertical; here is a 2011 reference discussing the architecture differences, Evolution of The IBM Mainframe Architecture. Tom94022 (talk)
 * Not a typo; the text was intended to be generic, but I'll add numbers to make that more obvious. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:59, 6 February 2023 (UTC)
 * Sorry for my confusion; I hope I clarified yr table. Now that I understand and after a bit of thinking, I'm mildly in favor of Horizontal. Tom94022 (talk) 19:23, 6 February 2023 (UTC)
 * I think the horizontal form could be made to work, but I am concerned about the fineness of the features. Instruction length, for example, is so fine-grained that there would be a hundred such features, and with each having a subhead for each subsequent development, I am afraid the page would become hard to read.  I advocate much larger features, such as I/O System.  The channel system can be described for System/360, and then subheads can describe how it evolved since then, with each new device having its own control unit and control units being merged with devices, and finally the modern fibre-based I/O system. John Sauter (talk) 20:38, 6 February 2023 (UTC)
 * Is there a typo in the horizontal section - 1. and 2. are the same. Regardless, I prefer vertical; here is a 2011 reference discussing the architecture differences, Evolution of The IBM Mainframe Architecture. Tom94022 (talk)
 * Not a typo; the text was intended to be generic, but I'll add numbers to make that more obvious. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 18:59, 6 February 2023 (UTC)
 * Sorry for my confusion; I hope I clarified yr table. Now that I understand and after a bit of thinking, I'm mildly in favor of Horizontal. Tom94022 (talk) 19:23, 6 February 2023 (UTC)
 * I think the horizontal form could be made to work, but I am concerned about the fineness of the features. Instruction length, for example, is so fine-grained that there would be a hundred such features, and with each having a subhead for each subsequent development, I am afraid the page would become hard to read.  I advocate much larger features, such as I/O System.  The channel system can be described for System/360, and then subheads can describe how it evolved since then, with each new device having its own control unit and control units being merged with devices, and finally the modern fibre-based I/O system. John Sauter (talk) 20:38, 6 February 2023 (UTC)

The horizontal structure matches what some other ISA pages have, so that was what I had in mind.

Instruction length, by itself, isn't interesting; instruction formats are, and they're used on pages for several RISC architectures (with fixed-length instructions, so an "Instruction length" section would just say "32 bits. Next question?" :-)), such as, , .  x86 doesn't have it, probably because x86 instruction formats are such an expanded-over-time mess. S/360 was fairly simple, and could use such a list of formats with diagrams, but z/Architecture has about 2 1/4 pages of instruction formats, so that probably goes past the point at which showing all formats make sense.  It might be possible to group the formats based on the number of operands and which of them are in registers and which in memory. Guy Harris (talk) 22:04, 6 February 2023 (UTC)
 * Doesn't Greither do a pretty good job with a vertical (chronological) display in his paper? Maybe we should ask him for rights to substantially reproduce the paper in Wikipedia and avoid the OR and excess work that a new horizontal article would entail?  Tom94022 (talk) 18:28, 8 February 2023 (UTC)
 * It's certainly a good source for the associated dates. If you contact him about authorization, you might also try selling him on doing some of the editing. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:38, 10 February 2023 (UTC)
 * It's certainly a good source for the associated dates. If you contact him about authorization, you might also try selling him on doing some of the editing. --Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:38, 10 February 2023 (UTC)