_______________________________________________________________________________

ASSEMBLY LANGUAGE PROCESSOR (ALP) VERSION 4.00.003 README FILE
_______________________________________________________________________________

Welcome to the IBM Assembly Language Processor for OS/2 Warp (hereafter
referred to as ALP).  Full documentation for ALP is provided in the online 
manual titled "ALP Programming Guide and Reference".  This README file provides
supplemental or errata information not documented in the online manual.

The information contained in this README describes a specific version of ALP.
You should verify that the version number displayed in both the ALP program
banner and in the heading of this document agree before using the information
contained herein.  The ALP version number can be displayed by executing the
command:  "alp +mb".

Use a non-proportional font to view this file.

_______________________________________________________________________________

CONTENTS
_______________________________________________________________________________

  This document contains the following sections:

  - Changes Since the Last Release (4.00.002)
  - MASM 5.10 Compatibility
  - MASM 6.00 Compatibility
  - Table of Assembler Directives Supported by ALP, MASM 5.10, and MASM 6.00
  - Known Problems or Incompatibilities
  - Support Information


Changes Since the Last Release (4.00.002)
_______________________________________________________________________________

    - No new programming features have been added in this release.

    - Some corrections and additions were made to the ALPREF.INF online
      reference manual.

    - The handling of text equates during macro expansions has been changed
      for better compatibility with MASM.  Text equates can now be used in
      "paste" operations using the ampersand (&) operator, similar to the
      normal handling of macro replacement arguments.

    - Better handling of identifiers that begin with a period (.) character.

    - Some situations that could cause phase errors during assembly were
      corrected.

    - ALP no longer emits an object file reference to the reserved group-name
      "FLAT" unless it is referenced in the assembly source module.

    - Relaxed syntax requirements for EXTRN directive and several IFxxx
      preprocessor directives to allow for missing operands under MASM 5.10
      emulation.

    - Fixed some code generation problems in the PROC prologue and epilogue
      handlers.
      
    - Numerous other bug fixes and compatibility enhancements.


MASM 5.10 Compatibility
_______________________________________________________________________________

  In most respects, ALP is a "MASM 5.10 Source Language Compatible" assembler.
  It is not, however, a direct "drop-in" replacement for MASM.  This section
  describes some things to be aware of when using ALP as a replacement for MASM.

    ---------------------------------------------------------------------------
    ALP does not use the same command line syntax as MASM 5.10 (or MASM 6.00).
    The MASM2ALP utility is provided to allow use of ALP in existing MASM 5.10
    build environments.  Refer to the online reference manual for details.

    ---------------------------------------------------------------------------
    Unlike MASM, ALP by default is case-sensitive with respect to user defined
    identifiers (assembler reserved words are case-insensitive by default).  If
    case-insensitive assembly is desired, use the -Sc command line switch.

    ---------------------------------------------------------------------------
    ALP currently supports all MASM 5.10 constructs except:

      - Alphabetic segment ordering (the .ALPHA directive)

      - Symbol cross referencing and the associated listing file directives
        (.CREF and .XCREF)

    ---------------------------------------------------------------------------
    Forward-referenced Unconditional Jumps

    On the first pass, both assemblers assume that the target of a forward
    referenced direct conditional JMP is of NEAR distance, and both reserve
    space to allow for a 16 bit displacement field.  If on the second pass it
    is determined that the target can be reached using a distance of SHORT, an
    8 bit displacement and a single NOP byte are generated to fill in the space
    allotted on the first pass.  This is normal behavior for both assemblers.

    If however, the same (SHORT) target was specified in the JMP statement
    using a "NEAR PTR" typecast override, MASM 5.10 ignores the override and
    generates the same aforementioned code.  ALP however, respects the typecast
    operation and generates a true 16 bit displacement, which is also the
    behavior exhibited by MASM 6.0.  In the unlikely event that a program
    depends upon the MASM 5.10 behavior, it will probably not operate correctly
    when assembled with ALP.


MASM 6.00 Compatibility
_______________________________________________________________________________

    ALP supports a limited level of compatibility with MASM 6.00.  Use of the
    -Sv:M600 command line option will enable this support.  The cross-reference
    table provided below lists the MASM 6.00 directives that are enabled when
    this option is used.  Additional changes in behavior include:

    -  Stricter error checking.  Many conditions reported as warnings under
       MASM 5.10 emulation are treated as errors under MASM 6.00 emulation.

    -  Visibility of MASM 6.00 keywords is enabled (see the online reference
       for details).  Note that visibility of processor related keywords is
       limited to only those that MASM 6.00 itself recognizes; support for
       newer processors with the .586, .586P, and .MMX directives is not
       enabled unless the -Sv:ALP option is used to turn off MASM emulation.

    While both ML (MASM 6.0) and ALP support assembly of multiple input files
    with a single command line invocation, ALP does not support the "compile
    and link" capability of ML.  ALP treats all filenames found on the command
    line as input source files, and does not look at the filename extension to
    determine the file "type".


Table of Assembler Directives Supported by ALP, MASM 5.10, and MASM 6.00
_______________________________________________________________________________

    "X" - Supported
    "-" - Recognized but ignored

      DIRECTIVE         ALP     MASM 5.1  MASM 6.0
    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿
    ³  %BIN          ³    X    ³    X    ³    X    ³
    ³  %OUT          ³    X    ³    X    ³    X    ³
    ³  .186          ³    X    ³    X    ³    X    ³
    ³  .286          ³    X    ³    X    ³    X    ³
    ³  .286P         ³    X    ³    X    ³    X    ³
    ³  .287          ³    X    ³    X    ³    X    ³
    ³  .386          ³    X    ³    X    ³    X    ³
    ³  .386P         ³    X    ³    X    ³    X    ³
    ³  .387          ³    X    ³    X    ³    X    ³
    ³  .486          ³    X    ³         ³    X    ³
    ³  .486P         ³    X    ³         ³    X    ³
    ³  .586          ³    X    ³         ³         ³
    ³  .586P         ³    X    ³         ³         ³
    ³  .8086         ³    X    ³    X    ³    X    ³
    ³  .8087         ³    X    ³    X    ³    X    ³
    ³  .ABORT        ³    X    ³         ³         ³
    ³  .ALPHA        ³    -    ³    X    ³    X    ³
    ³  .BREAK        ³         ³         ³    X    ³
    ³  .CODE         ³    X    ³    X    ³    X    ³
    ³  .CONST        ³    X    ³    X    ³    X    ³
    ³  .CONTINUE     ³         ³         ³    X    ³
    ³  .CREF         ³    -    ³    X    ³    X    ³
    ³  .DATA         ³    X    ³    X    ³    X    ³
    ³  .DATA?        ³    X    ³    X    ³    X    ³
    ³  .DOSSEG       ³    X    ³         ³    X    ³
    ³  .ELSE         ³         ³         ³    X    ³
    ³  .ELSEIF       ³         ³         ³    X    ³
    ³  .ENDIF        ³         ³         ³    X    ³
    ³  .ENDW         ³         ³         ³    X    ³
    ³  .ERR          ³    X    ³    X    ³    X    ³
    ³  .ERR1         ³    X    ³    X    ³    X    ³
    ³  .ERR2         ³    X    ³    X    ³    X    ³
    ³  .ERRB         ³    X    ³    X    ³    X    ³
    ³  .ERRDEF       ³    X    ³    X    ³    X    ³
    ³  .ERRDIF       ³    X    ³    X    ³    X    ³
    ³  .ERRDIFI      ³    X    ³    X    ³    X    ³
    ³  .ERRE         ³    X    ³    X    ³    X    ³
    ³  .ERRIDN       ³    X    ³    X    ³    X    ³
    ³  .ERRIDNI      ³    X    ³    X    ³    X    ³
    ³  .ERRNB        ³    X    ³    X    ³    X    ³
    ³  .ERRNDEF      ³    X    ³    X    ³    X    ³
    ³  .ERRNZ        ³    X    ³    X    ³    X    ³
    ³  .FARDATA      ³    X    ³    X    ³    X    ³
    ³  .FARDATA?     ³    X    ³    X    ³    X    ³
    ³  .IF           ³         ³         ³    X    ³
    ³  .LALL         ³    X    ³    X    ³    X    ³
    ³  .LFCOND       ³    X    ³    X    ³    X    ³
    ³  .LIST         ³    X    ³    X    ³    X    ³
    ³  .LISTALL      ³    X    ³         ³    X    ³
    ³  .LISTIF       ³    X    ³         ³    X    ³
    ³  .LISTMACRO    ³    X    ³         ³    X    ³
    ³  .LISTMACROALL ³    X    ³         ³    X    ³
    ³  .MODEL        ³    X    ³    X    ³    X    ³
    ³  .MMX          ³    X    ³         ³         ³
    ³  .NOLIST       ³    X    ³         ³    X    ³
    ³  .NOLISTIF     ³    X    ³         ³    X    ³
    ³  .NOLISTMACRO  ³    X    ³         ³    X    ³
    ³  .NO87         ³         ³         ³    X    ³
    ³  .POPCONTEXT   ³         ³         ³    X    ³
    ³  .PUSHCONTEXT  ³         ³         ³    X    ³
    ³  .RADIX        ³    X    ³    X    ³    X    ³
    ³  .REPEAT       ³         ³         ³    X    ³
    ³  .SALL         ³    X    ³    X    ³    X    ³
    ³  .SEQ          ³    X    ³    X    ³    X    ³
    ³  .SFCOND       ³    X    ³    X    ³    X    ³
    ³  .STACK        ³    X    ³    X    ³    X    ³
    ³  .STARTUP      ³         ³         ³    X    ³
    ³  .TFCOND       ³    X    ³    X    ³    X    ³
    ³  .UNTIL        ³         ³         ³    X    ³
    ³  .UNTILCXZ     ³         ³         ³    X    ³
    ³  .WHILE        ³         ³         ³    X    ³
    ³  .XALL         ³    X    ³    X    ³    X    ³
    ³  .XCREF        ³    -    ³    X    ³    X    ³
    ³  .XLIST        ³    X    ³    X    ³    X    ³
    ³  ALIGN         ³    X    ³    X    ³    X    ³
    ³  ASSUME        ³    X    ³    X    ³    X    ³
    ³  BYTE          ³    X    ³         ³    X    ³
    ³  CATSTR        ³    X    ³    X    ³    X    ³
    ³  COMM          ³    X    ³    X    ³    X    ³
    ³  COMMENT       ³    X    ³    X    ³    X    ³
    ³  DB            ³    X    ³    X    ³    X    ³
    ³  DD            ³    X    ³    X    ³    X    ³
    ³  DF            ³    X    ³    X    ³    X    ³
    ³  DOSSEG        ³    X    ³    X    ³    X    ³
    ³  DQ            ³    X    ³    X    ³    X    ³
    ³  DT            ³    X    ³    X    ³    X    ³
    ³  DW            ³    X    ³    X    ³    X    ³
    ³  DWORD         ³    X    ³         ³    X    ³
    ³  ECHO          ³    X    ³         ³    X    ³
    ³  ELSE          ³    X    ³    X    ³    X    ³
    ³  ELSEIF        ³    X    ³    X    ³    X    ³
    ³  ELSEIF1       ³    X    ³    X    ³    X    ³
    ³  ELSEIF2       ³    X    ³    X    ³    X    ³
    ³  ELSEIFB       ³    X    ³    X    ³    X    ³
    ³  ELSEIFDEF     ³    X    ³    X    ³    X    ³
    ³  ELSEIFDIF     ³    X    ³    X    ³    X    ³
    ³  ELSEIFDIFI    ³    X    ³    X    ³    X    ³
    ³  ELSEIFE       ³    X    ³    X    ³    X    ³
    ³  ELSEIFIDN     ³    X    ³    X    ³    X    ³
    ³  ELSEIFIDNI    ³    X    ³    X    ³    X    ³
    ³  ELSEIFNB      ³    X    ³    X    ³    X    ³
    ³  ELSEIFNDEF    ³    X    ³    X    ³    X    ³
    ³  END           ³    X    ³    X    ³    X    ³
    ³  ENDIF         ³    X    ³    X    ³    X    ³
    ³  ENDM          ³    X    ³    X    ³    X    ³
    ³  ENDP          ³    X    ³    X    ³    X    ³
    ³  ENDS          ³    X    ³    X    ³    X    ³
    ³  =             ³    X    ³    X    ³    X    ³
    ³  EQU           ³    X    ³    X    ³    X    ³
    ³  EVEN          ³    X    ³    X    ³    X    ³
    ³  EXITM         ³    X    ³    X    ³    X    ³
    ³  EXTERN        ³    X    ³         ³    X    ³
    ³  EXTERNDEF     ³         ³         ³    X    ³
    ³  EXTRN         ³    X    ³    X    ³    X    ³
    ³  FOR           ³    X    ³         ³    X    ³
    ³  FORC          ³    X    ³         ³    X    ³
    ³  FWORD         ³    X    ³         ³    X    ³
    ³  GROUP         ³    X    ³    X    ³    X    ³
    ³  IF            ³    X    ³    X    ³    X    ³
    ³  IF1           ³    X    ³    X    ³    X    ³
    ³  IF2           ³    X    ³    X    ³    X    ³
    ³  IFB           ³    X    ³    X    ³    X    ³
    ³  IFDEF         ³    X    ³    X    ³    X    ³
    ³  IFDIF         ³    X    ³    X    ³    X    ³
    ³  IFDIFI        ³    X    ³    X    ³    X    ³
    ³  IFE           ³    X    ³    X    ³    X    ³
    ³  IFIDN         ³    X    ³    X    ³    X    ³
    ³  IFIDNI        ³    X    ³    X    ³    X    ³
    ³  IFNB          ³    X    ³    X    ³    X    ³
    ³  IFNDEF        ³    X    ³    X    ³    X    ³
    ³  INCLUDE       ³    X    ³    X    ³    X    ³
    ³  INCLUDELIB    ³    X    ³    X    ³    X    ³
    ³  INSTR         ³    X    ³    X    ³    X    ³
    ³  INVOKE        ³         ³         ³    X    ³
    ³  IRP           ³    X    ³    X    ³    X    ³
    ³  IRPC          ³    X    ³    X    ³    X    ³
    ³  LABEL         ³    X    ³    X    ³    X    ³
    ³  LOCAL (1)     ³    X    ³    X    ³    X    ³
    ³  LOCAL (2)     ³    X    ³    X    ³    X    ³
    ³  MACRO         ³    X    ³    X    ³    X    ³
    ³  NAME  (3)     ³    -    ³    -    ³    -    ³
    ³  .NOCREF       ³    -    ³         ³    X    ³
    ³  .NOLIST       ³    X    ³         ³    X    ³
    ³  .NOLISTIF     ³    X    ³         ³    X    ³
    ³  .NOLISTMACRO  ³    X    ³         ³    X    ³
    ³  ORG           ³    X    ³    X    ³    X    ³
    ³  PAGE          ³    X    ³    X    ³    X    ³
    ³  PROC          ³    X    ³    X    ³    X    ³
    ³  PROTO         ³         ³         ³    X    ³
    ³  PUBLIC        ³    X    ³    X    ³    X    ³
    ³  PURGE         ³    X    ³    X    ³    X    ³
    ³  QWORD         ³    X    ³         ³    X    ³
    ³  REAL10        ³    X    ³         ³    X    ³
    ³  REAL4         ³    X    ³         ³    X    ³
    ³  REAL8         ³    X    ³         ³    X    ³
    ³  RECORD        ³    X    ³    X    ³    X    ³
    ³  REPEAT        ³    X    ³         ³    X    ³
    ³  REPT          ³    X    ³    X    ³    X    ³
    ³  SBYTE         ³    X    ³         ³    X    ³
    ³  SDWORD        ³    X    ³         ³    X    ³
    ³  SEGMENT       ³    X    ³    X    ³    X    ³
    ³  SIZESTR       ³    X    ³    X    ³    X    ³
    ³  STRUC         ³    X    ³    X    ³    X    ³
    ³  STRUCT        ³    X    ³         ³    X    ³
    ³  SUBSTR        ³    X    ³    X    ³    X    ³
    ³  SUBTITLE      ³    X    ³         ³    X    ³
    ³  SUBTTL        ³    X    ³    X    ³    X    ³
    ³  SWORD         ³    X    ³         ³    X    ³
    ³  TBYTE         ³    X    ³    X    ³    X    ³
    ³  TEXTEQU       ³         ³         ³    X    ³
    ³  TITLE         ³    X    ³    X    ³    X    ³
    ³  TYPEDEF       ³    X    ³         ³    X    ³
    ³  UNION         ³         ³         ³    X    ³
    ³  WHILE         ³         ³         ³    X    ³
    ³  WORD          ³    X    ³         ³    X    ³
    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÙ

    Notes:  1. Local macro labels
            2. Local stack variables
            3. Obsolete directive


Known Problems or Incompatibilities
_______________________________________________________________________________

    - The assembler does not recognize floating-point literals beginning with
      a period.  If this affects your code, prefix such literals with 0.

    - The ALIGN, EVEN, and ORG directives cannot be used within a structure
      type definition.


Support Information
_______________________________________________________________________________

  If you encounter problems or need assistance while using ALP, refer to the
  "Toolkit Support" procedures in the online document "Using Your Toolkit".


_______________________________________________________________________________

TRADEMARK INFORMATION
_______________________________________________________________________________

The following terms are trademarks of the IBM Corporation in the United
States or other countries or both:

   -------------------------------------------------------
   IBM
   -------------------------------------------------------
   OS/2
   -------------------------------------------------------

The following terms are trademarks of other companies:

   -------------------------------------------------------
   Intel386                    Intel
   Pentium                     Intel
   MMX                         Intel
   -------------------------------------------------------

IBM DISCLAIMS ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING
WITHOUT LIMITATION, WARRANTIES OF FITNESS AND MERCHANTABILITY WITH
RESPECT TO THE INFORMATION IN THIS DOCUMENT.  BY FURNISHING THIS
DOCUMENT, IBM GRANTS NO LICENSES TO ANY RELATED PATENTS OR COPYRIGHTS.

Copyright IBM Corporation, 1996-1997.  All rights reserved.

_______________________________________________________________________________

END-OF-FILE README.ALP
_______________________________________________________________________________

