LOC
OBJ
LINE
SOLIRCE
EC44
75E8
2407
JHZ
K.5
I
DO
ANOTHER
CYCLE
EC46
58
2408
pop
AX
I
RECOVER
CONTROL
EC47 E661
2409
CXJT
KB_CTl,A.L
I
OUTPUT
THE
CONTROL
EC49 E912FE
2410
JHP
K27
2411 ;
---------------.------------
------------
2412
ROS
CHECKSUM
SUBROUTINE
2413
i
----------------------------------------
EC4C
2414
; NEXT.RDS.MODULE
EC4C
B90020
2415
HOV
CX.8192
I
NUt1BER
OF
BYTES
TO
ADO
EC4F
2416
RDS.CHECKSUM.CNT: ; ENTRY
FOR
OPTIONAL RDS
TEST
EC4F
32CO
2417
XOR
Al,U
EC51
2418
e26:
ECSI
0207
2419
ADD
Al,OS:
lex]
EC53
43
2420
INC
BX
I POINT
TO
NEXT
BYTE
EC54 EZFB 2421
LOOP
C2'
I
ADD
All
BYTES
IN
RDS
MODULE
EC56
OACO
2422
OR
AL,Al
J
SUM
=
O?
ECS8 C3
2423
RET
2424
RDS.CHECKSUM
ENDP
2425
2426
J--
INT
13
--------------------------------------------------------------
2427
J DISKETTE
110
2428
J
THIS
INTERFACE PROVIDES
ACCESS
TO
THE
5
1/4"
DISKETTE DRIVES
2429
J INPUT
2430
(AH)=O
RESET DISKETTE
SYSTEM
2431
HARD
RESET
TO
NEC,
PREPARE
COtl1Atl),
RECAl
REQUIRED
2432
ON
ALL
DRIVES
2433
UH
)=1
READ
THE
STATUS
OF
THE
SYSTEH
INTO
IAll
2434
DISKETTE_STATUS
FROH
LAST OPERATION
IS
USED
2435
2436
J REGISTERS
FOR
READIWRITEIVERIFYlFORMAT
2437
(DU
-
D~IVE
t-n.JHBE~
(0-3
ALLOWED. VA-WE CHECKED)
2438
CDH) -
HEAD
NUMBER
(0-1
ALLOWED.
NOT
VAWE
CHECKED)
2439
(CH)
-
TRACK
NUHBER
(0-39.
NOT
VALUE CHECKED)
2440
(CL)
-
SECTO~
NUl'IBER
11-8.
NOT
VALUE CHECKED.
2441
NOT
USED
FOR
FORMAlI
2442
(AL)
-
Nl.JMBE~
OF
SECTOR'S
(
MAX
=
8.
NOT
VALUE
CHECKED.
HOT
USED
2443
FOR
FORMAT)
2444
(ES:BXI
-
ADDRESS
Of
BUffER
I
HOT
REQUI~ED
FOR
VE~IFy)
2445
2446
IAHJ=2
READ
THE
DESIRED
SECTORS
INTO
MEMORY
2447
(AH
)=3
WRITE
THE
DESIRED
SECTO~S
F~OM
MEHORY
2448
IAHJ=4
VERIFY
THE
DESIRED
SECTORS
2449
I
AH
)=5
fORHAT
THE
DESIRED
TRACK
2450
FOR
THE
fORHAT OPERATION.
THE
BUFFER
POINTER
IES.BX)
2451
tlUST POINT
TO
THE
COLLECTION
OF
DESIRED
ADDRESS
FIELDS
2452
FOR
THE
TRACK.
EACH
FIHD
IS
COMPOSED
Of
4 BYTES.
2453
(C.H.R.N).
WHERE
C =
TRACK
NUMBER.
H=HEAD
HUf1BER.
2454
R =
SECTOR
NUMBER.
N=
NUHBER
OF
BYTES
PER
SECTOR
2455
(00=128.
01=256. 02=512.
03=1024J.
THERE
tllST
BE
ONE
2456
ENTRY
FOR
EVERY
SECTOR
ON
THE
TRACK.
THIS
INfORMATION
2457
IS
USED
TO
FIND
THE
REQUESTED
SECTOR
DlRING
READIWRITE
2458
ACCESS.
2459
2460
; DATA VARIABLE
--
DISK_POINTER
2461 DOlSLE
1ol0RD
POINTER
TO
THE
CURRENT
SET
Of
DISKETTE
PARAHETERS
2462
J
OUTPUT
2463
AH
= STATUS
OF
OPERATION
2464
STATUS
BITS
ARE
DEFINED
IN
THE
EQUATES
fOR
2465
DISKETTE_STATUS VARIABLE
1N
THE
DATA
SEGMENT
OF
TH1S
2466 MDOULE.
2467
CY
= 0 SUCCESSfUL OPERATION (AH=O
ON
RETURN)
2468
CY
= 1
FAILED
OPERATION
IAH
HAS
ERROR
REASONJ
2469
FOR
READ/WRITEIVERIFY
2470
DS.BX.DX.CH,CL
PRESERVED
2471
Al
=
NUMBER
OF
SECTORS
ACTUAllY
READ
2472
*****
AL
MAY
NOT
BE
CORRECT
IF
TIME
OUT
ERROR
OCCURS
2473
NOTE:
IF
AN
ERROR
IS
REPORTED
BY
THE
DISKETTE
CODE.
THE
2474
APPROPRIATE ACTION
IS
TO
RESET
THE
DISKETTE.
THEN
~ETRY
2475
THE
OPERATION.
ON
READ
ACCESSES. NO
MOTOR
START
DELAY
2476
IS
TAKEN.
so
THAT
THREE
RETRIES
ARE
REQUIRED
ON
REAOS
2477
TO
ENSURE
THAT
THE
PROBLEt1
IS
NOT
DUE
TO
HOTOR
2478
START-UP.
2479
J------------------------------------------------------------------------
2480
ASSUME
CS:COOE,OS:DATA.ES:DATA
EC59 2481
ORG
OEC59H
EC59
2482
DISKETTE_IO
PROC
fAR
EC59
FB
2483
STI
INTERRUPTS
BACK
ON
5-64
System
BIOS