On Entry:
BP
=
V_SYSTEM (12H)
AH
=
F_INS_FIND (18H)
AL
=
a
then respond on equality to pattern
((field) .AND. (and_mask))
=
pattern
2 then respond on non_equal
((field) .AND. (and_mask))
< >
pattern
BX
=
and_mask
OX
=
pattern
51
=
vector address to start the search from.
01
=
field to be used in the function, this is the offset into an HP header.
On Exit:
AH
=
Return status
a
=
RS_SUCCESSFUL
OFEH
=
RS_FAIL-No match found
SI
=
Vector address of the first entry that matched.
Registers Altered:
AH, BP, OS, SI
Example: Find a vector that has the value X5AXH ("X" means allow these digits to take any
value) in its attribute header (the first word of the driver's data segment) .
MOV
BP, V_SYSTEM
; HP vector 12H
MOV
AH, F_INS_FIND
; Function 18H
MOV
AL,O
" Return RS_SUCCESSFUL when the
; value is equal
MOV
01,0
; Look in the first word of driver's
; data segment
MOV
DX,05AOH
; Look for value '5A' in the middle
; of the word.
MOV
BX,OFFOH
; Mask off the don't care parts.
MOV
51,0
; Start looking from the first vector
; position.
PUSH
OS
; EX-BIOS destroys OS
INT
HP_ENTRY
" Int 6FH for EX-BIOS
POP
OS
CMP
AH, RS_SUCCESSFUL
,. See if it found
a
match?
JNE
VECTOR.-NOT_FOUND
VECTOR_FOUND:
,. Yes
MOV
SAVED_VECTOR, 51
~
VECTOR_NOT_FOUND:
,. No
298 System Drivers
Need help?
Do you have a question about the Vectra and is the answer not in the manual?
Questions and answers