Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[39]

17-й дорожке, в ПОЛЕ ДАННЫХ сектора 00 второй и третий байт укажут, где продолжается каталог.

Каждому файлу в каталоге (на секторе в ПОЛЕ ДАННЫХ отводится поле файла, имеющее фиксированную длину 36 байт. Структура поля:

TR

SP

Т

NAME

OS

R

1 байт

1 байт

1 байт

30 байт

2 байт

1 байт

Здесь:

TR - номер дорожки, SR - номер секторов, на которых начинают размещаться данные файла; QS - число секторов, занимаемых файлом; Т - тип файла: 2 -файл на языке БЕЙСИК; 4 - двоичный файл; 0 - текстовый файл. Кроме того, байт Т определяет, защищен или нет файл по записи. Если файл защищен, этот байт увеличивается на 128 ( о 80). Байт R оставлен для резерва.

Под имя файла NAME отведено 30 байт. Отметим, что TR и SR могут содержать ссылку на ссылку, где размешаются данные файла. В этом случае они указывают на дорожку и сектор, содержащие такую ссылку в байтах 13 и 14 соответственно. Таким образом, секторы, отведенные под данные файлов, имеют ссылки в байтах 13 и 14 на участки, где эти данные начинаются или продолжаются.

При удалении файла в каталоге соответствующий байт TR, указывающий начало дорожки, увеличивается на 160 ( Ц АО). Данные файла при этом сохраняются.

В прил. 2 приведена программа DRW. Программа работает в диалоге, задавая следующие вопросы:

V? - указать номер диска (как правило, указывается 254, но если указать 0, будет работать с любым диском);

R/W? - читать или писать, ответ: 1 - для чтения, 2 - для записи;

Т? - трек, ответ - номер дорожки (0 - 34);

S? - сектор (0 - 15).

При задании режима чтения программа считывает указанный далее сектор и записывает его в буфер ( & 2000 - # 20FF), после чего переводит данные в "видимые" символы и распечатывает на экране ВКУ по следующим правилам:

коды 32 -127 отображаются в режиме NORMAL (белым по черному);

коды 128 + 32 + 128 + 127 отображаются в режиме INVERSE (черным по белому);

коды 0-31 (контрольные байты) отображаются на экране красным цветом (по черному), т.е. @ - байт)! 00; А - байт ft 01, ...; Z - fi 1А и т.д.

Коды 128 + 127 + 31 (контрольные байты) отображаются черным по красному.

Таким образом, любой байт от # 00 до И, FF становится видимым. Использование этой программы может быть полезным при работе с ДОС. Заметим, что если указать режим записи (2 в ответе на вопрос R/W?), то в указанный сектор будет записана информация из ячеек Д 2000 - # 20FF. Это можно использовать для корректировки сбойных участков на ГМД, включая каталог.

УПРАВЛЕНИЕ РАБОТОЙ НАКОПИТЕЛЯ

Управление дисководом осуществляет контроллер НГМД. Включение контроллера в работу производится сигналом DS. Этот сигнал вырабатывается при обращении


центрального процессора по любому из адресов COXO-COXF. Здесь X = 8 + N, где N - номер разъема, в который установлен контроллер. В формировании сигналов управления дисководом участвуют следующие адреса:

С0Х1 - включение фазы <р0;

СОХЗ - включение фазы ф1;

С0Х5 - включение фазы ч>2\

С0Х7 - включение фазы 3;

СОХО - выключение фазы 0;

С0Х2 - выключение фазы

С0Х4 - выключение фазы <р2;

С0Х6 - выключение фазы 3;

С0Х8 - выключение двигателя вращения дискеты;

С0Х9 - включение двигателя вращения;

СОХА - включение привода № 1 (первого дисковода);

СОХВ - включение привода № 2 (второго дисковода);

СОХС - чтение данных из регистра чтения;

C0XD - запись данных в регистр записи;

СОХЕ - включение режима чтения даных .с ГМД в регистр чтения;

C0XF - включение режима записи данных из регистра записи на ГМД.

Дисковый контроллер обеспечивает управление двумя дисководами. В каждый момент времени контроллер может управлять только одним НГМД, который выбирается инструкциями:

LDA д С08А , X - выбор дисковода 1 ;

LDA $ С08В , X - выбор дисковода 2, где X = N0 (т.е. X = NX ft 10).

Двигатель вращения, приводящий в движение ГМД, включается на выбранном дисководе после выдачи команды включения LDA ft С089, X. Управляющая программа ДОС реализует необходимое запаздывание до достижения номинальной частоты вращения (300 об/мин).

Устройство выключается при выдаче микропроцессором команды LDA Д С088, X. При этом контроллер осуществляет задержку на 5 - 6 оборотов.

Во время вращения дискеты на нее можно записать или считать с нее информацию с помощью магнитной головки. Перемещение (позиционирование) магнитной головки осуществляет шаговый двигатель. Шаговый двигатель можно представить в виде ротора с четырьмя устойчивыми состояниями по углу поворота, присоединенного через редуктор к магнитной головке. Включая одну из фаз (0 - ip3), можно повернуть ротор в соответствующее положение. Целе-собразным является только последовательное включение фаз. Прямая последовательность ф,<р2, ifQ, ifO,... перемещает головку к центру диска; обратная последовательность 0, у&, <?2, 1, ... - к внешнему краю.

Перемещение головки на одну дорожку осуществляется переключением фаз и остановкой в несоседней фазе, т.е. у/0 -* 1-> 2 или f>2 -* <рЗ -»• 0 и т.д.

После включения питания ДОС не имеет информации о текущем положении головки относительно поверхности мини-диска. Поэтому требуется возвращение головки в исходное положение (дорожка 00), т.е. выполняется операция ВОЗВРАЩЕНИЕ К ДОРОЖКЕ 00 (RECALIBRATE). Операцию реализует ДОС генерацией 80 импульсов в направлении перемещения "назад". Такое число импульсов


гарантирует возвращение головки в крайнее (исходное) положение, которое обозначено как дорожка 00. После возвращения к дорожке 00 шаговый двигатель останавливается с включенной фазой 0, что определяет положение последующих дорожек. Выполнив эту операцию, ДОС получает информацию о текущем положении головки, и позиционирование любой дорожки осуществляется вычислением разности между текущей и желаемой дорожкой. Эта разность преобразуется в число переключений фаз посредством выполнения инструкций типа:

LDA С080.Х - выключение фазы;

LDA С081.Х - включение следующей фазы.

При движении головки необходимо формировать задержки приблизительно 1 мс при проходе фазы и не менее 2 мс для фиксации головки в конечном положении.

После выбора соответствующего дискового устройства и установки (позиционирования) головки относительно желаемой дорожки ДОС получает возможность выполнять основные операции ЧТЕНИЕ и ЗАПИСЬ. Эти операции рассматриваются как макрооперации типа ЗАПИСЬ ПОЛЯ АДРЕСА; ЗАПИСЬ ПОЛЯ ДАННЫХ; ЧТЕНИЕ ПОЛЯ АДРЕСА; ЧТЕНИЕ ПОЛЯ ДАННЫХ.

Каждая из этих операций может рассматриваться как ЗАПИСЬ или ЧТЕНИЕ последовательности из определенного числа байтов, кодированных указанными методами. Работая под непосредственным управлением ДОС, контроллер выполняет только элементарные операции: считывание байта; проверка защиты; запись байта; ввод байта.

На каждом ГМД имеется вырез зашиты записи. Он расположен на левом краю ГМД. Если вырез зашиты записи заклеен, вырабатывается сигнал "Зашита записи" (WRITE PROTECT), и запись на ГМД невозможна.

Контроллер работает либо в режиме чтения, либо в режиме записи информации. Режим чтения включается путем выполнения любой операции процессора с адресом о СОХЕ. После этого можно считывать байты с фиксированной дорожки. Затем контроллер воспринимает последовательные данные с диска и посредством регистра сдвига преобразует их в параллельный байт D7 - D0. ДОС следит за состоянием регистра посредством инструкции. LDA СОВЕ. X

RDBYTE: LDA С08С, X BRL RDBYTE

Проверяется регистр чтения # СОХС до тех пор, пока старший бит по адресу # СОХС не станет равным единице. При установлении D7 в единицу считается, что очередной байт уже воспринят контроллером и ДОС его может обрабатывать.

Процесс преобразования последовательной информации в параллельную управляется микропрограммным автоматом контроллера НГМД. Он вырабатывает необходимые интервалы времени, на протяжении которых "захватываются" поступающие с дискового устройства импульсы. Если за 4 мкс на входной шине не появится импульс, то в регистр сдвига записывается нуль, а при появлении импульса -единица. После этого значение регистра чтения обнуляется, т.е. считывание байта из регистра чтения возможно только один раз.

Для примера предположим, что нам нужно считать три байта с фиксированной дорожки ГМД. Будем считать, что значение регистра X равно номеру разъема, к которому подключен контроллер, умноженному на 16 ( VL 10), т.е. в старшей тетраде регистра находится номер разъема, а в младшей - 0:



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53] [стр.54] [стр.55] [стр.56] [стр.57] [стр.58] [стр.59] [стр.60] [стр.61] [стр.62] [стр.63] [стр.64] [стр.65] [стр.66] [стр.67] [стр.68] [стр.69] [стр.70] [стр.71] [стр.72] [стр.73] [стр.74] [стр.75] [стр.76] [стр.77] [стр.78] [стр.79] [стр.80] [стр.81] [стр.82] [стр.83] [стр.84] [стр.85] [стр.86] [стр.87] [стр.88] [стр.89] [стр.90] [стр.91] [стр.92] [стр.93] [стр.94] [стр.95] [стр.96] [стр.97] [стр.98]