Content deleted Content added
→High Level Assembler: cite data for presentation guide |
Peter Flass (talk | contribs) Move non-mainline assemblers to "other versions." Combine M44 sections Add section on Model 20 versions |
||
Line 215:
[[Image:Program listing heading page for Assembler G as run on IBM 370 at New York University in 1979.jpg|thumb|right|Batch job printout showing identification page for Assembler G]]
With the exception of the assemblers for the [[IBM System/360 Model 20]], the IBM assemblers were largely upward-compatible. The differences were mainly in the complexity of expressions allowed and in macro processing. [[OS/360 and successors|OS/360]] assemblers were originally designated according to their memory requirements.
===7090/7094 Support Package assembler===▼
This cross-assembler runs on a [[IBM 7090|7090 or 7094]] system and was used while System/360 was in development.<ref name=BAL /><ref>{{cite manual▼
| title = IBM 7090/7094 Support Package for IBM System/360▼
| id = C28-6501-2▼
| date = November 1964▼
| url = http://bitsavers.org/pdf/ibm/7090/C28-6501-2_7090_SupportForSys360_Nov64.pdf▼
| series = IBM Systems Reference Library▼
| publisher = IBM Corporation▼
| access-date = April 5, 2022▼
}}▼
</ref>▼
===Basic Programming Support assembler===
Line 238 ⟶ 226:
| access-date = April 5, 2022
}}
</ref>{{rp|pp.59–61}}===Basic Operating System assembler===
The [[BOS/360|Basic Operating System]] has two assembler versions. Both require 16 KB memory, one is tape resident and the other disk.<ref>{{cite manual
| title = IBM System/360 Basic Operating System Language Specifications Assembler (16K Disk/Tape)
Line 257 ⟶ 244:
===Assembler E and F===
Assembler E was designed to run on an OS/360 system with a minimum of 32 KB of main storage, with the assembler itself requiring 15 KB.<ref>{{cite book|title=IBM System/360 Operating System Assembler (32K) Program Logic Manual|year=1966|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/Y26-3598-0_32k_asmPLM_1966.pdf|publisher=IBM|id=Y26-3598-0}}</ref>{{rp|p.2}} Assembler F can run under either DOS/360 or OS/360 on a system with a 64 KB memory, with the assembler requiring 44 KB.<ref>{{cite book|title=IBM System/360 Disk Operating System Assembler [F] Program Logic|year=1968|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/Y26-3716-0_asm%28f%29_plm_Mar68.pdf|publisher=IBM|id=Y26-3716-0}}</ref><ref>{{cite book|title=IBM System/360 Operating System Assembler (F) Program Logic|year=1971|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/asm/GY26-3700-2_asm%28f%29_plm_Jun71.pdf|publisher=IBM|id=GY26-3700-2}}</ref><ref>{{cite book|title=OS Assembler Language, OS Release 21|year=1974|url=http://www.bitsavers.org/pdf/ibm/360/asm/GC28-6514-9_OS_Assembler_Rel21_Jan74.pdf|publisher=IBM|id=GC28-6514-9}}</ref> These assemblers are a standard part of OS/360; the version that was generated was specified at [[System Generation (OS)|system generation]] (SYSGEN).
===Assembler G===▼
"Assembler G" is a set of modifications made to Assembler F in the 1970s by the [[University of Waterloo]] (Assembler F was/is open source). Enhancements are mostly in better handling of input/output and improved buffering which speed up assemblies considerably.<ref>{{cite web|last=Stanford Linear Accelerator Center|title=GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)|url=http://www.slac.stanford.edu/cgi-wrap/getdoc/slac-pub-0715.pdf|accessdate=October 8, 2012}}</ref> "Assembler G" was never an IBM product.▼
===Assembler H===
Line 273 ⟶ 254:
===High Level Assembler===
'''High Level Assembler''' or '''HLASM''' was released in June 1992 replacing IBM's Assembler H Version 2.<ref>{{cite web|last=IBM Corporation|title=IBM High Level Assembler and Toolkit Feature - Release History|url=http://www-01.ibm.com/software/awdtools/hlasm/history.html|accessdate=October 21, 2012}}</ref><ref>{{cite web|last=IBM Corporation|title=Announcement Letter 292-244: IBM HIGH LEVEL ASSEMBLER/MVS & VM & VSE|date=5 May 1992 |url=http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&htmlfid=897/ENUS292-244&language=enus|accessdate=October 21, 2012}}</ref> It was the default translator for System/370 and System/390, and supported the MVS, VSE, and VM operating systems. As of 2023 it is [[IBM]]'s current [[Assembly language|assembler]] programming language for its [[z/OS]], [[z/VSE]], [[z/VM]] and [[z/TPF]] [[operating system]]s on [[z/Architecture]] [[mainframe computer|mainframe]] [[computers]]. Release 6 and later also run on [[Linux]], and generate [[Executable and Linkable Format|ELF]] or [[GOFF]] object files (this environment is sometimes referred to as [[Linux on IBM Z]]).<ref>{{cite book|last=IBM Corporation|title=High Level Assembler for Linux on zSeries User's Guide|year=2008|url=http://publibfp.dhe.ibm.com/epubs/pdf/asml1020.pdf}}</ref> While working at IBM, John Robert Ehrman<!-- 1935-2018 https://web.archive.org/web/20221015170120/https://oac.cdlib.org/findaid/ark:/13030/c8xk8mnr/ https://web.archive.org/web/20221015172646/https://www.forevermissed.com/john-ehrman/about https://www.linkedin.com/in/john-ehrman-8794b26b --> created and was the lead developer for HLASM{{efn|HLASM followed a SHARE requirement to incorporate Greg Mushial's enhancements<ref>{{citation
| title = Module 24: SLAC Enhancements to and Beautifications of the IBM H-Level Assembler for Version 2.8
Line 341 ⟶ 321:
==Specialized versions==
▲===7090/7094 Support Package assembler===
The IBM 7090/7094 Support Package, known as SUPPAK, "consists of three programs designed to permit programs written for a System 360 to be assembled, tested, and executed on an IBM 709, 7090, 7094, or 7094 II."
▲This cross-assembler runs on a [[IBM 7090|7090 or 7094]] system and was used while System/360 was in development.<ref name=BAL /><ref>{{cite manual
▲ | title = IBM 7090/7094 Support Package for IBM System/360
▲ | id = C28-6501-2
▲ | date = November 1964
▲ | url = http://bitsavers.org/pdf/ibm/7090/C28-6501-2_7090_SupportForSys360_Nov64.pdf
▲ | series = IBM Systems Reference Library
▲ | publisher = IBM Corporation
▲ | access-date = April 5, 2022
▲ }}
▲</ref>
===IBM System/360 Model 20 assemblers===
IBM supplied two assemblers for the Model 30: the Model 20 Basic Assembler, and the Model 20 DPS/TPS Assembler. Both supported only instructions available on the Model 20, including unique instructions <code>CIO</code>, <code>TIO</code>, <code>XIOB</code>, <code>SPSW</code>, <code>BAS</code>, <code>BASR</code>, and <code>HPR</code>.<ref name="M20">{{cite book |last1=IBM Corporation |title=IBM System/360 Model 20 Disk and Tape Programming Systems Assembler Language |date=April 1970 |url=https://bitsavers.org/pdf/ibm/360/model20/GC24-9002-5_360-20asm_Apr70.pdf |access-date=October 2, 2023}}</ref>{{rp|p.110}} The Basic Assembler is a slightly more restricted version of System/360 Basic Assembler;<ref name="M20CPS">{{cite book |last1=IBM Corporation |title=IBM System/360 Model 20 Card Programming Support Basic Assembler Language |date=May 1969 |url=http://bitsavers.org/pdf/ibm/360/model20/GC24-9002-5_360-20asm_Apr70.pdf |access-date=October 2, 2023}}</ref> notably, symbols are restricted to four characters in length. This version is capable of running on a system with 4 KB memory, and only supports [[IOCS]] macros. The card versions are two-pass assemblers that only support card input/output. The tape-resident versions are one-pass, using [[magnetic tape]] for intermediate storage. Programs assembled with the CPS Assembler can address a maximum of 16 KB;.<ref name=M20CPS />{{rp|p5.5–7}}
The DPS/TPS assembler is a somewhat restricted version of System/360 BPS/BOS Assembler.<ref name=M20 />{{rp|pp.132–134}}
===IBM System/360 Model 44 PS assembler===
The [[IBM System/360 Model 44]] Programming System Assembler processes a language that is a "selected subset" of OS/360 and DOS/360 assembler language.
Most significantly the Model 44 assembler lacks support for macros and continuation statements. On the other hand it has a number of features not found in other System/360 assemblers—notably instructions to update a [[card image]] source dataset, named common, and implicit definition of <code>SETA</code> assembler variables.<ref>{{cite book |last1=IBM Corporation |title=IBM System/360 Model 44 Programming System Assembler Language |date=1966 |page=73 |url=http://bitsavers.org/pdf/ibm/360/model44/C28-6811-1_Model_44_Programming_System_Assembler_Language_1966.pdf |accessdate=July 2, 2019}}</ref> It has no support for storage-to-storage (SS) instructions or the ''convert to binary'' (<code>CVB</code>), ''convert to decimal'' (<code>CVD</code>), ''read direct'' (<code>RDD</code>) and ''write direct'' (<code>WRD</code>) instructions.<ref name=M44>{{cite book|last=IBM Corporation|title=IBM System/360 Model 44 Programming System Assembler Language|year=1966|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/model44/c28-6811-1_360_44_Asm.pdf}}</ref> It does include four instructions unique to the Model 44: ''Change Priority Mask'' (<code>CHPM</code>), ''Load PSW Special'' (<code>LPSX</code>), ''Read Direct Word'' (<code>RDDW</code>), and ''Write Direct Word'' (<code>WRDW</code>). It also includes directives to update the source program, a function performed by utility programs in other systems (<code>SKPTO</code>, <code>REWND</code>, <code>NUM</code>, <code>OMIT</code> and <code>ENDUP</code>) ===IBM System/360 TSS assembler===
The assembler for the [[TSS/360|System/360 Model 67 Time Sharing System]] has a number of differences in directives to support unique TSS features. The <code>PSECT</code> directive generates a ''Prototype Control Section'' containing relocatable address constants and modifiable data used by the program.<ref>{{cite book|last=IBM Corporation|title=IBM Time Sharing System Assembler Programmer's Guide|year=1976|url=http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/360/tss/GC28-2032-6_Time_Sharing_System_Assembler_Programmers_Guide_Apr76.pdf}}</ref>{{rp|p.143}}
▲===Assembler G===
▲"Assembler G" is a set of modifications made to Assembler F in the 1970s by the [[University of Waterloo]] (Assembler F was/is open source). Enhancements are mostly in better handling of input/output and improved buffering which speed up assemblies considerably.<ref>{{cite web|last=Stanford Linear Accelerator Center|title=GENERALIZED IBM SYSTEM 360 SOFTWARE MEASUREMENT (SLAC-PUB-715)|url=http://www.slac.stanford.edu/cgi-wrap/getdoc/slac-pub-0715.pdf|accessdate=October 8, 2012}}</ref> "Assembler G" was never an IBM product.
==Non-IBM assemblers==
|