IBM 5170 Technical Reference page 239

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

INPUT
NONE
OUTPUT
CY
=
0 SUCCESS
CY
==
1 FAILURE -- ERROR IS IN DISKETTE_STATUS
,~
~
~
,
(AX) DESTROYED
OS1A
b;;;:STA;::;------p;OC----NEA;------------------------­
OS1A
E8 OS3B R
CALL
WAIT INT
WAIT FOR THE INTERRUPT
OSlO
OSH
72
84
14
08
JC
MOV
J34 -
AH,08H
I F ERROR, RETURN IT
SENSE I NTERRUPT STATUS COMMAND
OS21
E8 03E2 R
CALL
NEC_OUTPUT
OS24
E8 OS80 R
CALL
RESULTS
READ I N THE RESULTS
0527
72 OA
JC
J34
CHK2 RETURN
0529
AO 0042 R
MOV
AL, NEC STATUS
GET THE FIRST STATUS BYTE
052C
24 60
AND
AL,060H
ISOLATE THE BITS
052E
0530
0532
3C
74
F8
60
02
CMP
JZ
CLC
AL,060H
J35
TEST FOR CORRECT VALUE
I F ERROR, GO MARK IT
GOOD RETURN
0533
J34:
0533
C3
RET
RETURN TO CALLER
0534
0534
80 OE 0041 R 40
J35:
OR
DISKETTE_STATUS, BAD_SEEK' CHK2_ERROR
0539
F9
STC
ERROR RETURN CODE
053A
C3
RET
053B
CHK_STAT_2
ENDP
WAIT_INT
THIS ROUTINE WAITS FOR AN INTERRUPT TO OCCUR
A TIME OUT ROUTINE TAKES PLACE DURING THE WAIT. SO
THAT AN ERROR MAY BE RETURNED I F THE DRIVE IS NOT READY
INPUT
NONE
OUTPUT
CY ""
a
SUCCESS
CY == 1 FAILURE -- DISKETTE STATUS IS SET ACCORDINGLY
(AX) DESTROYED
­
~A~;:-;N;:--------p~OC----NE;~------------------
053B
053B
F.
-
STI
TURN ON INTERRUPTS, JUST IN CASE
053C
50
PUSH
AX
SAVE REG I STERS
0530
53
PUSH
BX
053E
51
~M
~
053F
F8
CLC
CLEAR TIMEOUT I NO I CATOR
0540
B8 9001
MOV
AX, 09001 H
LOAD WA I T CODE AND TYPE
0543
CD 15
INT
15H
PERFORM OTHER FUNCTION
0545
72 11
JC
J 36A
BYPASS TIM I NG LOOP 1FT I MEOUT OCCURRED
0547
B3 04
MOY
BL,4
CLEAR THE COUNTERS
0549
33 C9
XOR
CX,CX
fOR 2 SECOND WA
I
T
054B
J36:
054B
F6 06 003E R 80
TEST
SEEK_STATUS, I NT_FLAG
TEST FOR INTERRUPT OCCURRING
0550
75 OC
JNZ
J37
0552
E2 F7
LOOP
J36
COUNT DOWN WHILE WAITING
OSS4
FE CB
DEC
8L
SECOND LEVEL COUNTER
0556
75 F3
JNZ
J36
0558
80 OE 0041 R 80
J36A:
OR
DISKETTE_STATUS, TIME_OUT; NOTHING HAPPENED
0550
F9
STC
; ERROR RETURN
OS5E
J37:
055E
9C
PUSHF
; SAVE CURRENT CARRY
055F
80 26 003E R 7F
AND
SEEK_STATUS,NOT INT_fLAG ;
TURN OFF INTERRUPT FLAG
0564
90
POPF
RECOVER CARRY
0565
59
POP
CX
:ECOVER REG I STERS
0566
5.
POP
8X
0567
58
POP
AX
.
0568
C3
RET
GOOD RETURN CODE COMES fROM TEST I NST
0569
WAIT
-
INT
ENDP
;
-------------------------------
-- -
-----------­
DISK INT
;
INPU~
THIS ROUTINE HANDLES THE DISKETTE INTERRUPT
;
NONE
; OUTPUT
;
THE I NTERRUPT FLAG I S SET I S SEEK_STATUS
;
----------------------------------------------­
0569
DISK INT 1
PROC
FAR
;»>
ENTRY POINT FOR ORG OEF57H
0569
FB
-
STI
RE ENABLE INTERRUPTS
056A
1 E
PUSH
OS
!AVE REG I STERS
OS6B
50
PUSH
AX
056C
E8 0000 E
CALL
005
SETUP DATA ADDRESSING
056F
80 OE 003E R 80
OR
SEEK_STATUS, I NT_FLAG
TURN ON I NTERRUPT OCCURRED
0574
BO 20
MOY
AL,20H
END OF I NTERRUPT MARKER
0576
E6 20
OUT
20H,AL
INTERRUPT CONTROL PORT
0578
B8 9101
MOY
AX,09101H
INTERRUPT POST CODE & TYPE
057B
CD 15
INT
15M
GO PERfORM OTHER TASK
0570
58
POP
AX
RECOVER REG
057E
1 F
POP
OS
.
057F
CF
IRET
RETURN FROM INTERRUPT
0580
DISK_INT_1
ENDP
;
----------------------------------
-------
.-- -­
RESULTS
rHIS ROUTINE WILL READ ANYTHING THAT THE NEC CONTROLLER
HAS TO SAY FOLLOWING AN INTERRUPT.
INPUT
NONE
OUTPUT
CY "" 0
SUCCESSFUL TRANSFER
CY"" 1
FAILURE -- TIME OUT IN WAITING fOR STATUS
NEC STATUS AREA HAS STATUS BYTE LOADED
I
NTO IT
;
{AHl DESTROYED
0580
kESULTS-PROC----NE;R--------------------------- ­
0580
FC
CLO
0581
BF 0042 R
MOY
DI,OFFSET NEC_STATUS
PO I NTER TO DATA AREA
0584
51
PUSH
CX
SAVE COUNTER
0585
52
PUSH
OX
0586
53
PUSH
8X
0587
B3 07
MOY
BL,7
MAX STATUS BYTES
; ------ WA I T FOR REQUEST fOR MASTER
0589
87 02
R10:
MOV
BH,2
HIGH ORDER COUNTER
058B
J38:
INPUT_LOOP
OS86
33 C9
XOR
CX,CX
COUNTER
0580
SA 03f4
MOY
DX,03f4H
STATUS PORT
0590
J39:
WA I T FOR MASTER
0590
EC
IN
AL,DX
GET STATUS
0591
A8 80
TEST
AL,080H
MASTER READY
0593
75 10
JNZ
J40A
TEST D I R
0595
E2 F9
LOOP
J39
WA I T=MASTER
0597
FE CF
DEC
8M
DECREMENT HIGH ORDER COUNTER
Diskette 5-97

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents