Freeware Page

                                   SLAC VM NOTEBOOK

           Module 24: SLAC  Enhancements to and Beautifications of the IBM
                          H-Level Assembler for Version 2.8
                                     Greg Mushial
                                      Revision 6
                           20 July 1983 (CMS ASMH Ver. 2.9)
                     Module 24:    The IBM Level H  Assembler has
                     been modified to provide  added language and
                     processing    capabilities.     This    note
                     describes only the departures  from the full
                     language,  and assumes a working familiarity
                     with the Level H Assembler language.
                            SLAC Computing Services (SCS)
                      Stanford Linear Accelerator Center (SLAC)
                             Menlo Park, California 94025

                                  DISCLAIMER NOTICE

           This document and/or portions of the material and data furnished
+                                           ___ ________ ___ ____ _________
           herewith,   was   developed  under   sponsorship  of   the  U.S.
+          ________
           Government.  Neither the U.S. nor the U.S.D.O.E., nor the Leland
           Stanford  Junior University,   nor their  employees,  makes  any
           warranty,   express or  implied,  or  assumes  any liability  or
           responsibility for accuracy,  completeness  or usefulness of any
           information,   apparatus,   product or  process  disclosed,   or
           represents  that  its  use  will  not  infringe  privately-owned
           rights.   Mention of any product, its manufacturer, or suppliers
           shall not, nor is it intended to,  imply approval,  disapproval,
           or fitness for any particular use.  The U.S.  and the University
           at all  times retain the right  to use and disseminate  same for
           any purpose whatsoever.

                           Publishing History for Module 24

                    Revision 1.......14 Mar. 1979 (ASMH Ver. 2.4)
                    Revision 2........5 Nov. 1979 (ASMH Ver. 2.5)
                    Revision 3.......30 Aug. 1980 (ASMH Ver. 2.6)
                    Revision 4....3 Sep. 1981 (CMS ASMH Ver. 2.7)
                    Revision 5....9 Dec. 1982 (CMS ASMH Ver. 2.8)
                    Revision 6...20 July 1983 (CMS ASMH Ver. 2.9)

1        Revision 6                SLAC VM NOTEBOOK                  Page iii
                           Module 24: IBM H-Level Assembler

0                               CONTENTS FOR MODULE 24
0        Chapter
+        _______
+                                                                        page
+                                                                        ____
0        1.  INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . . . .  1
+        1.  INTRODUCTION                                                   1
0        2.  CHANGES TO THE ASSEMBLER  . . . . . . . . . . . . . . . . . .  2
+        2.  CHANGES TO THE ASSEMBLER                                       2
0               Changes to Printed Output  . . . . . . . . . . . . . . . .  2
                Changes to Error Messages and Severities . . . . . . . . .  3
                Changes to Input and Output Handling . . . . . . . . . . .  3
                Changes to Parameters  . . . . . . . . . . . . . . . . . .  5
0        3.  CHANGES TO THE MACRO LANGUAGE . . . . . . . . . . . . . . . .  7
+        3.  CHANGES TO THE MACRO LANGUAGE                                  7
0        4.  CHANGES TO THE ASSEMBLY LANGUAGE  . . . . . . . . . . . . . .  9
+        4.  CHANGES TO THE ASSEMBLY LANGUAGE                               9
-        Appendix
+        ________
+                                                                        page
+                                                                        ____
0        A.  THE CMS/ASMH INTERFACE AND ITS BEHAVIOR . . . . . . . . . . . 14
+        A.  THE CMS/ASMH INTERFACE AND ITS BEHAVIOR                       14
0               The Interface Function . . . . . . . . . . . . . . . . . . 14
                ASMH Command Format  . . . . . . . . . . . . . . . . . . . 14
                   ASMH Parameters Actually Understood by the Interface  . 14
                   Alternate MACLIB Specification  . . . . . . . . . . . . 15
-        INDEX TO MODULE 24  . . . . . . . . . . . . . . . . . . . . . . . 16
+        INDEX TO MODULE 24                                                16
1        Revision 6                SLAC VM NOTEBOOK                    Page 1
                           Module 24: IBM H-Level Assembler

0                                     Chapter 1
+                                     Chapter 1
0                                    INTRODUCTION
+                                    INTRODUCTION
-        The SLAC modifications to the  IBM Program Product H-Level Assembler
         are of three kinds:
0          Changes that do not affect  the programming language,  but enhance
           the capabilities and usability of the Assembler;
0          Changes to the macro and conditional assembly language; and
0          Changes to the assembly ("open-code") language.
0      ¦ Note: Versions 2.7 and beyond are supported only in a VM/SP environ-
       ¦ ment (though Versions 2.7 through 2.9 are known to have successfully
       ¦ run at at least a couple of MVS and MVS/SP installations).
0      ¦ Note:  Those  parts of this document  that changed with  the current
       ¦ revision are denoted by "¦" in the left margin.
0      ¦ Note:  The  SLAC modifications,  Versions  2.0 through  2.8 are/were
       ¦ based on IBM' Version 1 of ASMH; Versions 2.9 and beyond are/will be
         based on IBM's Version 2.
1        Revision 6                SLAC VM NOTEBOOK                    Page 2
                           Module 24: IBM H-Level Assembler

0                                     Chapter 2
+                                     Chapter 2
0                              CHANGES TO THE ASSEMBLER
+                              CHANGES TO THE ASSEMBLER
+              _______ __ _______ ______
0      ¦   The heading  at the top of  each page contains  the identification
           "(SLAC V2.9)".
0          A  subset of  the  IEV9xx  error   messages  that   appear in  the
           SYSPRINT data  set now will  also appear  in the SYSTERM  data set
           (e.g., no core left, i/o error...).
0          The default number of lines in  SYSTERM for a no-error assembly is
           now 2.   The "ASSEMBLER DONE" and  the "NO STATEMENTS FLAGGED" are
           still printed, and the rest are suppressed.
0          The DECKID (the name field from the first title card)  is now also
           printed in SYSTERM.    This is helpful if you have  done a batched
           assembly and are trying to determine which assembly is responsible
           for an error message.
0          MACRO/Copy Code  Source Cross-Reference.   This  is a list  of the
           SYSLIB data set names (in search order), and a listing of the mac-
           ros and copy code that were  used from each.   The MACRO/Copy Code
           Source Cross-Reference is under the control of the  NO MSRC param-
           eter.  MSRC (the default) will allow it to be produced.
0          DSECT  Cross-Reference.    Directly after   the  MACRO/Copy   Code
           Source, if NODXREF is not specified (i.e.,  DXREF is the default),
           a listing  of the DSECTs in  the assembly is produced.    For each
           DSECT, its name, length (in bytes), and the statement number where
           it is defined are given.
0          At the top of each page, the current active USINGs are now printed
           on up to two subtitle lines.   These  USINGs are current as of the
           end of assembly of the last instruction on the prior page.   These
           lines are under the control of the  NO UMAP parameter.   UMAP (the
           default) will cause the USINGs to be printed.
0          The second heading line on each  page of the actual assembly list-
           ing (the  line with  'LOC OBJECT  ADDR1 ADDR2')   will start  with
           'D-LOC' if  IBMOUT is not  in effect and at  the time of  the page
           eject the assembly was in a DSECT.
0          The IBM implementation of SYSTERM has been entirely replaced.  The
           new SYSTERM,  for errors in macro-generated code,  will only print
           the macro call once.  After printing any individual macro call, it
1        Revision 6                SLAC VM NOTEBOOK                    Page 3
                           Module 24: IBM H-Level Assembler

0          will only  print the statement in  error and its  associated error
           messages,  rather than all the statements  between the call to the
+                                 ___
           error.    The format  for  SYSTERM is  now the  same  as that  for
           SYSPRINT (i.e., it's not all rearranged like the old SYSTERM).
0          At the end  of each assembly listing,  the number  of utility file
           (SYSUT1)  reads and  writes are displayed,  along  with the SYSIN,
           SYSPRINT and SYSLIB counts which were displayed before.
0      ¦   The output  produced as the  Assembly Symbol Cross  Reference (the
       ¦   cross-reference under the  control of  NO  XREF  option)  has been
       ¦   modified to indicate  which references to a symbol  will result in
       ¦   that symbol being altered at  execution time;  such references are
           denoted by being underscored.
+              _______ __ _____ ________ ___ __________
0          A new error test and diagnostic message have been added:
0        Given the  rules governing  base-displacement resolution  of implied
         addresses (choose the register giving the smallest displacement, and
         the highest-numbered such register),  this message will be issued if
         it is  found that a prior  active USING's range overlaps  and super-
         sedes that of the USING being processed.  The severity level of this
         error is 4.
0          The error message "IEV044 - SYMBOL  NOT DEFINED" has been extended
           so that it now  will tell you which symbol is  thought to be unde-
0          A misquoted operand on a TITLE card now will only earn you a level
           4 error.
+              _______ __ _____ ___ ______ ________
0          ASMH will now accept WYLBUR pressed format (with RECFM=U) as input
           for both SYSIN  and SYSLIB.   The concatenations of  SYSLIB may be
           either RECFM=FB  or RECFM=U,  or a  mixture of the  two.   Another
           change to SYSLIB processing is that  the data set with the largest
           block size need not be first in the SYSLIB concatenation sequence.
0          An exit is available just before  each line is printed.   The exit
           routine name is  specified by 'PEXIT=XXXX' in  the invocation PARM
           string.   XXXX is the  module name of the exit routine  in the PDS
           pointed to  by the  EXITLIB DD  statement.   The  exit routine  is
           called  using standard  OS  linkage  conventions.   The  parameter
           address list whose address is passed in R1 is:
1        Revision 6                SLAC VM NOTEBOOK                    Page 4
                           Module 24: IBM H-Level Assembler

0                       A(the line to be printed)
                        A(the SYSPRINT DCB)
                        A(OCTL values)
                        A(line type flag byte)
0        The first two are self-explanatory.   The OCTL values,  4 successive
         halfwords,  will be  described below in the section  "Changes to the
         Assembly Language."  The line type flag  is a single byte whose bits
         are defined as:
0               '80' - This line is part of the 3-line title
                       field at the top of each page.
                '40' - This line is a machine instruction line.
                '20' - This line is a DC/DS line.
                '10' - This line is part of the symbol table
                '08' - This line is part of the post-assembly
                '04' - This line is part of the pre-assembly
                '02' - SYSPRINT DCB open exit entry (occurs just before
                       the exit returns to finish the open).
                '01' - This line is the first output line of
                       this assembly.
0           (Note:  For the open-exit call, only the DCB address and the flag
            byte address are defined;  any  nonzero return code is equivalent
            to 20.)
0           When the exit routine returns control to the Assembler,  R15 must
            contain a return  code.   If an invalid return  code is returned,
            the exit will  be turned off (i.e.,  never called  again for this
            assembly).  The valid return codes are:
0                  0 - print the line in the buffer
                   4 - don't print the line in the buffer
                   8 - print the line and return back to the
                       exit with an empty buffer
                  12 - don't print the line and return with
                       an empty buffer
                  16 - final return for this line
                  20 - kill the exit (i.e., don't call again
                       for this assembly)
0          The LRECL of the SYSPRINT DCB has been unhardwired from 121.  This
           allows you to specify any value greater than or equal to 121.  (If
           the LRECL specified is less than 121  it will be set to 121.)   If
           you do specify a value larger than  121,  only the first 121 bytes
           of each print buffer will be properly blanked.   It's up to you to
           blank or clear anything beyond 121.
0          The DD name for the object deck  output data set for the Loader or
           Linkage Editor is now determined in much  the same way as in ASMG.
           The ASMH default DD name, SYSGO, can be overridden by an alternate
1        Revision 6                SLAC VM NOTEBOOK                    Page 5
                           Module 24: IBM H-Level Assembler

0          DD name list.   This  name is searched for in the  TIOT;  if it is
           found,  it  will be used  as the DD name.    If not,  the  TIOT is
           searched for SYSGO or SYSLIN.   If either is there,  the one found
           will be used.  If both are there, SYSGO will be used.   If neither
           is there, the DD name in the DCB will be left as is and processing
           will continue as in the original ASMH.   (The above does not apply
           to ASMH under CMS).
0          SYM cards  are now  produced for  equates whose  first operand  is
           relocatable and  the LOCTR  for that operand  is the  current one.
           The format is the same as that generated by ASMF.
0          For any part of ASMH's input that  is a WYLBUR edit data set,  one
           now has a choice of formats of the sequence field.  The invocation
           parameter INTEGER,  the default,  will yield a sequence field of 8
           decimal digits (Fortran I8 format).    DECIMAL,  the other choice,
           will yield a sequence field of 4 digits, a period, and 3 more dig-
           its (Fortran F8.3 format).
0          The input  WYLBUR line number  234.567 will yield  "00234567" with
           INTEGER,   and "234.567"  with  DECIMAL.  Note  that  an input  of
           "87654.321"  with  the  DECIMAL option  yields:   "7654.321"  (the
           sequence field only has room for 8 characters).
0          The FOLD parameter causes ASMH to  treat all lower case characters
           as their upper case counterparts.  NOFOLD is the default.
+              _______ __ __________
0          If  you specify  the  REL2 invocation  parameter  (a new  option),
           2-byte A-type  relocatable constants are  allowed,  as  in AL2(*).
           Y-type constants must  still have absolute operands;   only A-type
           constants are  affected by the REL2  parameter in this  version of
0          The default for the RLD/NORLD invocation parameter is now NORLD.
0          The SYSPRINT exit parameter PEXIT=XXXX is described above,  in the
           discussion of changes to input and output handling.
0          The Assembler can now run entirely in memory, without SYSUT1.   By
           specifying NODISK, the Assembler will ignore SYSUT1 and attempt to
           run entirely with internal buffering  of information that normally
           would be spilled  to disk.   If there isn't enough  memory for the
           assembly to be done this way,  it  will be terminated with a level
           20 return code and a message.
0          At the end of each assembly,  the Assembler will tell you how much
           memory was  allocated to buffers and  what it determines  it would
           need to do the assembly completely in memory.  This information is
           provided even when you are not running with NODISK (i.e., DISK).
1        Revision 6                SLAC VM NOTEBOOK                    Page 6
                           Module 24: IBM H-Level Assembler

0          Two   invocation  parameters  have  been  added to  control  PRINT
           statements that appear within an  assembly source.   PRINTGEN,  if
           specified, will nullify any PRINT NOGENs embedded within a program
           source.  PRINTON does similarly, overriding PRINT OFFs.
0          The invocation  parameter OPCNTS will  cause the opcode  table and
           the opcode usage counts to be displayed  at the end of each assem-
           bly.   The usage count displayed is the number of times the opcode
           was searched for in the opcode table.
0          Within the Assembler, the opcodes are hashed onto a set of chains.
           For the OPCNTS display,  the beginning of each such chain is flag-
           ged by a "¦".
0          The IBMOUT parameter  requires the Assembler's SYSPRINT  output to
           be similar to that of the  unmodified ASMH.   At the current time,
           IBMOUT really means NOUMAP, NOMSRC and NODXREF.   If in the future
           there  are other  options that  would change  the listing  format,
           IBMOUT will reset them also.
0          The  parameters  INTEGER/DECIMAL  and  FOLD/NOFOLD  are  described
           above, in the discussion of changes to input and output handling.
0          The OLDTYPE invocation parameter is described below in the discus-
           sion of changes to the macro language.
0          The parameter LIBMAC (NOLIBMAC is the  default)  has been added to
           allow for  the definition  of each  library resident  macro to  be
           inserted into  the SYSIN stream  immediately preceeding  the first
           invocation of that macro.
0      ¦   With the  introduction of  ASMH release  2,  (by  definition)  the
       ¦   assembler's opcode table  was extended to include  the XA opcodes.
       ¦   These new opcodes  can cause conflicts with  already existing user
       ¦   macros.   For those  users that wish to use the  new assembler but
       ¦   cannot because opcode conflicts,   the invocation parameter OPC370
       ¦   will delete  the XA opcodes from  the opcode table.    The default
       ¦   option is OPCXA.
1        Revision 6                SLAC VM NOTEBOOK                    Page 7
                           Module 24: IBM H-Level Assembler

0                                     Chapter 3
+                                     Chapter 3
0                           CHANGES TO THE MACRO LANGUAGE
+                           CHANGES TO THE MACRO LANGUAGE
-          Six new system variable symbols have been defined:
0        (1) &SYSSTYP - a character variable  containing the location counter
             type  ('CSECT' or  'DSECT')  at  the invocation  of the  current
             macro.  (This definition is the same as in ASMG.)
0        (2,3)  &SYSJOB,  &SYSSTEP - both  are character variables.   For OS,
             they return the job name and the rightmost non-blank stepname in
             the TIOT.   For CMS,  they return 'NO JOB' and 'NO STEP' respec-
0        (4) &SYSNEST - an arithmetic type  variable that returns the current
             macro nesting level.  Level 0 is defined as the open code level.
             (The use  of &SYSNEST  makes writing  recursive macros  not only
             easier but much safer.  A recursive macro now has a way of tell-
             ing how "deep in  the weeds" it is,  and can  do something about
0        (5) &SYSMDSN - a character variable giving the source of the current
             macro.   The variable is 50 bytes long and is always padded with
             blanks on the right.   The first  6 bytes give the volume serial
             on which the macro was found, and the following 44 bytes are the
             data set name.  For CMS, the DSN is only 8 bytes long and is the
             file name.
0        (6) &SYSSTMT -  an eight-byte character  variable that  contains the
             statement number  of the next  statement to be  generated.   The
+                                     ____
             variable is  always eight characters and  is padded on  the left
             with zeros.   (The significant digits can be obtained by assign-
             ing &SYSSTMT to an arithmetic-type variable.)
0          MACRO call statement  name fields need not contain  a valid Assem-
           bler symbol.  If you desire to put a number, any string without an
           embedded blank,  or any quoted string in the name field,  no error
           messages will be generated.
0          There are  2 valid operands on  the AREAD statement that  were not
           documented by IBM:  CLOCKB and CLOCKD.   They return the result of
           a TIME BIN and TIME DEC (in the OS sense) respectively.
0          The type attribute (T')  of a parenthesized expression like "(10)"
           is no longer 'N'.   It is set to 'U' like it should be.   The only
           thing that has  type attribute 'N' is a  truly self-defining term.
           (Try  generating DC  H'10E(10)' from  within a  macro because  the
           Assembler "told" you that the T'  of "(10)" was 'N'.   (For anyone
1        Revision 6                SLAC VM NOTEBOOK                    Page 8
                           Module 24: IBM H-Level Assembler

0          that may need the old definition,  there is the OLDTYPE invocation
0          In LCLx/GBLx  statements,  the  "&" preceding  the variable  names
           being declared is no longer required.  The absence of the "&" will
           cause a level 0 warning message to be generated.  This can be sup-
           pressed by running ASMH with FLAG set to greater than 0.
0          The macro language has 2 new  opcodes:   ASPACE and AEJECT.   They
           provide services analogous  to SPACE and EJECT,  but  only for the
           listing of in-line macro source code.  ASPACE, unlike its assembly
           time counterpart,   allows only an  unsigned decimal integer  as a
           possible operand.  AEJECT, like EJECT, neither requires nor allows
           an operand.
1        Revision 6                SLAC VM NOTEBOOK                    Page 9
                           Module 24: IBM H-Level Assembler

0                                     Chapter 4
+                                     Chapter 4
0                          CHANGES TO THE ASSEMBLY LANGUAGE
+                          CHANGES TO THE ASSEMBLY LANGUAGE
-          The MSOURCE operand  may be specified on  the PRINT statement.
           If PRINT  NOMSOURCE and PRINT  GEN are  both in effect,   the body
           (columns 1  - 71)  of each  macro-generated statement will  not be
           printed.   If you write code rich in macro calls, it's nice to see
           the addresses and  the generated code on the left  of the listing,
           but the body  of each statement can be  fairly meaningless;  hence
           you may not want it printed.
0          The underscore (_)  has been added  to the list of characters that
           ASMH allows in symbols.  It is treated the same as a numeric digit
           as far as where it may and may not appear in symbols and in opera-
           tion codes and macro names.   The  common use is to separate words
           in labels or identifiers (don't forget, ASMH allows identifiers of
           up to 63 characters).
0          A new  machine instruction  operation code has  been added  for VM
           users - DIAG  (DIAGNOSE).  DIAG is treated as  an RS-type instruc-
0                      DIAG   r1,r3,d2(b2)
0          The Assembler instruction statement opcode  OCTL provides a way of
           passing  parameters to  the  print exit.    There  are 4  operands
           allowed on  an OCTL statement,  each  of which must evaluate  to a
           16-bit absolute expression.   These are evaluated and put into the
+                 ________
           corresponding halfwords of the OCTL values passed to the exit rou-
           tine designated by  the PEXIT parameter.   Each operand  may be of
           three forms:   an absolute expression;   an expression of the form
           * N (where * is taken to be  the current value for that OCTL posi-
           tion to which  N is either added or subtracted);   or null,  which
           means leave the current value as is.   Note:  The Assembler places
           no meaning  on the operand values;   it simply evaluates  them and
           passes them to the print exit.   For a missing (null) operand, the
           value that was there before is left untouched.
0          A new operand, NOPRINT, has been added to the PUSH, POP, and PRINT
           pseudo instructions.   If you specify 'NOPRINT' the statement will
           not be printed, as you would expect.
0          Qualified USINGs (or, more properly,  Labeled USINGs and Qualified
           Symbols),   are a  major new  capability of  ASMH,  allowing  much
           greater control over  the resolution of symbolic  expressions into
           base-displacement form with specific base registers.
1        Revision 6                SLAC VM NOTEBOOK                   Page 10
                           Module 24: IBM H-Level Assembler

0          The mechanics of this facility are  rather simple.   First,  put a
           label on  a USING  statement.   Then,  to  force the  Assembler to
           resolve a symbol  into base-displacement form through  that USING,
           qualify the  symbol by preceding it  with the label on  the USING,
           followed by a period.   An example of Labeled USINGs and Qualified
           Symbols would be:
0          PRIOR   USING   IHADCB,R10
           NEXT    USING   IHADCB,R2
0          Without labeled USINGs,  this would have to be written in the awk-
           ward and inelegant form:
0                  USING   IHADCB,R10
                   MVC     DCBLRECL,DCBLRECL-IHADCB(R2)
                   MVC     DCBLRECL-IHADCB(,R10),DCBLRECL-IHADCB(R2)
0          Another example of the use of labeled USINGs is:
0          X       CSECT
                   USING   X,R10,R11
           SYSUT2  USING   IHADCB-(DCBUT2-X),R10,R11
                   LH      R0,SYSUT2.DCBBLKSI
           DCBUT2  DCB     DDNAME=SYSUT2,...
0          The usual  way of symbolically  referencing parts  of a DCB  is to
           load the address of the DCB into Rn followed by "USING IHADCB,Rn".
           Such a  technique requires  you to allocate  an extra  register to
           hold the address of the DCB.  With labeled USINGs, you are able to
           utilize already allocated registers (in  this case,  the program's
           base registers).   This technique works  because the two USINGs do
           not interfere with each other,  even  though they specify the same
           registers; see below for details.
0          The label on a USING may not appear in the name field of any other
           statements except that of other USINGs.    If a label appears on a
           USING, any other USING with the same label is nullified.
0          As is the case with non-labeled USING statements, a symbol (in the
           first operand)  or  a register (in any of  the remaining operands)
           may appear in any number of USINGs.  However, in the case of qual-
           ified USINGs,  as long as all  the USINGs have unique labels,  all
           are considered active and are eligible to be used as qualifiers.
0          There is a very basic concept about Labeled and non-Labeled USINGs
           that needs to be understood.    In non-Labeled USINGs,  a register
           implies data,   in the sense  that a  register may imply  only one
1        Revision 6                SLAC VM NOTEBOOK                   Page 11
                           Module 24: IBM H-Level Assembler

0          piece of data at a time (i.e.,  when a register that appeared in a
           USING appears in another USING, the prior USING is nullified).  In
           Labeled USINGs the reverse is true:   the data implies a register.
           That is,   a single register may  appear in multiple  USINGs,  all
+                                                                         ___
           being active, so long as all the USINGs have unique labels.  (Nul-
           lification of  Labeled USINGs  occurs only  when a  repeated Label
           appears, not when a repeated register appears.)
0          Labeled USINGs do not interfere with non-labeled USINGs.  When the
           Assembler resolves an implied address into base-displacement form,
           either the expression to be resolved was qualified or not.   If it
           was, the specified labeled USING will be used.  If not, the active
           non-labeled USINGs will be scanned in the standard manner, looking
           for a resolution.
0          A label on a USING defines an environment.  As such, when you want
           to nullify (delete)  that environment,  you must DROP the environ-
           ment's name,  the USING's label.   An attempt to nullify a labeled
           USING by  dropping its  registers will  result in  those registers
           being dropped instead from the non-labeled USING pool.   You would
           nullify the Labeled USINGs from the example above by writing:
0                 DROP   PRIOR,NEXT
-          Ten new extended branch mnemonics have  been added to the existing
           set.   The new mnemonics are BGT, BGE, BEQ,  BLE,  BLT,  and their
           RR-type BCR counterparts BGTR, BGER, BEQR,  BLER,  and BLTR.   The
           corresponding branch mask digits are 2, 10, 8,  12,  and 4 respec-
0          Literals and  where they  may appear has  been made  slightly less
           restrictive.   For machine instructions (and only machine instruc-
           tions)   a literal  may appear  anywhere a  relocatable symbol  is
           valid.   The exception  to this is that the length  attribute of a
           literal is still undefined.  An example of this might be:
0                      LA   R1,=C'??'-24           get parm for ADT lookup
0          AOPTION  - a  new opcode.   Given that  the invocation  parameters
           really only define  a default assembly environment,   AOPTION pro-
           vides a means to specify  a specific statement-by-statement assem-
           bly environment.    AOPTION may be used  as many times  as desired
           during an assembly whether batched or  not.   (TEST and NOTEST are
           currently the only valid operands.)
0          Now,  at the end of each assembly,  all the ASMH options are reset
           to their invocation values.  This  means that an environment modi-
           fied through AOPTION will not affect the next assembly in a batch.
0          The length attribute (L')  used on  a machine instruction within a
           macro definition now behaves the same as that of ASM-F.  (A state-
           ment such as:
1        Revision 6                SLAC VM NOTEBOOK                   Page 12
                           Module 24: IBM H-Level Assembler

0                    TM    &X,L'&X
0          used to cause  the  Assembler to think that it had  the letter "L"
           followed by an improperly quoted string.)
0          Both the scale attribute (S') and the integer attributes (I')  now
           may also be used in open code.  Both their definitions are identi-
           cal to those for use within macro definitions.
0          Errors in the invocation parameters are diagnosed better.  Instead
           of getting a "There is an error  in the parm list" message (at the
           end of the assembly), the actual parms in error will be displayed.
           In an OS environment,  this display  will be sent both to SYSPRINT
           and to SYSTERM.   (Note: In CMS, SYSTERM is assigned to the termi-
0          More important, as soon as the assembler recognizes that it has an
           erroneous parm,  a warning message and  the erroneous parm will be
           sent to the terminal.   (This way,   if the parm is critical,  the
           assembly can be aborted before wasting a lot of time.)
0          Associated  USING  statements  provide   additional  control  over
           address expression resolution.  The format  of an Associated USING