minivdd.inc
来自「用于查询PC机上的USB端口是否有设备挂接上」· INC 代码 · 共 841 行 · 第 1/2 页
INC
841 行
VDD_TGDC_Sync_Off dd ?
VDD_TGDC_Sync_On dd ?
VDD_TGDC_FIFO_Empty dd ?
VDD_GGDC_Draw_Off dd ?
VDD_GGDC_Sync_Off dd ?
VDD_GGDC_Sync_On dd ?
VDD_GGDC_FIFO_Empty dd ?
VDD_GGDC_MOD_Emulate dd ?
H98_FLORA_Change dd ?
H98_Clear_Text dd ?
H98_Rest_GCs dd ?
H98_Rest_etc dd ?
H98_Save_ModeFF dd ?
Vids_struct ends
Vid_SFlags equ <Vids.Vids_SFlags>
VDD_CB_Offset equ <Vids.Vids_CB_Offset>
VDD_Msg_Pseudo_VM equ <Vids.Vids_Msg_Pseudo_VM>
TGDC_Draw_Off equ <Vids.VDD_TGDC_Draw_Off>
GGDC_Draw_Off equ <Vids.VDD_GGDC_Draw_Off>
TGDC_Sync_On equ <Vids.VDD_TGDC_Sync_On>
TGDC_Sync_Off equ <Vids.VDD_TGDC_Sync_Off>
TGDC_FIFO_Empty equ <Vids.VDD_TGDC_FIFO_Empty>
GGDC_FIFO_Empty equ <Vids.VDD_GGDC_FIFO_Empty>
MiniFuncStruct STRUC
MF_ProcAddr dd ?
MiniFuncStruct ENDS
MiniVDD_Proc_Struct STRUC
Proc_Address dd ?
Proc_Order dw ?
Proc_MiniID db ?
Proc_Flags db ?
MiniVDD_Proc_Struct ENDS
.errnz (size MiniVDD_Proc_Struct) mod 4
MiniVDD_GTrap_Struct STRUC
GTrap_ProcAddr dd ?
GTrap_PortAddr dw ?
GTrap_NumMini dw ?
GTrap_ProcTable db ((size MiniVDD_Proc_Struct) * MaxMultiTrap) dup (?)
MiniVDD_GTrap_Struct ENDS
MiniVDD_LTrap_Struct STRUC
LTrap_ProcAddr dd ?
LTrap_Status db ?
LTrap_Flags db MaxMultiTrap dup (?)
MiniVDD_LTrap_Struct ENDS
EndMiniFunc_ MACRO n
ifdef MiniFunc&n
dd OFFSET32 MiniFunc&n
else
dd 0
endif
ENDM
MiniFunc_ MACRO FuncID, FuncName
MiniFunc&FuncID equ <FuncName>
ENDM
BeginMiniFunc MACRO TableName
public TableName
TableName label near
ENDM
if 1
EndMiniFunc MACRO TableName
x = 0
REPT NBR_MINI_VDD_FUNCTIONS_41
EndMiniFunc_ %x
x = x + 1
ENDM
ENDM
else
EndMiniFunc MACRO TableName
x = 0
REPT NBR_MINI_VDD_FUNCTIONS
EndMiniFunc_ %x
x = x + 1
ENDM
ENDM
endif
MiniFunc MACRO FuncID, FuncName
MiniFunc_ %(FuncID), <FuncName>
ENDM
MiniVDDCall MACRO FuncID, SetCarry
local MiniCall_Loop
local MiniCall_Exit
push ecx
push esi
lea esi, [MiniVDD_Func_Table][(size MiniVDD_Proc_Struct) * MaxMultiFunc * FuncID]
mov ecx, [MiniVDD_NumMini]
MiniCall_Loop:
cmp dword ptr [esi.Proc_Address], 0
jz MiniCall_Exit
pushad
ifnb <SetCarry>
stc
endif
call dword ptr [esi.Proc_Address]
popad
jc MiniCall_Exit
add esi, size MiniVDD_Proc_Struct
loop MiniCall_Loop
MiniCall_Exit:
pop esi
pop ecx
ENDM
MiniVDDCall2 MACRO FuncID, SetCarry
local MiniCall_Exit
local MiniCall_Proc
push ecx
push esi
lea esi, [MiniVDD_Func_Table][(size MiniVDD_Proc_Struct) * MaxMultiFunc * FuncID]
MiniCall_Proc:
cmp dword ptr [esi.Proc_Address], 0
jz MiniCall_Exit
pushad
ifnb <SetCarry>
stc
endif
call dword ptr [esi.Proc_Address]
popad
MiniCall_Exit:
pop esi
pop ecx
ENDM
MiniVDDCall3 MACRO FuncID, MiniID, SetCarry
local MiniCall_Exit
local MiniCall_Loop
local MiniCall_Proc
push ecx
push esi
lea esi, [MiniVDD_Func_Table][(size MiniVDD_Proc_Struct) * MaxMultiFunc * FuncID]
movzx ecx, MiniID
MiniCall_Loop:
cmp ecx, 0
jz MiniCall_Proc
add esi, size MiniVDD_Proc_Struct
dec ecx
jmp MiniCall_Loop
MiniCall_Proc:
cmp dword ptr [esi.Proc_Address], 0
jz MiniCall_Exit
pushad
ifnb <SetCarry>
stc
endif
call dword ptr [esi.Proc_Address]
popad
MiniCall_Exit:
pop esi
pop ecx
ENDM
MiniVDDFunc MACRO TmpReg, FuncID
mov TmpReg, [MiniVDD_Func_Table.Proc_Address][(size MiniVDD_Proc_Struct) * MaxMultiFunc * FuncID]
ENDM
ExecModeLL macro Num
ExecMode_L&Num:
endm
ExecModeLE macro Num
ExecMode_E&Num:
endm
ExecModeJE macro Num
jmp ExecMode_E&Num
endm
ExecModeJZ macro Num
jz ExecMode_L&Num
endm
ExecModeJNZ macro Num
jnz ExecMode_L&Num
endm
ExecModeJEZ macro Num
jz ExecMode_E&Num
endm
ExecModeJENZ macro Num
jnz ExecMode_E&Num
endm
ExecModeTest macro ModeFlag, CB_Reg
if ModeFlag and vFlg_Local
ifidni <CB_Reg>, <Vid>
push ebx
mov ebx, [Vid_VM_Handle]
add ebx, [VDD_CB_Offset]
test [ebx.VDD_SFlags], ModeFlag
pop ebx
else
ifidni <CB_Reg>, <Cur>
push ebx
VMMCall Get_Cur_VM_Handle
add ebx, [VDD_CB_Offset]
test [ebx.VDD_SFlags], ModeFlag
pop ebx
else
ifb <CB_Reg>
push ebx
add ebx, [VDD_CB_Offset]
test [ebx.VDD_SFlags], ModeFlag
pop ebx
else
test [CB_Reg.VDD_SFlags], ModeFlag
endif
endif
endif
else
test [Vid_SFlags], ModeFlag
endif
endm
ExecModeChk macro HdrFlag, JmpFlag, JmpLabel, ModeFlag, CB_Reg
ifidni <HdrFlag>, <Jmp>
.erre FlgExecMode
ExecModeJE %EndExecMode
endif
ExecModeLL %NumExecMode
NumExecMode = NumExecMode + 1
FlgExecMode = 1
ifnb <ModeFlag>
ExecModeTest <ModeFlag>, <CB_Reg>
ifidni <JmpLabel>, <End>
ifidni <JmpFlag>, <Not>
ExecModeJENZ %EndExecMode
else
ExecModeJEZ %EndExecMode
endif
else
ifidni <JmpFlag>, <Not>
ExecModeJNZ %NumExecMode
else
ExecModeJZ %NumExecMode
endif
endif
endif
endm
ExecModeEnd macro
ExecModeLL %NumExecMode
ExecModeLE %EndExecMode
NumExecMode = NumExecMode + 1
EndExecMode = EndExecMode + 1
FlgExecMode = 0
endm
ExecModeJmp macro JmpLabel, ModeFlag, CB_Reg
ExecModeTest %ModeFlag, <CB_Reg>
jnz JmpLabel
endm
ExecModeJmpNot macro JmpLabel, ModeFlag, CB_Reg
ExecModeTest %ModeFlag, <CB_Reg>
jz JmpLabel
endm
ExecMode macro ModeFlag, CB_Reg
ExecModeChk Top, Equ, Next, %ModeFlag, CB_Reg
endm
ExecModeNot macro ModeFlag, CB_Reg
ExecModeChk Top, Not, Next, %ModeFlag, CB_Reg
endm
ExecModeOnly macro ModeFlag, CB_Reg
ExecModeChk Top, Equ, End, %ModeFlag, CB_Reg
endm
ExecModeOnlyNot macro ModeFlag, CB_Reg
ExecModeChk Top, Not, End, %ModeFlag, CB_Reg
endm
ExecModeElse macro ModeFlag, CB_Reg
ExecModeChk Jmp, Equ, Next, %ModeFlag, CB_Reg
endm
ExecModeElseNot macro ModeFlag, CB_Reg
ExecModeChk Jmp, Not, Next, %ModeFlag, CB_Reg
endm
ExecModeThru macro ModeFlag, CB_Reg
ExecModeChk Thru, Equ, Next, %ModeFlag, CB_Reg
endm
ExecModeThruNot macro ModeFlag, CB_Reg
ExecModeChk Thru, Not, Next, %ModeFlag, CB_Reg
endm
NumExecMode = 1
EndExecMode = 1
FlgExecMode = 0
else
ifdef MAINVDD
externdef MiniVDDDispatchTable:dword
endif
MiniVDDDispatch macro FunctionCode, HandlerAddr
mov [edi+(FunctionCode*4)],OFFSET32 MiniVDD_&HandlerAddr
endm
CardVDDDispatch macro FunctionCode, HandlerAddr
mov [edi+(FunctionCode*4)],OFFSET32 CardVDD_&HandlerAddr
endm
MiniVDDCall macro FunctionCode, SaveFlags
local MiniVDDCallExit, MiniVDDCallLeave
ifdef MAXDEBUG
ifndef NoTrace_&FunctionCode&
Trace_Out "MiniVDDCall: &FunctionCode&"
endif
endif
push edi
ifnb <SaveFlags>
pushfd
endif
mov edi,OFFSET32 MiniVDDDispatchTable
cmp dword ptr [edi+(FunctionCode*4)],0
je MiniVDDCallLeave
ifnb <SaveFlags>
popfd
endif
call dword ptr [edi+(FunctionCode*4)]
ifnb <SaveFlags>
jmp MiniVDDCallExit
endif
MiniVDDCallLeave:
ifnb <SaveFlags>
popfd
endif
MiniVDDCallExit:
pop edi
endm
endif
endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?