TR-DOS для профессионалов и любителей 1993 г.

Приложение 2 - система команд БИС контроллера 1818 ВГ 93.


СИСТЕМА КОМАНД БИС КОНТРОЛЛЕРА 1818 ВГ 93

В BETA-интерфейсе регистр команд/состояния имеет адрес #1F. Микросхема обеспечивает выполнение 11 команд:

BIN HEX

0000 hvrr 00...0F восстановление

0001 hvrr 10...1F поиск

001t hvrr 20.3F шаг головки (в том же направлении)

010t hvrr 40...5F вперед

011t hvrr 60.7F назад

100m seca 80...9F чтение сектора

101m sec0 A0...BF запись сектора

1100 0e00 C0,C4 чтение адреса

1110 0e00 E0,E4 чтение дорожки

1111 0e00 F0,F4 запись дорожки (при форматировании)

1101 iiii D0.DF принудительное прерывание

v - проверка номера дорожки после позиционирования h - загрузка головки

t - изменение номера дорожки (в рег. дорожки) после каждого шага a - тип адресной метки (защита данных) (0-#FB, 1-#F8) c - проверка номера стороны диска при идент. индексной области e - задержка после загрузки головки (сигнала HLD) на 30 мс s - сторона диска

m - мультисекторная операция (обрабатываются несколько секторов) i - условие прерывания:

10 - по переходу привода в состояние "Готов"

11 - по переходу привода в состояние "Не готов"

12 - по индексному импульсу

13 - немедленное прерывание

В TR-DOS как правило для команд используется маска OR #18.

Команда "ВОССТАНОВЛЕНИЕ" осуществляет установку головки на нулевую дорожку магнитного диска. Если через 256 шагов не появится сигнал TR00, команда заканчивается. Всегда выполняется при сбросе контроллера независимо от готовности накопителя.

Команда "ПОИСК" - в регистре дорожки находится текущий номер дорожки, а в регистр данных записывается требуемый. Перемещение осуществляется до их совпадения. Должен быть установлен флаг v (бит D2 = 1).

Команда "ШАГ" обеспечивает выдачу импульса STEP на перемещение магнитной головки на один шаг в том же направлении, а "ШАГ ВПЕРЕД", "ШАГ НАЗАД" - изменение сигнала DIRC - направление перемещения.

Команда "ЧТЕНИЕ СЕКТОРА" обеспечивает чтение сектора, номер которого на текущей дорожке записан в регистр сектора. Сторона диска задается флагом s (0,1). При установленном флаге m - мультисекторная операция (номер сектора автоматически увеличивается, пока не будет достигнут конец дорожки, и операция повторяется). Длина сектора определяется при форматировании (см. далее). Флаг a - тип адресной метки защиты данных. При a=1 записывается байт #F8, разрешающий стирание сектора, при a=0 - #FB, запрещающий. Вначале считывается идентификатор сектора (см. далее); если адресная метка не обнаружена, в регистре состояния устанавливается признак "массив не найден". Если совпали номера дорожки, сектора, стороны и код CRC, происходит чтение данных: очередной байт выдается в регистр данных и сопровождается сигналом DRQ (готовность данных). Регистр должен быть считан до приема следующего байта; в противном случае в регистре состояния устанавливается флаг "потеря данных". В конце чтения сравнивается контрольная сумма CRC; если не совпадает, устанавливается флаг "ошибка в контрольном коде", мультисекторная операция прекращается.

Команда "ЗАПИСЬ СЕКТОРА" выполняется подобно предыдущей в части идентификации сектора. Сигнал DRQ генерируется, запрашивая первый байт данных. Затем вычисляются 22 байта для двойной (11 - для одинарной) плотности - пробел между индексной областью и данными. После этого, если DRQ обслужен и регистр данных получил байт, выдается строб WSTB и записываются данные, начиная с нулевых байт и адресной метки (см.формат). Регистр данных должен получать очередной байт на каждый сигнал запроса данных DRQ, со скоростью записи. Если байт не получен, в регистре состояния устанавливается флаг "потеря данных", а на диск записывается байт "#00". После данных записываются два байта контрольной суммы CRC,

вычисленной контроллером, как циклическая сумма A=XA15+XA12+XA5+1, и байт - пробел. Сигнал WSTB снимается (устанавливается в 0).

Команда "ЧТЕНИЕ АДРЕСА" выполняет считывание 6 байт индексной области (включая CRC), и передачу их компьютеру. Если CRC не совпадает, устанавливается бит состояния "ошибка CRC", и чтение продолжается. При выполнении этой команды байт из регистра дорожки запоминается в регистре сектора. По окончании как обычно, устанавливается сигнал готовности INTRQ и сбрасывается бит состояния "занято".

Команда "ЧТЕНИЕ ДОРОЖКИ" выполняет считывание всей информации на дорожке, включая индексный массив, CRC, идентификаторы, пробелы и данные. При этом не выдается строб чтения и не проверяется CRC, что позволяет использовать данную команду в диагностических целях.

Команда "ЗАПИСЬ ДОРОЖКИ" предназначена для форматирования ГМД. Вся информация для этой процедуры должна быть сформирована ЭВМ, включая пробелы и поля индексов и данных со всеми метками. Любая последовательность данных записывается, за исключением байт #F5-#FE, которые интерпретируются как управляющие адресные метки данных. В момент приема в регистр данных байтов #F8-#FE для режима ЧМ (FM) или байта #F5 для режима МЧМ (MFM), генерируется контрольный код. При появлении байта #F7 код CRC (2 байта) записывается на диск. Таким образом, при форматировании эти байты не могут присутствовать в области пробелов, индексных массивов и данных (см. формат).

Команда "ПРИНУДИТЕЛЬНОЕ ПРЕРЫВАНИЕ" задается для завершения любой выполняемой команды. В отличие от других команд она может быть записана в регистр команд в любой момент времени. Условие выполнения зависит от младших битов, команды (i0...i3): если они равны "0", выполнение текущей команды прекращается и INTRQ не вырабатывается. При i0=1 прерывание выполняется после перехода сигнала CPRDY из низкого уровня в высокий, при i1=1 -наоборот, из "1" в "0". При i2=1 - по поступлению индексного импульса (IP), т.е. началу дорожки. При i3=1 происходит немедленное прерывание команды. После выполнения этих условий формируется сигнал INTRQ.

СТРУКТУРА РЕГИСТРА СОСТОЯНИЯ 1818 ВГ 93

После выполнения команды в регистре состояния записывается байт состояния контроллера, зависящий от результата выполнения команды:

КОМАНДА

РАЗРЯД РЕГИСТРА СОСТОЯНИЯ

7

6

5

4

3

2

1

0

вспомогательная

R

P

H

F

C

T

I

Q

чтение адреса

R

0

0

N

C

W

D

Q

чтение сектора

R

0

A

N

C

W

D

Q

чтение дорожки

R

0

0

0

0

W

D

Q

запись сектора

R

P

E

N

C

W

D

Q

запись дорожки

R

P

E

0

0

W

D

Q

Значение флаговых битов: R - готовность накопителя (1=не готов) P - защита записи (1=диск защищен) H - загрузка головки (1=загружена) E - ошибка записи (1=ошибка) A - тип AM (1=запись со стиранием) F - ошибка поиска (1=позиция не верна) N - массив не найден (1=не найден) C - ошибка в контрольном коде CRC (1=CRC не верен) T - головка в исходном положении (1=нулевая дорожка) W - потеря данных (1=данные потеряны) I - индексный импульс (1=импульс) D - запрос данных (1=запрос данных) Q - занято (1=идет выполнение команды)




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
Читатель-читателю - Эффективная работа с дисководом .
Софт - подробный обзор: логическая игра Clickmania, ZX-AMP аналог известного проигрывателя WinAmp для спектрума.
От авторов - WRECKER - БОЛЬШОЙ ЗАСPАHЕЦ!!!
DiHalt`05 - первый этап этой истории, имевший место быть в далеком 1999 году, будет изложен банальной и неусложненной прозой.
Обозрение - НОВЬЕ?.. Рассуждения на тему свежего софта, список новых игр.

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