01
SK
VERF
- 0 I
SKETTE
VER I
FY
•
01
SK
FORMAT
- 0 I
SKETTE
FORMAT.
01
SK
READ
- 0 I
SKETTE
READ.
5-27
ZF:
1
ATTEMPT
RATE
I S SAME AS
LAST
RATE
YES,
SK I P SPEC I
FY
COMMAND
SEND SPEC I
FY
COMMAND TO NEC
SEND OAT
A
RATE
TO CONTROLLER
WILL
WR
I
TE
TO
THE
0 I
SKETTE
SET
UP
THE
DMA
RETURN
WITH
ERROR
ESTABLI
SH
THE
FORMAT COMMAND
INITIALIZE
THE
NEC
LOAD ERROR ADDRESS
PUSH NEC OUT ERROR RETURN
BYTES/SECTOR
VALUE
TO NEC
CHECK
MED
I A CHANGE AND
RESET
I F
SO
MED I A
CHANGED,
SK
I P
PUT
BACK FOR
SETUP
END
VARIOUS
CLEANUPS
-
GET SAVED
AL
TO
BL
STORE
STATUS
IN
AL
;
FILLER
BYTE
TO NEC
; GAP
LENGTH
VALUE
TO NEC
;
SECTORS/TRACK
VALUE
TO NEC
1-5
01-10-86
DISKETTE
(01/10/86)
AL,04AH
DMA
SETUP
FM
DON
AH-;04DH
NEC
INIT
FM
DON
AX-;OFFSET
FM
DON
AX
-
DL,3
GET PARM
NEC-OUTPUT
DL,4
GET PARM
NEC-OUTPUT
DL,1
GET PARM
NEC-OUTPUT
DL,a
CHK
LASTRATE
FM
WR
SEND SPEC
SEND:RATE
('DSKETTE_STATUS,
CY
REFLECT
STATUS
OF
OPERATION
01
:
DRIVE
#
SI-HI
: HEAD #
S I
-LOW
: # OF SECTORS
ES :
BUFFER
SEGMENT
[BP]
: SECTOR #
[BP+
1]
: TRACK #
[BP+2]
:
BUFFER
OFFSET
('DISK
POINTER
POINTS
TO THE PARAMETER
TABLE
OF
-
THIS
DRIVE
('DSKETTE_STATUS,
CY
REFLECT
STATUS
OF
OPERATION
01
:
DRIVE
#
S I
-H
I : HEAD #
S
I-LOW
: # OF SECTORS
ES :
BUFFER
SEGMENT
[BP]
: SECTOR #
[BP+
1]
: TRACK #
[BP+2i
:
BUFFER
OFFSET
('DSKETTE_STATUS,
CY
REFLECT
STATUScDF
OPERATION
ENDP
01
:
DRIVE
#
S I
-H
I : HEAD #
S
I-LOW
: # OF SECTORS
ES
:
BUFFER
SEGMENT
[BP]
: SECTOR #
[BP+
1]
: TRACK #
[BP+2]
:
BUFFER
OFFSET
ENDP
('DSKETTE_STATUS,
CY
REFLECT
STATUS
OF OPERAT I
ON
MOV
CALL
.JC
MOV
CALL
.JC
MOV
PUSH
MOV
CALL
CALL
MOV
CALL
CALL
MOV
CALL
CALL
MOV
ON
EXIT:
ON
ENTRY:
ON
EXIT:
ON
ENTRY:
ON
EX
IT:
ON
ENTRY:
·----------------------------------------------------------------
DISK
FORMAT PROC NEAR
-
CALL
XL
AT
NEW
TRANSLATE
STATE
TO
PRESENT
ARCH.
CALL
FMT
TN
I T
ESTABLI
SH
STATE
IF
UNESTABL
I SHED
OR
('MOTOR
STATUS,
10000000B
I
NO
I
CATE
WR
I
TE
OPERAT I
ON
TEST
('HF
CNTRL,DUAL
TEST
CONTROLLER
1.0.
.JZ
NO
CHG
CHECK
CALL
MED CHANGE
.JC
FM_DON
NO
CHG
CHECK:
- -
CALL
.JZ
CALL
CALL
·---------------------------------------------------------
---
----
DISK
VERF PROC NEAR
- AND
('MOTOR
STATUS,01111111B
;
INDICATE
A READ
OPERATION
MOV
AX,
OE642H
;
AX
: NEC COMMAND,
DMA
COMMAND
CALL
RD
_
WR
_
VF
;
COMMON
READ /
WR
I
TE
/ VER I
FY
RET
01
SK_
VERF ENDP
·----------------- ------------------------------------------
-----
DISK
WR
I
TE
PROC NEAR
-
MOV
AX,
OC54AH
; AX : NEC COMMAND,
DMA
COMMAND
OR
('MOTOR
STATUS,
10000000B
; I
NO
I
CATE
WR
I
TE
OPERAT I
ON
CALL
RD_WR_VF ;
COMMON
READ/WRITE/VERIFY
RET
01
SK_WR I
TE
ENDP
;
ON
EXIT:
·---------- ---- --- -----------------------------------------------
01
SK
WR
ITE
- 0 I
SKETTE
WR
I
TE
•
ON
ENTRY:
01
:
DRIVE
#
S I
-H
I : HEAD #
S
I-LOW
: # OF SECTORS
ES
:
BUFFER
SEGMENT
[BP]
: SECTOR #
;
{BP+l]
: TRACK #
[BP+2]
:
BUFFER
OFFSET
;
·-
~~ _:~:
~:
------
~~:~:~~:=:~
~~~:
~
_:~
-
~:~:::~
-
:~~
~~:-
~~
-
~~:~~
~
:~~--
DISK
READ PROC NEAR
- AND
('MOTOR
STATUS,01111111B
;
INDICATE
A READ
OPERATION
MOV
AX,
OE646H
; AX : NEC COMMAND, DMA COMMAND
CALL
RD_WR_VF ;
COMMON
READ/WRITE/VERIFY
RET
01
SK_READ
·----------
--
-----
--
--------------
---
---------------
-----
--------
DISK
STATUS
PROC NEAR
-
MOV
('DSKETTE
STATUS,AH
CALL
SETUP END
MOV
BX,
S
1-
MOV
AL,AH
RET
DISK_STATUS
443
444
445
446
OOEA
447
OOEA
88
26
0041
R
448
OOEE
E8
0832
R
449
OOF
1
8B
DE
450
00F3
8A
C4
451
00F5
C3
452
00F6
453
454
455
456
457
458
459
460
461
462
463
464
465
466
00F6
467
00F6
80
26
003F
R
7F
468
OOFB
B8
E646
469
OOFE
E8
04B3
R
470
0101
C3
471
0102
472
473
474
475
476
471
478
479
480
481
482
483
484
485
0102
486
0102
B8
C54A
487
0105
80
OE
003F
R
80
488
01
OA
E8
04B3
R
489
0100
C3
490
01
OE
491
492
493
494
495
496
497
498
499
500
501
502
503
504
010E
505
01
OE
80
26
003F
R
7F
506
01
13
B8
E642
507
0116
E8
04B3
R
508
0119
C3
509
011A
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
011
A
526
01 1A
E8
0404
R
527
01
10
E8
05AO
R
528
0120
80
OE
003F
R
80
529
0125
F6
06
008F
R 01
530
01
2A
74
05
531
01
2C
E8
05F5
R
532
012F
72
41
533
0131
534
0131
E8
0658
R
535
0134
74
06
536
0136
E8
0301
R
537
0139
E8
0637
R
538
013C
539
01
3C
BO
4A
540
01
3E
E8
0668
R
541
0141
72
2F
542
0143
B4
40
543
0145
E8
06CB
R
544
0148
72
28
545
0 1
4A
B8
0 1
72
R
546
0140
50
547
014E
B2
03
548
0150
E8
08FE
R
549
0153
E8
09FO
R
550
0156
B2
04
551
0158
E8
08FE
R
552
015B
E8
09FO
R
553
015E
B2
07
554
0160
E8
08FE
R
555
0163
E8
09FO
R
556
0166
B2
08
IBM
Personal
Computer
MACRO
Assembler
Version
2.00
DSKETTE
- - 01 /
10/86
0 I
SKETTE
ADAPTER
BIOS