IBM AT 5170 Technical Reference page 281

Table of Contents

Advertisement

IBM Personal Computer- MACRO Ass.mbler
Ver-s;on 2.00
1-13
DSKETTE -- 06/10/B5
DISKETTE BIOS
06- [0-65
!
338 062F OA E4
OR
AH,AH
CHECK FOR ERROR
13390631
7402
JZ
NUN ERR
NO ERROR
1340 0633 32 CO
XOR
Al,Al
CLEAR NUMBER RETURNED
1341
1342 0635
NUN ERR:
1343 0635 BO FC 01
-
CMP
AH.I
SET THE CARRY FLAG TO INDICATE
1344 0638 F5
CMC
SUCCESS OR FAilURE
1345 0639 C3
RET
1346 063A
SETUP_END
ENDP
1347
;
---- -- - - - - - - - - -- - - - - - - - - - - - - - - - - - ------- -
- -------------------
- - -
----
- ­
134B
SETUP _DBL:
CHECK DOUBLE STEP.
1349
1350
; ON ENTRY :
AH
=
RATE; 01
=
DRIVE
1351
1352
;
ON EXI T :
CY
=
I MEANS ERROR
1353
;~~~;
-
~;~
- -- - - - -
~~~~
- - - -
~~~~
- - - -
1354 063A
1355 063A 8A A5 0090 R
-
MOV
AH,tlDSK STATEIDI]
;
ACCESS STATE
1356 063E Fb C4 10
TEST
AH,MED DET
; ESTABLISHED STATE
7
1357 0641
75 59
..JNZ
NO_DBl-
;
IF ESTABL[SHED THEN DOUBLE DONE
1358
1359
CHECK FOR TRACK 0 TO SPEED UP ACKNOWLEDGE OF UNFORMATTED 0 I SKETTE
1360
1361 0643
Cb
Ob 003E R 00
"OV
tlSEEK STATUS,O
SET RECAL
I
BRA TE REQU [RED ON ALL DR I VES
1362 0648 E8 ObE
I R
CALL
MOTOR=ON
ENSURE MOTOR STAY ON
1363 064B 85 00
"OV
CH,O
LOAD TRACK 0
1364 0640 E8 01DE
R
CALL
SEEK
SEEK TO TRACK 0
1365 0650 E8 Ob9E
R
CALL
READ 10
READ JD FUNCTION
1366 0653 12 32
Je
SO_ERR
I F ERROR NO TRACK
0
1367
1368
INITIALIZE START AND MAX TRACKS
[TIMES 2 FOR BOTH HEADS)
1369
1370 0655 B9 0450
MOV
CX, 0450H
;
START. MAX TRACKS
1371
0658 F6 85 0090 R 01
TEST
POSK STATEIOI],TRK. CAPA ;
TEST FOR 80 TRACK CAPABILITY
1372 0650 74 02
JZ
CNT OK
-
i
I F NOT COUNT
1
S SETUP
1373 065F BI
AO
MOV
CL, OAOH
i
MAX I MUM TRACK
1.2MB
1374
1315
ATTEMPT READ
[0
OF ALL TRACKS, ALL HEADS UNTIL SUCCESS; UPON SUCCESS,
1376
MUST SEE IF ASKED FOR TRACK
IN SINGLE STEP MODE
=
TRACK
10 READ;
IF NOT
1377
THEN SET DOUBLE STEP ON.
1376
1319 066
I
CNT_OK:
1380 0661
51
PUSH
ex
SAVE TRACK. COUNT
1381
0662 C6 06 0041 ROO
"OV
I1IDSKETTE ST A lUS, 0
CLEAR STATUS. EXPECT ERRORS
1382 0667 33 CO
XOR
AX ,AX
-
CLEAR AX
t
383 0669 00 ED
SHR
CH,I
HALVE TRACK, CY
=
HEAD
1384 066B CO DO 03
ReL
AL,3
AX '" HEAD IN CORRECT BIT
1385 066E 50
PUSH
AX
SAVE HEAD
1386 066F E8 07DE R
CALL
SEEK
SEEK TO TRACK
1387 0612 58
POP
AX
RESTORE HEAD
1388 0673 08 Fe
OR
DI,AX
01
= HEAD OR'ED DRIVE
1389 0675 E8 069E R
CALL
READ_ID
READ
[0 HEAD 0
1390 0618 9C
PUSHF
SAVE RETURN FROM READ 10
1391
0679 81
E7 00F8
ANa
01,11 I I [O[ IB
TURN OFF HEAD 1 BIT
­
1392 0670
90
POPF
RESTORE ERROR RETURN
1393 067E 59
POP
ex
RESTORE COUNT
1394 061F 73 08
JNe
DO CHK
IF OK, ASKED
=
RETURNED TRACK
1
1395 0681
FE C5
INe
eH ­
I NC FOR NEXT TRACK
1396 0683 3A E9
e"p
CH,Cl
REACHED MAX [MUM YET
1397 0685 15 DA
JNZ
CNT_OK
CONTINUE TILL ALL TRIED
1398
1399
FALL THRU, READ ID FAILED FOR ALL TRACKS
1400
1401
Ob81
1402 0681 F9
STe
SET CARRY FOR ERROR
1403 0688 C3
RET
SETUP _DBL ERROR EX [T
1404
1405 06B9
1406 0669 8A OE 0045 R
"OV
CL,.NEC STATUS+3
LOAD RETURNED TRACK
1401 0680 66 80 0094 R
"OV
POSK TRKIDI
J
tCL
STORE TRACK NUMBER
1408 0691
00 EO
SHR
CH,I-
HALVE TRACK
1409 0693 3A E9
cop
CH,CL
I SIT THE SAME AS ASKED FOR TRACK
1410 Ob95
74 05
JZ
NO DBL
IF SAME THEN NO DOUBLE STEP
1411
Ob97
60 BD 0090 R 20
OR
IiIDSK_STATE[OI] ,DBl_STEP
TURN ON DOUBLE STEP REQU I REO
1412
1413069C
1414 069C F6
eLe
; CLEAR ERROR FLAG
1415 0690 C3
RET
1416 069E
SETUP_DBL
ENDP
1411
;
---------- -- ---- - --- -----
- -
----- ----------------------------- --- - - ---------- ­
1418
I
READ_ID :
READ
ID
FUNCTION.
1419
1420
; ON ENTRY:
01
: BIT 2
=
HEAD; BITS 1.0
=
DRIVE
1421
I
1422
; ON EXIT:
Dt
: BIT 2
IS RESET, BITS 1,0
=
DRIVE
1423
;
Ol:IDSKETTE STATUS, CY REFLECT STATUS OF OPERATION
1424
I - - - --- - - - - - - - - - - - - - - - - - ':: - - - - -- - - - - - ------ - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - ­
1425 069E
READ 10 PROC
NEAR
1426 069E 86 0682 R
-
MOV
AX,OFFSET ER
3
MOVE NEC OUTPUT ERROR ADDRESS
1421 ObAI
50
PUSH
AX
­
1426 06A2 84 4A
MOV
AH,4AH
READ !
0 COMMAND
1429 ObA4 E8 0180 R
CALL
NEC OUTPUT
TO CONTROLLER
1430 06A7 8B C1
MOV
AX,DI
DRIVE # TO AH, HEAD 0
1431 06A9 8A EO
MOV
AH, AL
1432 06AB E6 0180 R
CALL
NEC OUTPUT
TO CONTROLLER
1433 06AE E8 0530 R
CALL
NEC-TERM
WAIT FOR OPERAT[ON,
GET STATUS
1434 Ob81
58
POP
AX
THROW AWAY ERROR ADDRESS
1435 ObB2
1436
Ob82
C3
RET
1431 0683
READ_IO ENOP
1436
1439
CMOS_TYPE;
RETURNS DISKETTE TYPE FROM CMOS
1440
1441
;
ON ENTRY:
01
I DRIVE
#
1442
1443
;
ON EXIT:
AL
=
TYPE (IF VALID)
i
CY REFLECTS STATUS
1444
~~O;
-
~;~E-------~~~~-
-
--~E~~--
---- - ­
1445 ObB3
1446 06B3 80 OE
-
MOV
AL.CMOS DIAG
CMOS 0 I AGNOST [C STATUS BYTE ADDRESS
1441 06B5 E8 0000 E
CALL
CMOS READ
GET CMOS STATUS
1448 06B8 AB CO
TEST
AL,BAD_BAT+BAD_CKSUM
BATTERY GOOD AND CHECKSUM VALID?
1449 06BA F9
STe
SET CY
=
1 INDICATING ERROR FOR RETURN
1450 06BB 75 OE
JNZ
CMOS_T9
ERROR EXiT IF EITHER ERROR 81T WAS ON
1451
DISKETTE
5-109

Advertisement

Table of Contents
loading

Table of Contents