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

📄 pci.inc

📁 super io 监控程序
💻 INC
📖 第 1 页 / 共 2 页
字号:
GetPCIDeviceInfo:       
	pusha
;;; KenWang [041602] >>>>>>
        lea     di,SubFuncSelect
	mov	al,ds:[di]
	cmp	al,70h
        jnz     ReGetPCIInfo
	mov	al,0ffh
	mov     ds:[di],al
        jmp     short PCIFoundDislplay
;;; KenWang [041602] <<<<<<
ReGetPCIInfo:
	lea	si,SearchFlag
	mov	al,ds:[si]
	cmp	al,KeyF3
	jz	PCIKeyF3
        lea     si,SubFuncSelect
	mov	al,ds:[si]
	cmp	al,0e0h
        jz      PCIFoundDislplay  
 	call	EnterPCIAddress
	jnc	PCIFoundDislplay
	cmp	ah,KeyPgDn
        jz      GetPCIInfoNext
	cmp	ah,KeyPgUp
        jz      GetPCIInfoPrev
        jmp     GetPCIInfoFuncRet
PCIFoundDislplay:
	call    DisplayFoundPCIDevToAddress
	call	DisplaySelectedFunctionData
        jc      GetPCIInfoFuncRet
	lea	si,SearchFlag
	mov	ah,ds:[si]
	cmp	ah,KeyF3  
        jz      PCIFoundDislplay
	cmp	ah,KeyF8  
        jz      PCIFoundDislplay
	cmp	ah,KeyF7  
        jnz     ReGetPCIInfoNotF7
        call    F7ChangeAccessMethod
        jmp     PCIFoundDislplay  
PCIKeyF3:
	call	DisplayFixedPCIAddress
        jmp     PCIFoundDislplay  
ReGetPCIInfoNotF7:
	cmp	ah,KeyF6  
        jnz     ReGetPCIInfoNotF6
        call    ListPCIDevice
        jmp     PCIFoundDislplay
ReGetPCIInfoNotF6:
	cmp	ah,KeyF10  
        jz      ReGetPCIInfo
	cmp	ah,KeyPgDn
        jz      GetPCIInfoNext
	cmp	ah,KeyPgUp
        jz      GetPCIInfoPrev
GetPCIInfoFuncRet:
	popa
	ret
;;Find Next PCI Device
GetPCIInfoNext:
        lea     si,PCIBusNo
	mov	bl,ds:[si]
        lea     si,PCIDevFuncNo
	mov	al,ds:[si]
	inc	al 
        lea     si,PCIDevFuncNoBuf
	mov	ds:[si],al
	cmp	al,0
        jnz     NextCurBus
	inc	bl
NextCurBus:
	and	bl,0fh
        lea     di,PCIBusNoBuf
	mov     ds:[di],bl
LoopNextFunc:
	xor	eax,eax
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
        lea     di,PCIBusNoBuf
	mov	ah,ds:[di]
	shl	eax,8
	mov	bh,1
        call    ReadPciReg
 	cmp	ax,00000h
 	jz	PCINextFunc
	cmp	ax,0ffffh
	jz	PCINextFunc
	call	CheckMultiFunction
        jnc     PCINextDevFound
PCINextFunc:
        lea     di,PCIDevFuncNoBuf
	mov   	al,ds:[di]
	mov   	ah,al         
	and	al,07h
	cmp	al,7
	jz	PCINextDev
	inc	ah
	mov   	ds:[di],ah
	jmp 	LoopNextFunc
PCINextDev:
        lea     di,PCIDevFuncNoBuf
	mov   	al,ds:[di]
	inc	al
	mov   	ds:[di],al
	cmp	al,0
	jz 	PCINextBus
	jmp 	LoopNextFunc
PCINextBus:
        lea     di,PCIBusNoBuf
	mov   	al,ds:[di]
	inc	al
        and     al,PCIMaxBusNo
	mov   	ds:[di],al
        jmp     LoopNextFunc
ReNextBus:
	mov	al,0
        lea     di,PCIDevFuncNoBuf
	mov   	ds:[di],al
        lea     di,PCIBusNoBuf
	mov   	ds:[di],al
        jmp     LoopNextFunc
;;Find Prev. PCI Device
GetPCIInfoPrev:
        lea     si,PCIBusNo
	mov	bl,ds:[si]
        lea     si,PCIDevFuncNo
	mov	al,ds:[si]
	dec	al 
        lea     di,PCIDevFuncNoBuf
	mov     ds:[di],al
	cmp	al,0ffh
	jnz	PrevCurBus  
	dec	bl
	and	bl,0fh
PrevCurBus:
        lea     di,PCIBusNoBuf
	mov     ds:[di],bl
LoopPrevFunc:
	xor	eax,eax
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
        lea     di,PCIBusNoBuf
	mov	ah,ds:[di]
	shl	eax,8
	mov	bh,1
        call    ReadPciReg
 	cmp	ax,00000h
 	jz	PCIPrevFunc
	cmp	ax,0ffffh
	jz	PCIPrevFunc
	call	CheckMultiFunction
	jnc	PCINextDevFound
PCIPrevFunc:
        lea     di,PCIDevFuncNoBuf
	mov   	al,ds:[di]
	dec	al
	mov   	ds:[di],al
	cmp	al,0ffh
        jz      PCIPrevBus
	jmp 	LoopPrevFunc
PCIPrevBus:
        lea     di,PCIBusNoBuf
	mov   	al,ds:[di]
	dec	al
        and     al,PCIMaxBusNo
	mov   	ds:[di],al
        jmp     LoopPrevFunc
;;Show Found PCI device
PCINextDevFound:
	call	PCIAddressBufToNo
	call	DisplayFoundPCIDevToAddress
        jmp     PCIFoundDislplay
;----------------------------;
PCIAddressBufToNo:
        lea     si,PCIBusNoBuf
	mov	al,ds:[si]
        lea     di,PCIBusNo
	mov	ds:[di],al
        lea     si,PCIDevFuncNoBuf
	mov	al,ds:[si]
        lea     di,PCIDevFuncNo
	mov     ds:[di],al
	ret
;----------------------------;
DisplayFoundPCIDevToAddress:
        mov     dx,PCIBusNoPosn-1
	call	SetCursor
        lea     di,PCIBusNo
	mov	al,ds:[di]
	call	DisplayHex
        mov     dx,PCIDevNoPosn-1
	call	SetCursor
        lea     di,PCIDevFuncNo
	mov	al,ds:[di]
	shr	al,3
	call	DisplayHex
        mov     dx,PCIFuncNoPosn-1
	call	SetCursor
        lea     di,PCIDevFuncNo
	mov	al,ds:[di]
	and	al,07h
	call	DisplayHex
	ret
;----------------------------;
EnterPCIAddress:
;;Empty PCI address
        mov     dx,PCIBusNoPosn
	mov	cx,2
	call	EmptyAddress
        mov     dx,PCIDevNoPosn
	mov	cx,2
	call	EmptyAddress
        mov     dx,PCIFuncNoPosn
	mov	cx,2
	call	EmptyAddress
;;Enter Port
        mov     dx,PCIBusNoPosn
	mov	cx,3
        call    EnterPortAddress
        jc      EnterPCIAddressFail
        mov     dx,PCIDevNoPosn
	mov	cx,3
        call    EnterPortAddress
        jc      EnterPCIAddressFail
        mov     dx,PCIFuncNoPosn
	mov	cx,3
        call    EnterPortAddress
        jc      EnterPCIAddressFail
        call    GetPciAddressFromScreen
	clc
	ret
EnterPCIAddressFail:
	cmp	ah,KeyF10 		; F10
        jz      PCIF10Exit
	cmp	ah,KeyF6  		; F6
	jz      PCIListKey
	cmp	ah,KeyF7  		; F7
	jz      PCICHGAccsssMethod
NoPCIListKey:
    	stc
	ret
PCIF10Exit:
        lea     di,SubFuncSelect
	mov	al,0ffh
	mov	ds:[di],al
    	stc
	ret
	
PCICHGAccsssMethod:
        call    F7ChangeAccessMethod
        jmp     EnterPCIAddress
PCIListKey:
	call	ListPCIDevice
        jc      EnterPCIAddress
	clc
	ret
;---------------------------;
ListPCIDevice:
	call	StoreScreenB
;Hide Cursor
	mov	cx,200eh
        call    SetCursorType
        mov     cx,PCIListHeadPosn
        mov     dx,cx              
	add	dx,030dh
        mov     bh,PCIListWindowColor
        call    SetWindowsAttribute
        mov     dx,PCIListHeadPosn
        lea     si,PCIListULine 
	mov     cx,3
LoopPCIListWindows:
	push	cx
	call	SetCursor
	push	si
	call	DisplayString
	pop	si
	add	si,15
	inc	dh
	pop	cx
	loop	LoopPCIListWindows
        mov     dx,PCIListHeadPosn+0200h
	call	SetCursor
        call    SearchPCIDevice
	call	PCIListSelectMenu
	pushf
  	call	ReStoreScreenB
	popf
;    	jc	OkPCIListExit
;;	call    DisplayFoundPCIDevToAddress
;	clc  
;OkPCIListExit:
	ret
;-------------------------------;
PCIListSelectMenu:
        mov     dx,PCIListHeadPosn+0301h
LoopPCIListSelectMenu:
        mov     cl,PCIListTextColor
        mov     ch,12              
        call    ChangeBarAttribute
	push	dx
	add	dl,14
        mov     cl,Red+LightColor                  
        mov     ch,50              
        call    ChangeBarAttribute
	pop	dx
PCIListWaitKey:
;;>>>K.W. Thu 01-31-2002 11:42:54
	push	dx
        mov     dx,PCIListHeadPosn+0301h
	call	GetSelectBusDevFuncToBuffer	
	pop	dx
;;<<<K.W. Thu 01-31-2002 11:42:56 
	call	WaitOneKey
	cmp	al,KeyEsc  
        jz      ExitPCIListSelectMenu
	cmp	ah,KeyLeft
        jz      ExitPCIListSelectMenu
	cmp	ah,KeyUp
	jz	PCIPrevListDev
	cmp	ah,KeyDown
        jz      PCINextListDev
	cmp	al,KeyEnter
        jz      PCINextListSelected
        jmp     short PCIListWaitKey
PCIPrevListDev:
        mov     cl,PCIListWindowColor
        mov     ch,12              
        call    ChangeBarAttribute
	push	dx
	add	dl,14
        mov     cl,Cyan+LightColor                  
        mov     ch,50              
        call    ChangeBarAttribute
	pop	dx
        cmp     dx,PCIListHeadPosn+0301h
	jz	PCIUpToBottem
	dec	dh
        jmp     LoopPCIListSelectMenu
PCIUpToBottem:
;;>>>K.W. Thu 01-31-2002 13:02:28  
	push	dx
	call	CheckPrevDevFuncPresent
	pop	dx
	jc	NoPrevPCIDevice
	push	dx
        mov     dx,PCIListHeadPosn+0200h
	call	SetCursor
        call    LoopSearchPCIDevice
	pop	dx
        jmp     LoopPCIListSelectMenu
NoPrevPCIDevice:
        mov     dx,MaxPCIDeviceWindown
	lea	si,LasPCIListDev
	mov	ax,ds:[si]
	cmp	ax,dx
	jae	MaxLastPCIPrev
	mov	dx,ax
MaxLastPCIPrev:
;;<<<K.W. Thu 01-31-2002 13:02:35  
        jmp     LoopPCIListSelectMenu
;;;;
PCINextListDev:
        mov     cl,PCIListWindowColor
        mov     ch,12              
        call    ChangeBarAttribute
	push	dx
	add	dl,14
        mov     cl,Cyan+LightColor                  
        mov     ch,50              
        call    ChangeBarAttribute
	pop	dx
        mov     bx,MaxPCIDeviceWindown
	lea	si,LasPCIListDev
	mov	ax,ds:[si]
	cmp	ax,MaxPCIDeviceWindown
	jae	MaxPCINext
	mov	bx,ax
MaxPCINext:
	cmp	dx,bx
	jz      PCIDnBottom
	inc	dh
        jmp     LoopPCIListSelectMenu
PCIDnBottom:			  
;;>>>K.W. Thu 01-31-2002 11:52:37  
	push	dx
	call	CheckNextDevFuncPresent
	pop	dx
	jc	NotNextPCIDevices
	push	dx
        mov     dx,PCIListHeadPosn+0200h
	call	SetCursor
        call    LoopSearchPCIDevice
	pop	dx
        jmp     LoopPCIListSelectMenu
NotNextPCIDevices:
;;<<<K.W. Thu 01-31-2002 11:52:35  
        mov     dx,PCIListHeadPosn+0301h
        jmp     LoopPCIListSelectMenu
PCINextListSelected:
	call	GetSelectBusDevFuncToBuffer
	lea	si,PCIBusNoBuf
	mov	al,ds:[si]
	lea	si,PCIBusNo
	mov	ds:[si],al
	lea	si,PCIDevFuncNoBuf
	mov	al,ds:[si]
	lea	si,PCIDevFuncNo
	mov	ds:[si],al
	clc
	ret
ExitPCIListSelectMenu:
	lea	si,PCIBusNo
	mov	al,ds:[si]
	lea	si,PCIBusNoBuf
	mov	ds:[si],al
	lea	si,PCIDevFuncNo
	mov	al,ds:[si]
	lea	si,PCIDevFuncNoBuf
	mov	ds:[si],al
	stc
	ret 
;;>>>K.W. Thu 01-31-2002 13:01:49  ---------------------;
CheckPrevDevFuncPresent:
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
        lea     di,PCIBusNoBuf
	mov     ah,ds:[di]
	push	ax
	call	GetSelectBusDevFuncToBuffer
	xor	eax,eax
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
        lea     di,PCIBusNoBuf
	mov	ah,ds:[di]
	shl	eax,8
        cmp     eax,0
        jz      PCIListPrevFuncNotPresent
CheckBackwardPCI:
	sub	eax,00000100h
	ror	eax,8
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov	ds:[di],ah
	rol	eax,8
	push	eax
	mov	bh,1
        call    ReadPciReg
 	cmp	ax,00000h
        jz      PCIListBackwardNext
	cmp	ax,0ffffh
        jz      PCIListBackwardNext
	call	CheckMultiFunction
	pop	eax
        jnc     PCIBackwardFound
	push	eax
PCIListBackwardNext:
	pop	eax
        cmp     eax,0
        jz      PCIListPrevFuncNotPresent
        jmp     short CheckBackwardPCI
PCIBackwardFound:
	shr	eax,8 
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov     ds:[di],ah
	pop	ax
	clc
        jmp     CheckPrevDevFuncPresentEnd
PCIListPrevFuncNotPresent:
	pop	ax
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov     ds:[di],ah
	stc
CheckPrevDevFuncPresentEnd:
	ret
;;<<<K.W. Thu 01-31-2002 13:01:51  ---------------------;
;;>>>K.W. Thu 01-31-2002 11:52:58  ---------------------;
CheckNextDevFuncPresent:
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
        lea     di,PCIBusNoBuf
	mov     ah,ds:[di]
	push	ax
	call	GetSelectBusDevFuncToBuffer
	xor	eax,eax
        lea     di,PCIDevFuncNoBuf
	mov  	al,ds:[di]
	inc	al
        lea     di,PCIBusNoBuf
	mov	ah,ds:[di]
	shl	eax,8
CheckForwardPCI:
	ror	eax,8
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov	ds:[di],ah
	rol	eax,8
	push	eax
	mov	bh,1
        call    ReadPciReg
 	cmp	ax,00000h
        jz      PCIListForwaordNext
	cmp	ax,0ffffh
        jz      PCIListForwaordNext
	call	CheckMultiFunction
	pop	eax
        jnc     PCIForwardFound
	push	eax
PCIListForwaordNext:
	pop	eax
	cmp	eax,000fff00h
 	jae	PCIListNextFuncNotPresent
	add	eax,00000100h
	jmp	short CheckForwardPCI
PCIForwardFound:
	pop	ax
	add	ax,01h
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov     ds:[di],ah
	clc
        jmp     CheckNextDevFuncPresentEnd
PCIListNextFuncNotPresent:
	pop	ax
        lea     di,PCIDevFuncNoBuf
	mov  	ds:[di],al
        lea     di,PCIBusNoBuf
	mov     ds:[di],ah
	stc
CheckNextDevFuncPresentEnd:
	ret
;;<<<K.W. Thu 01-31-2002 11:53:02  ---------------------;
GetSelectBusDevFuncToBuffer:
        mov     dl,HeaderPosCol+27h-17h       
        call    CalaFixedCursorposn		; Ouput=ax
        call	GetFixCursorValue		; BL=value

⌨️ 快捷键说明

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