⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xms.txt

📁 汇编语言编的关于PWXMS的小程序
💻 TXT
📖 第 1 页 / 共 3 页
字号:
eXtended Memory Specification (XMS), ver 2.0


July 19, 1988


Copyright (c) 1988, Microsoft Corporation, Lotus Development
Corporation, Intel Corporation, and AST Research, Inc.

Microsoft Corporation                                            
Box 97017
16011 NE 36th Way                                       
Redmond, WA 98073

LOTUS (r)
INTEL (r)
MICROSOFT (r)
AST (r) Research

This specification was jointly developed by Microsoft Corporation,
Lotus Development Corporation, Intel Corporation,and AST Research,
Inc. Although it has been released into the public domain and is not
confidential or proprietary, the specification is still the copyright
and property of Microsoft Corporation, Lotus Development Corporation,
Intel Corporation, and AST Research, Inc.

Disclaimer of Warranty

MICROSOFT CORPORATION, LOTUS DEVELOPMENT CORPORATION, INTEL
CORPORATION, AND AST RESEARCH, INC., EXCLUDE ANY AND ALL IMPLIED
WARRANTIES, INCLUDING WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE. NEITHER MICROSOFT NOR LOTUS NOR INTEL NOR AST
RESEARCH MAKE ANY WARRANTY OF REPRESENTATION, EITHER EXPRESS OR
IMPLIED, WITH RESPECT TO THIS SPECIFICATION, ITS QUALITY,
PERFORMANCE, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
NEITHER MICROSOFT NOR LOTUS NOR INTEL NOR AST RESEARCH SHALL HAVE ANY
LIABILITY FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
OUT OF OR RESULTING FROM THE USE OR MODIFICATION OF THIS
SPECIFICATION.

This specification uses the following trademarks:

Intel is a registered trademark of Intel Corporation, Microsoft is a
registered trademark of Microsoft Corporation, Lotus is a registered
trademark of Lotus Development Corporation, and AST is a registered
trademark of AST Research, Inc.


                       Extended Memory Specification
                       =============================

    The purpose of this document is to define the Extended Memory Specifica-
tion (XMS) version 2.00 for MS-DOS.  XMS allows DOS programs to utilize
additional memory found in Intel's 80286 and 80386 based machines in
a consistent, machine independent manner.  With some restrictions, XMS adds
almost 64K to the 640K which DOS programs can access directly.	Depending on
available hardware, XMS may provide even more memory to DOS programs.  XMS
also provides DOS programs with a standard method of storing data in extended
memory.

DEFINITIONS:
------------

    Extended
    Memory      -   Memory in 80286 and 80386 based machines which is located
                    above the 1MB address boundary.

    High Memory
    Area (HMA)  -   The first 64K of extended memory.  The High Memory
		    Area is unique because code can be executed in it while
		    in real mode.  The HMA officially starts at FFFF:10h
		    and ends at FFFF:FFFFh making it 64K-16 bytes in length.
                    
    Upper Memory
    Blocks (UMBs)-  Blocks of memory available on some 80x86 based machines
                    which are located between DOS's 640K limit and the
                    1MB address boundary.  The number, size, and location
                    of these blocks vary widely depending upon the types
                    of hardware adapter cards installed in the machine.
                    
    Extended Memory
    Blocks (EMBs)-  Blocks of extended memory located above the HMA which
                    can only be used for data storage.
                    
    A20 Line    -   The 21st address line of 80x86 CPUs.  Enabling the A20
                    line allows access to the HMA.

    XMM         -   An Extended Memory Manager.  A DOS device driver which
                    implements XMS.  XMMs are machine specific but allow
		    programs to use extended memory in a machine-independent
		    manner.
    
    HIMEM.SYS   -   The Extended Memory Manager currently being distributed
                    by Microsoft.

Helpful Diagram:

    |                                                       |   Top of Memory
    |                                                       |
    |                                                       |
    |                        /\                             |
    |                       /||\                            |
    |                        ||                             |
    |                        ||                             |
    |.......................................................|
    |                                                       |
    |                                                       |
    |             Possible Extended Memory Block            |
    |                                                       |
    |                                                       |
    |.......................................................|
    |                        ||                             |
    |                        ||                             |
    |                       \||/                            |
    |                        \/                             |
    |                                                       |
    |                                                       |
    |       Other EMBs could exist above 1088K (1MB+64K)    |
    |                                                       |
    |                                                       |
    |-------------------------------------------------------|   1088K
    |                                                       |
    |                                                       |
    |                The High Memory Area                   |
    |                                                       |
    |                                                       |
    |=======================================================|   1024K or 1MB
    |                                                       |
    |                        /\                             |
    |                       /||\                            |
    |                        ||                             |
    |                        ||                             |
    |.......................................................|
    |                                                       |
    |             Possible Upper Memory Block               |
    |.......................................................|
    |                        ||                             |
    |                        ||                             |
    |                       \||/                            |
    |                        \/                             |
    |                                                       |
    |        Other UMBs could exist between 640K and 1MB    |
    |                                                       |
    |-------------------------------------------------------|   640K
    |                                                       |
    |                                                       |
    |                                                       |
    |             Conventional or DOS Memory                |
    |                                                       |
    |                                                       |
    |                                                       |
    |                                                       |
    |                                                       |
    +-------------------------------------------------------+   0K
DRIVER INSTALLATION:
--------------------

    An XMS driver is installed by including a DEVICE= statement in the
machine's CONFIG.SYS file.  It must be installed prior to any other
devices or TSRs which use it.  An optional parameter after the driver's 
name (suggested name "/HMAMIN=") indicates the minimum amount of space in
the HMA a program can use.  Programs which use less than the minimum will
not be placed in the HMA.  See "Prioritizing HMA Usage" below for more
information.  A second optional parameter (suggested name "/NUMHANDLES=")
allows users to specify the maximum number of extended memory blocks which
may be allocated at any time.

    NOTE: XMS requires DOS 3.00 or above.


THE PROGRAMMING API:
--------------------

    The XMS API Functions are accessed via the XMS driver's Control Function.
The address of the Control Function is determined via INT 2Fh.  First, a
program should determine if an XMS driver is installed.  Next, it should
retrieve the address of the driver's Control Function.  It can then use any
of the available XMS functions.  The functions are divided into several
groups:

        1. Driver Information Functions (0h)
        2. HMA Management Functions (1h-2h)
	3. A20 Management Functions (3h-7h)
        4. Extended Memory Management Functions (8h-Fh)
        5. Upper Memory Management Functions (10h-11h)


DETERMINING IF AN XMS DRIVER IS INSTALLED:
------------------------------------------

    The recommended way of determining if an XMS driver is installed is to
set AH=43h and AL=00h and then execute INT 2Fh.  If an XMS driver is available,
80h will be returned in AL.

    Example:
            ; Is an XMS driver installed?
            mov     ax,4300h
            int     2Fh         
            cmp     al,80h  
            jne     NoXMSDriver
            

CALLING THE API FUNCTIONS:
--------------------------

    Programs can execute INT 2Fh with AH=43h and AL=10h to obtain the address
of the driver's control function.  The address is returned in ES:BX.  This
function is called to access all of the XMS functions.  It should be called
with AH set to the number of the API function requested.  The API function
will put a success code of 0001h or 0000h in AX.  If the function succeeded
(AX=0001h), additional information may be passed back in BX and DX.  If the
function failed (AX=0000h), an error code may be returned in BL.  Valid
error codes have their high bit set.  Developers should keep in mind that
some of the XMS API functions may not be implemented by all drivers and will
return failure in all cases.

    Example:
            ; Get the address of the driver's control function
            mov     ax,4310h
            int     2Fh
            mov     word ptr [XMSControl],bx        ; XMSControl is a DWORD
            mov     word ptr [XMSControl+2],es
            
            ; Get the XMS driver's version number
            mov     ah,00h
            call    [XMSControl]    ; Get XMS Version Number

    NOTE: Programs should make sure that at least 256 bytes of stack space
	  is available before calling XMS API functions.


API FUNCTION DESCRIPTIONS:
--------------------------

    The following XMS API functions are available:

       0h)  Get XMS Version Number
       1h)  Request High Memory Area
       2h)  Release High Memory Area
       3h)  Global Enable A20
       4h)  Global Disable A20
       5h)  Local Enable A20
       6h)  Local Disable A20
       7h)  Query A20
       8h)  Query Free Extended Memory
       9h)  Allocate Extended Memory Block
       Ah)  Free Extended Memory Block
       Bh)  Move Extended Memory Block
       Ch)  Lock Extended Memory Block
       Dh)  Unlock Extended Memory Block
       Eh)  Get Handle Information
       Fh)  Reallocate Extended Memory Block
      10h)  Request Upper Memory Block
      11h)  Release Upper Memory Block

Each is described below.


Get XMS Version Number (Function 00h):
--------------------------------------

    ARGS:   AH = 00h
    RETS:   AX = XMS version number
	    BX = Driver internal revision number
	    DX = 0001h if the HMA exists, 0000h otherwise
    ERRS:   None

    This function returns with AX equal to a 16-bit BCD number representing
the revision of the DOS Extended Memory Specification which the driver
implements (e.g. AX=0235h would mean that the driver implemented XMS version
2.35).	BX is set equal to the driver's internal revision number mainly for
debugging purposes.  DX indicates the existence of the HMA (not its
availability) and is intended mainly for installation programs.
    
    NOTE: This document defines version 2.00 of the specification.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -