Proton #24
10 марта 1998

Hard Disk Drive - Новые подпрограммы Теневого Сервис Монитора для работы с контроллером периферии SMUC.

<b>Hard Disk Drive</b> - Новые подпрограммы Теневого Сервис Монитора для работы с контроллером периферии SMUC.
╔══════════════════════════════════════════════════════════════╗
║        Hard Disk Drive.        ║
╙──────────────────────────────────────────────────────────────╜
(C) Valerij Kozhevnikov (500:95/462.18)

Hello All!

Дабы не возникало баталий по поводу нужности #3D13 и вонючести/-
рульности турбодрайверов, кидаю сие:

======================= Import begin ===========================

     Новые  подпрограммы  Теневого  Сервис Монитора для работы с
контроллером периферии SMUC.
     Ряд  новых вызовов для п/п #81 RST #08 (DOS). (вызов встро-
енного в монитор дискового интерпретатора), код подфункции зада-
ется в регистре C.
     Изменена  подфункция  9  setwrk дисковой системы. Начиная с
версии 3.0a (код 68 от 29.04.95) в регистрах DE и BC возвращают-
ся код версии и дата компиляции монитора: D- код версии; C, B, E
- соответственно число, месяц, год.

C = #22 ($hddid) - идентификация жесткого диска.
in:  512  байтный  буфер, указатель на который задается в setwrk
     (подфункция  9). буфер должен находится в диапазоне #4000 -
     #C000.
out: CY - error (нет hdd).

Эта подфункция определяет есть ли диск вообще и пытается возвра-
тить в буфер сектор-идентификатор (паспорт) считанный из hdd.

Формат паспорта hdd (512 байт). Все числа hex.
┌─────┬────────┬───────────────────────────────────────────────┐
│Addr │ Length │  Значение                                     │
├─────┼────────┼───────────────────────────────────────────────┤
│ 000 │   02   │  Главное слово конфигурации                   │
│ 002 │   02   │  Количество цилиндров                         │
│ 004 │   02   │  Зарезервировано                              │
│ 006 │   02   │  Количество головок                           │
│ 008 │   02   │  Кол-во байт на дорожке                       │
│ 00A │   02   │  Кол-во байт в секторе                        │
│ 00C │   02   │  Кол-во секторов на дорожке                   │
│ 00E │   06   │  Спецификация продавца                        │
│ 014 │   14   │  Серийный номер (ASCII)                       │
│ 028 │   02   │  Тип контроллера                              │
│ 02A │   02   │  Емкость буфера (кэша) деленная на 512 байт   │
│ 02C │   02   │  Значение кода ECC для команд Long Read/Write │
│ 02E │   08   │  Версия рабочих программ (ASCII)              │
│ 036 │   26   │  Модель (ASCII)                               │
└─────┴────────┴───────────────────────────────────────────────┘
  Дальше каждый производитель волен вписывать что угодно.
   У меня далее одни нули.

 Слово - два байта, младший/старший.
 ECC - Error Control Code.
 Из-за  непонятных стандартов, ASCII выглядит в паспорте не сов-
сем понятно. Модель stЗ1ЧЧAT смотрится как ts13ЧЧTA. Значит, ес-
ли понадобится вывести сие на экран, нужно поменять местами пер-
вый байт со вторым, третий с четвертым и т.д. до конца строки.

Для понятности терминологии:

  Дисковод:                  Мой винт:
 80   цилиндров            1001  цилиндр
 2    головки              15    головок
 16   секторов/дорожка     17    секторов/дорожка
 256  байт/сектор          512   байт/сектор

 Как засечь скорповый винт:
;....................................
         DI
         LD     A,(#0008)
         CP     #C3
         JR     NZ,NO_HDD     ;Это не скорп
;
         LD     BC,#1FFD
         LD     A,#02
         OUT    (C),A         ;переключили ПЗУ
         LD     A,(#00F1)     ;Взяли код версии ТМ
         LD     E,A           ;винты водятся
         XOR    A             ;на версиях 96 и выше.
         OUT    (C),A
         LD     A,E
         CP     96
         JR     C,NO_HDD      ;скорп, но со старым ПЗУ.
;
         LD     HL,BUFF       ;BUFF ДОЛЖНО БЫТЬ В ДИАПАЗОНЕ
         LD     C,#09         ;#4000...#C000 !
         RST    #08           ;Установили рабочий буфер
         DEFB   #81           ;(размер 512 байт)
         LD     C,#22
         RST    #08           ;Винт есть?
         DEFB   #81           ;
         JR     C,NO_HDD      ;нет однако.
         ...
                              ;винт есть. В BUFF имеем
                              ;паспорт винта. тут юзать #3d13
NO_HDD
         ...
                              ;винта нету, можно
                              ;юзать турбодрайверы.

BUFF                          ;рабочий буфер
        DEFS    #200

======================== Import end ============================

 Вобщем: спрашивайте - отвечу.

Jason.
Powered by ScorpionZS25бturbo+/SMUC/HDD'IDE1ЗOMb/FDD'800/
 /CMOS/Covox/ATkbd/Mouse/CDOS

--- is'edit 4.12+
 * Origin : ...Altering The Future... (500:95/462.18)



Другие статьи номера:

Список BBS - Сетевые новости.

Hard Disk Drive - Новые подпрограммы Теневого Сервис Монитора для работы с контроллером периферии SMUC.

Софт - E-Modem Station v0.41.

Психология - Тест: "Сова" или "жаворонок"?

Юмор - That is true.

Юмор - Анекдоты.

Реклама - Реклама и объявления.

От авторов - Редакция.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Hовости - Ldir!
Советы - Игра "48 УТЮГОВ", пароли уровней.
Тусовка - Звонит Флай...
Отзывы - письмо от Mr.ZEG, Hermit, Cluster from TVG.
Scene - глобальный отчет CPU о поездке на беларуское пати Millennium'1902.

В этот день...   24 апреля