Talk:IBM Basic assembly language and successors: Difference between revisions

Content deleted Content added
Implementing WP:PIQA (Task 26)
 
(33 intermediate revisions by 8 users not shown)
Line 1:
{{WikiProject Computingbanner shell|class=C|
{{WikiProject Computing|importance=Low|software=yes|software-importance=Mid}}
}}
{{refideas
| {{cite book
| title = Assembler Language Programming for IBM System z ™ Servers - Version 2.00
| author = John R. Ehrman
| date = February 2016
| edition = Second
| url = http://148.100.100.35/enterprisesystemseducation/assemblerlanguageresources/Assembler.V2.alntext%20V2.00.pdf
| access-date = September 29, 2023
}}
}}
 
==BAL brings back memories==
Line 100 ⟶ 112:
 
[[User:Jhlister|Jhlister]] ([[User talk:Jhlister|talk]]) <span style="font-size: smaller;" class="autosigned">—Preceding [[Wikipedia:Signatures|undated]] comment added 20:46, 25 August 2012 (UTC)</span><!--Template:Undated--> <!--Autosigned by SineBot-->
:
:A bit late, but the only exceptions I can think of on S/360 are
:* Branches, e.g., BCR
:* Convert to Decimal (CVD)
:* Execute
:* Shift instructions, e.g., SRDL
:* Storage Immediate (SI) instructions, e.g., MVI
:* Translation instructions, e.g., Translate and Test (TRT)
:* Store instructions, e.g., STH
: By the time you get to z there are, of course, more, but it's still the exception. In general, the assembler syntax for any instruction format is the same regardless of the direction of data movement. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 12:11, 31 August 2023 (UTC)
 
== Assembler versions ==
Line 135 ⟶ 157:
== Apples and oranges ==
 
{{ping|‎FishFish|Peter Flass|Gah4|Guy Harris|Mathnerd314159|Rfc1394 }} Recent edits inappropriately renamed the article and conflated several very different assembler. Two edit summaries cited [[WP:PRECISE]], but the moves violated {{tqq|Usually, titles should unambiguously define the topical scope of the article}}.
 
The edit https://en.wikipedia.org/w/index.php?title=Basic_Assembly_Language&oldid=1164874838 introduces errors. E.g., the tables shows Basic Assembler Language as having been written in HLASM, which did not exist at the time, and as running on systems other than BPS/360, which it is not able to do. Absent a compelling reason, I plan to restore the status quo. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 18:27, 11 July 2023 (UTC)
Line 220 ⟶ 242:
::::The references to [[z/OS]] and [[z/VSE]] are just examples of the fact that HLASM allows user-provided libraries and does not dictate the contents of those libraries. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 11:23, 13 July 2023 (UTC)
:Essentially the same is true for anything that allows user-defined libraries: the semantics, and sometimes the syntax, depend on the libraries that the user provides. There is nothing special about, e.g., ''SYS1.MACLIB'', from the perspective of HLASM. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 11:23, 13 July 2023 (UTC)
::"True" in the sense that "there may be two or more libraries, for a given language, where the libraries provide ways of doing some particular thing, but the way you do it with one of those libraries isn't the way you do it with another", but if smething allows user-defined libraries, user-defined libraries could be provided for several different OSes that supprt sequential file access with the same API on all of those different OSes, so you *could*, for example, provide the ability to sequentially write a file with the same code on z/OS and z/VSE, by linking the code, on z/OS, with the z/OS version of the library (which would implement its APIs atop QSAM APIs) and linking the code, on z/VMEVSE, with the z/VMEVSE version of the library (whch owuldwould implement its APIs topatop z/VMEVSE sequential I/O macros).
::But if you want to use the OS's "native" sequential I/O APIs, you'd have to write different code for different OSes, as the APIs in question aren't the same.
::This is similar to, for example, "if you want to write code to write a text file sequentially, using the same C code on multiple OSes, you can use the standard C I/O routines, which would be implemented differently atop OSes that have different APIs for that, but if you want to use the native APIs, you might be able to do that with common code atop Linux/Solaris/macOS/FreeBSD/HP-UX/NetBSD/AIX/V7 UNIX/..., as they're all UN*Xes with the same core APIs for that, but you'd have to change the code a bit on Windows and a lot on VMS or other OSes for which there are C compilers". The difference here is that, as far as I know, HLASM doesn't provide any libraries with OS-independent sequential I/O APIs, whereas the library for a hosted C implementation must provide the standard C I/O routines. [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 21:03, 13 July 2023 (UTC)
Line 229 ⟶ 251:
::::The structured programming macros in the HLA Toolkit do not use OS services; there is a single code base regardless of OS.
::::OT: z/TPX cannot host any compiler; you need a z/OS or Linux system to do builds. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 05:35, 14 July 2023 (UTC)
 
== [[DSECT]] ==
 
 
It occurs to me that there is no article for [[DSECT]]. I wanted to link to it, but there isn't one. Since I don't know where else to ask, I am putting it here. I believe it deserves its own article. I am not sure how it works in DOS/360 and its successors. It would also be interesting to know of other (non-IBM) assemblers with a similar system. I previously asked in [[OS/360_and_successors]], where it was suggested to ask here. [[User:Gah4|Gah4]] ([[User talk:Gah4|talk]]) 01:49, 31 August 2023 (UTC)
 
:I would suggest adding CSECT, DC, DROP, DS, DSECT, EQU and USING under [[Basic Assembly Language#Assembler instructions|#Assembler instructions]].
:This might be a good time to move the article, as previously discussed. Or should it first be listed at [[WP:Requested moves]] for further discussion?. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 12:33, 31 August 2023 (UTC)
::I would say discuss, there certainly has been "past debate about the best title for the page" in the Apples and Oranges section, so by my reading any further renaming would count as a potentially controversial move. Also I don't think any potential titles have actually been put forward and discussed as of yet. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 02:18, 1 September 2023 (UTC)
 
== Requested move 3 September 2023 ==
 
<div class="boilerplate mw-archivedtalk" style="background-color: #efe; margin: 0; padding: 0 10px 0 10px; border: 1px dotted #aaa;"><!-- Template:RM top -->
:''The following is a closed discussion of a [[Wikipedia:Requested moves|requested move]]. <span style="color:red">'''Please do not modify it.'''</span> Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a [[Wikipedia:move review|move review]] after discussing it on the closer's talk page. No further edits should be made to this discussion.''
 
The result of the move request was: '''moved.''' Consensus that the title "Basic Assembly Language" does not accurately describe the article's scope. The improvement in accuracy appears to have been viewed as significant enough to outweigh the reduction in [[WP:CONCISION]]. <small>([[Wikipedia:Requested moves/Closing instructions#Closure by a page mover|closed by non-admin page mover]])</small> [[User:ModernDayTrilobite|ModernDayTrilobite]] ([[User talk:ModernDayTrilobite|talk]] • [[Special:Contributions/ModernDayTrilobite|contribs]]) 14:20, 22 September 2023 (UTC)
----
 
[[:Basic Assembly Language]] → {{no redirect|IBM Basic assembly language and successors}} – The article discusses the entire family of assemblers for the IBM S/360 through z mainframes; only on [[BPS/360]] and [[BOS/360]] was the assembler named BAL. [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 17:10, 3 September 2023 (UTC)
:For context, I had moved the article ''IBM Basic assembly language'' to ''IBM Basic assembly language and successors'' a decade ago in edit [[Special:Permalink/566727959]]; [[user:Mathnerd314159|Mathnerd314159]] moved it to ''Basic Assembly Language'' on 11 July 2023 in edit [[Special:Permalink/1164870417]]. I initiated a discussion at [[Talk:Basic Assembly Language#Apples and oranges]] and am seeking comments from other editors, as well as suggestions for alternate names. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 17:10, 3 September 2023 (UTC)
 
: '''Support''' The title needs to have IBM in it, and the proposed title better describes the article’s subject. [[User:Peter Flass|Peter Flass]] ([[User talk:Peter Flass|talk]]) 18:21, 3 September 2023 (UTC)
 
: '''Support''' The proposed title is more descriptive and has similarity in form to the [[OS/360 and successors]] and [[DOS/360 and successors]] article names. [[User:Wasted Time R|Wasted Time R]] ([[User talk:Wasted Time R|talk]]) 18:26, 3 September 2023 (UTC)
 
: '''Oppose''' The proposed inclusions of "IBM" and "and successors" are wordy and do not follow [[WP:CONCISE]]. The current title is [[WP:PRECISE]] enough to identify its subject. For example, [http://cs.ecs.baylor.edu/~maurer/SieveE/bal.htm] and [https://github.com/mschwartz/assembly-tutorial#introduction] use BAL / Basic Assembly Language as the identifying name, sans IBM. Also note they have capitals for all three letters of BAL, as opposed to Chatul's proposal to drop the capitals for A and L. Regarding "and successors", there are sources such as [http://zseries.marist.edu/enterprisesystemseducation/assemblerlanguageresources/Assembler.V2.alntext%20V2.00.pdf] that state that the successors are also called BAL by some people, so it is superfluous to list a separate phrase for what actually the same thing. Furthermore the listed "OS/360 and successors" and "DOS/360 and successors" are the only use of this scheme in mainstream articles on Wikipedia; the [https://en.wikipedia.org/w/index.php?limit=20&offset=40&profile=default&search=and+successors&title=Special:Search&ns0=1 other uses] are list articles with titles such as "List of rosters for Radclub–Resch & Frisch–EYBL and its successors". I could not find any sources suggesting that the current (HLASM) assembly language is actually a different language; [https://www.ibm.com/docs/en/hla-and-tf/1.6?topic=information-assembler-language-extensions the IBM docs] simply call it "the assembler language supported by High Level Assembler", while mentioning that it is substantially compatible all the way back to the original IBM 360 BAL. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 15:14, 5 September 2023 (UTC)
:: The current title is not [[WP:PRECISE]] enough to identify its subject. Most of the article is about assemblers that are not BAL. The page you cited reads {{quote|The instructions, syntax and coding conventions of the assembler language supported by High Level Assembler include functional extensions to those supported by Assembler H Version 2 and DOS/VSE Assembler. This chapter describes the most important of those extensions, and the language differences between High Level Assembler and the earlier assemblers.}}
::It never mentions BAL or any other version of the assembler earlier than XF. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 18:22, 5 September 2023 (UTC)
:::It does, on page 4 (pdf page 43). The full quote reads:
:::{{blockquote|The level that is our primary concern is usually known as “Assembler Language programming” or“assembler coding”. [Footnote 3: Some people call it “BAL” — meaning “Basic Assembler Language” — but the language is not basic (nor is it BASIC) except in the sense that it can be fundamental to understanding the System z processor's operations.] The assembler we'll describe is the IBM High Level Assembler for z/OS & z/VM & z/VSE, known as “HLASM”. It also can be used on IBM Linux for System z.}}
:::This establishes that "some people" refer to the assembly language accepted by HLASM as Basic Assembler Language. Since the earliest (360) language is BAL, and HLASM processes BAL, one logically concludes that all intermediate assemblers process BAL as well, so the entire article is indeed about BAL. There are no other identifying names for any of these languages, nor alternate meanings of BAL, so BAL as a title is indeed [[WP:precise]] and unambiguous, denoting exactly the scope of the article. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 19:00, 5 September 2023 (UTC)
::::{{tq|the entire article is indeed about BAL}} So are you claiming that {{section link|Basic Assembly Language|Macros and conditional assembly}} is about BAL? It mentions a feature that BAL lacks (and even notes that). [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 20:03, 5 September 2023 (UTC)
::::::Everything in the table in Appendix D (pages 59-61) of [http://www.bitsavers.org/pdf/ibm/360/bos_bps/C20-6503-0_BAL_Feb65.pdf IBM System/360 Basic Programming Support Basic Assembler Language] that the "Basic Programming Support/360: Basic Assembler" column indicates isn't supported would not belong in an article that's solely about the IBM Basic Assembler Language. If any of that stuff is discussed in this article, this article is not solely about the IBM System/360 Basic Programming Support Basic Assembler Language. [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 21:30, 5 September 2023 (UTC)
:::::::Page 6 of IBM System/360 Basic Programming Support Basic Assembler Language states that
:::::::{{blockquote|Programs written in the Basic Assembler Language as described in this publication are acceptable to the other Basic Programming Support, Basic Operating System, and Operating System Assemblers, and the 7090/7094 Support Package Assembler. Similarly, source programs written in these other assembly languages are acceptable to the Basic Assembler if they do not embody any of the features of these assemblers which are unacceptable to the Basic Assembler. Appendix D contains a list of features supported by the System/360 Assemblers and may be used as a guide for the interchangeability of source programs.}}
:::::::so the IBM System/360 Basic Programming Support Basic Assembler Language is an assembler language, programs written in which can be assembled by all of the assemblers in question. The OS/360 Assembler can also assemble programs written in another assembler language with greater capabilities than the IBM System/360 Basic Programming Support Basic Assembler Language, such as 8-character symbol names, a division operator in expressions evaluated at assembly time, and macro instructions. That language is, as per "Programs written in the Basic Assembler Language as described in this publication are acceptable to the other ... and Operating System Assemblers", a proper superset of the IBM System/360 Basic Programming Support Basic Assembler Language.
:::::::Perhaps some people have used "BAL" to refer to assembler languages other than the IBM System/360 Basic Programming Support Basic Assembler Language; if that usage is sufficiently common, perhaps a case can be made for using "BAL" as a term for all S/360 through z/Architecture assembler languages. Unless they've used "Basic Assembler Language" in that sense, rather than in the specific sense of the IBM System/360 Basic Programming Support Basic Assembler Language, a similar case for "Basic Assembler Language" would not work. [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 21:58, 5 September 2023 (UTC)
::::::::I'm one [[User:Peter Flass|Peter Flass]] ([[User talk:Peter Flass|talk]]) 23:55, 5 September 2023 (UTC)
:::::::::"BAL" (which might have become a generic term divorced from its use as an initialism for "Basic Assembler Language"), or "Basic Assembler Language"? [[User:Guy Harris|Guy Harris]] ([[User talk:Guy Harris|talk]]) 02:14, 6 September 2023 (UTC)
:::::It's a reasonable point, but alas it is unsourced. I've updated that section with Guy Harris's source and it no longer mentions BAL. [[User:Mathnerd314159|Mathnerd314159]] ([[User talk:Mathnerd314159|talk]]) 05:27, 6 September 2023 (UTC)
::::::
::::::Might be, but I never heard it in the OS/360 or OS/VS2 days. I never used DOS/360 or DOS/VSE. It might be that I never knew anyone who did. Did enough people call it that to make it the [[WP:COMMONNAME]]? My guess is no, but I haven't asked so many people. [[User:Gah4|Gah4]] ([[User talk:Gah4|talk]]) 11:22, 6 September 2023 (UTC)
:::::::
:::::::It was used in some shops, some textbooks, some news articles, but I wouldn't say it was the common name. Doing an ACM Digital Library search, IBM AND ("basic assembly language" OR "basic assembler language") has 28 hits, while "360 assembly language" OR "370 assembly language" OR "360 assembler language" OR "370 assembler language" produces 142 hits. Those were the common names, or simply "the assembler". [[User:Wasted Time R|Wasted Time R]] ([[User talk:Wasted Time R|talk]]) 23:49, 6 September 2023 (UTC)
::::::::
::::::::I have lost a few times in [[WP:COMMONNAME]] discussions, when I thought an article should have the technically correct name. If it isn't the correct name or the [[WP:COMMONAME]] then maybe we should change it? [[User:Gah4|Gah4]] ([[User talk:Gah4|talk]]) 20:40, 7 September 2023 (UTC)
<div style="padding-left: 1.6em; font-style: italic; border-top: 1px solid #a2a9b1; margin: 0.5em 0; padding-top: 0.5em">The discussion above is closed. <b style="color: #FF0000;">Please do not modify it.</b> Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.</div><!-- from [[Template:Archive bottom]] -->
</div><div style="clear:both;"></div>
 
== DOS vs OS? ==
 
I managed never to run anything on DOS/360, so maybe don't know much about it. As far as I know, BAL and Basic Assembler Language goes with the DOS/360, and similar smaller machine systems, such as TOS/360. In all the days of OS/360, OS/VS2, and later, I never heard the name BAL or Basic Assembler Language. I think that means that I would like to see separate articles for the two. I think I won't suggest names yet, though. [[User:Gah4|Gah4]] ([[User talk:Gah4|talk]]) 11:00, 4 September 2023 (UTC)
:They’re “basically” the same language. DOS assembler was Assembler D, and I expect it shared a lot of phases with E and F, just like other IBM compilers. Obviously it had a few limitations. “Basic” Basic Assembler lacked features such as extended branch menmonics (BCR,15 instead of B). Assembler D had those, along with full macro capability. At this remove I can’t remember the differences, they’re probably listed in a manual, but I don’t think they were much.
http://bitsavers.org/pdf/ibm/360/asm/GC28-6514-8_OS_Assembler_Language_Rel21_197201.pdf
Appendix I.
<br>[[User:Peter Flass|Peter Flass]] ([[User talk:Peter Flass|talk]]) 13:46, 4 September 2023 (UTC)
:Assembler D was much more sophisticated than BAL. It was mostly upward compatible, although it did drop a few things. :Assemblers E and F were the same code base, differing in how they were link edited, and were more sophisticated than but upward compatible with D. I don't know whether D shared any code with E and F. All three had multiple phases. Assembler G was Assembler F with enhancements from the University of Waterloo.
:Assembler XF was mostly upward compatible with F, had some extensions to the macro language and had the same phase structure; I'm confidant that it started from the same code base as F.
:Assembler H was a completely new assembler with enhanced macro facilities. It was mostly compatible with F and, later, with XF. Assembler H V2 and HLASM started from the H code base.
:The article should go into this in more detail, absent the conjecture about the XF code base. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 13:06, 5 September 2023 (UTC)
 
== Problems with external links ==
 
I've run into some issues with #external links:
# IBM High Level Assembler manual
#* doesn't indicate which manual
#* Should be ... General Information
# High Level Assembler for z/OS & z/VM & z/VSE Language Reference
#* Unable to connect
#* There's a 2017 copy at [https://www0.ibm.com/servers/resourcelink/svc00100.nsf/pages/zOSV2R3sc264940/$file/asmr1023.pdf]
#* I'm pretty sure that there's a more recent one online
# Web enabled IBM Assembler F compiler for small experiments
#* 404 compliant
# ASSIST – Assembler System for Student Instruction & Systems Teaching
#* 404 compliant
I'll look around and see what I can find to update these, but if someone else gets there first I'll be happy. -- [[User:Chatul|Shmuel (Seymour J.) Metz Username:Chatul]] ([[User talk:Chatul|talk]]) 15:54, 29 September 2023 (UTC)
 
== Nomenclature - truncated addressing ==
 
{{ping|Peter Flass}} Should the article use the generic term of art "truncated addressing",<ref>{{cite manual
| title = PHILCO® 2000 Electronic Data Processing System - PROGRAMMING MANUAL
| id = TM-10
| date = November 1960
| url = http://bitsavers.org/pdf/philco/2000/TM-10_Philco_2000_Programming_Manual_Nov1960.pdf
| access-date = October 18, 2023
}}
</ref><ref>{{cite manual
| title = REFERENCE MANUAL - UNIVAC III Data Processing System
| id = UT-2488
| year = 1962
| url = http://bitsavers.org/pdf/univac/univac3/UT-2488_UNIVACIII_ref_Jun62.pdf
| access-date = October 18, 2023
}}
</ref> or should it use the term "base-displacement addressing" introduced with [[System/360]]?
 
:Wow, some pretty old manuals! Unfortunately they’re not searchable, so I wasn’t able to easily find references to “truncated.” In any case, the article is about software for System/360, so I think the IBM terminology makes more sense. [[User:Peter Flass|Peter Flass]] ([[User talk:Peter Flass|talk]]) 17:48, 18 October 2023 (UTC)
 
<!-- keep after last sig -->
{{reflist-talk}}