IBM Basic assembly language and successors: Difference between revisions

Content deleted Content added
Use the page= and pages= parameter in {{rp}}, rather than putting the p. and pp. in directly. Use {{hyp}} in a hyphenated page number. Split reference from a section heading, and get rid of a blank line in the middle. Fix a link. Fix a page number to be the page with the quote. Hyphenate archive-url and archive-date.
Line 226:
| access-date = April 5, 2022
}}
</ref>{{rp|pages=59–61}}
 
</ref>{{rp|pp.59–61}}===Basic Operating System assembler===
The [[BOS/360|Basic Operating System]] has two assembler versions. Both require 16&nbsp;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 237 ⟶ 238:
| access-date = April 5, 2022
}}
</ref>{{rp|pp.pages=7–8}}
 
===Assembler D===
Assembler D was the [[DOS/360 and successors|DOS/360]] assembler for machines with a memory size of 16&nbsp;KB. It came in two versions: A 10&nbsp;KB variant for machines with the minimum 16&nbsp;KB memory, and a 14&nbsp;KB variant for machines with 24&nbsp;KB. An F-level assembler was also available for DOS machines with 64&nbsp;KB or more. D assemblers offered nearly all the features of higher versions.<ref name=ASMD>{{cite book|last=IBM Corporation|title=IBM System/360 Disk and Tape Operating Systems Assembler Language|year=1970|url=http://bitsavers.trailing-edge.com/pdf/ibm/360/dos/GC24-3414-7_Disk_and_Tape_Operating_Systems_Assembler_Language_Aug70.pdf}}</ref>{{rp|p.page=7}}
 
===Assembler E and F===
Assembler E was designed to run on an OS/360 system with a minimum of 32&nbsp;KB of main storage, with the assembler itself requiring 15&nbsp;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.page=2}} Assembler F can run under either DOS/360 or OS/360 on a system with a 64&nbsp;KB memory, with the assembler requiring 44&nbsp;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 H===
Assembler H runs on [[OS/360 and successors]]; it was faster and more powerful than Assembler F, but the macro language was not fully compatible.
 
Assembler H Version 2 was announced in 1981 and includes support for Extended Architecture (XA), including the <code>AMODE</code> and <code>RMODE</code> directives.<ref>{{cite book|last=IBM Corporation|title=MVS/Extended Architecture Conversion Notebook|year=1984|url=http://www.bitsavers.trailing-edge.comorg/pdf/ibm/370/MVS_XA/GC28-1143-2_MVS_EA_Conversion_Notebook_May842_MVS-XA_Conversion_Notebook_May84.pdf}}</ref>{{rp|p.3–28page=3{{hyp}}28}} It was withdrawn from marketing in 1994 and support ended in 1995. It was replaced by High Level Assembler.<ref>{{cite web|last=IBM Corporation|title=5668-962 IBM Assembler H Version 2 Release 1.0|date=20 December 1996|url=http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&appname=ShopzSeries&htmlfid=897/ENUS5668-962|accessdate=October 8, 2012}}</ref>
 
===Assembler XF===
Assembler XF is a mostly compatible upgrade of Assembler F that includes the new System/370 architecture instructions. This version provides a common assembler for OS/VS, DOS/VS and VM systems. Other changes include relaxing restrictions on expressions and macro processing. Assembler XF requires a minimum partition/region size of 64&nbsp;KB (virtual). Recommended size is 128&nbsp;KB.<ref>{{cite book|last=IBM Corporation|title=OS/VS Assembler Programmer's Guide|year=1973|url=http://bitsavers.trailing-edge.com/pdf/ibm/370/OS_VS/GC33-4021-1_OS_VS_Assembler_Programmers_Guide_May73.pdf}}</ref>{{rp|p.page=73}}
 
===High Level Assembler===
Line 299 ⟶ 300:
| url = http://www.redbooks.ibm.com/redbooks/pdfs/sg243910.pdf
| url-status = dead
| archiveurl archive-url = https://web.archive.org/web/20160123064644/http://www.redbooks.ibm.com/redbooks/pdfs/sg243910.pdf
| archivedatearchive-date = 2016-01-23
| publisher = [[IBM]]
| access-date = September 29, 2023
}}
</ref>{{RPrp|p.43page=41}}
 
====High Level Assembler Toolkit====
Line 337 ⟶ 338:
 
===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.page=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&nbsp;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&nbsp;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.pages=132–134}}
 
===IBM System/360 Model 44 PS assembler===
Line 348 ⟶ 349:
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>).<ref name=M44 />{{rp|pp.pages=53,73}}
 
===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.page=143}}
 
===Assembler G===