DOCUMENT:Q94577 06-MAY-2001 [masm] TITLE :Creating 32-Bit Flat Memory Model MASM Code for OS/2 2.0 PRODUCT :Microsoft Macro Assembler PROD/VER:MS-DOS:6.0,6.0a,6.0b OPER/SYS: KEYWORDS: ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Macro Assembler (MASM), versions 6.0, 6.0a, 6.0b ------------------------------------------------------------------------------- SUMMARY ======= Versions 6.0, 6.0a, and 6.0b of the Microsoft Macro Assembler (MASM) provide the .MODEL flat directive to support generating 32-bit flat memory model applications. When combined with the LINK386 utility and DOSCALLS.LIB library provided with OS/2 version 2.0, you can generate a 32-bit flat memory model application for the OS/2 version 2.0 environment. To build a 32-bit flat memory model application for OS/2 2.0, perform the following four steps: 1. Place the INCLUDELIB DOSCALLS.LIB directive in each source module that contains a call into the OS/2 2.0 application programming interface (API). DOSCALLS.LIB is the OS/2 2.0 import library that supports application calls to the operating system. 2. Place the .386 or .486 directive before the .MODEL flat, syscall directive to ensure that your code and data segments are set up correctly for a 32-bit flat memory model application. The order in which these two directives appear in the source code is important. 3. Specify the /c assembler option flag on the assembler command line to prevent MASM from invoking its 16-bit linker. 4. Link the object files using LINK386 distributed with OS/2 2.0. If LINK386 cannot find the DOSCALLS.LIB file, specify the path to the library. MORE INFORMATION ================ The LINK386 utility and DOSCALLS.LIB library are provided by IBM with OS/2 version 2.0. MASM versions 6.0, 6.0a, and 6.0b does not include either the required library support for OS/2 operating system calls or a linker capable of producing flat memory model applications. For more information on LINK386, DOSCALLS.LIB, or the functions of the OS/2 2.0 API, please contact IBM. LINK386 may generate two warnings that can be safely ignored: LINK386: warning L4071: application type not specified: assuming WINDOWCOMPAT LINK386: warning L4071: no automatic data segment MASM version 6.1 does not run with any version of OS/2 including a DOS window under OS/2. Microsoft does not support using MASM 6.1 for OS/2. Even though code generated by MASM 6.1 running with MS-DOS may link with LINK386, Microsoft does not support generating code in this manner. Some of the products included here are manufactured by vendors independent of Microsoft; we make no warranty, implied or otherwise, regarding these products' performance or reliability. Sample Code ----------- ; Assemble options needed: /c INCLUDELIB DOSCALLS.LIB .386 .MODEL flat, syscall Dos32Write PROTO NEAR32 syscall, hf:WORD, pvBuf:NEAR32, cbBuf:WORD, pcbBytesWritten:NEAR32 Dos32Exit PROTO NEAR32 syscall, fTerminate:WORD, ulExitCode:WORD .STACK 4096 .DATA msg DB "Hello, world.", 13, 10 written DW 0 .CODE _start: INVOKE Dos32Write, ; OS/2 system call 1, ; File handle for screen NEAR32 PTR msg, ; Address of string LENGTHOF msg, ; Length of string NEAR32 PTR written ; Bytes written INVOKE Dos32Exit, ; OS/2 system call 0, ; Terminate all threads 0 ; Result code for parent process END _start Additional query words: kbinf 6.00 6.00a 6.00b 6.10 ====================================================================== Keywords : Technology : kbMASMsearch kbAudDeveloper kbMASM600 kbMASM600a kbMASM600b Version : MS-DOS:6.0,6.0a,6.0b ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2001.