Среда, 13.12.2017, 00:31

..



Главная Регистрация Вход
Приветствую Вас, Гость · Браузер: « v»
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Всё об «Электроника БК0010(-01), БК0011(М)»! » Программы | Утилиты | ДОСы » Дисковые Операционные Системы (DOS) » «ANDOS v3.1» » Техническое руководство (Часть 5) («ANDOS v3.1» [ANTECH5.EDP])
Техническое руководство (Часть 5)
-=RUS=-Дата: Вторник, 22.04.2014, 21:54 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 350
Репутация: 1
Статус: Offline

Приложение 2.

         Контроллер дисковода.  Программный интерфейс.

                    1. Регистры контроллера

Регистр состояния: 177130

       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│ 9│ 8│ 7│ 6│ 5│ 4│ 3│ 2│ 1│ 0│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘

┌──┬───────────────────────────┬──────────────────────────────┐
│Р.│   Назначение по записи    │     Назначение по чтению     │
├──┼───────────────────────────┼──────────────────────────────┤
│0 │ выбор накопителя 0        │ признак "0 ДОРОЖКА"          │
│1 │ выбор накопителя 1        │ признак готовности (не исп.) │
│2 │                           │ запрет (защита) записи       │
│3 │                           │                              │
│4 │ включение двигателя       │                              │
│5 │ выбор стороны (0-низ)     │                              │
│6 │ напр. шага (0-от центра)  │                              │
│7 │ шаг                       │ готовность регистра данных   │
│8 │ признак "НАЧАЛО ЧТЕНИЯ"   │                              │
│9 │ признак "ЗАПИСЬ МАРКЕРА"  │                              │
│10│ включение прекоррекции    │                              │
│11│                           │                              │
│12│                           │                              │
│13│                           │                              │
│14│                           │признак записи CRC на диск    │
│15│                           │признак "0 СЕКТОР"            │
└──┴───────────────────────────┴──────────────────────────────┘
     Разряды, назначение  которых  не  указано не используются.
Появление "1" в 7 разряде означает требование съема  информации
с регистра данных или записи в него новой информации.

Регистр данных: 177132

       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│ 9│ 8│ 7│ 6│ 5│ 4│ 3│ 2│ 1│ 0│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
     Все разряды регистра доступны по записи и чтению.

            2. Программный интерфейс драйвера НГМД

     Драйвер НГМД размещен в  ПЗУ,  находящемся  в  контроллере
дисковода, и имеет насколько точек входа:

     ┌────────┬────────────────────────────────────────┐
     │ Адрес: │               Функция:                 │
     ├────────┼────────────────────────────────────────┤
     │ 160000 │ Автоматическая загрузка                │
     │ 160002 │ Загрузка с выбранного привода          │
     │ 160004 │ Чтение-запись по номеру блока          │
     │ 160006 │ Чтение запись по номеру сектора        │
     │ 160010 │ Инициализация рабочей области драйвера │
     │ 160012 │ Форматирование дорожки                 │
     └────────┴────────────────────────────────────────┘

     Для работы драйвера необходима  область  ОЗУ  размером  66
байт для размещения параметров и рабочих ячеек.

                    Формат рабочей области:
┌──┬──┬──────┬─────────────┬──────────────────────────────────┐
│См│Дл│  Имя │ Нач.значение│          Назначение              │
├──┼──┼──────┼─────────────┼──────────────────────────────────┤
│0 │2 │CSRW  │      0      │Копия по записи регистра состояния│
│2 │2 │CURTRK│      -      │Адрес текущей дорожки             │
│4 │4 │TRKTAB│177777,177777│Таблица текущих дорожек           │
│10│2 │TDOWN │    10000.   │Время опускания головки           │
│12│2 │TSTEP │    10000.   │Время перехода с дор. на дорожку  │
│14│1 │TRKCOR│     32.     │Номер дор. вкл. прекоррекции      │
│15│1 │BRETRY│     20.     │Число повторов при ошибках        │
│16│1 │FLAGS │      0      │Рабочая ячейка драйвера           │
│17│1 │FILLB │вх. параметр │Код заполнения при форматировании │
│20│2 │FLGPTR│      -      │Указатель на байт признаков       │
│22│4 │FLGTAB│      0      │Таблица признаков (см ниже)       │
│26│2 │ADDR  │вх. параметр │Адрес буфера ОЗУ                  │
│30│2 │WCNT  │вх. параметр │Число слов для пересылки          │
│32│1 │SIDE  │вх. параметр │Номер стороны диска               │
│33│1 │TRK   │вх. параметр │Номер дорожки                     │
│34│1 │UNIT  │вх. параметр │Номер привода                     │
│35│1 │SECTOR│вх. параметр │Номер сектора                     │
│36│22│      │      -      │Рабочие ячейки драйвера           │
│60│2 │MAXSEC│     10.     │Число секторов на дорожке         │
│62│2 │      │      -      │Рабочая ячейка драйвера           │
│64│2 │BYTSEC│     400     │Число байт в секторе              │
└──┴──┴──────┴─────────────┴──────────────────────────────────┘

     Таблица FLGTAB содержит по одному байту на  привод  и  ис-
пользуется  для обработки нестандартных дисков.  В каждом байте
используется три бита для указания параметров операции.
     Бит 0 - при установке в 1 драйвер производит пропуск доро-
жек при поиске,  т.е.  фактически обрабатываются только  четные
дорожки. Эта возможность используется для обработки на 80-доро-
жечном дисководе, дискет, размеченных на 40-дорожечном дисково-
де.
     Бит 1 - при установке в  1  драйвер  производит  обращение
только  к нижней стороне дискеты.  Эта возможность используется
при подключении дисководов, имеющих только одну головку, а так-
же  при  обработке  дискет,  записанных на таком дисководе,  на
двустороннем дисководе.
     Бит 2  - при равенстве 0 драйвер обрабатывает сектора дли-
ной 512. байт, иначе длиной 1024. байта (из-за ошибки, допущен-
ной в драйвере, данный режим не работает).

                 2.1. Автоматическая загрузка

 Вызов:     CALL @#160000

     Производится попытка загрузить операционную систему с при-
вода 0.  Если попытка загрузки была неудачной, то драйвер пыта-
ется загрузить систему с 1 привода.
     Если обе попытки оказались неудачными,  драйвер возвращает
управление вызвавшей его программе командой "RTS PC".
     При загрузке  сначала  инициализируется  рабочая   область
драйвера с  адреса 2000,  затем считывается 1 сектор 0 дорожки,
начиная с адреса 1000.  При удачной загрузке  драйвер  передает
управление по адресу 1000,  при этом в R0 помещается номер при-
вода,  откуда произошла загрузка.  Неудачной загрузка считается
если  произошла ошибка чтения,  первое слово считанного сектора
отличается от 240 или второе слово равно 5 .

              2.2. Загрузка с выбранного привода

 Вызов:     CALL @#160002
 Параметры: R0 - Номер привода

     Действие аналогично  автоматической загрузке,  однако заг-
рузка начинается сразу с выбранного  привода  и  при  неудачной
загрузке попытки загрузиться с другого привода не производится.

              2.3. Чтение/запись по номеру блока

 Вызов:     CALL @#160004
 Параметры: R0 - номер блока на диске,
            R1 - длина пересылаемого массива данных,
            R2 - начальный адрес массива данных,
            R3 - базовый адрес рабочей области драйвера,
            Поле UNIT в рабочей области - номер привода.

     Блок является логической единицей  информации  на  внешних
носителях и равен 512 байтам.  В используемом формате записи на
диск размер блока совпадает с размером сектора.  Первый  сектор
нижней стороны нулевой дорожки соответствует блоку 0.  Вычисле-
ние номера сектора и дорожки по  номеру  блока  производится  с
учетом установленных признаков в таблице FLGTAB.
     Длина массива данных,  записанная в R1 задает число  слов,
подлежащих пересылке,  а также тип операции: если длина положи-
тельна - чтение, отрицательна - запись. При записи пересылаемое
число слов равно абсолютному значению длины. Если заданное чис-
ло слов превышает размер сектора, осуществляется автоматический
переход к следующему сектору, а если необходимо, то и на другую
сторону и дорожку. Если при записи число слов не кратно размеру
сектора, то остаток последнего сектора заполняется нулями.
     Перед самым первым вызовом  драйвера  поля  CSRW,  TRKTAB,
FLAGS в рабочей области должны быть заполнены значениями,  ука-
занными в таблице,  и не должны изменяться программой пользова-
теля.
     Поля TDOWN, TSTEP, TRKCOR, BRETRY, FLGTAB могут быть изме-
нены в зависимости от конкретных условий.
     Возврат из драйвера осуществляется командой RTS PC. Содер-
жимое регистров R0,  R1, R2, R4, R5 не сохраняется. При возник-
новении ошибки устанавливается бит "С",  и в байт 52 помещается
код ошибки:
   ┌───┬──────────────────────────────────────────────────┐
   │Код│                   Причина ошибки                 │
   ├───┼──────────────────────────────────────────────────┤
   │ 1 │ При чтении - ошибка CRC в зоне данных            │
   │   │ При записи - установлена защита записи           │
   │ 2 │ Ошибка CRC в зоне заголовка                      │
   │ 3 │ Нет позиционирования на нулевую дорожку          │
   │ 4 │ Ошибка позиционирования                          │
   │ 5 │ Не найден сектор                                 │
   │ 6 │ Нет диска или диск не вращается                  │
   │ 7 │ Прерывание по вектору 4 при операции             │
   │ 8 │ Не найден адресный маркер                        │
   │ 9 │ Не найден маркер данных                          │
   │ 10│ Недопустимые параметры команды или нестандартный │
   │   │ формат диска                                     │
   └───┴──────────────────────────────────────────────────┘
     Возникновение прерывания по  вектору  4  (нажатие  клавиши
СТОП) во время записи на диск может привести к появлению сбоя в
секторе,  в который осуществляется запись. Сбой может быть уст-
ранен при повторной записи в этот сектор.
     После завершения операции драйвер оставляет двигатель дис-
ковода включенным.  Для остановки двигателя программа пользова-
теля должна записать 0 по адресу 177130,  а также в ячейку CSRW
рабочей области.

        2.4. Чтение-запись по номеру сектора и дорожки

 Вызов:     CALL @#160006
 Параметры: R3 - адрес рабочей области
            ADDR - начальный адрес массива данных
            WCNT - длина массива данных
            SIDE - сторона (0-нижняя, 1-верхняя)
            TRK  - номер дорожки
            UNIT  - номер привода (0-1)
            SECTOR - номер сектора (1-10.)

     Действие аналогично чтению-записи логического блока.

              2.5. Инициализация рабочей области

 Вызов:     CALL @#160010
 Параметры: R3 - адрес рабочей области.

     Эта точка  входа является вспомогательной и служит для об-
легчения написания программ, использующих драйвер НГМД.

     Заполняются поля рабочей области:

                  ┌────────┬────────────────┐
                  │ CSRW   │ 0              │
                  │ TRKTAB │ 177777, 177777 │
                  │ TDOWN  │ 10000.         │
                  │ TSTEP  │ 10000.         │
                  │ TRKCOR │ 32.            │
                  │ BRETRY │ 20.            │
                  │ FLAGS  │ 0              │
                  │ FLGTAB │ 0,0            │
                  │ MAXSEC │ 10.            │
                  └────────┴────────────────┘

                  2.6. Форматирование дорожки

Вызов:     CALL @#160012
Параметры: R3 - базовый адрес рабочей области
           FILLB - код, которым будет заполнено поле данных
           при форматировании
           SIDE  - номер стороны,
           TRK   - номер дорожки,
           UNIT  - номер привода.

     Форматируется указанная дорожка с указанной стороны,  поле
данных всех секторов заполняется кодом FILLB

                          Заключение
                          ~~~~~~~~~~
     Автор надеется, что информация приведенная в этом докумен-
те поможет Вам создавать программы,  работающие в среде ANDOS и
новые утилиты.
     Если Вы обнаружите какие-либо ошибки,  неточности, или от-
сутствие какой-либо важной информации - обращайтесь к автору по
телефону: (095)180-3002, Алексей.
     Если Вы,  пользуясь этим  документом,  создадите  что-либо
стоящее, фирмы  "Алексей  Надежин"  и  "Центр БК Альтек" готовы
взять на распространение Ваши программные продуктов.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

                              © 25.7.1994, Алексей М. Надежин


 
Всё об «Электроника БК0010(-01), БК0011(М)»! » Программы | Утилиты | ДОСы » Дисковые Операционные Системы (DOS) » «ANDOS v3.1» » Техническое руководство (Часть 5) («ANDOS v3.1» [ANTECH5.EDP])
Страница 1 из 11
Поиск:

-=RUS=-
ICQ: 320867225