IBM
P~rsonal
Computer
MACRO
Assembler
Version
2.00
OSKETTE
- - 0 I
110/86
0 I
SKETTE
ADAPTER B I
OS
1-8
01-10-86
·--
--
----------------------------------------
--
--
----
-------
--
---
DISK
CHANGE PROC NEAR
-
TEST
OHF
CNTRL,OUAL
TEST
CONTROLLER
1.0.
JNZ
DC1-
..IMP
FNC_ERR
ERROR FOR
TH
I
SKI
NO
OF
CONTROLLER
DEC S I CHECK FOR
SET
DASD
TYPE
04
JNZ
FS_ERR
BAD
COMMAND
EXIT
IF
NOT
VALID
TYPE
TEST
ODSK
STATE[DI),DRV
DET
DRIVE
DETERMINED?
JZ
ASSUME -
IF
ST I
LL
NOT DETERM I NED ASSUME
MOV
AL,MED
DET+RATE
300
TEST
ODSK
STATE[DI)
,FMT
CAPA
MULTIPLE
FORMAT
CAPABILITY?
JNZ
OR_IT_IN
-
IF
1.2
M THEN
DATA
RATE
300
; I
NO
I
CATE
MED I A REMOVED
SET UP
TRANSLATE
STATE
TO
COMPATIBLE
MODE
VAR
IOUS
CLEANUPS
GET SAVED
AL
TO
BL
PUT
BACK FOR RETURN
;
SET
TIMEOUT,
NO
DR
I VE
TRANSLATE
STATE
TO
COMPATIBLE
MODE
VAR
10US
CLEANUPS
GET
SAVED
AL
TO
BL
PUT
BACK FOR RETURN
TRANSLATE
STATE
TO
PRESENT
ARCH.
GET
MEDIA
STATE
INFORMATION
DR
I VE
PRESENT
?
JUMP
IF
NO
DRIVE
80
TRACK
DR
I VE ?
I F
SO
, CHECK CHANGE
LINE
GO
CHECK S
TATE
OF 0 I SK CHANGE
LI
NE
CHANGE
LINE
NOT ACT I VE
I
OR
IN
THE
CORRECT
STATE
ODSKETTE
STATUS,BAD
CMD
I UNKNOWN
STATE,BAD
COMMAND
SHORT
SO-
-
ENDP
ODSK_STATE[DI)
,AL
XLAT
OLD
SETUP
END
BX -
AL,BL
S I ; CHECK FOR
1.
2M
MED
I A I N
1.
2M DR I VE
NOT
12
I
BYPASS
I F NOT
ODSK
STATE[DI)
,MEO
DET+RATE
500
I
SET
STATE
VARIABLE
SHORT
SO
-;
RETURN TO
CALLER
OHF
CNTRL,
DUAL
TEST
CONTROLLER
1.0.
S3
-
MED CHANGE ; CHECK FOR T I ME_OUT
ODSKETTE
STATUS,
T I
ME
OUT
SO
- -
1FT
I
ME
OUT
TELL
CALLER
SI
; CHECK FOR
320/360K
IN
1
.2M
DRIVE
NOT
320
12
I
BYPASS
I F NOT
ODSK
STATE[D
I)
,MED
DET+DBL
STEP+RATE
300
I
SET
STATE
SHORT
SO
- - -
ODSKETTE
STATUS,
T I
ME
OUT
SHORT
FIN
I S -
ENDP
AH
=
OOSKETTE
STATUS
00
- 0 I
SK
CHANGE
LI
NE I
NACTI
VE,
CY = 0
06
- 0 I
SK
CHANGE
LI
NE ACT I
VE,
CY
= 1
XLAT
OLD
SETUP
END
BX,SI-
AL,BL
XL
AT
NEW
AL,OOSK
STATE[DI)
AL,AL
-
DC
NON
AL-;TRK
CAPA
SETIT
-
READ DSKCHNG
FINIS
MOV
..IMP
CALL
CALL
POP
MOV
RET
MOV
DEC
JNZ
OR
..IMP
ASSUME:
OR
IT
IN:
- -
OR
SO:
FORMAT_SET
S3:
NOT
320
12:
-
-DEC
JNZ
OR
..IMP
.----------------------------------------------------------------
SET
MEDI
A
-
TH
I S ROUT I NE
SETS
THE
TYPE
OF MED I A AND OATA
RATE
TO
BE
USED FOR
THE
FOLLOW I
NG
FORMAT OPERAT I
ON.
ON
ENTRY:
;
[BP)
= SECTOR PER TRACK
;
[BP+l)
= TRACK #
01
=
DRIVE
#
ON
EXIT:
ODSKETTE
STATUS
REFLECTS
STATUS
;
IF
NO
ERROR:
NOT
320:
-
TEST
JZ
CALL
CMP
JZ
·--------------------------
---
-----------
---
--
----
-
-------
-------
FORMAT
SET
PROC NEAR
-
CALL
XLAT
NEW
;
TRANSLATE
STATE
TO
PRESENT
ARCH.
PUSH S I - ; SAVE DASD
TYPE
MOV
AX,SI
;
AH
= ? ,
AL
= DASD
TYPE
XOR
AH,AH
;
AH
= 0 ,
AL
= DASD
TYPE
MOV
S I
,AX
; S I = DASD
TYPE
AND ODSK
STATE[DI)
,NOT
MED
DET+DBL
STEP+RATE
MSK I
CLEAR
STATE
DEC S I - - I CHECK FOR
320/360K
MED I A &
DR
I
VE
JNZ
NOT
320
I
BYPASS
I F NOT
OR
ODSK
STATE[DI)
,MED
DET+RATE
250
I
SET
TO
320/360
..IMP
SHORT
SO
- -
;
ON
EXIT:
·-------------
----
-----------------------------------------------
FORMAT
SET
TH
I S ROUT I NE I S USED TO
ESTABLI
SH
THE
TYPE
OF
MED I A TO
BE
USED FOR
THE
FOLLOW I
NG
FORMAT OPERAT I
ON
•
ON
ENTRY:
S I
LOW
= DASD
TYPE
FOR FORMAT
01
=
DRIVE
#
ON
EX
IT:
ODSKETTE
STATUS
REFLECTS
STATUS
;
AH
=
ODSKETTE
STATUS
CY
= 1
IF
ERROR
DCl
:
CALL
MOV
OR
JZ
TEST
JZ
DCO:
CALL
JZ
SETIT:
MOV
FINIS:
CALL
CALL
MOV
MOV
RET
DC_NON:
OR
..IMP
DISK_CHANGE
185
186
181
188
189
02BO
190
02BO
F6
06
008F
R 0 I
191
02B5
15
03
192
02B1
E9
0110
R
193
02BA
194
02BA
E8
0404
R
195
02BO
8A
85
0090
R
196
02C
1
OA
CO
191
02C3
14
19
198
02C5
A8
01
199
02C1
14
05
800
801
02C9
E8
OB21 R
802
Oj2CC
14
05
803
804
02CE
C6
06
0041
R
06
805
806
0203
E8
0432
R
801
0206
E8
0832
R
808
0209
8B
DE
809
020B
8A
C3
810
0200
C3
811
812
020E
813
020E
80
OE
0041
R
80
814
02E3
EB EE
815
02E5
816
811
818
819
820
821
822
823
824
825
826
821
828
829
02E5
830
02E5
E8
0404
R
831
02E8
56
832
02E9
8B
C6
833
02EB
32
E4
834
02EO
8B
FO
835
02EF
80
AS
0090
R
OF
836
02F4
4E
831
02F5
15
01
838
02F1
80
80
0090
R
90
839
02FC
EB
3E
840
841
02FE
842
02FE
F6
06
008F
R 01
843
0303
14
OA
844
0305
E8
05F5
R
845
0308
80
3E
0041
R
80
846
0300
14
20
841
848
030F
4E
849
0310
15
01
850
0312
80
80
0090
R
10
851
0311
EB
23
852
853
0319
854
03194E
855
031A
15
01
856
031
C
80
80
0090
RIO
851
032
I
EB
19
858
859
0323
860
0323
4E
861
0324
15
20
862
863
0326
F6
85
0090
R
04
864
032B
14
09
865
0320
BO
50
866
032F
F6
85
0090
R
02
861
0334
15
02
868
869
0336
810
0336
BO
90
811
812
0338
813
0338
08
85
0090
R
814
815
033C
816
033C
E8
0432
R
811
033F
E8
0832
R
818
0342
5B
819
0343
8A
C3
880
0345
C3
881
882
0346
883
0346
C6
06
0041
R 01
884
034B
EB
EF
885
886
0340
881
888
889
890
891
892
893
894
895
896
891
898
5-30
DISKETTE
(01/10/86)