IBM AT 5170 Technical Reference page 278

Table of Contents

Advertisement

----
----------
IBM Pereonel Computer MACRO Aseembler
Version 2.00
I-I a
DSKETTE --
06/10/85
0
I SKETTE 8 I OS
06-10-85
996
0436 E8 01DE R
CALL
SEEK
;
I SSUE SEEK
991
0439 32 EO
XOR
CH, CH
: MOVE TO CYLI NOER 0
998
0438 EB 010E R
CALL
SEEK
;
I SSUE SEEK
999
043E C6 06 0041
R
06
MOV
<IIOSKETTE_STATUS,MEOIA_CHANGE
;
STORE IN STATUS
1000
100 I
0443 E8 08E3 R
CALL
READ OSKCHNG
CHECK MEO I A CHANGED AGA I N
1002 0446 14 05
JZ
MEO_C8
IF ACTIVE, NO DISKETTE,
TIMEOUT
1003
1004 0448 C6 06 0041
R
80
MOV
(lOSKETTE_STATUS,TIME_OUTI TIMEOUT IF DRIVE EMPTy
1005 0440
1006 0440 F9
STC
MEO I A CHANGED, SET CY
1001 044E C3
RET
1008 044F
1009 044F F8
CLC
I NO MED I A CHANGED, CLEAR CY
10 I 0 0450 C3
RET
101 I 0451
MEO _CHANGE
ENDP
1012
1013
:
-
~~~~~;;;:~ ~
---
-
~~~~~
-
~~ ~ ~
-
~~ ~~
-
~~~~~~~-;~
-
~~~
-;;
-
~~~~ ~ ~~~ -;~ ~~
-
;;~ -~~;;~;~~;: ~-
1014
;~~~=~~~~--
----
-;~~~-
-
--~~~;-------
------------------ -­
10150451
1016 0451
BA 26 0088
R
MOV
AH.~LASTRATE
GET LAST DATA RATE SELECTED
1017 0455 8A 85 0090 R
1018 0459 25 COCO
~~~
~i:;~~~-~~~!~(DI]
~~~p R~~~
'I'
S~~~~ ~~T~H~~ ~~~~E
1019 045C 3A C4
CMP
AL,AH
-
COMPARE TO PREVIOUSLY TRIED
1020 045E 14 10
..IE
C
S OUT
IF SAME,
NO NEW TRANSFER RATE
1021
1022 04bO 80 2b 008B R 3F
ANa
IDLASTRATE,NOT SEND MSK
ELSE CLEAR LAST RATE ATTEMPTED
1023 0465 08 06 008B R
OR
OLASTRATE,AL
-
SAVE NEW RATE FOR NEXT CHECK
1024 0469 CO CO 02
ROL
AL,2
MOVE TO BIT OUTPUT
pas
I T IONS
1025 046C SA 03Fl
MOV
OX,03F7H
OUTPUT NEW DATA RATE
1026 046F EE
OUT
OX,AL
1021
1028 0410
C S OUT:
1029 0470 C3
RET
1030 0471
SEND_RATE
ENOP
1031
;
- - -
----------------
- - - --- - - - -------------------- -- - - -
- -
------ -
-
-------------­
1032
; DNA_SETUP:
THIS ROUTINE SETS UP THE OMA FOR READ/WRITE/VERIFY OPERATIONS.
1033
I
1034
I ON ENTRY:
AL '" OMA COMMAND
1035
;
1036
; ON EXIT:
<ltOSKETTE_STATUS, CY REFLECT STATUS OF OPERATION
1031
1038 041
I
b~~-~ETUP
PRoe
NEAR
1039 041
I
Cl!
o
I SABLE
I NTERRUPTS OUR I NG OMA SET-UP
-
1040 0412 E6 OC
OUT
DMA+12,AL
SET THE FIRST/LAST F/F
1041 0474 EB 00
JMP
WAIT FOR
I/O
,.2
1042 0416 E6 08
OUT
DNA+ II ,AL
OUTPUT THE MODE BYTE
1043 0418 BC CO
MOV
AX,ES
GET THE ES VALUE
1044 047A CI CO 04
ROL
AX,4
ROTATE LEFT
1045 0410 8A EB
MOV
CH,AL
GET HIGHEST NI8BLE OF ES TO CH
1046 047F 24 FO
AND
AL,I1110000B
I
ZERO THE LOW NIBBLE FROM SEGMENT
1041 0481
03 46 02
ADO
AX, (BP+2]
;
TEST FOR CARRY FROM ADD
I
T
I
ON
1048 0484 73 02
JNC
J33
1049 0486 FE C5
INC
CH
I CARRY MEANS HIGH 4 BITS MUST BE INC
1050 04M
..133:
1051
0488 50
PUSH
SAVE START ADDRESS
1052 0489 E6 04
OUT
OMA"4,AL
OUTPUT LOW ADDRESS
1053 0488 E8 00
J"P
WAIT FOR
I/O
"2
1054 0480 8A C4
"OV
AL,AH
1055 048F E6 04
OUT
OMA+4,AL
OUTPUT HIGH ADDRESS
"OV
"2
1056 0491
8A C5
AL,CH
GET HIGH 4 BITS
1051 0493 EB 00
J"P
I/O WAIT STATE
1058 0495 24 OF
AND
AL,OOOOIIIIB
1059 0497 E6
81
OUT
081H,AL
OUTPUT HIGH 4 BITS TO PAc.E REGISTER
1060
106
I
OETERM I NE COUNT
1062
1063 0499 88 C6
MOV
AX,S!
AL = # OF SECTORS
1064 0498 86 C4
XCHG
AL,AH
AH '"
#
OF SECTORS
1065 0490 2A CO
SUB
AL,AL
AL
=
0,
AX = # OF SECTORS·
25.
1066 049F D1 EB
SHR
AX,I
AX =
#
SECTORS •
128
1061 04AI
50
PUSH
AX
SAVE # OF SECTORS •
128
1068 04A2 82 03
MOV
OL,3
GET BYTES/SECTOR PARAMETER
1069 04A4 E8 06CC R
CALL
GET PARM
1010 04A1 8A CC
"OV
CL,AH
SHIFT COUNT
(0=128,
1=256 ETC)
1011
04A9 58
POP
AX
AX
=
# OF SECTORS •
128
1012 04AA 03 EO
SHL
AX,CL
SH 1FT BY PARAMETER VALUE
1013 04AC 48
OEC
AX
; - 1 FOR OMA VALUE
1014 04AO 50
PUSH
AX
SAVE COUNT VALUE
1015 04AE E6 05
OUT
DMA+5,AL
LOW BYTE OF COUNT
1016 0480 EB 00
J"P
$'2
WAIT FOR
I/o
1011 04B2 8A C4
"OV
AL,AH
1078 0484 E6 05
OUT
OMA+5,AL
HIGH 8YTE OF COUNT
10190486 F8
ST.
RE-ENABLE
INTERRUPTS
1080 0481 59
POP
CX
RECOVER COUNT VALUE
1081
0488 58
POP
AX
RECOVER ADDRESS VALUE
1082 04B9 03 CI
AOO
AX, CX
ADD. TEST FOR 64K OVERFLOW
1083 0488 80 02
MOV
AL,2
MODE FOR 8237
1084 0480 E6 OA
OUT
OMA+
j
O. AL
I NIT I AL I ZE THE 0 I SKETTE CHANNEL
1085 04BF 13 05
"NC
NO BAD
; CHECK FOR ERROR
1086 04C1 C6 06 0041
R
09
MOV
ODSKETTE_STATUS,DMA._80UNOARY
;
SET ERROR
1081 04C6
1088 04C6 C3
; CY SET BY ABOVE IF ERROR
108904C1
ENOP
1090
.
---- - -- ---- -
- -
----- - - -------- ---- - - -- - - - - - - --- - - ---------- - - - - - - - - - - - - ---- ­
1091
; NEC_INIT:
THIS ROUTINE SEEKS TO THE REQUESTED TRACK AND INITIALIZES THE
1092
;
NEC FOR THE READ/WRITE/VERIFY/FORMAT OPERATION.
1093
;
1094
; ON ENTRY:
AH :
NEC COMMAND TO BE PERFORMED
1095
;
1096
; ON EXIT:
IltOSKETTE_STATUS. CY REFLECT STATUS OF OPERATION
1091
~~~-;~;;:--------;;~~----~~~;---------------------------------------------------
1098 04C7
1099 04Cl 50
-
PUSH
AX
SAVE NEC COMMAND
1100 04C8 E8 06EI R
CALL
MOTOR_ON
TURN MOTOR ON FOR SPECIFIC DRIVE
I 101
1102
;-----
DO THE SEEK OPERATION
1103
1104 04CB 8A 6E 01
MOV
CH, (BP+ I]
CH '" TRACK #
I 105 04CE E8 alOE R
CALL
SEEK
MOVE TO CORRECT TRACK
11060401
58
POP
AX
RECOVER COMMAND
1101040272
17
JC
ER 1
ERROR ON SEEK
1 108 0404 8B 04E8 R
"OV
BX~OFFSET
ER I
LOAD ERROR ADDRESS
1109 0401 53
PUSH
BX
-
PUSH NEC_OUT ERROR RETURN
5-106
DISKETTE

Advertisement

Table of Contents
loading

Table of Contents