Q94577: Creating 32-Bit Flat Memory Model MASM Code for OS/2 2.0
Article: Q94577
Product(s): Microsoft Macro Assembler
Version(s): MS-DOS:6.0,6.0a,6.0b
Operating System(s):
Keyword(s):
Last Modified: 06-MAY-2001
-------------------------------------------------------------------------------
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 1986-2002.