Сообщение от
Hunta
Пока так и не понятно, как можно в драйвере различать разные варианты винчестеров, чтобы не переделывать драйвер.
В родном исходнике DW.MAC есть нужный код (например):
Код:
DEVCHR: ;RDxx device characteristics table
;*****************************************************************************
; THIS TABLE MUST BE GROUPED BY THE NUMBER OF HEAD. THE ENTRIES WITHIN
; THE GROUP MUST BE SORTED BY THE NUMBER OF CYLINDERS IN INCREASING ORDER.
; THE TABLE IS TERMINATED WITH A HEAD COUNT OF 65535.
;*****************************************************************************
; C H CYL REAL USER HIGH LOW USER DEVICE
; O E SIZE SIZE SIZE SIZE SIZE
; D A
; E D
; S
$TYPE$ TYP50 4. 153. 9792. 9727. 0. 9792. 9727. ;RD50#
$TYPE$ TYP51 4. 306. 19584. 19519. 0. 19584. 19519. ;RD51
$TYPE$ TYP31 4. 615. 39360. 39295. 0. 39360. 39295. ;RD31*$
$TYPE$ TYP52C 5. 697. 55760. 55679. 0. 55760. 55679. ;RD52* CDC
$TYPE$ TYP32 6. 820. 78720. 78623. 13088. 65535. 65535. ;RD32
$TYPE$ TYP52A 7. 645. 72240. 72127. 6705. 65535. 65535. ;RD52* ATASI
$TYPE$ TYP52Q 8. 512. 65536. 65407. 1. 65535. 65407. ;RD52*$ QUANTUM
$TYPE$ TYP53 8. 1024. 131072. 130943. 65535. 65535. 65535. ;RD53*$
$TYPE$ 0 -1 0. 0. 0. 0. 0. 0. ;TERMINATOR
Код:
;-----------------------------------------------------------------------------
; FIND DEVICE GEOMETRY
;
; THIS ROUTINE WILL DETERMINE THE TYPE OF DEVICE WHEN TWO OR MORE DEVICES
; HAVE THE SAME NUMBER OF HEADS. THIS IS DONE BY CALCULATING THE ADDRESS
; WHICH WOULD WRAP TO THE HOME BLOCK. THE FIRST 3 WORDS OF THE HOME BLOCK
; AND THE WRAP BLOCK ARE COMPARED. IF DIFFERENT, A WRAP DID NOT OCCUR AND
; THE POINTER TO THE DEVICE GEOMETRY/CHARACTERISTICS TABLE IN BUMPED TO THE
; NEXT DEVICE. IF IDENTICAL, THE DATA IN THE HOME BLOCK IS MODIFIED AND
; WRITTEN TO THE DEVICE. THE FIRST WRAP BLOCK IS READ AGAIN AND THE FIRST
; 3 WORDS OF THE HOME AND WRAP BLOCKS ARE COMPARED AND IF DIFFERENT, THE
; POINTER TO THE DEVICE GEOMETRY/CHARACTERISTICS TABLE IS BUMPED TO THE
; NEXT DEVICE. OTHERWISE, THE POINTER REMAINS UNCHANGED.
;
; THIS OPERATION CONTINUES UNTIL THE LARGEST DISK WITH A GIVEN NUMBER OF
; HEADS IS FOUND.
;
; REGISTERS CONTAIN THE FOLLOWING INFORMATION ON ENTRY AND EXIT
;
; R0 ADDRESS OF DWID REGISTER
; R1 POINTER TO DEVICE GEOMETRY/CHARACTERISTICS TABLE
; - UPDATED ON EXIT
; R2 POINTER TO RMON
; R3 DEVICE TYPE
; - UPDATED ON EXIT
; R4 ADDRESS OF READ ROUTINE
; R5 ADDRESS OF START OF HANDLER
;
;-----------------------------------------------------------------------------
FNGEOM: TST DWTYPS ; Is device type known?
BNE 95$ ; YES - Don't size device
CMP 2(R1),TSIZE+2(R1) ; Does next entry have the same
; number of heads?
BNE 95$ ; NO - Done