IBM 5170 Technical Reference page 238

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

0461
32 FF
0463
8A OA
0465
F6 06 008F R 01
046A
74 09
046C
F6 87 0090 R 20
0471
74 02
0473
DO E5
0475
0475
3A AF 0094 R
0479
74 3E
047B
88 AF 0094 R
047F
B4 OF
0481
E8 03E2 R
0 1 184
8A E2
0486
E8 03E2 R
0489
8A E5
048B
E8 03E2 R
048E
E8 051A R
0491
F6 06 008F R 01
0496
74 09
0498
F6 87 0090 R 20
0490
74 02
049F
DO ED
04A1
04Al
9C
04A2
BB 0012
01lA5
E8 0382 R
04A8
51
04A9
04A9
B9 0320
04AC
OA E4
04AE
74 06
04BO
E2 FE
04B2
FE CC
04B4
EB F3
04B6
04B6
59
04B7
90
04B8
C3
04B9
04B9
F6 06 008F R 01
04BE
74 09
04CO
F6 87 0090 R 20
04C5
74 02
04C7
DO
ED
04C9
04C9
C3
04CA
04CA
04CA
51
04CB
FA
04CC
E6 OC
04CE
EB 00
0400
E6 OB
0402
8C CO
0404
Bl 04
0406
03 CO
0408
8A E8
04DA
24 FO
04DC
03 C3
04DE
73 02
04EO
FE C5
04E2
04E2
50
04E3
E6 04
04E5
EB 00
04E7
8A C4
04E9
E6 04
04EB
SA C5
04ED
EB 00
04EF
24 OF
04F1
E6 81
0/IF3
8A E6
04F5
2A CO
04F7
01
EB
04F9
50
04FA
BB 0006
04FD
E8 0382 R
0500
8A CC
0502
58
0503
03 EO
0505
4B
0506
50
0507
E6 05
0509
EB 00
0508
8A C4
0500
E6 05
050F
FB
0510
59
0511
5B
0512
03 C1
0514
59
0515
80 02
0517
E6 OA
0519
C3
051A
XOR
BH,BH
!ET UP ADDRESSING TO STATE INDICATOR
MOY
BL,DL
TEST
H F _CNTRL, DUAL
GO OETERM I NE TYPE OF CONTROLLER CARO
JZ
R7
OISKETTE ATTACH CARD
TEST
DSK_STATEf BX
1,
DOUBLE_STEP ; CHECK FOR DOUBLE STEP REQU I RED
JZ
R7
SINGLE STEP REQUIRED BYPASS DOUBLE
SHL
R7:
CH,l
DOUBLE NUMBER OF STEP TO TAKE
CMP
JE
CH.DSK_TRKfBXl
J32
SEEK IF ALREADY AT THE DESIRED TRACK
I F YES, DONT NEED TO SEEK
MOY
MOY
CALL
MOY
CALL
MOY
CALL
CALL
TEST
JZ
DSK_ TRKI BX
1,
CH
AH,OFH
NEC_OUTPUT
AH,DL
NEC_OUTPUT
AH,CH
NEC OUTPUT
CHK-STAT 2
HF_CNTRL-;-DUAL
RA
SAVE NEW CYLINDER AS PRESENT POSITION
SEEK COMMAND TO NEC
DRIVE NUMBER
GET CYL I NDER NUMBER
GET ENOl NG I NTERRUPT AND SENSE STATUS
GO DETERM I NE TYPE OF CONTROLLER CARD
DISKETTE ATTACH CARD
TEST
JZ
DSK_STATE! BX
1,
DOUBLE_STEP
RA
;
; CHECK FOR DOUBLE STEP REQU I RED
SINGLE STEP REQUIRED BYPASS DOUBLE
SHR
CH,l
; SET BACK TO LOG I CAL SECTOR
RA:
;----- WAIT FOR HEAD SETTLE
PUSHF
SAVE STATUS FLAGS
MOY
BX,18
~ET
HEAD SETTLE PARAMETER
CALL
GET_PARM
PUSH
CX
SAVE REG I STER
J29:
HEAD_SETTLE
MOY
CX,800
1
MS LOOP
OR
AH,AH
TEST FOR T I ME EXP I RED
JZ
J31
J30:
LOOP
J30
DELAY FOR 1 MS
DEC
AH
DECREMENT THE COUNT
JMP
J29
DO
IT SOME MORE
J31 :
POP
CX
RECOVER STATE
POPF
RET
RETURN TO CALLER
j32:
SEEK ERROR
TEST
HF_CNTRL, DUAL
GO DETERM I NE TYPE OF CONTROLLER CARD
JZ
RB
DISKETTE ATTACH CARD
TEST
DSK_STATE[ BX], DOUBLE_STEP ; CHECK FOR ::>OUBLE STEP REQU I RED
JZ
RB
SINGLE STEP REQU I
RE~
BYPASS DOUBLE
SHR
CH,1
; SET BACK TO LOG I CAL SECTOR
RB:
RET
; RETURN TO CALLER
SEEK
ENDP
;
-------------
---- --
-------
-- -----
------------------ ­
DMA SETUP
-
THIS ROUTINE SETS UP THE DMA FOR READ/WRITE/VERI FY
OPERATIONS.
INPUT
(AL) = MODE BYTE FOR THE DMA
(ES:BX) - ADDRESS TO READ/WRITE THE DATA
OUTPUT
(AX)
DESTROYED
6~;:SE;:~;-------;~~~----NE;~-------------------------
PUSH
CX
SAVE THE REG I STER
CLI
DISABLE INTERRUPTS DURING DMA SET-UP
OUT
DMA+12,AL
SET THE FIRST/LAST F/F
JMP
$+2
WAIT FOR 10
OUT
DMA+ll,AL
OUTPUT THE MODE BYTE
MOV
AX, ES
GET THE ES VALUE
MOV
CL,4
SH I FT COUNT
ROL
AX, CL
ROTATE LEFT
MOV
CH,AL
GET HIGHEST NYBBLE OF ES TO CH
AND
AL,OFOH
ZERO THE LOW NYBBLE FROM SEGMENT
ADD
AX,
BX
TEST FOR CARRY FROM ADD I T I ON
JNC
J33
INC
CH
CARRY MEANS HIGH 4 BITS MUST BE INC
J33:
PUSH
AX
SAVE START ADDRESS
OUT
DMA+4,AL
OUTPUT LOW ADDRESS
JMP
$+2
WAIT FOR 10
MOY
AL,AH
OUT
DMA+4,AL
OUTPUT HIGH ADDRESS
MOY
AL,CH
GET HIGH 4 BITS
JMP
$+2
I/O WAIT STATE
AND
AL,OFH
OUT
081H,AL
OUTPUT THE HIGH 4 BITS TO PAGE REG I STER
~
--'
;------ DETERMINE COUNT
MOY
AH,DH
SUB
AL,AL
SHR
AX,1
PUSH
AX
MOY
BX,6
CALL
GET PARM
MOY
CL,AH
POP
AX
SHL
AX,CL
DEC
AX
PUSH
AX
OUT
DMA+5,AL
JMP
$+2
MOY
AL,AH
OUT
DMA+5,AL
ST I
POP
CX
POP
AX
ADD
AX,CX
POP
CX
MOY
AL,2
OUT
DMA+10,AL
RET
NUMBER OF SECTORS
TIMES 256 INTO AX
SECTORS
*
128 I NTO
AX
GET THE BYTES/SECTOR PARM
USE AS SHI FT COUNT (0=128,
1=256 ETC)
; MULTI PLY BY CORRECT AMOUNT
;-1 FOR DMA VALUE
;
SAVE COUNT VALUE
;
LOW BYTE OF COUNT
; WAIT FOR 10
HIGH BYTE OF COUNT
RE-ENABLE INTERRUPTS
RECOVER COUNT VALUE
RECOVER ADDRESS VALUE
ADD, TEST FOR 64K OVERFLOW
RECOVER REG I STER
MODE FOR 8237
INITIALIZE THE DISKETTE CHANNEL
RETURN TO CALLER, CfL SET BY ABOVE I f ERROR
DMA_SETUP
ENDP
;--------------------------------------------------­
CHK_STAT_2
THIS ROUTINE HANDLES THE INTERRUPT RECEIVED AFTER
A RECALIBRATE, SEEK, OR RESET TO THE ADAPTER.
THE INTERRUPT IS WAITED FOR, THE INTERRUPT STATUS SENSED,
AND THE RESULT RETURNED TO THE CALLER.
5-96 Diskette

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents