IBM
Personal
Computer
MACRO
Assembler
Version
2.00
OSKETTE
- - 01
/1
0/86
0 I
SKETTE
ADAPTER B I
OS
PAGE
SEND OUT THE PARAMETERS TO THE CONTROLLER
RWV
COM
- TH I S ROUT I NE SENDS PARAMETERS
TO
THE NEC SPEC I F I C
TO THE READ /
WR
I
TE
/ VER I
FY
OPERAT
IONS.
CH = TRACK #
MOVE TO CORRECT TRACK
RECOVER COMMAND
ERROR
ON
SEEK
LOAD ERROR ADDRESS
PUSH
NEC_OUT
ERROR RETURN
CARRY MEANS
HIGH
4
BITS
MUST
BE
INC
GET
HIGHEST
NIBBLE
OF ES TO
CH
ZERO
THE
LOW
NIBBLE
FROM SEGMENT
TEST
FOR CARRY FROM ADD I
TI
ON
GET
THE
ES
VALUE
ROTATE
LEFT
oI
SABLE
I
NTERRUPTS
OUR
I
NG
DMA
SET-UP
SET
THE
FIRST/LAST
F/F
WAIT
FOR
I/O
OUTPUT
THE
MODE
BYTE
DMA
VER I
FY
COMMAND
NO
START
ADDRESS
OUTPUT
THE
OPERAT I
ON
COMMAND
AH
= HEAD #
BL
=
DR
IVE
#
MOVE I T
TO
BIT
2
I SOL
ATE
THAT
BIT
OR
I N THE
DR
I VE NUMBER
;
FALL
THRU
CY
SET
I F ERROR
;
THROW
AWAY
ERROR RETURN
;
CY
SET
BY ABOVE I F ERROR
SAVE
START
ADDRESS
OUTPUT
LOW
ADDRESS
WAIT
FOR
I/O
OUTPUT
HIGH
ADDRESS
GET
HIGH
4
BITS
I/O
WAIT
STATE
OUTPUT
HIGH
4
BITS
TO PAGE REG I STER
AL
= #
OF
SECTORS
AH
= # OF SECTORS
AL
=
0,
AX = # OF SECTORS •
256
AX
= # SECTORS •
128
SAVE # OF SECTORS •
128
~ET
BYTES
/ SECTOR PARAMETER
SHIFT
COUNT
(0=128,1=256
ETC)
AX
= # OF SECTORS •
128
;
SHIFT
BY PARAMETER
VALUE
;
-I
FOR
DMA
VALUE
SA
VE COUNT
VALUE
LOW
BYTE
OF COUNT
WAIT
FOR
I/O
HIGH
BYTE
OF COUNT
RE-ENABLE
INTERRUPTS
RECOVER COUNT
VALUE
RECOVER ADDRESS
VALUE
ADD,
TEST
FOR
604K
OVERFLOW
MODE
FOR
8237
I
NIT
I
AL
I
ZE
THE 0 I
SKETTE
CHANNEL
CH,
[BP+l]
SEEK
AX
ER
I
BX-;-OFFSET ER 1
BX -
t'DSKETTE_STATUS,
CY
REFLECT
STATUS
OF
OPERATION
NEC OUTPUT
AX,SI
BX,DI
AH,1
AH,1
AH,00000100B
AH,BL
NEC OUTPUT
BX -
AH
: NEC
COMMAND
TO
BE
PERFORMED
ENDP
CX
AX
AX,CX
AL,2
DMA+ 1
O,AL
AX,SI
AL,AH
AL,AL
AX,
I
AX
DL,3
GET PARM
CL,AH
AX
AX,CL
AX
AX
DMA+5,AL
$+2
AL,AH
DMA+5,AL
AX
DMA+4,AL
$+2
AL,AH
DMA+4,AL
AL,CH
$+2
AL,00001111B
08IH,AL
t'DSKETTE_STATUS,
CY
REFLECT
STATUS
OF
OPERATION
AX,ES
AX,1
AX,1
AX,1
AX,1
CH,AL
AL,llll0000B
AX,
[BP+2]
..J33
CH
AL
=
DMA
COMMAND
DMA+
12,AL
$+2
DMA+
11
,AL
AL,42H
NOT VERF
AX,AX
SHORT ..J33
CALL
MOV
MOV
SAL
SAL
AND
OR
CALL
POP
MOV
CALL
POP
..JC
MOV
PUSH
..JNC
NO
BAD
; CHECK FOR ERROR
MOV
t'DSKETTE_STATUS
,DMA_BOUNDARY ;
SET
ERROR
MOV
XCHG
SUB
SHR
PUSH
MOV
CALL
MOV
POP
SHL
DEC
PUSH
OUT
..JMP
MOV
OUT
STI
POP
POP
ADD
MOV
OUT
DETERM I NE COUNT
PUSH
OUT
..JMP
MOV
OUT
MOV
..JMP
AND
OUT
ON
EX I
T:
ON
ENTRY:
ON
ENTRY:
ON
EXIT:
RET
NEC_INIT
ENDP
..J33:
NEC
INIT
- TH I S ROUT I NE SEEKS TO
THE
REQUESTED TRACK AND
I N I
TI
ALI
ZES
THE NEC FOR THE READ /
WR
I
TE
/ VER I
FY
/ FORMAT
OPERATION.
.
----------------------------------------------------------------
NEC I
NIT
PROC NEAR
- PUSH
AX
SA
VE NEC COMMAND
CALL
MOTOR_ON TURN MOTOR
ON
FOR SPEC I F I C
DR
I VE
DO
THE SEEK OPERAT I
ON
DMA
SETUP
- TH I S ROUT I NE
SETS
UP THE
DMA
FOR READ /
WR
I
TE
/ VER I
FY
OPERAT
IONS.
.---
--
- - -----
--
- - - - - - -- - - - - - -
--
- - - - - - - - - - -- - - -- -- --
---
- - - - - -
--
-
--
DMA
SETUP
PROC NEAR
-
CLI
OUT
..JMP
OUT
CMP
..JNE
XOR
..JMP
NOT
VERF:
-
MOV
ROL
ROL
ROL
ROL
MOV
AND
ADD
..JNC
INC
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
0668
1441
0668
FA
1442
0669
E6
OC
1443
066B
EB
00
1444
0660
E6
OB
1445
066F
3C
42
1446
0671
75
04
1447
0673
33
CO
1448
0675
EB
15
1449
0677
1450
0677
8C
CO
1451
0679
01
CO
1452
067B
01
CO
1453
0670
0 I
CO
1454
067F
01
CO
1455
0681
8A
E8
1456
0683
24
FO
1457
0685
03
46
02
1458
0688
73
02
1459
068A
FE
C5
1460
068C
1461
068C
50
1462
0680
E6
04
1463
068F
EB
00
1464
0691
8A
C4
1465
0693
E6
04
1466
0695
8A
C5
1467
0697
EB
00
1468
0699
24
OF
1469
069B
E6
8 I
1470
1471
1472
1473
0690
8B
C6
1474
069F
86
C4
1475
06Al
2A
CO
1476
06A3
01
E8
1477
06A5
50
1478
06A6
B2
03
1479
06A8
E8
08FE
R
1480
06AB
8A
CC
1481
06AD
58
1482
06AE
03
EO
1483
06BO
48
1484
06Bl
50
1485
06B2
E6
05
1486
06B4
EB
00
1487
06B6
8A
C4
1488
06B8
E6
05
1489
06BA
FB
1490
06BB
59
1491
06BC
58
1492
06BD
03
CI
1493
06BF
BO
02
1494
06Cl
E6
OA
1495
1496
06C3
73
05
1497
06C5
C6
06
0041
R
09
1498
1499
06CA
1500
06CA
C3
150
I
06CB
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
06CB
1513
06CB
50
1514
06CC
E8
0913
R
1515
1516
1517
1518
06CF
8A
6E
01
1519
0602
E8
OA
I 4 R
1520
0605
58
1521
0606
72
18
1522
0608
BB
06FO
R
1523
06DB
53
1524
1525
1526
1527
06DC
E8
09FO
R
1528
06DF
8B
C6
1529
06E
1
8B
OF
1530
06E3
DO
E4
1531
06E5
DO
E4
1532
06E7
80
E4
04
1533
06EA
OA
E3
1534
06EC
E8
09FO
R
1535
06EF
5B
1536
06FO
1537
06FO
C3
1538
06F
1
1539
1540
1541
1542
1543
5-36
DISKETTE
(01/10/86)