0,0 → 1,178 |
;****************************************************************************** |
; |
; (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? |