IBM 5170 Technical Reference page 241

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

0642
EC
IN
AL,OX
INPUT DIR
0643
A8 80
TEST
AL.OSK_CHG
CHECK
rOl~
DISK CHANGE LINE ACTIVE
0645
C3
RET
RETURN TO CALLER WIlH ZERO rLAG SET
0646
READ_DSKCHNG
ENOP
;
-----------------
- -
-----------------------------­
01 SK CHANGE
TH IS ROUT I NE RETURNS THE STATE OF THE
DISK CHANGE LINE
DISKETTE STATUS:
00 - DISK CHANGE
06 -
DISK CHANGE
LINE
INACTIVE
LINE ACTIVE
0646
0646
0648
F6
"/4
06
29
008F R 01
DISK_CHANGE
TEST
JZ
PROC
NEAR
HF CNTRL, DUAL
DC2
GO DETERM I NE TYPE OF CONTROLLER CARD
DISKETTE ATTACH CARD,
SET CHANGE liNE ACTIVE
06l!D
064F
0651
0655
0657
0659
32
8A
8A
24
3C
74
FF
DA
87
07
03
07
0090 R
XOR
MOY
MOY
AND
CMP
JE
BH,BH
; CLEAR HIGH ORDER orFSET
BL,DL
;
LOAD DrtlVE NUMBER AS OFFSET
AL, DSK_STATE[ BX] ; GET MED I A STATE I N FORMAT' ON FOR DR I VE
AL,STATE_MSK
ISOLATE STATE
AL,3
CHECK FOR 48TPI
DRIVE
&
NOT ESTABLISHED STATES
SET I T
I F FOUND SET DISK CHANGE ACT I VE
065B
72 OB
JB
DCO
I F NOT ESTABliSHED, GO CHECK FOR NO DRIVE
0650
0660
E8
74
0604
05
R
CALL
JZ
READ DSKCHNG
FINIS
GO CHECK STATE OF DISK CHANGE LINE
CHANGE LI NE NOT ACTIVE,
RETURN
0662
0667
C6
C3
06 0041 R 06
SETIT;
FINIS;
MOV
RET
OISKETTCSTATUS,MEDIA_CHANGE;
INDICATE MEDIA REMOVED FROM DRIVE
;
RETURN TO CALLER
0668
066C
066E
8A
OA
75
87
CO
F2
0090 R
DCO:
MOV
OR
JNZ
AL.DSK STATE[BX]
AL.AL -
SETIl
; GET MEDIA STATE INFORMATION FOR DRIVE
CHECK FOR NO OR IVE INSTALLED
IF DRIVE PRESENT, SET CHANGE LINE ACTIVE
0670
0675
80
C3
OE 0041 R 80
DC1:
OR
RET
01 SKETTE_STATUS, TIME_OUT; SET TIMEOUT BECAUSE NO DR I VE
; RETURN TO CALLER
PRESENT
0676
0678
067A
067C
067E
0680
BO
E6
EB
E4
A8
75
DE
70
00
71
CO
EE
DC2:
MOV
OUT
JMP
IN
TEST
JNZ
AL,CMOSDSB_ADOR ;
CADR_PRT, AL
$+2
Al,CDATA_PRT
AL,CMOS_GOOD
DCl
GET CMOS DIAGNOSTIC STATUS BYTE ADDRESS
WR I TE ADDRESS TO READ OUT TO CMOS
DELAY
GET CMOS STATUS
SEE I F BATTERY GOOD AND CHECKSUM VAll 0
ERROR IF EITHER BIT ON
0682
0684
0686
0688
068A
068C
BO
E6
EB
E4
OA
75
10
70
00
71
02
04
MOV
OUT
JMP
IN
OR
JNZ
AL, CMOSDSK_BYTE
CADR_PRT, AL
$+2
AL, CDATA_PRT
DL,DL
DC'
ADDRESS OF DSKETTE BYTE
I N CMOS
WR I TE ADDRESS TO READ OUT TO CMOS
DELAY
GET DSKETTE BYTE
SEE WHICH DRIVE IN QUESTION
I F DR IVE 1, DATA ALREADY I N LOW NIBBLE
068E
0690
0692
0694
B1 04
02 C8
24 OF
74 DA
DC3:
MOY
ROR
AND
JZ
CL,lj
AL,CL
AL, LOWNI B
DCl
GET ROTATE COUNT TO SHIFT HIGH TO LOW NIBBLE
EXCHANGE NIBBLES
CLEAR AWAY UNDES1RElJ
D~IVE
DATA
NO DR I VE THEN SET TIMEOUT ERROR
0696
0698
EB CA
JMP
DISK_CHANGE
SHORT SET I T
ENDP
DR I VE, ON 320/360K DR I VES SET DISK CHANGE
DISK TYPE
THIS ROUTINE IS USED TO EITHER ESTABLISH THE
TYPE OF MEDIA/DRIVE TO BE USED IN THE NEXT
OPERATION(FOR FORMAT ONLY) OR RETURN THE
TYPE OF MEDIA/DRIVE INSTALLED AT THE DRIVE
;
SPECIFIED
0698
DISK TYPE
PROC
NEAR
0698
F6 06 008F R 01
-
TEST
HF_CNTRl,DUAL
; GO DETERMINE TYPE OF CONTROLLER CARD
0690
74 49
JZ
T2
; DISKETTE ATTACH CARD, GO DO TYPE OPERATION
069F
32 FF
XOR
BH, BH
; CLEAR HIGH ORDER OFFSET
06A 1
8A DA
MOY
BL,DL
; LOAD DR I VE NUMBER AS OFFSET
06A3
8A A7 0090 R
MOY
AH,DSK_STATEIBX] ; GET PRESENT STATE INFORMATION
06A7
FG C4 10
TEST
AH,DETERMINED
SEE I F MEDIA/DRIVE TYPE ALREADY ESTABLISHED
06AA
74 OB
JZ
T5
I F NOT, GO RETURN ZERO VALUE
06AC
80 £4 07
AND
Ali,
STATE_~lSK
STRI P Off HIGH ORDER BITS
06AF
80 EC 03
SUB
AH,03H
CONVERT TO TYPE FOR OUTPUT
06B2
75 OC
JNZ
T7
SKI P I F NOT 320/360 DRIVE AND MEDIA
06BI4
BO 01
MOV
AL, NOCHGLN
INDICATE NO CHANGE LINE AVAILABLE
06B6
C3
RET
RETURN TO CALLER
06B7
OA E4
OR
AH,AH
CHECK FOR NO DR I VE
06B9
74 2A
JZ
T1
I F NONE GO I NO I CATE SUCH TO CALLER
06B9
80 E4 07
AND
AH, STATE MSK
STRIP OFF HIGH ORDER BITS
06BE
74 03
JZ
TA
-
I F STATE 0 CHECK CMOS
06CO BO 02
h:
MaY
AL, CHGLN
1.2 DRIVE
C'
06C2
RET
RETURN TO CALLER
06C3
BO OE
MOY
AL,CMOSDSB_ADDR ; GET CMOS DIAGNOSTIC STATUS BYTE ADDRESS
06C5
E6 70
OUT
CADR_PRT, AL
WRITE ADDRESS TO READ OUT TO CMOS
06C7
EB 00
JMP
$+2
DELAY
06C9
E4 71
IN
AL, CDATA_PRT
GET CMOS STATUS
06CB
A8 CO
TEST
AL, CMOS_GOOD
SEE IF BATTERY GOOD AND CHECKSUM VALID
OGCD
15
16
JNZ
T1
ERROR I F EITHER BIT ON
06CF BO 10
MaY
AL, CMOSDSK_BYTE ; ADDRESS 0 F DSKETT E BYTE I N CMOS
OGOl
E6
10
OUT
CADR_PRT, AL
; WR I TE ADDRESS TO READ OUT TO CMOS
0603
EB 00
JMP
$+2
DELAY
06[)~
E4 71
IN
AL, CDATA_PRT
GET DSKETTE BYTE
0607
OA 02
OR
Dl,DL
SEE WHICH DRIVE
IN QUESTION
0609
75 04
JNZ
TB
IF DRIVE 1, DATA ALREADY IN LOW NIBBLE
06DB
Bl 04
MOY
CL,4
GET ROTATE COUNT TO SHIFT HIGH TO LOW NIBBLE
0600
02 C8
ROR
AL,CL
EXCHANGE NIBBLES
06DF
24 OF
TB;
ANa
AL, lOWN I B
CLEAR AWAY UNDESIRED DRIVE DATA
06El
3C 03
C~l
P
AL.3
SEE IF UNDEF I NED DISKETTE TYPE
06E3
72 02
J8
TC
RETURN I F NOT ,
RESULTS IN Al
06E5
32 CO
-r,;
XOR
AL,AL
STATE NO OR IVE PRESENT OR UNKNOWN
06£1
TC;
RET
RETURN TO CALLER
C'
06E8 BO DE
12:
MOV
AL, CMOSDSB ADDR ; GET CMOS 0 I AGNOST I C STATUS BYTE ADDRESS
06EA
E6 70
OUT
CADR_PRT,AI
; WR I TE ADDRESS TO READ OUT TO CMOS
06EC
EB 00
JMP
$+2
DELAY
06EE
E4 71
IN
AL, COA TA_PRT
GET CMOS STATUS
06FO
A8 CO
TEST
AL, CMOS_GOOD
SEE I F BATTERY GOOD AND CHECKSUM VALlO
06F2
75 F1
JNZ
T1
ERROR IF EITHER BIT ON
06F4
BO 10
MaY
AL,CMOSDSK_BYTE
ADDRESS OF DSKETTE 8YTE
IN CMOS
06F6
E6 70
OUT
CADR_PRT,AL
WRITE ADDRESS TO READ OUT TO CMOS
Diskette 5-99

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents