kolibrios-fun/programs/hd_load/9x2klbr/V86MMGR.INC

179 lines
5.2 KiB
Plaintext
Raw Normal View History

;******************************************************************************
;
; (C) Copyright MICROSOFT Corp., 1988-1990
;
; Title: V86MMGR.Inc - Public services for V86MMGR
;
; Version: 2.00
;
; Date: 29-Nov-88
;
; Author: ARR
;
;------------------------------------------------------------------------------
;
; Change log:
;
; DATE REV DESCRIPTION
; ----------- --- -----------------------------------------------------------
; 29-Nov-1988 ARR Original
; 26-Apr-1989 RAL New mapper services
;
;==============================================================================
Begin_Service_Table V86MMGR
V86MMGR_Service V86MMGR_Get_Version, LOCAL
V86MMGR_Service V86MMGR_Allocate_V86_Pages, LOCAL
V86MMGR_Service V86MMGR_Set_EMS_XMS_Limits, LOCAL
V86MMGR_Service V86MMGR_Get_EMS_XMS_Limits, LOCAL
;
; Services used for API mapping.
;
V86MMGR_Service V86MMGR_Set_Mapping_Info, VxD_ICODE
V86MMGR_Service V86MMGR_Get_Mapping_Info
V86MMGR_Service V86MMGR_Xlat_API
V86MMGR_Service V86MMGR_Load_Client_Ptr
V86MMGR_Service V86MMGR_Allocate_Buffer
V86MMGR_Service V86MMGR_Free_Buffer
V86MMGR_Service V86MMGR_Get_Xlat_Buff_State
V86MMGR_Service V86MMGR_Set_Xlat_Buff_State
V86MMGR_Service V86MMGR_Get_VM_Flat_Sel
V86MMGR_Service V86MMGR_Map_Pages
V86MMGR_Service V86MMGR_Free_Page_Map_Region
;***********************************************************
; END OF 3.00 level services
;
V86MMGR_Service V86MMGR_LocalGlobalReg
V86MMGR_Service V86MMGR_GetPgStatus, LOCAL
V86MMGR_Service V86MMGR_SetLocalA20, VxD_ICODE
V86MMGR_Service V86MMGR_ResetBasePages, LOCAL
V86MMGR_Service V86MMGR_SetAvailMapPgs, VxD_ICODE
V86MMGR_Service V86MMGR_NoUMBInitCalls, VxD_ICODE
IFNDEF WIN31COMPAT
; Services added post Win 3.1
V86MMGR_Service V86MMGR_Get_EMS_XMS_Avail, LOCAL
V86MMGR_Service V86MMGR_Toggle_HMA
V86MMGR_Service V86MMGR_Dev_Init, LOCAL
V86MMGR_Service V86MMGR_Alloc_UM_Page, LOCAL
ENDIF ; WIN31COMPAT
ifdef NEC_98
;;V86MMGR_Service V86MMGR_EMM_B0Bank_CHK
V86MMGR_Service V86MMGR_Check_NHSupport, LOCAL
endif
End_Service_Table V86MMGR
;
; BITS of returned EAX flags for V86MMGR_GetPgStatus
;
V86PS_ROM equ 0000000000000001b ; Page contains global ROM
V86PS_RAM equ 0000000000000010b ; Page contains global RAM
V86PS_EMM equ 0000000010000000b ; Page belongs to EMM driver
V86PS_XMS equ 0000000100000000b ; Page belongs to XMS driver
V86PS_MAP equ 0000001000000000b ; Page belongs to mapper
V86PS_UMB equ 0001000000000000b ; Page contains imported UMB
; (Note that V86PS_XMS is not
; necessarily set)
;
; BITS of ECX flags for V86MMGR_Allocate_V86_Pages
;
AV86PLocked EQU 00000000000000000000000000000001B
AV86PLockedBit EQU 0 ; VM memory is to be
; ALWAYS LOCKED regardless of
; pager type or whether VM
; is suspended.
;
; BITS of ECX flags for V86MMGR_Set_EMS_XMS_Limits
;
; NOTE: If neither Limit_DisableHMA or Limit_EnableHMA is set, the HMA
; state is not altered.
;
EMS_XMS_Limit_DisableHMA EQU 00000000000000000000000000000001B
EMS_XMS_Limit_DisableHMABit EQU 0
EMS_XMS_Limit_EnableHMA EQU 00000000000000000000000000000010B
EMS_XMS_Limit_EnableHMABit EQU 1
EMS_XMS_Limit_XMS_Is_Locked EQU 00000000000000000000000000000100B
EMS_XMS_Limit_XMS_Is_LockedBit EQU 2
EMS_XMS_Limit_EMS_Is_Locked EQU 00000000000000000000000000001000B
EMS_XMS_Limit_EMS_Is_LockedBit EQU 3
;
; API mapper equates and macros
;
Xlat_Exec_Int EQU 000h
Xlat_Fixed_Len EQU 001h
Xlat_Var_Len EQU 002h
Xlat_Calc_Len EQU 003h
Xlat_ASCIIZ EQU 004h
Xlat_Jmp_To_Proc EQU 005h
Xlat_Return_Ptr EQU 006h
Xlat_Return_Seg EQU 007h
Xlat_ASCIIZ_InOut EQU 008h
Xlat_API_Exec_Int MACRO Int_Number
db Xlat_Exec_Int
db Int_Number
ENDM
Xlat_API_Fixed_Len MACRO Ptr_Seg, Ptr_Off, Length
db Xlat_Fixed_Len
dw Length
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_Var_Len MACRO Ptr_Seg, Ptr_Off, Len_Reg
db Xlat_Var_Len
db Client_&Len_Reg
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_Calc_Len MACRO Ptr_Seg, Ptr_Off, Calc_Proc_Addr
db Xlat_Calc_Len
dd OFFSET32 Calc_Proc_Addr
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_ASCIIZ MACRO Ptr_Seg, Ptr_Off
db Xlat_ASCIIZ
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_ASCIIZ_InOut MACRO Ptr_Seg, Ptr_Off
db Xlat_ASCIIZ_InOut
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_Jmp_To_Proc MACRO Proc_Name
db Xlat_Jmp_To_Proc
dd OFFSET32 Proc_Name
ENDM
Xlat_API_Return_Ptr MACRO Ptr_Seg, Ptr_Off
db Xlat_Return_Ptr
dw (Client_&Ptr_Seg*100h)+Client_&Ptr_Off
ENDM
Xlat_API_Return_Seg MACRO Ptr_Seg
db Xlat_Return_Seg
db Client_&Ptr_Seg
ENDM
;
; The V86MMGR does W386_Device_Broadcast call outs. The 'subfunction' number
; for these call outs is contained in the CX register. These are the equates
; for the subfunction numbers.
;
V86CallOut_LclA20forGlblHMA equ 0 ; Should A20 state be local
; even if HMA is GLOBAL?