ZX Review #1-2
31 декабря 1996
  TR-DOS  

TR-DOS для начинающих - 5-я глава книги "Общие сведения по дисковой системе ТР ДОС".

<b>TR-DOS для начинающих</b> - 5-я глава книги
                     TR DOS ДЛЯ НАЧИНАЮЩИХ    


      В наступившем году мы продолжаем публикацию книги В.Сироткина
"Общие сведения по дисковой системе ТР ДОС". Нужно сказать, что публикуемые
далее материалы представляют интерес не только для начинающих, но и для 
более подготовленных пользователей и программистов. Поэтому название рубрики
уже не в полной мере отражает ее содержание.
                 
Продолжение. Начало см. в ZX РЕВЮ 1996 NN 1-2, 4-5, 6, 7-8                      
                      
                      ГЛАВА  5

      ИНТЕГРАЛЬНАЯ МИКРОСХЕМА КР 1818 ВГ93.
   --------------------------------------------
    Прежде всего нам надо разобраться с самой главной микросхемой контроллера 
дисковода ТРДОС (BETA DISK интерфейса): с микросхемой КР 1818 ВГ93.
Вся  логика работы системы зависит,прежде всего от нее. Эта микросхема 
представляет собой программный микроавтомат с внутренней логикой работы, 
который обеспечивает управление дисководом, обмен данными между процессором и  
дисководом, программирование номеров дорожки, сектора, стороны диска, длины 
сектора и т.д. и т.п.
     В общем, он обеспечивает все то ,что необходимо для нормальной работы с 
дисководом. Обмен данными между микросхемой ВГ93 и процессором копьютера 
происходит по 8-ми разрядной шине данных. По этой же шине происходит  
программирование микросхемы на различные режимы и подача команд контроллеру.
     Графическое  изображение  микросхемы показано ниже на рисунке 9.

                                 РИС 9.

Назначение выводов микросхемы.
------------------------------
ВЫВОД ! МНЕМОН.! НАЗНАЧЕНИЕ ВЫВОДА
--------------------------------------------------
 1    !   ВS   ! Вывод микросхемы контроль подлож-
      !        !   ки; в схемах не подключается.
--------------------------------------------------
 2    !   W    ! Вход ЗАПИСЬ.При W=0 - Разрешение
      !        !  записи  в выбранный регистр.
--------------------------------------------------
 3    !   CS   ! ВХОД. При 0 - микросхема выбрана
--------------------------------------------------
 4    !   R    ! Вход ЧТЕНИЕ.При = 0 - микросхема
      !        !  выдает нa Ш.Д. содержимое выбран-
      !        !  ного регистра .
--------------------------------------------------
 5,6  ! А0,А1  !Вход Адреса выбора внутренних
      !        ! регистров ВГ93 для операций чтения
      !        ! /записи.
      !        !
      !        !   А0  А1   ЧТЕНИЕ      ЗАПИСЬ
      !        !   -------------------------------
      !        !   0     0  РЕГ.СОСТ.   РЕГ.КОМАНД
      !        !   1     0  РЕГ.ДОРОЖ.  РЕГ.ДОРОЖ.
      !        !   0     1  РЕГ.СЕКТОР. РЕГ.СЕКТР.
      !        !   1     1  РЕГ.ДАННЫХ  РЕГ.ДАННЫХ
--------------------------------------------------
 7-14 ! D0-D7  ! Вход/Выход данных или команд
--------------------------------------------------
 15   ! STEP   ! Выход на дисковод импульса переме-
      !        ! щения головки на 1 шаг ( цилиндр)
--------------------------------------------------
 16   ! DIRC   ! Выход для дисковода. При =
      !        !  0 - перемещение головки от ЦЕТРА
      !        !      к краю ;
      !        !  при = 1 -  от края к центру
--------------------------------------------------
 17   ! SL     ! Выход для внешнего регистра .Сдвиг
      !        ! импульса данных с выхода WD ВЛЕВО.
--------------------------------------------------
 18   ! SR     ! Выход для внешнего регистра.Сдвиг
      !        ! импульса данных с выхода WD ВПРАВО.
--------------------------------------------------
 19   ! CLR    ! Вход СБРОСА. При =0 - микросхема
      !        ! выполняе команду ВОСТАНОВЛЕНИЕ.
      !        ! РЕГ.СЕКТОРА сбрасывается в #01.
      !        ! Выход 39 (INTRQ) = 0.
--------------------------------------------------
 20   ! GND    ! Корпусной вывод.
--------------------------------------------------
 21   ! Ucc1   ! Питание  + 5 вольт
--------------------------------------------------
 22   ! TEST   !Вход- Скорость перемещения головки.
      !        !            При =1
      !        !на выходе 'STEP' импульсы перемеще-
      !        !   ния идит с удвоенной частотой.
--------------------------------------------------
 23   ! HRDY   ! Вход ГОТОВНОСТЬ головки. При = 1
                  указание на готовность к работе.
--------------------------------------------------
 24   ! CLC    ! Тактовая частота
--------------------------------------------------
 25   ! RSTB   ! Выход СТРОБ ЧТЕНИЯ. Устанавлива-
      !        !  ется в 1 после приема 2х байтов
      !        !  нулей при одинарной плотности
      !        !  диска ;    или
      !        !  4х байтов нулей (единиц) при
      !        !  удвоенной плотности диска.
--------------------------------------------------
 26   !   S    ! Вход синхронизации. Сигнал выра-
      !        !  батывается из сигналов RAWR .
--------------------------------------------------
 27   ! RAWR   ! Вход ДАННЫХ от дисковода.
--------------------------------------------------
 28   ! HLD    ! Выход ГОТОВНОСТЬ для дисковода.
      !        !      (При =1 - готов)
--------------------------------------------------
 29   ! TR43   ! Выход  ПОЛОЖЕНИЕ головки.
      !        !  При = 1 указывает,что головка
      !        ! на цилиндре с номером большим 43.
      !        ! (Сигнал вырабатывается только в
      !        !   процессе ЗАПИСИ или ЧТЕНИЯ )
--------------------------------------------------
 30   ! WSTB   ! Выход. При = 1 включает дисковод
      !        !        на запись.
--------------------------------------------------
 31   ! WD     ! Выход данных для записи на диск.
--------------------------------------------------
 32   ! CPRDY  ! Вход Готовность дисковода для
      !        !       ЗАПИСИ или ЧТЕНИЯ.
      !        !     При = 0 - команды
      !        ! ЗАПИСЬ/СЧИТЫВАНИЕ НЕ ВЫПОЛНЯЮТСЯ,
      !        !  а вырабатывается СИГНАЛ INTRQ.
      !        ! (Не влияет на остальные вспомо-
      !        !      гательные команды).
--------------------------------------------------
 33   !WF / DE ! ВХОД / ВЫХОД : ОШИБКА / ДАННЫЕ .
      !        ! При  WSTB = 1 - WF - ВХОД;
      !        !  (если WF =0 то, запись любой ко-
      !        !    манды прекращается).
      !        ! При WSTB = 0 - DE - ВЫХОД;
      !        !  (на DE устанавливается 0 при
      !        !    ЧТЕНИИ после загрузки головки
      !        !    и HRDY = 1).
--------------------------------------------------
 34   ! TR00   ! ВХОД - НОЛЬ ДОРОЖКА.
      !        !  При = 0,головки дисковода нахо-
      !        !  дятся на 0 дорожке.
--------------------------------------------------
 35   ! JP     ! Вход ИНДЕКСЫЙ ИМПУЛЬС.
      !        ! При = 0 - индексный импульс счи-
      !        ! тан и диск начал очередной оборот.
--------------------------------------------------
 36   ! WPRT   ! Вход ЗАПРЕТ ЗАПИСИ . (При = 0)
--------------------------------------------------
 37   ! DDEN   ! Вход ПЛОТНОСТЬ ДИСКА.
      !        ! (При = 1 - плотность ДВОЙНАЯ)
--------------------------------------------------
 38   ! DRQ    ! Выход СТРОБ ДАННЫХ.
      !        ! *         При DRQ = 1 ;
      !        ! во время ЧТЕНИЯ - указание на то,
      !        ! что РЕГИСТР ДАННЫХ содержит инфор-
      !        ! мацию для передачи.
      !        ! Во время ЗАПИСИ - ГОТОВНОСТЬ реги-
      !        !  стра ВГ 93 принять данные от Ш.Д.
      !        ! *         При DRQ=0 ;
      !        ! При ЧТЕНИИ - указание,что данные
      !        ! из регистра ВГ93 считаны процес-
      !        ! сором.
      !        ! При ЗАПИСИ указание ,что регистр
      !        !  ВГ93 принял данные с Ш.Д.
--------------------------------------------------
 39   ! INTRQ  ! Выход ГОТОВНОСТЬ микросхемы.
      !        ! При = 1 - микросхема готова
      !        !   принять команду ;
      !        ! при = 0 - микросхема ВЫПОЛНЯЕТ
      !        !   команду.
      !        ! ИЛИ был считан регистр СОСТОЯНИЯ.
--------------------------------------------------
 40   ! Ucc 2  ! Напряжение питания +12 вольт.
--------------------------------------------------

     Для нас с вами не потребуется досконального знания функционирования всех 
входов-выходов микросхемы и режимов ее работы.
     С точки зрения программиста, нам потребуется знание логики работы всего  
лишь нескольких  выводов, подключенных непосредственно в адресное пространство 
портов контроллера ТР ДОС.
     Микросхема ВГ93 имеет 5 внутренних регистров, доступных программисту, 
через которые идет управление работой  ВГ93, и еще один внешний регистр,
выполненный, как правило, на микросхеме 555ТМ9 (триггере-защелке), для 
управления дисководом и для опроса готовности.
     Все регистры подключены к определенным адресам в адресном пространстве 
компьютера, как ПОРТЫ  ввода/вывода, и, значит, обращатьсяк к ним надлежит 
командами IN или OUT. Но простой подачей в эти порты каких-либо значений или 
при попытке считать что-то из этих портов, Вы ничего не добьетесь, т.к. эти 
порты во время работы SOS Бейсика недоступны!
     В ПЗУ ТРДОС есть все необходимые команды обращения к этим портам, и 
проблема заключается только в том, как выйти на ПЗУ ТРДОС. Вот об этом мы и 
поговорим чуть позднее...

        РАСПРЕДЕЛЕНИЕ ПОРТОВ ТРДОС - ВГ93.
        ----------------------------------

* РЕГИСТР ДОРОЖКИ - ПОРТ #3F (ЧТЕНИЕ/ЗАПИСЬ)
--------------------------------------------
Служит для ЗАПИСИ номера дорожки при операциях или для СЧИТЫВАНИЯ номера 
текущей дорожки.

* РЕГИСТР СЕКТОРА - ПОРТ #5F (ЧТЕНИЕ/ЗАПИСЬ)
--------------------------------------------
Служит для ЗАПИСИ номера сектора при операциях или для СЧИТЫВАНИЯ номера 
текущего сектора.

* РЕГИСТР ДАННЫХ  - ПОРТ #7F (ЧТЕНИЕ/ЗАПИСЬ)
--------------------------------------------
Служит для обмена данными между диском и компьютером.

* РЕГИСТР КОМАНД  - ПОРТ #1F ( ЗАПИСЬ )
--------------------------------------------
Служит для подачи команд контроллеру.

* РЕГИСТР СОСТОЯНИЯ - ПОРТ #1F ( СЧИТЫВАНИЕ )
--------------------------------------------
Служит для определения текущего состояния выполнения команд.

*  РЕГИСТР  УПРАВЛЕНИЯ  - ПОРТ #FF
           (СЧИТЫВАНИЕ/ЗАПИСЬ)
--------------------------------------------------
Служит  для управления дисководом и для считывания готовности микросхемы  ВГ93  
- при работе или при обмене данными. Этот регистр выполнен на микросхеме
ТМ9 - триггере защелке. При подаче в порт байта, он сохраняется - 
защелкивается.

     Рассмотрим подробнее РЕГИСТР УПРАВЛЕНИЯ (#FF).

**  При ЗАПИСИ в этот регистр можно выбрать номер дисковода, сбросить 
микросхему ВГ93, выбрать сторону диска, дать готовность дисководу и выбрать 
плотность записи.
    Ниже на рисунке представлены биты этого регистра и за что они отвечают при 
ЗАПИСИ в него.

    Режим ЗАПИСИ в регистр УПРАВЛЕНИЯ (#FF).
  ┌────┬─────┬─────┬──────┬─────┬──────┬─────┬─────┐                                                   
  │ 7  │  6  │  5  │   4  │   3 │   2  │   1 │   0 │                                                   
  │    │     │     │      │     │      │     │     │                                                   
  └────┴─────┴─────┴──────┴─────┴──────┴─────┴─────┘                                                   
                                                                                                
         │           │     │       │     ├────────┴───                                                   
         │           │     │       │     │выбор диска                                                   
         │           │     │       │     │при = 0,0                                                   
         │           │     │       │     └─диск 'А────                                                   
         │           │     │       │                                                   
         │           │     │       ├──────────────────                                                   
         │           │     │       │сброс микросхемы                                                   
         │           │     │       └───ВГ93 ; при=0───                                                   
         │           │     ├──────────────────────────                                                   
         │           │     │ готовность дисководу (=1)                                                   
         │           │     └──────────────────────────                                                   
         │           ├────────────────────────────────                                                   
         │           │ сторона диска  при= 1 - верх                                                   
         │           │                при= 0 - низ                                                   
         │           └────────────────────────────────                                                   
         │                                                   
         ├────────────────────────────────────────────                                                   
         │ плотность записи   при=1 - одинарная                                                   
         │                    при=0 - двойная                                                   
         └────────────────────────────────────────────                                                   


БИТЫ 0 и 1 - с выхода триггера ТМ9 напрямую связаны со входами дисковода "DISK 
             A,B,C"

БИТ  2     - это вход CLR микросхемы ВГ93

БИТ  3     - это вход HRDY микросхемы ВГ93 и одновременно разрешение 
             прохождения сигнала IP от дисковода к микросхеме ВГ93

БИТ  4     - напрямую связан со входом дисковода "SIDE"

BIT  6     - это вход  DDEN микросхемы ВГ93

     В  Режиме ЧТЕНИЕ регистра #FF использованы всего 2 бита, (смотри ниже).

     Режим ЧТЕНИЯ  регистра УПРАВЛЕНИЯ (#FF).                                                  
   ┌────┬─────┬─────┬──────┬──────┬──────┬──────┬────┐                                                  
   │    │     │     │      │      │      │      │    │                                                  
   │ 7  │  6  │  5  │   4  │   3  │   2  │   1  │  0 │                                                  
   └────┴─────┴─────┴──────┴──────┴──────┴──────┴────┘                                                  
     │     │    │═══════ НЕ ИСПОЛЬЗУЕТСЯ ═════════│                                                  
     │     │                                                  
     │   ┌─┴──────────┬────────────────────────────────                                                  
     │   │ готовность │ при= 1 - готовность к обмену                                                  
     │   │ ДАННЫХ:    │ при= 0 - данные считаны/приняты                                                  
     │   └────────────┴────────────────(не готовы )────                                                  
     │                                                  
     ├─────────────────────────────────────────────────                                                  
     │ готовность         при=1 - команда ВЫПОЛНЕНА                                                  
     │ МИКРОСХЕМЫ ВГ93:   при=0 - команда на ИСПОЛНЕНИИ                                                  
     │                            или считан регистр                                                  
     └─────────────────────────────────СОСТОЯНИЯ ВГ93──                                                  
                                                        
БИТ 6  - это выход  DRQ   микросхемы ВГ93
БИТ 7  - это выход  INTRQ микросхемы ВГ93

     Микросхема ВГ93 обеспечивает прием и выполнение 11 команд, поданных в 
Регистр КОМАНД. Каждая команда,из одиннадцати, имеет свой КОД-МОДИФИКАТОР , 
который изменяет некоторые условия выполнения команды.
     Условно команды подразделяются на четыре типа:
1 - команды перемещения головок дисковода и поиска: эти команды загружают 
(прижимают) головки.
2 - команды чтения/записи секторов диска.
3 - команды чтения/записи дорожки и адресной метки.
4 - команды принудительного прерывания операций.
     Результаты выполнения или невыполнения команд отображаются в Регистре 
СОСТОЯНИЯ, каждый бит которого несет информацию о ходе выполнения команды.

     Разберем подробнее каждую команду.
            Команды ПЕРВОГО ТИПА.
          -------------------------
    Данные команды обеспечивают загрузку головок, т.е. прижатие их к поверхности 
диска.
*  Команда   ВОСТАНОВЛЕНИЕ.
............................
  Переход головок дисковода на НУЛЕВОЙ ТРЕК (ЦИЛИНДР). Если на входе TR00 
микросхемы не появится подтверждение о выходе головок на 0 ,то через 256
импульсов действие команды прекращается.

   КОД команды.
                                                      
  ┌─7──┬──6──┬──5──┬───4──┬───3──┬───2──┬───1──┬──0─┐                                                  
  │    │     │     │      │      │      │      │    │                                                  
  │ 0  │  0  │  0  │   0  │  G   │  V   │  F1  │ F2 │                                                  
  └────┴─────┴─────┴──────┼──────┴──────┴──────┴────┘                                                  
                          │  МОДИФИКАТОР                                                  
При:
G=0 - головка поднята.
G=1 - головка опущена (в работе).
V=0 - местонахождение головки не проверяется.
V=1 - читается и проверяется номер цилиндра под головкой.
F1,F2 - коды времени перемещения головок (см.таблицу).

* KОМАНДА ПОИСК ЦИЛИНДРА.
..........................
   КОД команды.

┌─7──┬──6──┬──5──┬───4──┬───3──┬───2──┬──1──┬───0──┐
│    │     │     │      │      │      │     │      │
│ 0  │  0  │  0  │   1  │  G   │  V   │ F1  │  F2  │
└────┴─────┴─────┴──────┼──────┴──────┴─────┴──────┘
                        │  МОДИФИКАТОР
При:
G=0 - головка поднята.
G=1 - головка опущена (в работе).
V=0 - местонахождение головки не проверяется.
V=1 - читается и проверяется номер цилиндра под головкой.
F1,F2 - коды времени перемещения головок (см.таблицу).
     Перед  командой  Регистр  ДОРОЖКИ должен содержать номер ТЕКУЩЕГО ЦИЛИНДРА, 
а Регистр ДАННЫХ номер ТРЕБУЕМОГО. Поиск продолжается до тех пор, пока регистр 
ДОРОЖКИ не сравняется с Регистром ДАННЫХ.
     Поиск выполняется при модификаторе V=1 !!

* КОМАНДА  ШАГ.
................
    Перемещение головки на ОДИН шаг,(на 1 цилиндр). Направление перемещения 
остается прежним.

   КОД команды.          
                         
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬──1──┬───0──┐
│    │     │     │      │      │      │     │      │
│ 0  │  0  │  1  │   J  │  G   │  V   │ F1  │  F2  │
└────┴─────┴─────┼──────┴──────┴──────┴─────┴──────┘
                 │      МОДИФИКАТОР
При:
G=0 - головка поднята.
G=1 - головка опущена (в работе).
V=0 - местонахождение головки не проверяется.
V=1 - читается и проверяется номер цилиндра под головкой
F1,F2 - коды времени перемещения головок (см.таблицу).
J=0  - содержимое Регистра ДОРОЖКИ не меняется.
J=1  - содержимое Р.ДОРОЖ. меняется на 1 (+ /-).

* КОМАНДА  ШАГ ВПЕРЕД (к центру диска)
......................................
Перемещение головки на ОДИН шаг ВПЕРЕД  (на 1 цилиндр).

   КОД команды.
                        │
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬──1──┬───0──┐
│    │     │     │      │      │      │     │      │
│ 0  │  1  │  0  │   J  │  G   │  V   │ F1  │  F2  │
└────┴─────┴─────┼──────┴──────┴──────┴─────┴──────┘
                 │      МОДИФИКАТОР

При:
G=0 - головка поднята.
G=1 - головка опущена (в работе).
V=0 - местонахождение головки не проверяется.
V=1 - читается и проверяется номер цилиндра под головкой.
F1,F2 - коды времени перемещения головок (см.таблицу).
J=0  - содержимое Регистра ДОРОЖКИ не меняется.
J=1  - содержимое Р.ДОРОЖ. увеличивается на 1.

* КОМАНДА ШАГ НАЗАД (к краю диска)
......................................
Перемещение головки на ОДИН шаг НАЗАД (на 1 цилиндр).

   КОД команды.

┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬──1──┬───0──┐
│    │     │     │      │      │      │     │      │
│ 0  │  1  │  1  │   J  │  G   │  V   │ F1  │  F2  │
└────┴─────┴─────┼──────┴──────┴──────┴─────┴──────┘
                 │      МОДИФИКАТОР

При:
G=0 - головка поднята.
G=1 - головка опущена (в работе).
V=0 - местонахождение головки не проверяется.
V=1 - читается и проверяется номер цилиндра под головкой.
F1,F2 - коды времени перемещения головок (см.таблицу).
J=0  - содержимое Регистра ДОРОЖКИ не меняется.
J=1  - содержимое Р.ДОРОЖ. уменьшается на 1.

               КОМАНДЫ ВТОРОГО ТИПА.
           -----------------------------
* КОМАНДА ЧТЕНИЕ  СЕКТОРА ,(секторов).
......................................
   Команда выполняется после того, как микросхемой ВГ93 идентифицирована  
область ИАМ сектора (индексная адресная метка) и подсчитана контрольная сумма
(все это происходит автоматически после подачи команды и не зависит от 
программиста).
   Перед командой необходимо:
           1. Установить головку на нужный ЦИЛИНДР
           2. в Регистр СЕКТОРА занести номер требуемого СЕКТОРА.
   КОД команды.
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬───0──┐
│    │     │     │      │      │      │      │      │
│ 1  │  0  │  0  │   М  │  S   │  E   │  C   │  0   │
└────┴─────┴─────┼──────┴──────┴──────┴──────┴──────┘
                 │      МОДИФИКАТОР

При:
M=0  -  чтение ОДНОГО сектора, содержимое Регистра СЕКТОРА увеличивается на 1.
М=1  -  после чтения одного сектора, содержимое Регистра СЕКТОРА увеличивается  
        на 1, и начинается чтение следующего - и так до последнего сектора на 
        ДОРОЖКЕ.
S=0 -   сторона диска НИЗ.
S=1 -   сторона диска ВЕРХ.
Е=0 -   нет задержки для установки головки дисковода.
Е=1 -   задержка в 15 мс. для установки головки после сигнала HLD микросхемы 
        (готовность).
С=0 -   сторона диска не проверяется.
С=1 -   проверка стороны диска в процессе идентификации.

     Если в процессе идентификации микросхема не находит в ИАМ-области НОМЕР 
нужного СЕКТОРА, или же вообще не находит ИАМ, то в Регистре СОСТОЯНИЯ 
записывается признак "МАССИВ ЧТЕНИЯ НЕ НАЙДЕН".
     Если по окончании считывания сектора не совпали Контрольные суммы, то в 
Регистр СОСТОЯНИЯ записывается признак ОШИБКА, и выполнение команды ОБРЫВАЕТСЯ.

     При чтении массива данных из поля сектора в Регистр ДАННЫХ микросхемы,
КАЖДЫЙ байт сопровождается сигналом СТРОБ ДАННЫХ (вывод DRQ микросхемы;
6-й бит порта #FF, контроллера ТРДОС).

     Если текущий байт не был считан из Регистра ДАННЫХ по сигналу СТРОБ ДАННЫХ
до прихода следующего байта, то в регистр ДАННЫХ записывается следующий
байт, а в Регистре СОСТОЯНИЯ записывается признак ПОТЕРЯ ДАННЫХ.

* КОМАНДА  ЗАПИСЬ СЕКТОРА ,(секторов).
......................................
   Команда выполняется после того, как микросхемой ВГ93 идентифицирована 
область ИАМ сектора, (индексная адресная метка) и подсчитана контрольная
сумма (все это происходит автоматически после подачи команды и не зависит от 
программиста).
    Перед командой необходимо:
    1. Установить головку на нужный ЦИЛИНДР.
    2. в Регистр СЕКТОРА занести номер требуемого СЕКТОРА.

   КОД команды.
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬──0──┐
│    │     │     │      │      │      │      │     │
│ 1  │  0  │  1  │   М  │  S   │  E   │  C   │ А   │
└────┴─────┴─────┼──────┴──────┴──────┴──────┴─────┘
                 │      МОДИФИКАТОР
При:
M=0 - запись ОДНОГО сектора, содержимое Регистра СЕКТОРА увеличивается на 1.
М=1 - после записи одного сектора,содержимое Регистра СЕКТОРА увеличивается 
      на 1 и начинается запись следующего, и так до последнего сектора на 
      ДОРОЖКЕ.
S=0 - сторона диска НИЗ.
S=1 - сторона диска ВЕРХ.
Е=0 - нет задержки для установки головки дисковода.
Е=1 - задержка в 15 мс. для установки головки после сигнала HLD микросхемы 
      (готовность).
С=0 - сторона диска не проверяется.
С=1 - проверка стороны диска в процессе идентификации.
А=0 - запись в область ИАМ признака - "сохранения данных (#FB) (без стирания)".
A=1 - запись в ИАМ признака - "стирать данные разрешено (#F8)".

     Если в процессе идентификации микросхема не находит в ИАМ области НОМЕР 
нужного СЕКТОРА, или же вообще не находит ИАМ, то в Регистре СОСТОЯНИЯ 
записывается признак МАССИВ ЧТЕНИЯ НЕ НАЙДЕН.

     После того, как ИАМ найдена, следует запрос данных - сигнал DRQ. 
Микросхемой записываются (автоматически) нужные пробелы в секторе (12 нулей) 
перед областью данных, затем записывается "Адресная метка данных" и только
затем сами данные.
     Перед каждым запросом следующего байта данных микросхемой выставляется 
Строб ДАННЫХ, (выход DRQ).
     Если на запрос DRQ в регистр данных не будет помещен следующий байт для 
записи, то в регистре СОСТОЯНИЯ  выставится  признак ПОТЕРЯ ДАННЫХ, а на
диск запишется байт 00 !
     После записи всего массива данных микросхемой автоматически записывается 
контрольная сумма в 2 байта и байт #FF.

              KОМАНДЫ ТРЕТЬЕГО ТИПА.
              ----------------------
* КОМАНДА  ЧТЕНИЯ АДРЕСНОЙ МЕТКИ .
...................................
     Команда выполняется тогда, когда головка дисковода находится в рабочем 
положении, т.е. прижата к диску (сигнал HLD=1). Считываются ШЕСТЬ байтов 
ИНДЕКСНОЙ области диска, включая Контрольную сумму (Номер цилиндра, сторона  
диска, тип сектора, номер сектора, 2 байта контр.суммы).
     Все байты сопровождаются СТРОБОМ чтения БАЙТА (вывод DRQ или 6-й бит порта 
#FF). При выполнении команды содержимое Регистра ДОРОЖКИ пересылается в
Регистр СЕКТОРА и запоминается.

     По окончании выполнения команды генерируется сигнал INTRQ (7 бит порта 
#FF).
   КОД команды.         │
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬──0─┐
│    │     │     │      │      │      │      │    │
│ 1  │  1  │  0  │   0  │  0   │  E   │  0   │  0 │
└────┴─────┴─────┴──────┴──────┴─┬────┴──────┴────┘
                                 │
                                 - МОДИФИКАТОР
При:
Е=0 - нет задержки для установки головки дисковода.
Е=1 - задержка в 15 мс. для установки головки после сигнала HLD микросхемы 
      (готовность).

* КОМАНДА: ЧТЕНИЕ ДОРОЖКИ ЦЕЛИКОМ.
.................................
     По  этой  команде считывается ВСЯ информация с дорожки, вместе с индексным 
массивом,пробелами и областью  данных.  Во время чтения НЕ выдается СТРОБ
чтения  БАЙТА и не проверяются контрольные суммы. Применяется, в основном, эта 
команда в диагностических целях, например, для юстировки головок дисковода или 
в программах типа "ТРЕК КОПИР".

   КОД команды.
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬─0─┐
│    │     │     │      │      │      │      │   │
│ 1  │  1  │  1  │   0  │  0   │  E   │  0   │  0│
└────┴─────┴─────┴──────┴──────┴─┬────┴──────┴───┘
                                 │
                                 - МОДИФИКАТОР

При:
Е=0 - нет задержки для установки головки дисковода.
Е=1 - задержка в 15 мс. для установки головки после сигнала HLD микросхемы 
      (готовность).

* КОМАНДА: ЗАПИСЬ ДОРОЖКИ ЦЕЛИКОМ.
..................................
     Эта  команда применяется для ФОРМАТИРОВАНИЯ диска. Запись информации 
происходит за ОДИН РАЗ на целую дорожку. При форматировании вся необходимая  
информация должна находиться в ОЗУ/ПЗУ и содержать все пробелы и индексные 
метки.

   КОД команды.
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬───0─┐
│    │     │     │      │      │      │      │     │
│ 1  │  1  │  1  │   1  │  0   │  E   │  0   │  0  │
└────┴─────┴─────┴──────┴──────┴─┬────┴──────┴─────┘
                                 │
                                 - МОДИФИКАТОР
При:
Е=0 - нет задержки для установки головки дисковода.
Е=1 - задержка в 15 мс. для установки головки после сигнала HLD микросхемы 
      (готовность).
     При выполнении команды ЛЮБАЯ информация запишется на дорожку, кроме 
некоторых байтов. А именно: появление  байтов  #F5...#FE интерпретируются как
начало СЛУЖЕБНЫХ МЕТОК. БАЙТ #F5 - запись кода #А1, инициализация подсчета 
контрольной суммы.
БАЙТ #F6 - запись кода С2 - индексная метка.
БАЙТ #F7 - запись контрольной суммы.
БАЙТ #FB - адресная метка данных.
БАЙТ #FE - адресная метка ИНДЕКСНЫХ данных.
     Все это справедливо для записи на диск ДВОЙНОЙ плотности (с 
модифицированной частотной мадуляцией). Для одинарной плотности байты меток 
будут немножко другими, но такие дисководы стали уже редкостью и рассматривать 
одинарную плотность записи мы не будем.
     В процессе форматирования эти байты меток не должны записываться в область 
пробелов и в область для данных! Подробнее массив данных для форматирования 
дисков мы рассмотрим в отдельной главе.

             КОМАНДЫ ЧЕТВЕРТОГО ТИПА.
             ........................
* КОМАНДА "ПРИНУДИТЕЛЬНОЕ ПРЕРЫВАНИЕ".
     Команда предназначена для завершения выполняемой операции и может быть 
записана  в Регистр КОМАНД в любой момент времени.
                КОД команды.
┌─7──┬──6──┬──5──┬───4──┼───3──┬───2──┬───1──┬───0─┐
│    │     │     │      │      │      │      │     │
│ 1  │  1  │  0  │   1  │  m3  │  m2  │  m1  │  m0 │
└────┴─────┴─────┴──────┼──────┴──────┴──────┴─────┘
                        │      МОДИФИКАТОР
При:
m3=m2=m1=m0  =  0  команда прекращается, но сигнал JNTRQ не вырабатывается 
                (порт #FF, 7 байт).
м0  = 1 прерывание происходит при переходе от 0 на 1 на входе CPRDY.
m1  = 1 прерывание происходит при переходе от 1 на 0 на входе CPRDY.
m2  = 1  прерывание по первому индексному сигналу (началу нового оборота диска).
м3 =  1 немедленное прерывание и установка на выходе JNTRQ сигнала ГОТОВНОСТЬ 
      (бит 7, порта #FF).
     Время установки времени перемещения головки в командах ПЕРВОГО типа 
зависит, прежде всего, от уровня на входе 'TEST' микросхемы ВГ93, тактовых 
импульсов на входе CLK, а также от состояния модификаторов команд #F0,#F1.

__________________________________________________
TEST  !   F1  !   F0  !Время перемещения на 1 шаг
      !       !       !при CLK=1 MГЦ  ! при CLK=2
--------------------------------------------------
  1   !    0  !   0   !    6          !     3
--------------------------------------------------
  1   !    0  !   1   !    12         !     6
--------------------------------------------------
  1   !    1  !   0   !    20         !     10
--------------------------------------------------
  1   !    1  !   1   !    30         !     15
--------------------------------------------------
  0   !    -  !   -   !    400        !     200
__________________________________________________

     Любая команда в процессе своего исполнения обновляет регистр СОСТОЯНИЯ  
микросхемы (порт #1F при чтении). С помощью этого регистра как раз и ведется 
"диалог" между компьютером и контроллером о выполнении или невыполнении команд.
     Ниже дана таблица значения битов этого регистра при выполнении различных 
команд. А следом за ней помещена таблица, в которой показаны все команды ВГ93.



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

Визитная карточка - обзор электронных журналов для ZX Spectrum.

Компьютерная новелла - По игре " The Saga"

Компьютеры, которые мы выбираем - Доработка компьютера "ATM-TURBO".

Спектрум в школе - статья о численных методах "Метод Зейделя решения СЛАУ".

Вступление - приветствие от редакции журнала.

Новые программы - копировщик ABCDcopy и утилита для форматирования гибких дисков Floppy Format.

Форум - вопросы и ответы по играм: Jungle Warrior, Buratino, Streaker, Paris Dakar, Bloodwych, Hero Quest, Apollo, Cliff Hanger, Cyber Hordes, Paradise Valley, Star Drive, Laser Platoon, Movie, Where Time Stood Still, The Sceptre, Carrier Command и т.д.

Советы экспертов - по стратегической игре Wellingsto at Waterloo.

Советы экспертов - по стратегической игре Napoleon.

Советы экспертов - по игре Star Fox.

Перекресток драконов - Dungeons & Dragons (первая глава книги об адвентюрных играх).

TR-DOS для начинающих - 5-я глава книги "Общие сведения по дисковой системе ТР ДОС".

Возвращаясь к напечатанному - последний файл диззасемблера TR-DOS.

Читатель-читателю - О железе, софте и прочем компьютера Profi...

Читатель-читателю - Востановление утерянной информации.

Читатель-читателю - Спектрум и Экспертная система.


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

Похожие статьи:
Разбиралка - Описание игры KENNY DALGLISH'S SOCCER MANAGER.
Scene - ZX Spectrum в 1999 году: трейдеры перестали покупать софт
Последняя страница - авторы номера.
Софтятина - обзор новой прессы и игр: Odyssey #2, Oberon #4, Spectrofon 22-23, ZX-Format 7, Amiga #1, Faultless 8, ZX-РЕВЮ 5-6, Amazing 1, X-Reversy, The Last Curieur, Pro Trackerr 3.0.
Конец - послесловие.

В этот день...   21 ноября