IBM 5170 Technical Reference page 234

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

--
----
01M
J2;
TEST_DI SK_VERF
01A6
FE CC
DEC
AH
AH=4
01A8
14 6C
JZ
DISK_VERF
01AA
FE CC
DEC
AH
AH=5
OlAC
74 6C
JZ
01 SKJORMAT
OlAE
01Bl
80 EC 10
75 03
SUB
JNZ
AH,10H
J 3
AH='15H
BYPASS DISK TYPE OPERATION
01B3
E9 0698 R
JMP
01
SK_TYPE
GO PERFORM DISK TYPE OPERATION
01B6
FE CC
J3:
DEC
AH
AH '" 1611
01B8
75 03
JNZ
J4
BYPASS 0' SK CHANGE STATUS
OlBA
E9 0646 R
JMP
DISK_CHANGE
GO CHECK DISK CHANGE LINE STATUS
0180
FE CC
j4:
DEC
AH
AH
=
17H
OlBF
75 03
JNZ
J5
BAD COMMAND
01Cl
E9 0100
R
JMP
FORMAT_SET
GO SET MEDIA/DRIVE TYPE FOR FORMAT
01C4
C6 06 0041
01C9 '
C3
01CA
R 01
j5:
J1
MOV
RET
ENDP
DISKETTE_STATUS,BAo_CMD ;
ERROR CODE, NO SECTORS TRANSFERRED
;
UNDEFINED OPERATION
;
~.----
RESET THE 0 I SKETTE SYSTEM
OlCA
DISK RESET
PROC
NEAR
01CA
SA 03F2
-
MOV
DX,03F2H
ADAPTER CONTROL PORT
01CD
FA
CLI
NO INTERRUPTS
01CE
AO 003F
R
MOV
AL, MOTOR_STATUS; WH I CH MOTOR I S ON
0101
24 3F
AND
AL,03FH
; STRIP OFF UNWANTED BITS
0103
S1 04
MOV
CL,4
; SHI
FT
COUNT
0105
02 CO
ROL
AL,CL
MOVE MOTOR VALUE TO HIGH NIBBLE, DRIVE SELECT
TO LOW NIBBLE
0107
OC 08
OR
AL,8
TURN ON INTERRUPT ENABLE
0109
EE
OUT
DX,AL
RESET THE ADAPTER
01DA
c6 06 003E R 00
MOV
SEEK STATUS,O
; SET RECAL REQUIRED ON ALL DRIVES
010F
C6 06 0041
R
00
MOV
DISKETTE_STATUS,O ; SET OK STATUS FOR DISKETTE
01E4
EB 00
JMP
$+2
;
I/O WAIT STATE
01 E6
OC
04
OR
AL.4
TURN OFF RESET
01 E8
EE
OUT
DX,AL
TURN OFF THE RESET
01E9
FB
STI
REENABLE THE I NHRRUPTS
OlEA
E8 051A R
CALL
CHK_STAT_2
00 SENSE INTERRUPT STATUS FOLLOWING RESET
OlEO
AO 0042 R
MDV
AL,NEC_STATUS
IGNORE ERROR RETURN AND DO OWN TEST
01 FO
3C CO
CMP
AL,OCOH
TEST FOR OR I VE READY TRANS I T I ON
01F2
74 06
JZ
J7
;
EVERYTH I NG OK
01 F4
80 OE 0041 R 20
OR
OISKETTE_STATUS,BAO_NEC ; SET ERROR CODE
01 F9
C3
RET
;
-~----
SEND SPEC I FY COMMAND TO NEC
01FA
J7:
01 FA
B4 03
MOV
AH,03H
~~~~fr~E~g~MAND
01 FC
E8 03E2 R
CALL
NEC_OUTPUT
OUTPUT THE COMMAND
01 FF
BB 0001
MOV
BX,l
FIRST BYTE PARM IN BLOCK
0202
E8 0382
R
CALL
GET_PARM
TO THE NEC CONTROLLER
0205
BB 0003
MOV
BX,3
SECOND BYTE PARM I N BLOCK
0208
E8 0382 R
CALL
GET_PARM
TO
THE NEt
CONTROLLER
020B
C3
RET
~~~5~~t~o
CALLER
020e
01 SK_RESET
ENOP
;------ DISKETTE STATUS ROUTINE
020G
DISK_STATUS
PROC
NEAR
020C
C3
RET
0200
DISK_STATUS
ENDP
; ------ DISKETTE READ
0200
PROC
NEAR
0200
BO 46
AL.046H
READ COMMAND FOR DMA
020F
J9:
01 SICREAD_CONT
020r
E8 04CA R
CALL
DMA_SETUP
SET UP THE DMA
0212
84 E6
MOV
AH,OE6H
SET UP READ COMMAND FOR NEC CONTROLLER
0214
EB 36
JMP
SHORT RW_OPN
GO DO THE OPERATION
0216
OJ SK_READ
ENDP
;------ DISKETTE VERI FY
0216
DISK VERF
PROC
NEAR
OZ16
BO 42
-
MOV
AL,042H
VER I FY COMMAND FOR DMA
0218
EB F5
JMP
J9
DO AS If DISK READ
021A
DISK_VERF
ENDP
; ------ 01 SKETTE FORMAT
021A
DISK_FORMAT
PROC
NEAR
021A
80 OE 003F R
80
OR
MOTOR_STATUS, WR I TE_OP
INDICATE WRITE OPERATION
021F
BO 4A
MOV
AL,04AH
WILL WRITE TO THE DISKETTE
0221
E8 04CA R
CALL
DMA_SETUP
SET UP THE DMA
0224
B4 40
MOV
AH,04DH
ESTABLI SH THE FORMAT COMMAND
0226
EB 24
JMP
SHORT RW_OPN
DO THE OPERATION
0228
J10:
CONTINUATION Of RW_OPN FOR FHT
0228
BB 0007
MOV
BX,7
GET THE
022B
E8 0382 R
CALL
GET_PARM
BYTES/SECTOR VALUE TO NEC
022E
BB 0009
MOV
BX,9
GET THE
0231
[8 0382 R
CALL
GET PARM
SECTORS/TRACK VALUE TO NEC
0234
BB OOOF
MOV
BX,Ts
GET THE
0237
E8 0382 R
CALL
GET PARM
GAP LENGTH VALUE TO NEC
023A
BB 001'
MOV
BX,17
GET THE FILLER BYTE
0230
E9 032A R
JMP
J
16
TO THE CONTROLLER
0240
DISK_FORMAT
ENDP
;------ DISKETTE WRITE ROUTINE
0240
0240
80 OE 003f
R
80
DISK_WRI6~
~~~gR_ST~~~:,WRITE_OP
INDICATE WRITE OPERATION
0245
80 4A
MOV
AL.04AH
DHA WRITE COMMAND
0247
E8 04CA R
CALL
DMA_SETU P
024A
B4 C5
MOV
AH,OC5H
NEC COMMAND TO WRITE TO DISKETTE
024C
01 SK_WR I TE
ENDP
;-----'ALLOW WRITE ROUTINE TO fALL INTO RW_OPN
.---
---~--~
--------
----
-_
..
-
-
-
---~-
; RW_OPN
TH I S ROUT I NE PERFORMS THE READ/WR I TE/VER I FY OPERATI ON
k~:~;N- -;;~~--
--N
~;;-
--..------....-------­
OZ4C
024C
73 08
JNC
J 11
; TEST FOR DNA ERROR
024E
c6 06 0041 R 09
MOV
DISKETTE_STATUS.DMA_BOUNDARY
; SET ERROR
0253
BO 00
MOV
AL,O
;
NO SECTORS TRANSFERRED
0255
C3
RET
; RETURN TO MA
j
N ROUT I NE
0256
Jll:
; DO_RW_OPN
0256
50
PUSH
AX
;
SAVE THE COMMAND
; ------ TURN ON THE MOTOR AND SELECT THE DR I VE
5-92 Diskette

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents