2025-04-27 07:49:33 -04:00

165 lines
4.1 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;/* himem.inc
; *
; * Microsoft Confidential
; * Copyright (C) Microsoft Corporation 1988-1991
; * All Rights Reserved.
; *
; * Modification History
; *
; * Sudeepb 14-May-1991 Ported for NT XMS support
; */
;*----------------------------------------------------------------------*
;* EQUATES *
;*----------------------------------------------------------------------*
; Build options
NUM_A20_RETRIES = 3 ; # times to retry A20 diddles
; Debugging options
debug_vers = 00000h
tdump = 00000h ; display the handle table on each call
keep_cs = 00000h ; keep track of allocator's cs:
XMSVersion equ 0200h
HimemVersion equ 0200h+77h
DATE_String equ '02/27/91'
INT2F_ID equ 043h ; XMS Int 2Fh multiplex ID
INT2F_INS_CHK equ 000h ; driver installation check
INT2F_CTL_FUN equ 010h ; get control function address
INT2F_EXT_A20 equ 030h ; get external A20 hander info
ifndef DBCS
HISEG_ORG equ 0A000h ; ORG for the seg to be moved
; into HMA
else
ifndef NEC_98
HISEG_ORG equ 0A000h+01000h ; adjust for DBCS System
else
HISEG_ORG equ 0A000h+02000h ; adjust for NEC_98 System
endif
endif
multMULT equ 4ah
multMULTGETHMAPTR equ 1
multMULTALLOCHMA equ 2
DEFHANDLES equ 32 ; Default # of EMB handles
MAXHANDLES equ 128 ; Max # of EMB handles
FREEFLAG equ 00000001b ; EMB Flags
USEDFLAG equ 00000010b
UNUSEDFLAG equ 00000100b
;*----------------------------------------------------------------------*
;* XMS Error Codes *
;*----------------------------------------------------------------------*
ERR_NOTIMPLEMENTED equ 080h
ERR_VDISKFOUND equ 081h
ERR_A20 equ 082h
ERR_GENERAL equ 08Eh
ERR_UNRECOVERABLE equ 08Fh
ERR_HMANOTEXIST equ 090h
ERR_HMAINUSE equ 091h
ERR_HMAMINSIZE equ 092h
ERR_HMANOTALLOCED equ 093h
ERR_OUTOMEMORY equ 0A0h
ERR_OUTOHANDLES equ 0A1h
ERR_INVALIDHANDLE equ 0A2h
ERR_SHINVALID equ 0A3h
ERR_SOINVALID equ 0A4h
ERR_DHINVALID equ 0A5h
ERR_DOINVALID equ 0A6h
ERR_LENINVALID equ 0A7h
ERR_OVERLAP equ 0A8h
ERR_PARITY equ 0A9h
ERR_EMBUNLOCKED equ 0AAh
ERR_EMBLOCKED equ 0ABh
ERR_LOCKOVERFLOW equ 0ACh
ERR_LOCKFAIL equ 0ADh
ERR_UMBSIZETOOBIG equ 0B0h
ERR_NOUMBS equ 0B1h
ERR_INVALIDUMB equ 0B2h
; Macro to avoid the 286 POPF bug. Performs a harmless IRET to simulate a
; popf. Some 286s allow interrupts to sneak in during a real popf.
popff macro
push cs
call pPPFIRet ; Defined as the offset of any IRET
endm
.286
;*----------------------------------------------------------------------*
;* SEGMENT DEFINITION *
;*----------------------------------------------------------------------*
_text segment word public 'code'
assume cs:_text,ds:_text
;************************************************************************
;* *
;* Data Structures *
;* *
;************************************************************************
; The driver Request Header structure definition.
ReqHdr struc
ReqLen db ?
Unit db ?
Command db ?
Status dw ?
Reserved db 8 dup (?)
Units db ?
Address dd ?
pCmdLine dd ?
ReqHdr ends
; An EMB Handle structure definition.
Handle struc ; Handle Table Entry
zzFlags db ? ; Unused/InUse/Free
zzcLock db ? ; Lock count
zzBase dw ? ; 32-bit base address in K
zzLen dw ? ; 32-bit length in K
if keep_cs
zzAcs dw ? ; allocator's code segment
endif
Handle ends
; allow easy generation of appropriate segment overrides
xFlags equ funky:zzFlags
xcLock equ funky:zzcLock
xBase equ funky:zzBase
xLen equ funky:zzLen
if keep_cs
xAcs equ funky:zzAcs
endif
Flags equ funky:zzFlags
cLock equ funky:zzcLock
Base equ funky:zzBase
Len equ funky:zzLen
if keep_cs
Acs equ funky:zzAcs
endif
; Extended Memory Move Block structure definition.
MoveExtendedStruc struc
bCount dd ? ; Length of block to move
SourceHandle dw ? ; Handle for souce
SourceOffset dd ? ; Offset into source
DestHandle dw ? ; Handle for destination
DestOffset dd ? ; Offset into destination
MoveExtendedStruc ends