IBM 5170 Technical Reference page 242

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

06FfI
EB 00
JMP
$+2
DELAY
06FA
E4 71
IN
Al, CDATA_PRT
GET oSKETTE BYTE
06FC
OA 02
OR
Dl,Dl
SEE WHICH DRIVE IN QUESTION
06FE
75 04
JNZ
T3
IF DRIVE 1, DATA ALREADY IN LOW NIBBLE
0700
[11 01.
MOV
Cl,4
GET ROTATE COUNT TO SHIFT HIGH TO LOW NIBBLE
0702
0704
0706
02 C8
2L~
OF
3C 02
T3:
ROR
AND
CMP
Al,Cl
Al, LOWN' B
Al, I NVAl I o_DRV
EXCHANGE NIBBLES
CLEAR AWAY UNDESIRED DRIVE DATA
SEE IF UNDEFINED DISKETTE TYPE
0708
72 02
J6
T6
RETURN I F NOT, RESULTS IN AL
070A
32 CO
XOR
Al,AL
STATE NO DRIVE PRESENT OR UNKNOWN
070C
C3
T6:
RET
RETURN TO CALLER
0700
DISK_TYPE ENOP
;
FORMAT_SET
;
TH I S ROUT I NE I S USED TO ESTABLI SH THE
;
TYPE OF MEDIA/DRIVE TO BE USED FOR THE FOllOWING
;
FORMAT OPERATION
0700
FORMAT SET
PROC
NEAR
0700
0712
F6 06 008F R 01
74 5C
-
TEST
JZ
HF CNTRl, DUAL
50­
GO DETERM I NE TYPE OF CONTROllER CARD
DISKETTE ATTACH CARD, GO DO TYPE OPERATION
0714
32 FF
XOR
BH,BH
CLEAR HIGH ORDER OFFSET
0716
8A DA
MOV
BL,DL
LOAD DR I VE NUMBER AS OFFSET
0718
071A
FE C8
75 06
DEC
JNZ
AL
51
CHECK FOR 320/360K MEDIA &: DRIVE
BYPASS I F NOT
071C
C6 87 0090 R 93
MOV
DSK_STATE[BX),M326D326 ; SET STATE VARIABLE
0721
C3
RET
RETURN TO CALLER
0722
50
PUSH
AX
; SAVE TYPE VALUE
0723
E8 0604
R
CALL
READ_DSKCHNG
; GO CHECK 0 I SK CHANGE liNE
0726
74 2E
JZ
53
; NOT ACT I VE GO ON PROCESS I NG
0728
C6 06 0041
R 06
MOV
DISKETTE STATUS,MEDIA CHANGE;
INDICATE DISK CHANGE ACTIVE
0720
8B 56 00
MOV
OX, I BP] -
RESTORE DR I VE PARMETER
0730
0732
B5 01
E8 olnc R
MOV
CALL
CH,D1H
SEEK
MOVE TO CYLINDER
1
I SSUE SEEK
0735
8B 56 00
MOV
OX, I BPJ
RESTORE DRIVE PARMETER
0738
B5 00
MOV
CH,OOH
MOVE TO CYLINDER 0
073A
E8 041C R
CALL
SEEK
I SSUE SEEK
0730
0740
0743
88 56 00
E8 0604 R
74
11
MOV
CALL
JZ
DX,IBP]
~jAD_DSKCHNG
RESTORE DRIVE PARMETER
g~A~~~C~
I
~~ S~N~~~7~t
L
b~E
SET TYPE
0745
0746
56
C6 06 0041
R 80
POP
MOV
AX
; RESTORE TYPE VALUE
DISKETTE_STATUS, TIME_OUT;
INDICATE NO MEDIA IN DRIVE
074B
074E
8B 5E 00
32 FF
MOV
XOR
BX, [BPJ
BH, BH
; RESTORE DRIVE PARMETER FOR USE AS
; CLEAR HIGH ORDER OffSET
INDEX
0750
0755
C6 87 0090 R 61
C3
MOV
RET
DSK_STATE[ BX], POA_DUAl ; SET STATE TO POWER ON ASSUMPTION
; RETURN TO CALLER
0756
56
POP
AX
; RESTORE TYPE VALUE
0757
FE c8
DEC
AL
: CHECK FOR 320/360K MEDIA IN 1.2M DRIVE
0759
75 06
JNZ
52
; BYPASS
l
F NOT
075B
0760
C6 87 0090
R 74
C3
MOV
RET
DSK_STATE[ BX
1,
M326D12 ; SET STATE VAR I ABLE
: RETURN TO CALLER
0761
fE C8
DEC
AL
; CHECK FOR 1. 2M MED I A IN
1.
2M DR I VE
0763
75 06
JNZ
SE
; BYPASS
I
F NOT, ERROR COND I T I ON NOW EX I STS
0765
076A
C6 87 0090
R
15
C3
MOV
RET
DSK_STATE(BXj,M12D12 ; SET STATE VARIABLE
; RETURN TO CALLER
076B
0770
C6 06 0041
R 01
C3
SE:
so:
MOV
RET
OJ SKETTE_STATUS, BAD_CMD : UNKNOWN STATE, BAD COMMAND
; RETURN TO CAllER
0771
FORMAT_SET
ENDP
; DSKETTE_SETUP
;
THIS ROUTINE DOES A PRELIMINARY CHECK TO SEE
;
WHAT TYPE OF DISKETTE DRIVES ARE ATTACH TO THE
;
SYSTEM.
TEST IS ONLY PERFORMED WHEN A DUAL
;
ATTACHMENT CARD EXISTS.
0771
bSKE;:;:E:SE;:UP-P~~~------NE~~----------------------
0771
50
PUSH
AX
SAVE REGISTERS
0772
53
PUSH
BX
0773
51
PUSH
CX
0774
52
PUSH
OX
0775
56
PUSH
SI
0776
57
PUSH
0 I
0777
06
PUSH
ES
0778
1 E
PUSH
OS
0779
55
PUSH
BP
077A
E8 0000 E
CALL
DDS
lOAD DATA SEGMENT REGISTER TO ROM BIOS AREA
0770
BB 0000
MOV
BX,a
;
INITIALIZE DRIVE POINTER
0780
0786
078C
C7 87 0090 RODDa
C7 87 0092 R 0000
c6 06 008B R 00
MOV
MOV
MOV
WORD PTR DSK_STATEIBX],O ;
INITIALIZE STATES
WORD PTR DSK_STATEIBX+2],0 ;
INITIALIZE START STATES
lASTRATE,O
INITIALIZE LAST DATA TRANSfER RATE
0791
0796
079B
C6 06 003E R 00
c6 06 0040 R 00
C6
06
003 f R 00
MOV
MOV
MOV
SEEK STATUS,O
;
!NDICATE RECALIBRATES NEEDEO
MOTOf'CCOUNT,O;
INITIALIZE MOTOR COUNT
MOTOR_STATUS, 0
;
INITIALIZE DRIVES TO OFF STATE
07AO
07A1
53
BO
01
SU
po:
PUSH
MOV
BX
Al,Ol
; SAVE PO INTER
; MASK FOR DETERMINING MOTOR BIT
07A3
07A8
80 26 003F R CF
B1 04
AND
MOV
MOTOR_STATUS,OCFH ; CLEAR ENCODED DRIVE SELECT BITS(4
Be
5)
Cl,4
SH
I
FT DR I VE NUMBER INTO HIGH NIBBLE COUNT
07AA
02 C3
ROl
Bl,Cl
SHIFT DRIVE NUMBER INTO HIGH NIBBLE
07AC
07BO
08 1E 003F R
02 CB
OR
ROR
MOTOR_STATUS,BL
Bl,CL
ADD IN DRIVE NUMBER SELECTED FOR LATER USE
RESTORE DRIVE NUMBER
07B2
8A CB
MOV
Cl, BL
RESTORE DR I VE NUMBER
07B4
02 EO
SHl
Al,CL
FORM MOTOR ON BIT MASK
07B6
FA
Cli
NO INTERRUPTS WHILE DETERMING MOTOR STATUS
07B7
84 06 003f R
T[ST
AL,MOTOR_STATUS
TEST
07BB
75 09
·JNZ
SUP2
oONT NEED TO SELECT DEVICE I
F
MOTOR ON
07BD
07C1
07C6
08 06 003F R
C6 06 0040 R F F
fB
SUP2:
OR
MOV
STI
MOTOR_STATUS,Al ; TURN ON CURRENT MOTOR
MOTOR_COUNT,OFFH; SET LARGE COUNT DURING OPERATION
ENABLE I NT £RRU PTS AGA I N
07C7
BA 03f2
MDV
DX,03F2H
ADDRESS DIGITAL OUTPUT REGISTER
07CA
07CD
AO 003 f R
24 3F
MDV
AND
AL,MOTOR_STATUS
AL,03FH
GET
DIGITAL OUTPUT REGISTER REFLECTION
STRIP AWAY UNWANTED BITS
07eF
B1 04
MOV
CL,4
SH I FT COUNT
0701
02 CO
ROL
Al,Cl
PUT BITS IN DESIRED POSITIONS
0703
0705
OC DC
EE
OR
OUT
Al,OCH
DX,Al
NO RESET, ENABLE DMA/ I NT
SELECT DR I VE
0706
8B 03
MOV
OX, BX
ESTABLISH DRIVE PARM fOR SEEK ROUTINE
0708
07DA
B5 30
E8 041C R
MOV
CALL
CH, TRK SLAP
SEEK
-
GET TRACK TO SEEK TO( >40)
SEEK TO TRACK
0700
5A
POP
OX
RESTORE PO INTER
07DE
52
PUSH
OX
SAVE PO INTER
07Df
B5 OA
MOV
CH, QU lET_SEEK
SEEK SO fAR IN, BEfORE ISSUING SINGLE STEPS
07E1
E8 041C R
CALL
SEEK
SEEK TO TRACK 10
5-100 Diskette

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents