IBM AT 5170 Technical Reference page 283

Table of Contents

Advertisement

- - -
- - - - - - - -
IBM Personal
Computer MACRO Assembler
VersIon 2.00
DSKETTE -- 06/10/85
DISKETTE BIOS
1566 072A
TURN ON PROC
NEAR
1567 072A 8B OF
~
MOV
BX,DI
=
DRIVE #
1568 072C 8A CB
MOY
CL,BL
CL
=
DRIVE #
1569 072E CO C3 04
ROL
BL,4
BL
=
DR I VE SELECT
1570 0731
FA
eLI
NO
INTERRUPTS WHlLE DETERMINING STATUS
1571
0732 C6 06 0040 R FF
MOY
ClMOTOR COUNT, OFFH
ENSURE MOTOR STAYS ON FOR OPERATION
1572 0737 AO 003F R
MOY
AL,ClMOTOR STATUS
GET 0 I G I TAL OUTPUT REG I STER REFLECT I ON
1573 073A 24 30
ANO
AL, 00 I 100008
KEEP ONLY DR I VE SELECT 81 TS
1574 073C 84 01
MOY
AH,1
MASK FOR DETERMINING MOTOR BIT
1575 073E 02 E4
SHL
AH,CL
AH
=
MOTOR ON,
A=OOOOOOOI, B=OOOOOOIO
1576
1577
AL = DRIVE SELECT FROM OMOTOR STATUS
1578
8L = DR I VE SELECT DES I RED
1579
AH
=
MOTOR ON MASK DESIRED
1580
1581
0740 3A C3
CMP
AL ,8L
REQUESTED DRIVE ALREADY SELECTED?
1582 0742 75
Ob
JNZ
TURN
I T ON
I F NOT SELECTED JUMP
1583 0744 84 26 003F R
TEST
AH,ClMOTOR STATUS
TEST MOTOR ON 8 IT
1584 0748 75 2C
JNZ
NO_MDT_WATT
JUMP I F MOTOR ON AND SELECTED
1585
158b 074A
TURN
I TON:
1587 074A OA E3
-OR
AH,BL
AH
=
OR I VE SELECT AND MOTOR ON
1588 074C 8A 3E 003F R
MOY
BH,ClMOTOR STATUS
SAVE COPY OF OMOTOR STATUS 8EFORE
1589 0750 80 E7 OF
ANO
BH,OOOO 11118
KEEP ONLY MOTOR B1 TS
1590 0753 80 26 003F R CF
ANO
ClMOTOR STATUS,II00ll11B
CLEAR OUT DR
J VE SELECT
1591
0758 08 26 003F R
OR
ClMOTOR~ST
ATUS, AH
OR
I N DR I VE SELECTED AND MOTOR ON
1592 075C AD 003F R
MOY
AL,ClMOTOR STATUS
GET DIGITAL OUTPUT REGISTER REFLECTION
1593 075F 8A 08
MOY
BL,AL
1594
07bl
80 E3 OF
AND
BL,OOOOI
I I
18
~~~~Mg~~~-~6~6~S
8
~~~ER,
8H=BEFORE
1595 07b4
FB
STI
ENA8LE INTERRUPTS AGA I N
159b
07b5
24 3F
ANO
AL,OOI I I I I 18
STRIP AWAY UNWANTED 8ITS
1597 0767 CO CO 04
ROL
AL,4
PUT 81TS
IN DESIRED POSITIONS
1598 07bA OC OC
OR
AL,OOOOI 1008
NO RESET, ENABLE DMA / INTERRUPT
1599
07bC
8A 03F2
MOY
DX,03F2H
SELECT DR I VE AND TURN ON MOTOR
1
bOO
07bF EE
OUT
DX,AL
IbOI
0770 3A OF
eMP
8L,BH
NEW MOTOR TURNED ON ?
1602 0772 74 02
JZ
NO_MDT_WAIT
NO WAIT REQUIRED
IF JUST SELECT
lb03
0774 F8
eLe
SET CARRY MEANING WAIT
1604 0775 C3
RET
Ib05
160b 0776
NO MOT WAIT:
~
~
STC
Ib07
077b
F9
SET NO WAIT REQUIRED
I b08
0777 FB
STI
INTERRUPTS 8ACK ON
I b09
0778 C3
RET
1610 0779
TURN_ON ENDP
1611
1612
HO_WAIT :
WA I T FOR HEAD SETTLE T I ME.
1613
1614
; ON ENTRY:
01
: DRIVE #
1
b
15
;
161
b
; ON EX IT:
AX,8X,CX,DX DESTROYED
Ibl7
~~=;~ ~ ~
- - - - - -
;;~~----~~~;
- -
-------------------
Ib I 8 0779
1619 0779 B2 09
MOV
DL,9
GET HEAD SETTLE PARAMETER
Ib20 0778 E8
ObCC
R
CALL
GET PARM
1621
077E F6
Ob
003F R 80
TEST
ClMOTOR STATUS, 10000000B
SEE
IF A WRITE OPERATION
1622 0783 74
14
JZ
ISNT WRITE
I F NOT.
00
NOT ENFORCE ANY VALUES
1623 0785 OA E4
OR
AH,AH
CHECK FOR ANY WA I T?
1624 0787 75
14
JNZ
00
WAT
I F THERE DO NOT ENFORCE
lb25
0789 84 OF
MOV
AH~HD
12 SETTLE
LOAD
1.2104 HEAD SETTLE 104 I N I MUM
1
b2b
0788 8A 85 0090 R
MOV
AL,ClDSK-STATEIDlj
LOAD STATE
1627 078F 24 CO
AND
AL.
RATE~MSK
KEEP ONLY RATE
1628 0791
3C 80
CMP
AL,RATE~250
1.2104 DRIVE?
Ib29 0793 75 08
JNZ
DO~WAT ~
DEF AUL T HEAD SETTLE LOADED
1630
I b31
0795 84
14
MOY
AH,HD320 SETTLE
USE 320/360 HEAD SETTLE
I
b32
0797 E8 04
JMP
SHORT Do"::::WAT
Ib33
I b34 0799
ISNT WRITEI
I
b35
0799 OA E4
-
OR
AH,AH
CHECK FOR NO WA I T
1636 0798 74
IF
JZ
HW DONE
I F NOT WR
J
TE AND 0
1637
Ib38
AH CONT A I NS NUM8ER OF 1.11 LL I SECONDS TO WA I T
1639
I b40 0790
00 WAT:
-
1641
0790 8A C4
MOY
AL,AH
AL '" # MILLISECONDS
I
b42
079F 32 E4
XOR
AH,AH
AX
=
# MILLISECONDS
1643 07AI
50
PUSH
AX
SAVE HEAD SETTLE PARAMETER
1644 07A2 8A 03E8
MOY
OX, 1000
SET UP FOR MULTI PL Y TO 1041 CROSECONDS
1
b45
Oa5 F7 E2
MUL
OX
OX, AX = # 1041 CROSECONDS
1646 07A7 88 CA
MOY
CX,DX
CX,AX
=
# MlCROSECONOS
Ib47 07A9 88 DO
MOY
DX,AX
CX,DX = # MICROSECONDS
lb48
07A8 84 86
MOY
AH,86H
LOAD WA I T CODE
Ib49 07AD CO 15
INT
15H
PERFORM WA I T
1650 07AF 58
POP
AX
RESTORE HEAD SETTLE PARAMETER
1651 0780 73 OA
JNC
HW_DONE
CHECK FOR EVENT WA I T ACT I VE
1652
Ib53 0782
J29:
I
MILLISECOND LOOP
1654 0782 89 0042
MOY
eX,6b
COUNT AT 15.085737 US PER COUNT
1655 0785 E8 0000 E
CALL
WA ITF
DEL AY FOR
I MILL I SECOND
1656 0788 FE C8
OEC
AL
DECREMENT THE COUNT
1657 078A 75 Fb
JNZ
J29
00 AL MILLISECOND # OF TIMES
1658 078C
HW_DONE:
1659 078C C3
RET
I bbO 0780
HD_WAIT
ENDP
1661
;--------------------------- ­
Ibb2
THIS ROUTINE SENDS A BYTE TO THE NEC CONTROLLER AFTER TESTING
1663
FOR CORRECT 0 I RECT I ON AND CONTROLLER READY TH I S ROUT I NE WILL
16b4
TIME OUT
IF THE BYTE IS NOT ACCEPTED WITHIN A REASONABLE AMOUNT
Ibb5
OF TIME,
SETTING THE DISKETTE STATUS ON COMPLETION.
16b6
1667
ON ENTRY:
AH = BYTE TO 8E OUTPUT
1668
16b9
ON EXIT:
CY
=
0
SUCCESS
1b70
CY =
I
FAILURE -- DISKETTE STATUS UPDATED
1b71
I F A FA I LURE HAS OCCURREO,
THE RETURN
I S MADE ONE LEVEL
1672
HIGHER THAN THE CALLER OF NEC OUTPUT. TH I S REMOVES THE
1673
REQUIREMENT OF TESTING AFTER EVERY CALL OF NEC OUTPUT.
1674
AX, 8X, ex, OX DESTROYED
­
1b75
~~~-~~~;c;--
---
-;~~e
NE~~------- --- ­
1676 0780
1677 0780 8A 03F4
-
MOV
OX. 03F4H
STATUS PORT
I
b78
07CO 83 02
MOV
BL,2
HIGH ORDER COUNTER
1679 07C2 33 C9
XOR
eX,ex
COUNT FOR T I ME OUT
DISKETTE
5-111

Advertisement

Table of Contents
loading

Table of Contents