IBM PC CONVERTIBLE Technical Reference page 130

Table of Contents

Advertisement

0686
88 46 00
MOV
[BP],AL
SAVE IN STORAGE AREA
0689
45
INC
BP
NEXT LOCATION
068A
8A 84 2000
MOV
AL, [S I +2000H]
GET LOWER REGION BYTE
068E
88 46 00
MOV
[BP],AL
ADJUST AND STORE
0691
45
INC
BP
0692
83 C6 50
ADD
SI,80
POINTER INTO REGEN
0695
FE CE
DEC
DH
LOOP CONTROL
0697
75 EB
JNZ
S12
DO IT SOME MORE
0699
EB 17 90
JMP
S15
GO MATCH SAVED CODE POINTS
;----- MEDIUM RESOLUTION READ
069C
S13 :
,.
MED_RES_READ
069C
01 E6
SAL
51,1
OFFSET*2 SINCE 2 BYTES/CHAR
069E
B6 04
MOV
DH,4
NUMBER OF PASSES
06AO
S14 :
D6AO
E8 07lC R
CALL
523
GET PAIR BYTES FROM REGEN
INTO SINGLE SAVE
06A3
81 C6 2000
ADD
SI,2000H
GO TO LOWER REGION
06A7
E8 07lC R
CALL
S23
GET THIS PAIR INTO SAVE
06AA
81 EE 1FBO
SUB
S I, 2000H-80
ADJUST PTR BACK INTO UPPER
06AE
FE CE
DEC
DH
06BO
75 EE
JNZ
S14
KEEP GOING UNTIL ALL 8 DONE
SAVE AREA HAS CHARACTER IN IT, MATCH IT
06B2
S15 :
; FIND_CHAR
06B2
2B FF
SUB
01,01
06B4
8E C7
MOV
ES,DI
ASSUME
ES: ABSO
06B6
26: C4 3E 0110 R
LES
DI,CSELPTR
ESTABLI SH ADDRESS I NG
ASSUME
ES: NOTHING
06BB
83 ED 08
SUB
BP ,8
ADJUST POINTER TO BEGINNING
OF SAVE AREA
06BE
8B F5
MOV
SI, BP
06CO
FC
CLD
ENSURE 01 RECTI ON
06C1
BO 00
MOV
AL,O
CURRENT CD PT BEING MATCHED
06C3
S16:
06C3
16
PUSH
SS
ESTAB ADDRESSING TO STACK
06C4
IF
POP
OS
FOR THE STRING COMPARE
06C5
BA 0080
MOV
DX,128
NUMBER TO TEST AGAINST
06C8
S17 :
06C8
56
PUSH
SI
SAVE SAVE AREA POINTER
06C9
57
PUSH
01
SAVE CODE POINTER
06CA
B9 0008
MOV
CX,8
NUMBER OF BYTES TO MATCH
06CD
F3/ A6
REPE
CMPSB
COMPARE THE 8 BYTES
06CF
5F
POP
01
RECOVER THE POINTERS
0600
5E
POP
SI
0601
74 IE
JZ
S18
I F ZERO FLAG SET, MATCH
0603
FE CO
INC
AL
NO MATCH, MOVE ON TO NEXT
0605
83 C7 08
ADD
01,8
NEXT CODE POINT
0608
4A
DEC
OX
LOOP CONTROL
0609
75 ED
JNZ
S17
DO ALL OF THEM
CHAR NOT MATCHED, MIGHT BE IN USER SUPPLI ED SECOND HALF
06DB
3C 00
CMP
AL,O
AL
<>
0 I F 1ST HALF SCANNED
0600
74 12
JE
S18
IF" 0, IF ALL SCANNED
06DF
2B CO
SUB
AX,AX
06El
8E 08
MOV
DS,AX
ESTAB ADDRESSING TO VECTOR
ASSUME
OS :ABSO
06E3
C4 3E 007C
LES
DI,EXLPTR
GET POINTER
06E7
8C CO
MOV
AX, ES
SEE I F POINTER REALLY EXISTS
06E9
OB C7
OR
AX,DI
IF ALL 0, THEN DOESN'T EXIST
06EB
74 04
JZ
S18
NO SENSE LOOKING
06ED
BO 80
MOV
AL,128
ORIGIN FOR SECOND HALF
06EF
EB 02
JMP
S16
GO BACK AND TRY FOR IT
ASSUME
DS:DATA
CHARACTER IS FOUND ( AL"O IF NOT FOUND )
06F1
S18:
06Fl
83 C4 08
ADD
SP ,8
; READJUST, THROW AWAY SAVE
ROM BIOS 2-105

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents