IBM AT 5170 Technical Reference page 284

Table of Contents

Advertisement

IBM Personal
Computer MACRO Assembler
Version 2.00
1-16
DSKETTE
~-
06/10/85
DISKETTE 8105
06-10
1680
1681
07C4 EC
.J23:
IN
AL,DX
GET STATUS
1682 Orc5 24 CO
AND
AL, I lOOOOOOS
KEEP STATUS AND DIRECTION
1683 07C7
3C 80
CMP
AL, 10000000S
STATUS
1 AND DiRECTION 0
?
1684 07C9 74 OE
JZ
J27
STATUS AND DIRECTION OK
1685 07CS E2 F7
LOOP
J23
CONTINUE TILL
ex
EXHAUSTED
1686
1687
07CD FE CB
DEC
BL
DECREMENT COUNTER
1688 07CF
75 F3
JNZ
023
REPEAT TILL DELAY FINISHED,
CX
1689
1690
FALL THRU TO ERROR RETURN
1691
1692 0701
80
OE 0041
R 80
OR
CllDSKETTE STATUS, TIME OUT
1693 0706 58
POP
AX
-
-
DISCARD THE RETURN ADDRESS
1694 0707 F9
STC
INDICATE ERROR TO CALLER
1695 0708 C3
RET
1696
1697
DIRECTION AND STATUS OK;
OUTPUT BYTE
1698
1699 0709 8A C4
.J21:
MOV
AL,AH
GET 8YTE TO OUTPUT
1700 07DB 42
INC
OX
DATA PORT
STATUS PORT'"
I
170
I
07DC EE
OUT
OX ,AL
OUTPUT THE BYTE
1702 0700 C3
RET
CY
'" 0 FROM TEST
I NSTRUCT I ON
1703 07DE
NEC_OUTPUT
1704
1705
SEEK:
TH I S ROUT I NE
'II
I LL MOVE THE HEAD ON THE NAMED DR I VE TO THE NAMED
1706
TRACK.
IF THE DRIVE HAS NOT SEEN ACCESSED SINCE THE DRIVE
1707
RESET COMMAND WAS
ISSUED,
THE DRIVE WILL SE RECALIBRATED.
1708
1709
ON ENTRY:
01
:
DRIVE #
1710
CH
:
TRACK #
1712
ON EX I T:
@DSKETTE STATUS,
CY REFLECT STATUS OF OPERATION.
1713
1714
AX ,BX, CX:DX DESTROYED
~~E;
--
--;~~~
---
~~~~
--------
~
-- ­------------------------- ­-
-~-------------
1715 07DE
I 7 I 6
070E 8B OF
MOV
aX,D!
BX
=
DR
I
VE #
I
7
1
7 07EO 8A 0830 R
MOV
OX. OFFSET NEC ERR
LOAD RETURN ADDRESS
1718 07E3 52
PUSH
OX
-
ON STACK FOR NEC OUTPUT ERROR
1719 07E4BO 01
MOV
AL. I
ESTABLISH MASK FOR RECALIBRATE TEST
1720 07E6 86 C8
XCHG
CL,BL
GET DR I VE VALUE
INTO CL
1721
07E8 02 CO
ROL
AL,CL
SH I FT MASK BY THE OR I VE VALUE
1722 07EA 86 CB
XCHG
CL ,BL
RECOVER TRACK
VALUE
1723 07EC 84 06 003E R
TEST
AL,@SEEK STATUS
TES T FOR RECALl8RA TE REQU I RED
1724 07FO 75
IC
.JNZ
.J28A
-
.JUMP
IF RECALl8RATE NOT REQUIRED
1725
1726 07F2 08 06 003E R
OR
<1OSEEK
STATUS,AL
TURN ON THE NO RECALIBRATE BIT
IN FLAG
1727 07F6 E8 083E R
CALL
RECAL -
RECALI8RATE DRIVE
1728 07F9 73 OA
JNC
AFT _RECAL
RECAL I BRA TE DONE
1729
Ina
ISSUE RECALIBRATE FOR 80 TRACK DISKETTES
1731
1732 07FB C6
06 0041
R 00
CllDSKETTE STATUS,O
CLEAR OUT
INVALID STATUS
l73l 0800 E8 083E R
RECAL
-
RECALIBRATE DRIVE
1734 0803
72 37
RB
IF RECALIBRATE FAILS TWICE THEN ERROR
1735
1736 0805
1FT RECAL:
1737 {l805 C6 85 0094 R 00
-
MOV
@DSK TRK I D I
1
,0
SAVE NEW CYLINDER
AS PRESENT POSITION
1738 080A OA ED
OR
CH,CH
CHECK FOR SEEK TO TRACK 0
1739 O<\lOC
74 29
JZ
DO_WAIT
HEAD SETTLE,
CY
=
0
IF JUMP
1140
1141
DR I VE
I SIN S YNCHRON I ZA T J ON WITH CONTROLLER,
SEEK TO TRACK
1742
1143 080r;:: F6
1144 08q
74
85 0090
02
R 20
.J28A:
TEST
JZ
@DSK STATEIDI1.DBL STEP
R1
-
-
CHECK FOR DOU8LE STEP REQUIRED
SINGLE STEP REQUIRED 8YPASS DOUBLE
1
745 0815 DO E5
SHL
CH,I
DOUBLE NUMBER OF STEP TO TAKE
1146
11410811 3A AD 0094 R
R1 :
CMP
CH,@DSK TRK I
0
I
1
SEE
IF ALREADY AT
THE DESIRED TRACK
11480818 74
IF
JE
RB
-
I F
YES,
DO NOT NEED TO SEEK
1149
1150081088 AD C094
R
MOV
'tODSK TRKIDJ l,CH
SAVE NEW CYLINDER
AS PRESENT POSITION
1151
0821
B4 OF
MOV
AH,OFH
SEEK COMMAND TO NEC
1152 0823 E8 01Bo R
CALL
NEC OUTPUT
1753 0826 88 OF
MOV
BX,51
BX
DR I VE
#
1154 0828 8A E3
MOV
AH,8L
OUTPU7 DR I VE NUMBER
1755 082A Ee
1156 0820 8,1.,
01BD R
A5 0094 R
CALL
MOV
NEC OUTPUT
AH,@DSK
TRK[DJ
J
GET CYL I NDER NUMBER
1757
0831
E8 07BD R
CALL
NEC OUTPUT
1758 0834 E8 0855 R
CALL
CHK-STAT 2
ENDING
INTERRUPT AND
SENSE STATUS
1159
1760
WA I T FOR HEAD SETTLE
1161
1762 0837
DO WAIT:
1763 0831 9C
-
PUSHF
SAVE STATUS
1164 0838 E8 0779 R
CALL
HD_WAIT
WAI T FOR HEAD SETTLE T I ME
1165 083B 90
POPF
RESTORE STATUS
1766 083C
RB:
1161 083C 58
POP
CLEAR ERROR RETURN FROM NEC_OUTPUT
1768 0830
NEC ERR:
1169 0830 C3
-
RET
RETURN TO CALLER
1110 083E
SEEK
ENDP
1771
-----------­
1772
1773
1774
1775
1176
1177
1778083E
1179 083E 51
1180 083F S8 0853 R
LOAD NEC_OUTPUT ERROR
1781
0842 50
1182 0843 84 07
AH,01H
RECAL I BRA TE COMMAND
1183 0845 E8 0180 R
CALL
NEC OUTPUT
1784 0848 88 OF
MOV
BX,OI
ax =
DR I VE
#
1185 084A 8A E3
MOV
AH,BL
1786 084C E8 0180 R
CALL
NEC OUTPUT
OUTPUT THE DR I VE NUMBER
1187 084F E8 0855 R
CALL
CHK-STAT 2
GET THE
INTERRUPT AND SENSE
INT STATUS
1188 0852 58
POP
AX -
-
THROW AWAY ERROR
1789 0853
RC BACK:
1790 0853 59
-
POP
ex
1191
0854 C3
RET
1192 0855
RECAL
ENDP
1193
5-112
DISKETTE

Advertisement

Table of Contents
loading

Table of Contents