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

📄 isaio.inc

📁 super io 监控程序
💻 INC
📖 第 1 页 / 共 2 页
字号:
	cmp	al,2		; WinbondLPC only
	jnz	NotWinbondLPCDeviceExit
;Select DEV:0B H/W Monitor
	lea   	si,CtrlFlag
	mov	al,ds:[si]
	cmp	al,08h
	jz	JustDisplayHWM
	mov	bl,07h		;Reg
	call	ISAIORead 
	push	ax		; Store Device No.
	call	GetWinLPCHWMAddress
        jc      NotWinbondLPCDevice
	call	CheckWinbondLPCHWMPresent
        jc      NotWinbondLPCDevice
GoDIsplayHWM:
	call	DisplayWinHWMInfo
NotWinbondLPCDevice:
	pop	ax		;Restore Device No.
	mov	ch,07h		;Reg
	mov	bl,al  
	call	ISAIOWrite
	ret
NotWinbondLPCDeviceExit:
	call	ClearMoreInfoArea
	ret
JustDisplayHWM:
	push	ax
	jmp 	short GoDIsplayHWM    
;-------------
GetWinLPCHWMAddress:
;;; [KenWang] 04/06/2002 --->>>>>>
        lea     si,HWMIndexPort
	mov	ax,ds:[si]
	cmp	ax,0
	jnz	FindWinboardHWM
;;; [KenWang] 04/06/2002 <<<<<<---
	mov	ch,07h		;Reg
	mov	bl,0bh
	call	ISAIOWrite
	mov	bl,30h		;Reg
	call	ISAIORead 
	test  	al,01h
        jz      NotWinbondLPCHWM   
	mov	bl,60h		;Reg
	call	ISAIORead 
	mov	bh,al
	mov	bl,61h		;Reg
	call	ISAIORead 
	mov	ah,bh
	add	ax,05h
        lea     si,HWMIndexPort
	mov	ds:[si],ax
	inc	ax
	mov	ds:[si+2],ax
FindWinboardHWM:
	clc
	ret
NotWinbondLPCHWM:
	stc
	ret
;-------------
CheckWinbondLPCHWMPresent:
;;; [KenWang] 04/06/2002 --->>>>>>
	mov	ah,4eh
        call    ReadWinHWM
	push	ax
;;; [KenWang] 04/06/2002 <<<<<<---
	mov	ah,48h
        call    ReadWinHWM
	cmp	al,2dh
	pop	ax
	jnz	WinHWMAbsent
	mov	ah,4eh
        call    WriteWinHWM
	clc
	ret
WinHWMAbsent:
	stc
	ret
;-------------
;Input : ah=reg
ReadWinHWM:
	push	dx
        lea     si,HWMIndexPort
	mov     dx,ds:[si]	;295
	mov	al,ah
	out	dx,al
	inc	dx
	in	al,dx
	pop	dx
	ret
;-------------
;Input : ah=reg, al=data
WriteWinHWM:
	push	dx
        lea     si,HWMIndexPort
	mov     dx,ds:[si]	;295
	xchg	ah,al
	out	dx,al
	xchg	ah,al
	inc	dx
	out	dx,al
	pop	dx
	ret
;-------------
DisplayWinHWMInfo:
        mov     cx,HWMonitorTiltePosn
	mov	dx,cx
	add	dl,17
        mov     bh,(Cyan shl 4)+Red
	call	ChangeWindowsAttribute
        mov     dx,HWMonitorTiltePosn
	call	SetCursor
        lea     si,HWMonitorTitle
	call	DisplayString

        mov     cx,HWMonitorTiltePosn+0100h
	mov	dx,cx
	add	dx,1011h
        mov     bh,(Blue shl 4)+White
	call	ChangeWindowsAttribute

        mov     dx,HWMonitorTiltePosn+0100h
        lea     si,HWMSensor1
	mov	cx,17
LoopDisplayWinHWMList:
	push	cx
	call	SetCursor
	push	si
	call	DisplayString
	call	DisplayHWMinfoValue
	pop	si
	inc	dh
	add	si,9 
	pop	cx
        loop    LoopDisplayWinHWMList
	ret
;-------------------------------
; Input	: DH
DisplayHWMinfoValue:
	pusha
	mov	ah,4eh
        call    ReadWinHWM	; al=data      
	mov	bx,ax
	push	bx
        mov     bx,HWMonitorTiltePosn+0100h
	sub	dh,bh
	movzx 	bx,dh
	shl	bx,1
	lea	si,cs:HWMFunctionTBL
	call	word ptr cs:[si+bx]
	pop	bx
	push	ax
	mov	al,bl 
	mov	ah,4eh
        call    WriteWinHWM	; Change Bank
	pop	ax
	popa
	ret
;--------------------
HWMFunctionTBL	label	byte
	dw	WHWMSeneor1
	dw	WHWMSeneor2
	dw	WHWMSeneor3
	dw	WHWMFan1   
	dw	WHWMFan2   
	dw	WHWMFan3   
	dw	WHWMVID    
	dw	WHWMVcore  
	dw	WHWMVtt    
	dw	WHWMVio    
	dw	WHWMP5V   
	dw	WHWMP12V  
	dw	WHWMM12V  
	dw	WHWMM5V   
	dw	WHWMBattery
	dw	WHWM5VSB  
	dw	WHWMChassis
;===============================================
ISADeviceSelectTBL	label	byte
         dw	 CMOSIndex
         dw	 UCMOSIndex
         dw      WinbondLPCIndex        ;WinbondLPC
         dw      Winbond977Index        ;Winbond977
         dw      SmscLPCIndex           ;SmscLPC   
         dw      Gm803cIndex            ;GM803c    
         dw      Gm803cIndex            ;Gm803b    
         dw      IT8712Index            ;IT8712    
;------------
ISADeviceUnlock	label	byte
         dw      GenericUnLock
         dw      WinbondUnLock          ;WinbondLPC
         dw      WinbondUnLock          ;Winbond977
         dw      SmscUnLock             ;SmscLPC   
         dw      Gm803cUnLock           ;GM803c    
         dw      Gm803cUnLock           ;Gm803b    
         dw      IT8712UnLock           ;IT8712    
;------------
ISADevicelock	label	byte
         dw      GenericLock
         dw      WinbondLock		;WinbondLPC
         dw      WinbondLock		;Winbond977
         dw      WinbondLock		;SmscLPC
         dw      Gm803cLock		;GM803c
         dw      Gm803bLock		;Gm803b
         dw      IT8712Lock		;IT8712
;-------------------------------
CMOSIndex:
	mov	ax,070h
CUCMOSIndexData:
        lea     si,ISAIndexPort
	mov	ds:[si],ax
        lea     si,ISADataPort
	inc	ax
	mov	ds:[si],ax
	ret
;-------------------------------
UCMOSIndex:
	mov	ax,072h
        jmp     short CUCMOSIndexData
;-------------------------------
IT8712Index:
	mov	dx,2eh
        call    ITETryIndexPort
        jmp     short CUCMOSIndexData
;-------------------------------
WinbondLPCIndex:
	mov	dx,2eh
        call    WinbondTryIndexPort
        jmp     short CUCMOSIndexData
;-------------------------------
Winbond977Index:
	mov	dx,3f0h
        call    WinbondTryIndexPort
        jmp     short CUCMOSIndexData
;-------------------------------
;Output:ax=Index port
SmscLPCIndex:
;;; [KenWang] 04082002 >>>>>>
        lea     si,ISAIndexPort
	mov	ax,ds:[si]
	cmp	ax,0
        jnz     SmscUnlockExit
;;; [KenWang] 04082002 <<<<<<
	mov	al,055h
	out	dx,al
	mov	cx,0ffh
	xor	ah,ah
SLoopReadNonZero:
	mov	al,ah
	out	dx,al
	inc	dx
	in	al,dx
	cmp	al,00h
	jz      NextSmscByte
	cmp	al,0ffh
	jnz     SmscUnlockValueOK
NextSmscByte:
	inc	ah
	dec	dx
        loop    SLoopReadNonZero
	mov	dx,4eh
SmscUnlockExit:
	mov	ax,dx
        jmp     short CUCMOSIndexData
SmscUnlockValueOK:
	mov	dx,2eh
        jmp     short SmscUnlockExit
;-------------------------------
Gm803cIndex:
	mov	dx,398h
        jmp     short SmscUnlockExit
;-------------------------------
;Input: dx=Index(2eh/3f0h)
;Output:ax=Index Port
ITETryIndexPort:
;;; [KenWang] 04082002 >>>>>>
        lea     si,ISAIndexPort
	mov	ax,ds:[si]
	cmp	ax,0
        jnz     ITUnlockExit
;;; [KenWang] 04082002 <<<<<<
	mov	al,087h
	out	dx,al
	jmp	$+2
	jmp	$+2
	mov	al,01h
	out	dx,al
	jmp	$+2
	jmp	$+2
	mov	al,55h
	out	dx,al
	jmp	$+2
	jmp	$+2
	mov	cx,0ffh
	xor	ah,ah
ITLoopReadNonZero:
	mov	al,ah
	out	dx,al
	inc	dx
	in	al,dx
	cmp	al,00h
        jz      NetITByte
	cmp	al,0ffh
	jnz     ITUnlockValueOK
NetITByte:
	inc	ah
	dec	dx
        loop    ITLoopReadNonZero
	test	dh,03h
	jz	it8712_1
	mov	dx,0370h
        jmp     short ITUnlockExit
it8712_1:
	mov	dx,4eh
ITUnlockExit:
	mov	ax,dx
	ret
ITUnlockValueOK:
	test	dh,03h
        jz	it8712_2
	mov	dx,3f0h
        jmp     short ITUnlockExit
IT8712_2:
	mov	dx,2eh
        jmp     short ITUnlockExit
	ret
;-------------------------------
;Input: dx=Index(2eh/3f0h)
;Output:ax=Index Port
WinbondTryIndexPort:
;;; [KenWang] 04082002 >>>>>>
        lea     si,ISAIndexPort
	mov	ax,ds:[si]
	cmp	ax,0
        jnz     WinbondUnlockExit
;;; [KenWang] 04082002 <<<<<<
	mov	al,087h
	out	dx,al
	out	dx,al
	mov	cx,0ffh
	xor	ah,ah
LoopReadNonZero:
	mov	al,ah
	out	dx,al
	inc	dx
	in	al,dx
	cmp	al,00h
	jz      NextWinbondByte
	cmp	al,0ffh
	jnz     UnlockValueOK
NextWinbondByte:
	inc	ah
	dec	dx
        loop    LoopReadNonZero
	test	dh,03h
	jz	w627_1
	mov	dx,0370h
        jmp     short WinbondUnlockExit
w627_1:
	mov	dx,4eh
WinbondUnlockExit:
	mov	ax,dx
	ret
UnlockValueOK:
	test	dh,03h
        jz	w627_2
	mov	dx,3f0h
        jmp     short WinbondUnlockExit
w627_2:
	mov	dx,2eh
        jmp     short WinbondUnlockExit
;-------------------------------
GenericLock:
	ret
;-------------------------------
IT8712Lock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,002h
	out	dx,al 
	ret
;-------------------------------
WinbondLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,0aah
	out	dx,al 
	ret
;-------------------------------
SmscUnLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,055h
	out	dx,al 
	ret
;-------------------------------
Gm803cUnLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,033h
	out	dx,al 
	ret
;-------------------------------
Gm803cLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,055h
	out	dx,al 
	ret
;-------------------------------
Gm803bLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,0cch
	out	dx,al 
	ret
;-------------------------------
GenericUnlock:
        lea     si,UnlockPort
	mov	dx,ds:[si]
        lea     si,UnlockValue0
UnlockISAIO:
	push	cx
	mov	al,ds:[si]
	cmp	al,0
	jz      UnlockOk
	out	dx,al
	jmp	$+2
	jmp	$+2
	inc	si
	inc	si
	pop     cx
	jmp 	short UnlockISAIO
	ret
UnlockOk:
	pop 	cx
	ret
;-------------------------------
IT8712UnLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,087h
	out	dx,al
	jmp	$+2
	jmp	$+2
	mov	al,01h
	out	dx,al
	jmp	$+2
	jmp     $+2
	mov	al,55h
	cmp	dx,2eh
	jz	It87122E
	mov	al,0aah
It87122E:
	out	dx,al
	jmp	$+2
	jmp	$+2
	ret
;-------------------------------
WinbondUnLock:
        lea     si,ISAIndexPort
	mov	dx,ds:[si]
	mov	al,87h
	out	dx,al 
	jmp	$+2
	jmp	$+2
	out	dx,al 
	ret
;=========================================
GetISAAddressFromScreen:
        mov     dx,ISAIOIndexPortPosn
        call    CalaFixedCursorposn	;Ouput=AX
	mov	cx,4
        call    GetPortAddressFromScreen
        lea     si,ISAIndexPort
	mov	word ptr ds:[si],ax
        mov     dx,ISAIODataPortPosn
        call    CalaFixedCursorposn	;Ouput=AX
	mov	cx,4
        call    GetPortAddressFromScreen
        lea     si,ISADataPort
	mov	word ptr ds:[si],ax
	ret
;=========================================
ChangeWinbondLPCAddress:
	call	GetWinLPCHWMAddress
        jc      NotWinLPCDevice
	call	CheckWinbondLPCHWMPresent
        jc      NotWinLPCDevice
        lea     di,ISAIndexPort
        lea     si,HWMIndexPort
	mov	ax,ds:[si]
	mov	word ptr ds:[di],ax
	mov	ax,ds:[si+2]
	mov	word ptr ds:[di+2],ax
	call	DisplayFixedISAPort
	clc
	ret
NotWinLPCDevice:
	stc
	ret
;-----------------------------------------------
	include	winlpchw.inc

⌨️ 快捷键说明

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