📄 isaio.inc
字号:
;------------------------
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 + -