IBM AT 5170 Technical Reference page 282

Table of Contents

Advertisement

18114 Persone' Computer MACRO Assembler
Version 2.00
1-14
DSKETTE -- 06/10/85
DISKETTE BIOS
06-10-85
1452 06BO BO
10
MOV
AL
I
CMOS
0
I SKETTE
ADDRESS OF
0
I SKETTE BYTE
I
N
CMOS
1453 06BF E8 0000 E
CALL
CMOS READ
GET 0 I SKETTE BYTE
1454 06C2 OB FF
OR
DI,oT
SEE WHICH DRIVE IN QUESTION
1455 06C4 15 03
JNZ
CMOS_T5
IF DRIVE
I,
DATA
IN LOW NIBBLE
145E>
1451 06CE> CO Ctl 04
ROR
AL,4
EXCHANGE NIBBLES IF SECOND DRIVE
1458 06C9
CMOS T5:
1459 06C9 24 OF
-
AND
AL
I
OOFH
KEEP ONLY DR I VE DATA, RESET CY
=
0
14E>O 06CB
CMOS
19.
14E>I
06C8 C3
-
RET
CY
=
STATUS OF READ
1462 06CC
CMOS_TYPE
ENOP
!4E>3
;
-
-------------------------
--
--------------------- ----
-
---
- - - - - --
-------------­
1464
14E>5
;
GET_PARM:
~~b~K R~~T ~~~DF~6C~~ST~~EO!~~E~~~
I
~~~~T~~
I
~~O~OT~~E~ ~ S~_:~~~
FROM
1466
I
THAT TABLE
IS THEN MOVED INTO AH,
THE
INDEX-OF THAT 8YTE BEING
1461
I
THE PARAMETER
IN DL.
14E>8
1469
; ON ENTRY
I
DL =
I NDEX OF BYTE TO BE FETCHED
1410
1411
;
ON EXIT:
AH = THAT BYTE FROM BLOCK
1412
;
AL
I
OH DESTROYED
1413
~~;-;~~~
----- -- -
p~~~----~~~;--------
1414 OE>CC
1415 OE>CC IE
-
PUSH
OS
1476 06CD 56
PUSH
S I
1417 06CE 2B CO
SUB
AX ,AX
OS
=
0
• BIOS DATA AREA
1418 0600 8E 08
MOV
DS,AX
1479 0602 87 03
XCHG
OX,BX
8L = INDEX
1480 0604 2A FF
SUB
BH.8H
BX = INDEX
148 I
ASSUME
OS,ABSO
1482 0606 C5 36 0018 R
LOS
51,ODISK POINTER
I PO
I NT TO BLOCK
1483 06DA 8A 20
MOV
AH,[SI+BXj
;
GET THE WORD
1484 060C 87 03
XCHG
OX,BX
;
RESTORE BX
1485 060E 5E
POP
SI
1486 060F IF
POP
OS
1487 06EO C3
RET
1488
ASSUME
05:0ATA
1489 06El
GET_PARM
ENDP
1490
;
---
-
---- - - - - -- - - --
----------------
-
-- -
----------------
--------- -- - -­
1491
1492
;
MOTOR_ON
i~R~E~~!g~OO~
I
~~D
A
W~~;F~g~ E~~~~R
H
~6~R~U~E~
I
~~FF~7ET~M~~~~R~OUNT
1493
THAT THE MOTOR DOES NOT GO OFF DURING THE OPERATION.
IF THE
1494
MOTOR NEEDED TO BE TURNED ON, THE MULTI-TASK ING HOOK FUNCT I ON
1495
IAX=90FDH.
INT
ISH)
IS CALLED TELLING THE OPERATING SYSTEM
1496
THAT THE BIOS
IS ABOUT TO WAIT FOR MOTOR START UP.
IF THIS
1497
FUNCTION RETURNS WITH
CY
=
I,
IT MEANS THAT THE MINIMUM WAIT
1498
HAS BEEN COMPLETED.
AT THIS POINT A CHECK
IS MADE TO ENSURE
1499
THAT THE MOTOR WASN'T TURNED OFF BY THE TIMER.
IF THE HOOK DID
1500
NOT WAIT,
THE WAIT FUNCTION IAH=086H)
IS CALLED TO IAIT THE
150 I
PRESCRIBED AMOUNT OF TIME.
IF THE CARRY FLAG IS SET ON RETURN,
1502
IT MEANS THAT THE FUNCTION IS IN USE AND DID NOT PERFORM THE
1503
WAIT.
A TIMER
1 WAIT LOOP WILL THEN DO THE WAIT,
1504
1505
ON ENTRY:
01
= DRIVE
#
1506
1507
ON EXIT:
AX,BX,CX,OX DESTROYED
1508
1509 06El
PROC
NEAR
~~;~~-~~------
1510 06El E8 012A R
-
CALL
TURN ON
TURN ON MOTOR
1511
06E4 12 43
JC
MOT Ts ON
IF CY=1
NO WAIT
1512 06E6 E8 02EE R
CALL
XLAT
0[0
TRANSLATE STATE TO COMPATIBLE MODE
1513 06E9 B8 90FD
MOV
AX , 090FDH
LOAD WA I T CODE
&
TYPE
1514 06EC CD
15
INT
ISH
TELL OPERAT I NG SYSTEM ABOUT TO 00 WA I T
1515 06EE 9C
PUSHF
SAVE CY FOR TEST
1516 06EF E8 02C8 R
CALL
XLAT_NEW
TRANSLATE STATE TO PRESENT ARCH.
1517 06F2 90
POPF
RESTORE CY FOR TEST
1518 06F3
73
05
JNC
M
WAIT
BYPASS LOOP
IF OP SYSTEM HANDLED WAIT
1519 06FS E8 072A R
CALL
TURN ON
CHECK AGAIN
IF MOTOR ON
1520 06F8 72 2F
JC
MOT_Ts_ON
IF NO WAIT MEANS IT IS ON
1521
1522 06FA
1523 06FA 82 OA
NOV
oL, 10
GET THE MOTOR WA IT PARAMETER
1524 06FC E8 06CC R
CALL
GET PARM
1525 06FF
SA C4
MOV
AL,AH
AL
=
MOTOR WA
I
T PARAMETER
1526 0101
32 E4
XOR
AH,AH
AX
=
MOTOR '''IT PARAMETER
1527 0103 3C 08
CM?
AL,8
SEE
IF AT LEAST A SECOND
IS SPECIFIED
1528 0105 13 02
JAE
G?'
IF YES,
CONTINUE
1529 0707 BO 08
MOV
AL,8
ONE SECOND WA I T FOR MOTOR START UP
1530
1531
;-----
AX CONTAINS NUMBER OF
lIB
SECONDS
(125000 MICROSECONDS)
TO WAIT
1532
1533 0109 50
GP2:
PUSH
AX
SAVE WAIT PARAMETER
1534 010A 8A F424
MOV
OX,62500
LOAD LARGEST
pass
I BLE MULTI PL I ER
1535 0700 F7 E2
NUL
OX
MULTIPLY BY HALF DF WHAT'S NECESSARY
1536 070F 88 CA
NOV
CX.OX
CX = HIGH WORD
1537 0111
8800
NOV
OX,AX
CX,OX =
!
12 •
1# OF MICROSECONDS)
1538 0713 F8
CLC
CLEAR CARRY FOR ROTATE
1539 0714 DT 02
RCL
OX,1
DOUBLE LOW WORD, CY CONTAINS OVERFLOW
1540 0716 01
01
RCL
CX,I
DOUBLE HI.
I NCLUO I NG LOW WORD OVERFLOW
1541
0718 84 86
NOV
AH.86H
LOAD 'A I T CODE
1542 071A CO
15
INT
15H
I PERFORM WAIT
1543 071C 58
POP
AX
;
RESTORE WA I T PARAMETER
1544071073 OA
JNC
MOT_I S_ON
;
ey MEANS WA I T COULD NOT BE DONE
1545
1546
FOLLOWING LOOPS REQUIRED WHEN RTe WAIT FUNCTiON
IS
ALREADY
IN USE
1547
1548 071F
J13:
WAIT FOR
lIB
SECOND PER
{ALI
1549 071F B9 205E
MOV
eX,8286
COUNT FOR
1/8 SECOND AT
15.0B5137 US
1550 0722 E8 0000 E
CALL
WAITF
GO TO FIXED WAIT ROUTINE
1551
0725 FE C8
DEC
AL
DECREMENT TIME VALUE
1552 0121 15 F6
JNZ
JI3
ARE WE DONE YET
1553
1554 0729
MOT IS ONI
1555 0729 C3
-
-
RET
1556 072A
MOTOR_ON
ENDP
1557
:
---
--
-------------
- - -
--
- - - - - - - - - -
-
- ---
----
----- - - - -- - - - - - - - - - ­
1558
: TURN_ON I
TURN MOTOR ON AND RETURN WAIT STATE.
1559
,
1560
I
ON ENTRY:
DI
=
DRIVE #
1561
I
1562
ON EXIT:
CY
=
0 MEANS WA I T REQU I RED
1563
,
CY
=
1 MEANS NO WA I T REQU I RED
1564
,
AX,BX,CX,DX DESTROYED
1565
;--­
5-110
DISKETTE

Advertisement

Table of Contents
loading

Table of Contents