City #11
05 мая 1999

Ликбез - полное описание и полный дизассемблер ПЗУ (часть 7).

---------------------------------------------------
                     ЛИКБЕЗ
---------------------------------------------------

(c) П.Ю.Федин

╔═════════════════════════════════════════════════╗
║                                                 ║
║     ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ   ║
║                                                 ║
║              TR-DOS 5.04T (5.03)                ║
║                                                 ║
║              ДЛЯ ПРОФЕССИОНАЛОВ,                ║
║                                                 ║
║               А ТАКЖЕ ДЛЯ ТЕХ,                  ║
║                                                 ║
║             КТО ХОЧЕТ ИМИ СТАТЬ.                ║
║                                                 ║    
╚═════════════════════════════════════════════════╝

                    пpодолжение

             Порты интерфейса BETA DISC

  Для управления интерфейсом BETA DISC используются
порты:
 31 - вывод - регистр команд ВГ-93,  ввод - регистр
состояния ВГ-93.
 63 - регистр дорожки ВГ-93.
 95 - регистр сектора ВГ-93.
 127 - регистр данных ВГ-93.
 255 - вывод - системный регистр, ввод- сигналы DRQ
и INTRQ.
  Порт 31.
  Регистр команд- самый важный. С помощью его прог-
рамма отдает контроллеру команды на проведение опе-
раций. Микросхема может выполнять 11 команд:
   BIN      HEX
0000HVRR #00 - #0F Восстановление.
0001HVRR #10 - #1F Поиск.
001THVRR #20 - #3F Шаг в предыдущем направлении.
010THVRR #40 - #5F Шаг вперед.
011THVRR #60 - #7F Шаг назад.
100MSECA #80 - #9F Чтение сектора.
101MSEC0 #A0 - #BF Запись сектора.
11000E00 #C0,  #C4 Чтение адреса.
11100E00 #E0,  #E4 Чтение дорожки.
11110E00 #F0,  #F4 Запись дорожки.
1101IIII #D0 - #DF Принудительное прерывание.
Флаговые биты:
RR - скорость позиционирования головки:
     ╔══╤══╤═════╗
     ║R1│R0│T шаг║
     ╟──┼──┼─────╢
     ║ 0│ 0│ 6 мс║
     ║ 0│ 1│12 мс║
     ║ 1│ 0│20 мс║
     ║ 1│ 1│30 мс║
     ╚══╧══╧═════╝
Эта таблица справедлива при тактовой частоте 1 мГц.
При сигнале  TEST=0  период равен около 400 мс и не
меняется.
V - проверка номера дорожки после позиционирования.
H - загрузка головки.
T - изменение номера дорожки в регистре дорожки по-
сле каждого шага.
A - тип адресной метки (0 - #FB, 1 - #F8).
C - проверка номера стороны диска при идентификации
индексной области.
E - задержка после загрузки головки на 30 мс.
S - сторона диска.
M - мультисекторная операция.
I - условие прерывания:
   I0 - по переходу привода в состояние "готов".
   I1 - по переходу привода в состояние "не готов".
   I2 - по индексному импульсу.
   I3 - немедленно.
  Команда  "восстановление" осуществляет позициони-
рование на доpожку 0.  Если через  256 шагов сигнал
TR00  не  появится,  то  команда прекращает работу.
Всегда выполняется при сбросе контроллера независи-
мо от готовности дисковода.
  Команда "поиск" - в регистре дорожки должен нахо-
диться текущий номер дорожки, а в регистре данных -
требуемый. Перемещение головки происходит до их со-
впадения.
  Команда "шаг" продвигает головку на 1 шаг. Напра-
вление устанавливается командами "вперед" и "назад"
  Команда "чтение сектора" читает с текущей дорожки
сектор,  номер  которого  задан в регистре сектора.
Сторона диска задается флагом S (0, 1). При устано-
вленном флаге M читаются все сектора до конца доро-
жки.  Флаг  A - тип  адресной метки: при A=1 - #F8,
стирание сектора разрешено; при A=0 - #FB, стирание
запрещено.  Вначале читается идентификатор сектора;
если таковой не найден, то в регистре состояния ус-
танавливается  флаг  "массив не найден". Иначе если
совпали номера дорожки, стороны, сектора  и контро-
льная сумма, то происходит чтение данных: очередной
байт выдается в  регистр  данных  и  сопровождается
сигналом DRQ.  Байт  должен быть считан из регистра
данных  до  появление  следующего, иначе в регистре
состояния  устанавливается  флаг "потеря данных". В
конце чтения  проверяется  контрольная сумма и если
она не совпадает, то в регистре состояния  устанав-
ливается  флаг  "ошибка  в  контрольной сумме". При
этом мультисекторная операция прекращается.
  Команда  "запись  сектора"  в части идентификации
сектора выполняется  подобно предыдущей. Сигнал DRQ
появляется при  запросе первого байта данных. Затем
вычисляются  22  байта  для  двойной плотности (для
одинарной  11)  - пробел между индексной областью и
данными.  После этого,  если регистр данных получил
байт, выдается строб записи  и записываются данные,
начиная  с нулевых байтов и адресной метки. Регистр
данных  должен  получать  очередной байт в ответ на
каждый сигнал DRQ со скоростью записи. Если байт не
получен,  то  в  регистре состояния устанавливается
бит "потеря данных", а на диск записывается байт 0.
 После данных записывается контрольная сумма и байт
- пробел. Сигнал WSTB устанавливается в 0.
 Команда "чтение адреса" считывает 6 байтов первого
попавшегося  идентификатора  сектора, включая конт-
рольную сумму. Если контрольная сумма не совпадает,
то устанавливается флаг  "ошибка в контрольной сум-
ме" и чтение продолжается.  При выполнении этой ко-
манды байт из регистра дорожки помещается в регистр
сектора. По окончании как обычно вырабатывается си-
гнал INTRQ и в регистре  состояния сбрасывается бит
"занято".
  Команда  "чтение дорожки" читает всю информацию с
дорожки, включая  служебную.  При этом  не выдается
строб чтения и не проверяются контрольные суммы.
  Команда "запись дорожки" предназначена для форма-
тирования дисков. Вся информация, включая пробелы и
поля индексов и данных со всеми метками.  Записыва-
ются все байты кроме #F5 - #FE, которые интерпрети-
руются как управляющие адресные метки.  Таким обра-
зом при форматировании  эти байты не могут быть за-
писаны. Список этих байтов вы видите в таблице:
╔═════════╤═══════════════════════════════════════╗
║         │               Hазначение              ║
║   Байт  ├────────────────────┬──────────────────╢
║         │     В режиме FM    │   В режиме MFM   ║
╟─────────┼────────────────────┼──────────────────╢
║      #F5│Не допускается      │Запись метки #A1 в║
║         │                    │MFM               ║
║         │                    │Вычисляется  конт-║
║         │                    │рольная сумма     ║
║      #F6│Не допускается      │Запись метки #C2 в║
║         │                    │MFM               ║
║      #F7│Записывается вычисленная контрольная   ║
║         │                  сумма                ║
║#F8 - #FB│Запись  #F8 - #FB с Запись #F8 - #FB в ║
║         │CLK=#C7             │MFM               ║
║      #FC│Запись #FC с CLK=#D7│Запись #FC в MFM  ║
║         │(индексная метка перед первым индексным║
║         │               массивом)               ║
║      #FD│Запись #FD с CLK=#FF│Запись #FD в MFM  ║
║      #FE│Запись #FE с CLK=#C7│Запись #FE в MFM  ║
║         │Вычисляется контроль│                  ║
║         │ная сумма           │                  ║
║         │(индексная  метка  в  начале индексного║
║         │                массива)               ║
║      #FF│Запись #FF с CLK=#FF│Запись #FF в MFM  ║
╚═════════╧════════════════════╧══════════════════╝

  Команда "принудительное прерывание"  задается для
завершения любой выполняемой команды.  В отличие от
других  команд  она может выдаваться в любой момент
времени. Условие прерывания  зависит от младших би-
тов  команды. Если они равны 0, то команда прерыва-
ется и INTRQ не вырабатывается. При I0=1 прерывание
выполняется  после перехода сигнала CPRDY из 0 в 1;
при I1=1 - из 1 в 0. При I2=1- по поступлению инде-
ксного импульса.  При  I3=1  происходит немедленное
прерывание  команды.  После выполнения этих условий
выдается сигнал INTRQ.

             пpодолжение следует...



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

От редакции - удалось пpиобpести пpинтеp ПУ ИСКPА.01

Что-где-почем - "белый" и "чеpный" списки оpганизаций и частных лиц распространителей ПО для ZX Spectrum'a.

Смайлик - новые анекдоты.

Ликбез - полное описание и полный дизассемблер ПЗУ (часть 7).

Бук - Похождения Штиpлица и дpугие пpиключения Боpмана (пpодолжение).

Реклама - Куплю недоpого чистые дискеты 5,25 дюйма.


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

Похожие статьи:
Две эротические историии - Мне почти тридцать лет, а моей подруге Юле девятнадцать...
Розыск - розыск игр.
Фан-клуб - Сегодня, 21 июня 1999 года исполнилось бы 38 лет лидеру группы "КИНО" Виктору Цою...

В этот день...   17 июля