Микроконтроллер КР1818ВГ93
Микроконтроллер КР1818ВГ93 является «сердцем» дискового интер-
фейса. С одной стороны он связан с дисководом, с другой стороны — с
микропроцессором. Работать с микроконтроллером «напрямую» несколько
труднее, чем с командами интерпретатора, но это с лихвой окупается приоб-
ретаемыми возможностями. Однако следует иметь в виду, что в силу неко-
торых аппаратных особенностей дискового интерфейса Beta Disk не все из
описанных возможностей могут быть реализованы.
Регистры
Для программиста контроллер представляет «черный ящик», содер-
жащий несколько регистров: для команд, для данных, для информации.
Каждый такой регистр представлен одним адресом внешнего устройства,
обращаясь по которому можно программировать работу микроконтроллера.
Всего программисту доступно пять регистров, рассмотрим их.
Регистр команд предназначен для программирования контроллера.
Сами команды, а также их режимы, задаются отдельными битами этого
регистра. Команда начинает выполняться сразу, как только будет записана.
Корректность заданной команды, а также состояния микроконтроллера при
ее выполнении отражает другой регистр — регистр состояний. Каждый бит
в нем указывает на определенный параметр и связан с выполнением
конкретной команды. Особенностью регистров команд и состояний является
их однонаправленность, то есть информацию можно передавать только в
одну строну: в регистр команд можно только записывать, а из регистра
состояний только считывать. Это позволило выделить им один и тот же адрес
в области внешних устройств.
Для указания текущих координат позиционирования служат соответ-
ственно регистры дорожки и сектора. Регистр дорожки хранит номер физи-
ческой дорожки, на которой находится магнитная головка дисковода (обра-
тите внимание, что номер стороны задается специальным битом в системном
регистре дискового интерфейса). Начальный номер 0, а конечный опреде-
ляется типом используемого дисковода, но в принципе может принимать
любое значение, вплоть до 255. Регистр сектора задает номер первого
физического сектора для выполняемой команды, обычно нумерация начи-
нается с 0.
Регистр данных используется для передачи информации, а также
вспомогательных параметров некоторых команд.
Последние три регистра (дорожки, сектора и данных) являются дву-
направленными. В табл. 13 приведено распределение регистров в адресном
пространстве внешних устройств ZX Spectrum.
Как уже говорилось,
в дисковом интерфейсе
есть одна особенность, свя-
занная с теневым положе-
нием ПЗУ. К сожалению,
это относится и к регистрам
микроконтроллера. Их ад-
реса появляются в адрес-
ном пространстве только в
момент работы дисковой
системы. Из бейсик-систе-
мы регистры недоступны. Не сделано, также никаких попыток обеспечить
прямой доступ к ним из дисковой системы. Несмотря на это, «достать»
микроконтроллер все-таки возможно, для этого используются «обрывки»
программ ОС.
Команды
Команды микроконтроллера можно сгруппировать по однотипности
выполняемых функций: восстановительные, позиционирования, чтения/за-
писи основные и чтения/записи вспомогательные.
Для каждой команды (иногда для группы) характерны свои значения
битов в регистре состояний, поэтому команды и назначения битов будем
описывать совместно. Однако бит 0 одинаков для всех команд, он показывает
состояние «занято», иными словами если этот бит в 1, то контроллер занят
выполнением какой-либо команды. При этом код очередной команды нельзя
записывать в регистр команд. Бит 7, также во всех командах, указывает на
состояние готовности дисковода — единица в этом разряде сигнализирует,
что дисковод готов к операции.
Восстановительные
В эту группу входят две команды: восстановления и принудительного
прерывания.
Восстановление OOOOhvxx
Команда восстановления используется для инициализации микросхе-
мы КР1818ВГ93, обеспечивая установку магнитной головки выбранного
дисковода в исходное состояние (на нулевую дорожку). Команда имеет
следующие параметры:
h бит определяет положение магнитной головки дисковода во время выпол-
нения команды. Если он обнулен, то головка поднята, если установлен —
находится в рабочем положении (опущена на дискету). Следует учиты-
вать, что при h=0, контроллер не выдает сигнал на включение двигателя
дисковода.
v в случае установки магнитной головки в рабочее положение (h=l) этот
бит используется для задания режима проверки положения головки. Если
бит установлен, то в конце операции содержимое регистра дорожки
сравнивается с действительным номером, считанным с дискеты.
хх эти биты определяют время между сигналами на перемещение магнитной
головки дисковода, иными словами, скорость перемещения. Значение 00
соответствует 6 мс, 01 — 12 мс, 10 — 20 мс и 11 — 30 мс«. Обычно
выбирают наименьшее время перемещения, а в случае возникновения
ошибок его увеличивают. Именно так и делает TR-DOS в своих системных
переменных, находящихся по адресам 23802...23805.
Принудительное прерывание 1101j3j2jijo
Данная команда прерывает выполнение любой команды микрокон-
троллера. Это единственная команда, код которой может быть записан в
регистр команд микроконтроллера независимо от значения бита 0 систем-
ного регистра. Биты jo...j3 определяют условие, при котором произойдет
прерывание. Если все эти биты обнулены, то выполняемая в данный
момент команда будет немедленно остановлена. При этом микросхемой не
вырабатывается сигнал подтверждения завершения выполнения команды.
Если какой-либо из битов jo...j3 установлен*, текущая команда будет пре-
рвана**:
Jo после перехода сигнала CPRDY из низкого уровня в высокий;
Jl после перехода сигнала CPRDY из высокого уровня в низкий;
]2 после прихода индексного импульса;
немедленно.
Для восстановительных команд установка бита регистра состояния
имеет следующие значения:
б на дискете закрыта прорезь для защиты записи, физическая запись на
такую дискету невозможна;
5 магнитная головка находится в рабочем положении;
4 ошибка позиционирования, то есть содержимое регистра дорожки не
совпадает с реальным положением магнитной головки;
3 ошибка в контрольном коде, которая возникает, если не удалось прочи-
тать сектор***;
2 магнитная головка находится в исходном положении;
1 пришел индексный импульс, иными словами переход этого бита из 1 в
0 означает, что магнитная головка находится в начале дорожки.
Позиционирования
В группу команд позиционирования входят команды перемещения
магнитной головки на один шаг и команда поиска. Параметры команд, а
также значения битов системного регистра такие же, как для восстановитель-
ных команд.
*) При нескольких одновременно установленных битах, прерывание про-
изойдет по первому встретившемуся событию.
**) При этом микросхемой будет выработан сигнал подтверждения заверше-
ния выполнения команды.
***)При проверке положения магнитной головки с дискеты считывается
первый встретившийся заголовок сектора, из которого и берется номер
дорожки.
Шаг вперед OlOihvxx
Команда перемещает магнитную головку на один шаг вперед, то есть
к центру дискеты (в строну увеличения номера дорожки). Параметр i
определяет состояние регистра дорожки при выполнении команды. Если i=l,
то при каждом шаге регистр изменяет свое значение, в противном случае
его содержимое остается неизменным. Этот параметр имеет то же значение
и в других командах этой группы.
Шаг назад 01 lihvxx
Команда перемещает магнитную головку на один шаг назад, то есть
к периферии дискеты (в строну уменьшения номера дорожки).
Шаг OOlihvxx
По этой команде происходит перемещение магнитной головки на один
шаг. Направление при этом не изменяется — оно будет происходить в ту же
сторону, что и по предыдущей команде.
Поиск 0001 hvxx
Эта команда производит автоматическое позиционирование магнит-
ной головки на заданную дорожку. Номер требуемой дорожки необходимо
поместить в регистр данных микроконтроллера. Предполагается также, что
регистр дорожки содержит действительный номер дорожки на котором
находится магнитная головка. Желательно (но не обязательно) выполнять
команду при v=l.