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

📄 isaio.inc

📁 super io 监控程序
💻 INC
📖 第 1 页 / 共 2 页
字号:
;------------------------
GetISAIOInfo:
	pusha
;;; KenWang [041602] >>>>>>
        lea     di,SubFuncSelect
	mov	al,ds:[di]
	cmp	al,70h
        jnz     ReGetISAIOInfo
	mov	al,0ffh
	mov     ds:[di],al
        lea     si,ISADeviceSelect
	mov	al,ds:[si]
        movzx   bx,al
        cmp     bx,(ISAIOListFunction shr 8)
        ja      short NotISASelectFunction
	lea   	si,CtrlFlagtemp
	mov	al,ds:[si]
	cmp	al,08h
	jnz	SkipPreDisplayHWMonitor
	mov	al,0ffh
	mov	ds:[si],al
	lea   	si,CtrlFlag    
	mov	al,088h
	mov	ds:[si],al
SkipPreDisplayHWMonitor:
        call    GetSelectISAList	;;; KenWang [041802] <<<<<<
NotISASelectFunction:
;	lea   	si,CtrlFlagtemp
;	mov	al,ds:[si]
;	cmp	al,0fh
;	jnz	SkipUnlockFixedIO
;	call	GenericUnlock
;SkipUnlockFixedIO:
        jmp     short ReGetISAIOInfoDisp
;;; KenWang [041602] <<<<<<
ReGetISAIOInfo:
	lea	si,SearchFlag
	mov	al,ds:[si]
	cmp	al,KeyF3
        jz      ReGetISAIOInfoDispF3
        lea     si,SubFuncSelect
	mov	al,ds:[si]
	cmp	al,0e0h
        jz      ReGetISAIOInfoDisp
 	call	EnterISAIOAddress
        jc      GetISAIOInfoFuncRet
ReGetISAIOInfoDisp:
	call	DisplayFixedISAPort
	call	DisplaySelectedFunctionData
	cmp	ah,KeyPgDn
        jz      ReGetChangeDevice 
	cmp	ah,KeyPgUp
        jz      ReGetChangeDevice
	cmp	ah,KeyF10  
        jz      ReGetISAIOInfo
	cmp	ah,KeyF6   
        jz      ReGetISAIOInfoF6
	cmp	ah,KeyF7   
        jz      ReGetISAIOInfoDisp
	cmp	ah,KeyF8   
        jz      ReGetISAIOInfoDisp
	cmp	ah,KeyF3   
        jz      ReGetISAIOInfoDisp
GetISAIOInfoFuncRet:
	popa
	ret
;----------------------
ReGetChangeDevice:
        lea     si,ISADeviceSelect
	mov	al,ds:[si]
	cmp	al,02h
	jnz	NotWinLPCSel
	push	ax
	mov	bl,07h
	call	ISAIORead
	mov	bl,al
	pop	ax
	cmp	ah,KeyPgDn
	jz      ISAIOPgDn
	cmp	bl,0
	jz	FirstLDev
	dec	bl
	jmp	short WriteToWinLPC
FirstLDev:
	mov	bl,0bh
	jmp	short WriteToWinLPC
ISAIOPgDn:
	cmp	bl,0bh
	jz	LastLDev
	inc	bl
	jmp	short WriteToWinLPC
LastLDev:
	mov	bl,0
WriteToWinLPC:
	mov	al,bl
	mov	ch,07h
	call	ISAIOWrite
NotWinLPCSel:
        jmp     ReGetISAIOInfoDisp
;----------------------
ReGetISAIOInfoDispF3:
        jmp     short ReGetISAIOInfoDisp
;----------------------
ReGetISAIOInfoF6:
        call    ISAListMenu
        jmp     ReGetISAIOInfoDisp
;----------------------
EnterISAIOAddress:
;;Empty IOSpace address
        mov     dx,ISAIOIndexPortPosn  
	mov	cx,4
	call	EmptyAddress
        mov     dx,ISAIODataPortPosn 
	mov	cx,4
	call	EmptyAddress
;;Enter Port
        mov     dx,ISAIOIndexPortPosn
	mov	cx,5
        call    EnterPortAddress
        jc      EnterISAIOAddressFail
        mov     dx,ISAIODataPortPosn
	mov	cx,5
        call    EnterPortAddress
        jc      EnterISAIOAddressFail
        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
        lea     si,ISADeviceSelect
 	mov	al,0ffh
 	mov	ds:[si],al
	clc
	ret
EnterISAIOAddressFail:
	cmp	ah,KeyF10  
        jnz     NotISAIOF10  
        lea     di,SubFuncSelect
	mov	al,0ffh
	mov	ds:[di],al
NotISAIOF10:
	cmp	ah,KeyPgUp
        jz      EnterISAIOAddress
	cmp	ah,KeyPgDn
        jz      EnterISAIOAddress
	cmp	ah,KeyF6  
        jnz     NotISAKeyF6
        call    ISAListMenu
        jc      NotISAKeyF6
	ret
NotISAKeyF6:
	stc
	ret
;-------------------------------
ISAListMenu:
	call	StoreScreenB
;Hide Cursor
	mov	cx,200eh
        call    SetCursorType
        mov     cx,ISAListHeadPosn
        mov     dx,cx              
        add     dx,ISAIOListFunction+010dh
        mov     bh,PCIListWindowColor
        call    SetWindowsAttribute
        mov     dx,ISAListHeadPosn
        call    SetCursor     
        lea     si,PCIListULine 
	call	DisplayString
	inc	dh
        lea	si,ISACMOS
        mov     cx,ISAIOListFunction
	shr	cx,8
LoopISAListWindows:
	push	cx
	call	SetCursor
	push	si
	call	DisplayString
	pop	si
	add	si,15
	inc	dh
	pop	cx
	loop	LoopISAListWindows
        mov     dx,ISAListHeadPosn+ISAIOListFunction+0100h
        call    SetCursor     
        lea     si,BottomEdgeLine
	call	DisplayString

	call	SelectISAListMenu
	jnc	ISASkipRestoreScreen1
	pushf
;;; KenWang [050202] >>>>>>
	cmp	ah,KeyLeft 
        jz      ISASkipRestoreScreen2
	cmp	al,KeyEsc  
        jz      ISASkipRestoreScreen2
;;; KenWang [050202] <<<<<<
;;; [KenWang] 04082002 >>>>>>
	xor	ax,ax
        lea     si,ISAIndexPort
	mov	ds:[si],ax
        lea     si,ISADataPort
	mov	ds:[si],ax
;;; [KenWang] 04082002 <<<<<<
ISASkipRestoreScreen2:
	call    ReStoreScreenB
	popf
ISASkipRestoreScreen1:
	ret
;-------------------------------
SelectISAListMenu:
        mov     dx,ISAListHeadPosn+0101h
LoopISAListSelectMenu:
        mov     cl,PCIListTextColor
        mov     ch,12              
        call    ChangeBarAttribute
ISAListWaitKey:
	call	WaitOneKey
	cmp	ah,KeyLeft 
        jz      ExitISAListSelectMenu
	cmp	al,KeyEsc  
        jz      ExitISAListSelectMenu
	cmp	ah,KeyUp
	jz	ISAPrevListDev
	cmp	ah,KeyDown
        jz      ISANextListDev
	cmp	al,KeyEnter
        jz      ISANextListSelected
        jmp     short ISAListWaitKey
ISAPrevListDev:
        mov     cl,PCIListWindowColor
        mov     ch,12              
        call    ChangeBarAttribute
        cmp     dx,ISAListHeadPosn+0101h
	jz	ISAUpToBottem
	dec	dh
        jmp     LoopISAListSelectMenu
ISAUpToBottem:
        mov     dx,ISAListHeadPosn+ISAIOListFunction+0001h
        jmp     LoopISAListSelectMenu
;;;;
ISANextListDev:
        mov     cl,PCIListWindowColor
        mov     ch,12              
        call    ChangeBarAttribute
        mov     bx,ISAListHeadPosn+ISAIOListFunction+0001h
	cmp	dx,bx
	jz      ISADnBottom
	inc	dh
        jmp     LoopISAListSelectMenu
ISADnBottom:			     
        mov     dx,ISAListHeadPosn+0101h
        jmp     LoopISAListSelectMenu
ISANextListSelected:		     
        mov     bx,ISAListHeadPosn+0101h
	sub	dx,bx
        lea     si,ISADeviceSelect
	mov	ds:[si],dh
	mov	al,dh
	movzx   bx,dh
        call    GetSelectISAList	;;; KenWang [041802] <<<<<<

	lea   	si,CtrlFlagtemp
	mov	al,0ffh
	mov	ds:[si],al

	call    ReStoreScreenB
	call	DisplayFixedISAPort
	clc
	ret
ExitISAListSelectMenu:
	stc
	ret
;-------------------------------
;;; KenWang [041802] >>>>>>
GetSelectISAList:
	shl	bx,1
        mov     si,offset cs:ISADeviceSelectTBL
	add 	si,bx
	call    word ptr cs:[si]
	ret
;;; KenWang [041802] <<<<<<
;-------------------------------
DisplayFixedISAPort:
        mov     dx,ISAIOIndexPortPosn-03h
	call	SetCursor
        lea     si,ISAIndexPort
	mov	ax,ds:[si]
	xchg	ah,al
	call	DisplayHex
	xchg	ah,al
	call	DisplayHex
        mov     dx,ISAIODataPortPosn-03h
	call	SetCursor
        lea     si,ISADataPort
	mov	ax,ds:[si]
	xchg	ah,al
	call	DisplayHex
	xchg	ah,al
	call	DisplayHex
	
	ret
;-------------------------------
;AL=ISA dev list
UnLockISAPort:
	pusha
        lea     si,ISADeviceSelect
	mov	bl,ds:[si]
	mov	al,ds:[si]
	cmp	bl,1
	jbe	UnlockNotNeed
	inc	bl
	jz	@f
	sub	bl,2
@@:
	movzx	bx,bl
	shl	bx,1
        mov     si,offset cs:ISADeviceUnlock
	add 	si,bx
	call    word ptr cs:[si]
UnlockNotNeed:
	popa
	ret
;-------------------------------
;AL=ISA dev list
LockISAPort:
	pusha
        lea     si,ISADeviceSelect
	mov	bl,ds:[si]
	cmp	bl,1
	jbe     lockNotNeed
	inc	bl
	jz	@f
	sub	bl,2
@@:
	movzx	bx,bl
	shl	bx,1
        mov     si,offset cs:ISADevicelock
	add 	si,bx
	call    word ptr cs:[si]
lockNotNeed:
	popa
	ret
;-------------------------------
; Input : BL=reg.
; Output: AX=value
ISAIORead:
	push	bx
	push	dx
;        lea     si,ISADeviceSelect
;	mov	al,ds:[si]
;	cmp	al,0ffh
;	jz      NormalIsaRead
	call	UnlockISAPort
NormalIsaRead:
        lea     si,ISAIndexPort          
	mov	dx,ds:[si]
	mov	al,bl
	out	dx,al
        lea     si,ISADataPort          
	mov	dx,ds:[si]
        in      al,dx             
	push	ax
        lea     si,ISADeviceSelect
	mov	al,ds:[si]
	cmp	al,0ffh
	jz      NormalIsaReadExit
	call	lockISAPort
NormalIsaReadExit:
	pop	ax
	pop	dx
	pop	bx
	ret
;-------------------------------
;Input : BL/BX/EBX=DATA
;	 CH=REG
ISAIOWrite:
	push	dx
;        lea     si,ISADeviceSelect
;	mov	al,ds:[si]
;	cmp	al,0ffh
;	jz      NormalIsaWrite
	call	UnlockISAPort
NormalIsaWrite:
	mov	al,ch
        lea     di,ISAIndexPort          
	mov 	dx,ds:[di]
	out	dx,al
        lea     di,ISADataPort          
	mov 	dx,ds:[di]
	mov	al,bl
	out	dx,al
        lea     si,ISADeviceSelect
	mov	al,ds:[si]
	cmp	al,0ffh
	jz      NormalIsaWriteExit
	call	lockISAPort
NormalIsaWriteExit:
	pop	dx
	ret
;-----------------------------------------------
ISAIOUnlockLine:
	call	WaitOneKey			; Clear Buffer
        mov     cx,HeaderPosition+1300h
	mov	dx,cx
	add	dl,50
	mov	bh,(White shl 4)+Blue
	call	ChangeWindowsAttribute
        mov     dx,HeaderPosition+1300h
	call	SetCursor
        lea     si,CommandString 
	call	DisplayString
	mov	cx,000eh
        call    SetCursorType
        mov     dx,UnLockPortPosn
	call	SetCursor
	call	InputUnlcokCommand
	pushf
        mov     cx,HeaderPosition+1300h
	mov	dx,cx
	add	dl,50
	mov	bh,White
	call	SetWindowsAttribute
	popf
	ret
;----------------------------
InputUnlcokCommand:
        mov     dx,UnLockPortPosn
	mov	cx,5
        call    EnterPortAddress
        jc      InputUnlcokCommandExit
        mov     dx,UnLockPortPosn+11
	mov	cx,6
InputUnlockValue:
	push	cx
	push	dx
	mov	cx,3
        call    EnterPortAddress
	pop	dx
	add	dl,4
	pop	cx
        jc      InputUnlcokCommandExit
	loop	InputUnlockValue
;;GetValur to buffer
        mov     dx,UnLockPortPosn
        call    CalaFixedCursorposn	;Ouput=AX
	mov	cx,4
        call    GetPortAddressFromScreen
        lea     si,UnlockPort
	mov	ds:[si],ax

        mov     dx,UnLockPortPosn+11
        lea     si,UnlockValue0
	mov	cx,6
GetUnlockValue:
	push	cx
	push	dx
        call    CalaFixedCursorposn   	;Ouput=AX
	mov	cx,2
        call    GetPortAddressFromScreen
	mov	ds:[si],ax
	pop	dx
	add	dl,4
	add	si,2
	pop	cx
	loop	GetUnlockValue
	clc
InputUnlcokCommandExit:
	ret
;--------------------------
GetCommandFromBuffer:
	mov	cx,50
        lea     si,FileNameBuf
GetOutPortLoop:
	mov	al,ds:[si]
	cmp	al,0
	jz      EndOfBuffer
	inc	si
	cmp	al,20h
        jz      GetOutPortLoop
	cmp	al,'o'
        jz      GetOutPortOK       
	cmp	al,'O'
        jz      GetOutPortOK
        loop    GetOutPortLoop
	jmp     EndOfBuffer
GetOutPortOK:
	mov	al,ds:[si]
	inc	si
	cmp	al,20h
        jz      GetOutPortOK

EndOfBuffer:
	stc
	ret
;-----------------------------------------------
DisplayISAInformationtor:
        lea     si,ISADeviceSelect
	mov	al,ds:[si]

⌨️ 快捷键说明

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