IBM p.,.soflal Computer MACRO Assembl.,.
Versiofl 2.00
'-7
DSKETTE -- 06/10/85
DISKETTE BIOS
06-10-85
654
655
ON ENTRY:
DI
,
DRIVE
#
656
657
658
ON EXIT:
AH :
(lDSKETTE STATUS
00 -
DISK CHANGE LINE
INACTIVE,
CY :::
0
659
06 -
DISK CHANGE LINE ACTIVE,
CY :.
1
660
1 - -- - - - - - - - - - - - - - - - - - - - - - - - -
"
I
662
•• 3
023C
023C E8
023F 8,1,
02C8 R
85 0090 R
DISK CHANGE
-
CALL
MOV
PROC
NEAR
XLAT NEW
AL,.5sK 5TATE[DI
J
TRANSLATE STATE TO PRESENT ARCH.
GET MEDIA STATE
INFORMATION
6.'
0243 OA CO
OR
AL,AL
DR I VE PRESENT
?
.65
•••
•• 7
0245 74
0247 AS
0249 74
19
01
05
.JZ
TEST
.JZ
DC NON
AL 7TRK CAPA
SETIT -
.JUMP IF NO DRIVE
80 TRACK DR I VE
?
IF SO • CHECK CHANGE LINE
668
••9
024B Ea 08E3 R
CALL
READ OSKCHNG
GO CHECK STATE OF DISK CHANGE LINE
670
024E 14 05
JZ
FINIS
CHANGE LI NE NOT ACT! VE
671
.72
0250 C6 06 0041
R 06
SET IT:
MDV
tlOSKETTE_STATUS, MED I A_CHANGE
;
I NO I CATE MED I A REMOVED
673
674
0255 E8 02EE R
FINIS:
CALL.
XL AT OLD
TRANSLATE STATE TO COMPATIBLE MODE
675
0258 ES 0620 R
CALL
SETUP END
VAR IOUS CLEANUPS
b7.
025B 8B DE
"OV
BX.S'
GET SAVED AL TO BL
677
678
025D 8,1,
025F C3
C3
"OV
RE7
AL,BL
PUT BACK FOR RETURN
b79
6.0
0260
681
02flO 80 OE 0041
R 80
OR
PDSKETTE STATUS,TlME OUT
1 SET TIMEOUT, NO DRIVE
682
0265 EB EE
.JMP
SHORT FINIS
-
683
.8'
0261
DISK_CHANGE
ENDP
~
-
----
- - -
- -
- ---
- - -- -
--
- -- -- -
-- -
-
- - - - - - - - -- - - - -
-
----- -- -------
- -
- -
685
THIS ROUTINE IS USED TO ESTABLISH THE TYPE OF MEDIA TO BE USED
686
FOR THE FOLLOWING FORMAT OPERATION.
687
.88
ON ENTRY,
S I
LOW
=
DASD TYPE FOR FORMAT
680
01
:
DRIVE'
690
b91
ON EXIT:
.OSKETTE STATUS REFLECTS STATUS
.92
AH :
PDSKETTE STATUS
693
CY :::
I
IF ERROR
694
695
0267
t~;~~ ~
-
~~ ~
------
;~~~
---
~~~~
------------------------------------------------
.9.
026
r
E8 02C8 R
-
CALL
XLAT NEW
;
TRANSLATE STATE TO PRESENT ARCH.
697
026A 56
PUSH
S I
-
;
SAVE DASD TYPE
698
026B 8B C6
MOV
AX,SI
;
AH
=
? ,
AL
=
DASD TYPE
699
026D 32 E4
XOR
AH,AH
1 AH = 0
• AL = DASD TYPE
700
026F 88 FO
MOV
S I ,AX
I
S I
= DASD TYPE
701
702
0211
80
0216 4E
,1,5 0090 R OF
~~g
;~SK_STATE[DI]
.NOT
MED_D~T~~~~KS~~~+~~673~~~
MEDiA
C~E~~
I
e~ATE
703
0217 75 07
.JNZ
NOT 320
I
BYPASS IF NOT
70'
0279 80 8D 0090 R
90
OR
POSK_STATE[DI] ,MED_DET+RATE_250 :
SET TO 320/360
705
021E EB 37
.JMP
SHORT SO
706
707
0280
NOT 320:
708
0280 E8 0416 R
-
CALL
MED CHANGE
;
CHECK FOR TI ME_OUT
700
0283 80 3E 0041
R 80
CMP
OD5KETTE STATUS,TIME OUT
710
0288 74 2D
JZ
SO
-
-
1FT I ME OUT TELL CALLER
711
7 I 2
713
028A 4E
028B 75 01
DEC
JNZ
SI
NOT 320
12
CHECK FOR 320/360K
• BYPASS I F NOT
IN
1.2M DRIVE
714
715
0280 80
0292 E8
8D 0090 R
23
70
OR
J"P
;~~~TS~~TE[D
11 ,MED_DET+DBL_STEP+RATE_300
;
SET STATE
7Ib
717
0294
NOT 320
-
-
12 :
718
0294 4E
OEC
719
0295 15 07
JNZ
720
0297 80 80 0090 R
10
OR
72.
029C EB
19
J,,"
722
72'
72.
029E
029E 4E
NOT
-
'2.
DEC
51
CHECK FOR SET DASD TYPE 04
725
029F 75 20
JNZ
FS_ERR
BAD COMMAND EXIT IF NOT VALID TYPE
72.
727
728
02AI FE:>
02A6 74
85 0090 R
09
04
TEST
JZ
POSK_STATEIDI
J
,DRV_DET
ASSUME
DR I VE DETERM 1 NED
?
IF STILL NOT DETERMINED ASSUME
729
730
731
02A8 BO
02AA FEo
02AF 75
50
85 0090 R
02
02
"OV
TEST
JNZ
AL .MED DET+RATE 300
OoDSK STATE[D I
J
.FMT CAPA
oR_I'f_IN
-
MULTIPLE FORMAT CAPABILITY 7
IF
1.2 hi THEN DATA RATE 300
732
73.
02BI
ASSUME:
734
02B I
80 90
"OV
SET UP
735
736
02B3
OR
IT
IN:
-
-
737
02B3 08 85 0090 R
OR
;
OR
IN THE CORRECT STATE
738
739
02B7
50,
7.0
02Bl E8 02EE R
CALL
XLAT OLD
TRANSLATE STATE TO COMPATIBLE MODE
7"
02BA E8 0620 R
CALL
SETUP END
VARIOUS CLEANUPS
7.2
02BD 58
POP
BX
-
GET SAVED AL TO BL
7.3
02BE SA C3
MOV
AL,BL
PUT BACK FOR RETURN
7 ••
02CO C3
RET
7.5
7••
oze
1
FS_ERR:
747
02Cl
C6 06 0041
R O'
"OV
ODSKETTE STATUS, BAD CMD
UNKNOWN STATE,BAD COMMAND
748
02C6 EB EF
J"P
SHORT SO
-
749
750
02CB
FORMAT_SET
ENDP
751
- -
------------------
752
;
XLAT NEW:
TRANSLATES DISKETTE STATE LOCATIONS FROM COMPATIBLE MODE TO
753
;
-
NEW ARCH I TECTURE.
754
755
756
;
ON ENTRY;
01: DRIVE
;-
- -- ----
--
- - - -
- - - - -
-
-
- -------
- -
-----
- - -- - - - - - - -
----------- -----
- - - -
-
757
02C8
XLAT NEW
PROC
NEAR
;
758
02C8 S3 FF
01
-
CMP
01,1
I
VALID DRIVE?
750
02CB 77
IC
.JA
XN OUT
;
IF
INVALID BACK
760
761
02CD 80
0202 14
BD 0090 R
16
00
5~P
~gs~E~TATE[DI]
,0
;
7~ ~~I~~I~E
ATTEMPT DETERMINE
7.2
0204 8B CF
MOV
cx70 I
cx = DR I VE NUMBER
7.3
0206 CO E I
02
SHL
CL,2
CL
=
SHIFT COUNT,
A=O, 8=4
76'
0209 ,1,0 008F R
MDV
AL, OHF CNTRL
DR I VE 1 NFORMA T I ON
7.5
02DC 02 C8
ROR
AL,CL -
1 TO LOW NIBBLE
76b
02DE 24 07
AND
AL.DRV DET+FMT CAPA+TRK CAPA
;
KEEP DRIVE BITS
7b7
02EO 80 ,1,5 0090 R F8
AND
.DSK_Si'ATE[OI17NOT DRV_DET+FMT_CAPA+TRK_CAPA
DISKETTE
5-103