·---------------------------------------------------------------
PRINT
A SEGMENT
VALUE
TO LOOK
LIKE
A
20
BIT
ADDRESS
;
OX
MUST
CONTAIN
SEGMENT
VALUE
TO
BE
PRINTED
·------------------------------------------
--
--
--
---------------
foRT SEG PROC NEAR
-
MOV
AL,DH
;GET
MSB
CALL
XPC
BYTE
MOV
AL,DL
;LSB
CALL
XPC
BYTE
MOV
AL,'O'
;
PRINT
A
'0
'
CALL
PRT
HEX
MOV
AL,'
, ; SPACE
CALL
PRT
_HEX
RET
PRT
_SEG
ENDP
·----------------------------------------------
--
----------------
TH
IS
SUBROUT I NE PERFORMS A READ 1
WR
I
TE
STORAGE
TEST
ON
A BLOCK
; OF
STORAGE.
ENTRY REQU I
REMENTS:
ES
= ADDRESS OF STORAGE SEGMENT
BE
I
NG
TESTED
OS
= ADDRESS OF STORAGE SEGMENT
BE
I
NG
TESTED
;
CX
=
WORD
COUNT OF STORAGE
BLOCK
TO
BE
TESTED
EX
I T
PARAMETERS:
; ZERO
FLAG
= 0
IF
STORAGE ERROR
(DATA
COMPARE
OR
PARITY
CHECK.
AL=O
DENOTES A PAR I
TY
CHECK.
ELSE
AL=XOR'
ED
;
BIT
PATTERN
OF
THE
EXPECTED
DATA
PATTERN
VS
THE
ACTUAL
DATA
READ.
;
AX,BX,CX,DX,DI,
AND
51
ARE
ALL
DESTROYED.
5-97
PO I
NT
TO
LAST
WORD
JUST
WR
I
TTEN
SET
0 I R
FLAG
TO
GO
BACKWARDS
INITIALIZE
DESTINATION
POINTER
SETUP
WORD
COUNT FOR LOOP
I NNER
TEST
LOOP
READ OLD
TEST
WORD
FROM STORAGE
OATA READ AS
EXPECTED
?
NO
-
GO
TO ERROR ROUT I
NE
GET
NEXT
DATA
PATTERN
TO
WR
I
TE
WRITE
INTO
LOCATION
JUST
READ
DECREMENT
WORD
COUNT AND LOOP
SET
0 I R
FLAG
TO
GO
FORWARD
SET
PO I
NTER
TO BEG LOCAT I
ON
INITIALIZE
DESTINATION
POINTER
SETUP
WORD
COUNT FOR LOOP
SETUP
COMPARE
PATTERN
OF
"OAA55H".
I NNER
TEST
LOOP
READ OLD
TEST
WORD
FROM STORAGE
DATA
READ AS
EXPECTED
?
NO
-
GO
TO ERROR ROUT I NE
GET
NEXT
DATA
PATTERN
TO
WR
I
TE
WRITE
INTO
LOCATION
JUST
READ
DECREMENT
WORD
COUNT AND LOOP
PO I
NT
TO
LAST
WORD
JUST
WR
I
TTEN
SET
0 I R
FLAG
TO
GO
BACKWARDS
INITIALIZE
DESTINATION
POINTER
SETUP
WORD
COUNT FOR LOOP
SETUP
COMPARE
PATTERN
"OFFFFH"
I NNER
TEST
LOOP
READ OLD
TEST
WORD
FROM STORAGE
OATA READ AS
EXPECTED
?
NO
-
GO
TO ERROR ROUT I NE
GET
NEXT
DATA
PATTERN
TO
WR
ITE
WR
I
TE
INTO
LOCATION
JUS
TREAD
DECREMENT
WORD
COUNT AND LOOP
SET
0 I R
FLAG
TO
GO
FORWARD
SET
PO I
NTER
TO BEG
LOCA
T I
ON
INI
TI
ALI
ZE
DESTINATION
POINTER
SETUP
WORD
COUNT FOR LOOP
SETUP
COMPARE
PATTERN
"00101H".
INNER
TEST
LOOP
READ OLD
TEST
WORD
FROM STORAGE
DATA
READ AS
EXPECTED
?
NO
-
GO
TO ERROR ROUT I NE
WR
I
TE
ZERO
INTO
LOCAT I
ON
READ
DECREMENT
WORD
COUNT AND LOOP
; DECREMENT
CYCLES
COUNT
TILL
COUNT END
RESTORE
(AH)
RETURN
(CX)
= 0
; LOOP
TILL
WRAP
THROUGH
FF
;
GET
INITIAL
DATA
PATTERN
TO
WRITE
;
SET
INITIAL
COMPARE
PATTERN.
;
FILL
STORAGE
LOCAT
IONS
I N BLOCK
; TOGGLE PAR I
TY
CHECK
LATCHES
SAVE
WORD
COUNT OF
BLOCK
TO
TEST
SET
0 I R
FLAG
TO
INCREMENT
SET
0 I
=OFFSET
0
REL
TO
ES
REG
SETUP
FOR
O->FF
PATTERN
TEST
;
ON
FIRST
BYTE
;
O.K.?
;
GO
ERROR I F NOT
POST
(01/10/86)
1-14
01-10-86
WAITFI
AX
C3
51,01
CX,BX
AX,DX
C7X
AX,OAA55H
PROC NEAR
BX,CX
01,01
AX,AX
01
01
l~:
'D~J
AL,AH
C7
AH
AL,AH
C2
1
AX~055AAH
DX,AX
STOSW
AL,PORT
B
AL,030H-
PORT_B,AL
AL,OCFH
PORT_B,AL
01
01
C5
AX,DX
C7X
AX,00101H
C6
AX,DX
C7X
AX,OFFFFH
C4
51,01
CX,BX
DX,AX
AX,DX
C7X
01
01
51,01
CX,BX
DX,AX
01
01
51,01
CX,BX
DX,AX
MOV
MOV
XOR
JNZ
INC
MOV
JNZ
MOV
MOV
REP
IN
OR
OUT
NOP
AND
OUT
DEC
DEC
STD
MOV
MOV
LODSW
XOR
JNE
MOV
STOSW
LOOP
CLD
INC
INC
MOV
MOV
MOV
LODSW
XOR
JNE
MOV
STOSW
LOOP
DEC
DEC
STD
MOV
MOV
MOV
LODSW
XOR
JNE
MOV
STOSW
LOOP
CLD
INC
INC
MOV
MOV
MOV
LODSW
XOR
JNE
STOSW
LOOP
WAITF9:
STGTST
CNT
-
MOV
CLD
SUB
SUB
LOOP
POP
RET
WAITF
ENDP
C3:
C4:
C5:
C6:
1478
OCB6
E2
EF
1479
OCB8
1480
OCB8
58
1481
OCB9
C3
1482
1483
OCBA
1484
1485
1486
1487
1488
1489
OCBA
1490
OCBA
8A
C6
1491
OCBC
E8
1958
R
1492
OCBF
8A
C2
1493
OCC
I
E8
1958
R
1494
OCC4
BO
30
1495
OCC6
E8
1969
R
1496
OCC9
BO
20
1497
OCCB
E8
1969
R
1498
OCCE
C3
1499
OCCF
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
OCCF
151 7 OCCF
8B
09
1518
OCDI
FC
15 I 9 OCD2
2B
FF
1520
OCD4
2B
CO
1521
OCD6
1522
OCD6
88
05
1523
OCD8
8A
05
1524
OCDA
32
C4
1525
OCDC
75
79
1526
OCDE
FE
C4
1527
OCEO
8A
C4
1528
OCE2
75
F2
1529
OCE4
B8
55AA
1530
OCE7
8B
DO
1531
OCE9
F31
AB
1532
OCEB
E4
61
1533
OCED
OC
30
1534
OCEF
E6
6 I
1535
OCF 1
90
1536
OCF2
24
CF
1537
OCF4
E6
61
1538
1539
OCF6
4F
1540
OCF7
4F
1541
OCF8
FD
1542
OCF9
8B
F7
1
543
OCFB
8B
CB
1544
OCFD
1545
OCFD
AD
1546
OCFE
33
C2
1547
0000
75
57
1548
0002
B8
AA55
1549
0005
AB
1550
0006
E2
F5
1551
1552
0008
FC
1553
0009
47
1554
ODOA
47
1555
ODOB
8B
F7
1556
0000
8B
CB
1557
ODOF
8B
DO
1558
0011
1559
0011
AD
1560
0012
33
C2
1561
0014
75
43
1562
0016
B8
FFFF
1563
0019
AB
1564
00
I A
E2
F5
1565
1566
ODIC
4F
1567
0010
4F
1568
ODIE
FD
1569
ODIF
8B
F7
1570
0021
8B
CB
1571
0023
8B
DO
1572
0025
1573
0025
AD
1574
0026
33
C2
1575
0028
75
2F
I
576
OD2A
B8
0 I 0 1
1577
0020
AB
1578
OD2E
E2
F5
1579
1580
0030
FC
1581
0031
47
1582
0032
47
1583
0033
8B
F7
1584
0035
8B
CB
1585
0037
8B
DO
1586
0039
1587
0039
AD
1588
OD3A
33
C2
1589
OD3C
75
I B
1590
OD3E AB·
159
I OD3F
E2
F8
IBM
Personal
Computer
MACRO
Assembler
Version
2.00
POST
-----
01/10/86
SYSTEM POST AND
BIOS
PROCEDURES