╔══════════════════════════════════════╗
║Раздел:Открытие; ║
║Статья:Возможности КР1818ВГ93; ║
║Музыка:Kurt ; ║
║Текст :Ворожкин Александр. ║
╚══════════════════════════════════════╝
Статья будет полезна как тем, кто хочет
разобраться с устройством КР1818ВГ93,так
и тем,кто хочет самостоятельно создавать
программы для произвольного форматирова-
ния дискет, чтения необычных форматов,
снятия и постановки защиты и т.д.
Микросхема КР1818ВГ93 является центра-
льным элементом НГМД "Beta disk".Она мо-
жет записывать информацию на диск с оди-
нарной и двойной плотностью.Максимальная
скорость записи и чтения при одинарной
плотности составляет 250Кбит/сек, а при
удвоенной плотности - 500Кбит/сек.
Микросхема вырабатывает сигналы управ-
ления дисководом, обеспечивающие прижим
магнитных головок к поверхности диска и
управление шаговым двигателем,данные для
записи на диск в последовательном коде,
сигналы предкомпенсации данных записи,
сигнал разрешения записи.
С дисковода на микросхему поступают да-
нные,из которых при помощи внешней схемы
необходимо выделить: данные чтения и им-
пульсы синхронизации, а также поступает
сигнал защиты от несанкционированной за-
писи,который генерируется при заклеенной
прорези на дискете,и два сигнала привяз-
ки к диску: TROO (головка на 0-й дорожке
и индексные импульсы,генерируемые специ-
альным отверстием в дискете) от них идет
нумерация секторов на дорожке.
Остается привести примеры программ,ко-
торые помогут вам окончательно разобрат-
ся программированием микросхемы и рабо-
той контроллера "Beta disk".
Для форматирования дискеты предназна-
чена команда ЗАПИСЬ ДОРОЖКИ.Сразу после
прохождения индексного импульса сигнал
DRQ запрашивает данные для записи на до-
рожку.При этом байты 00...F4 записывают-
ся без изменения,а остальные воспринима-
ются как команды:
Байт Одинарная Двойная
плотность плотность
F5 Не допускается Записать код и
начать подсчет
контрольного
кода
F6 Не допускается Записать код
F7 Записать два Записать два
байта контроль байта контроль
ного кода ного кода на
диск
F8-FB, Записать F8-FB Записать F8-FB
FE и начать подс- соответственно
чет контроль-
ного кода
FC,FD, Записать FC,FD Записать FC,FD
FF и FF соответст и FF соответст
венно венно
Приведем примеры содержания массива,
предназначенного для передачи на ВГ93
при форматировании дискеты с одинарной
плотностью и длиной сектора 128 байт и
удвоенной плотностью и длиной сектора
256 байт.В примерах будем указывать код,
количество байт с таким кодом: в скобках
и назначение этих байт.
Одинарная плотность: FF или 00 (40) -
пробел после индексного импульса ;00 (6)
FC (1) - т.н. индексная метка;00 (6);
FE (1) - метка заголовка;XX (1) - номер
дорожки;XX (1) - номер стороны 00 или 01
XX (1) - номер сектора 01...#1A;00 (1) -
длина сектора 128 байт;F7 (1) - запись
двух байт контрольного кода;FF или 00
(11) - пробел после заголовка;00 (6);FB
(1) - метка данных;XX (128) - место для
размещения массива данных;F7 (1) - за-
пись двух байт контрольного кода;FF или
00 (...) - пробел перед следующим секто-
ром.
Удвоенная плотность;4E (80) - пробел
после индексного импульса;00 (12);F6 (3)
запись кода C2;FC (1) - индексная метка
перед первым индексным массивом;4E (50)-
пробел;00 (12);F5 (3) - запись кода A1,
начало вычисления контрольного кода;FE
(1) - метка заголовка;XX (1) - номер до-
рожки 00...4C;XX (1) - номер стороны 00
или 01;XX (1) - номер сектора 01...1A;01
(1) - длина сектора 256 байт;F7 (1) - за
пись двух байт контрольного кода;4E (22)
пробел после заголовка;00 (12) - байт ну
лей,меткам.В конце массива - контрольный
код и один байт FF;F5 (3) - запись A1,на
чало вычисления контрольного кода;FB (1)
метка данных;XX (256) - место для разме-
щения массива данных;F7 (1) - запись
двух байт контрольного кода;4E (...) -
пробел перед следующим сектором.
Длину последнего пробела рассчитайте
сами,исходя из того,что весь массив дан-
ных для записи на дорожку должен зани-
мать не более 6-ти Кбайт.Последующие се-
ктора размечаются точно так же,как и пе-
рвый.В массив данных нельзя включать ко-
ды,которые микросхема может интерпрети-
ровать как команды.Приведенные примеры
не следует воспринимать как единственно
возможные.
Командой OUT 255,...установите необхо-
димую конфигурацию системы перед выпол-
нением команды.Назначение битов этого
порта следующее:
0-й и 1-й - выбор НГМД (0-A,1-B,2-C
3-D);
2-й - сброс микросхемы ВГ93
(0 -сброс,1 - работа);
3-й - имитация сигнала готов-
ности к работе магнит-
ных головок и индексных
импульсов (1 - готов);
4-й - с какой стороной диска
работать (0 или 1);
6-й - одинарная плотность за-
писи (1) или двойная -2
Для работы с 0-й стороной диска в порт
#FF обычно записывается #0C (12),а с 1-й
стороной - #1C (28).
Теперь попробуем переместить магнитную
головку на нужную нам дорожку,например,
восьмую.Для этого выполним команду "ВОС-
СТАНОВЛЕНИЕ": OUT 31,8.Головка передви-
нулась на 0-ю дорожку.Теперь поместим в
РгДор номер текущей дорожки: OUT 63,0 ,
а в РгДан - номер искомой дорожки:
OUT 127,8 и выполним команду "ПОИСК":
OUT 31,24.Как неоднократно указывалось,
команды чтения записи информации должны
в вашей программе непосредственно следо-
вать за вспомогательными командами.
Например:
...
50 OUT 31,24
60 PAUSE 50
70 RANDOMIZE USR 30000
...
По адресу 30000 при этом распологается
программа в машинных кодах.Приведем при-
мер такой универсальной программы для
чтения и записи информации:
ORG 30000 ;Адрес входа в
программу
DI
LD HL,#E800 ;Начальный адрес
массива данных
LD A,#F4 ;Вместо #F4 сюда
можно подставить
код
OUT (#1F),A ;любой другой ко-
манды записи или
чтения
LD C,#7F ;Порт #7F - РгДан
микросхемы ВГ93
CALL METKA
EI
RET
METKA IN A,(#FF) ;Считываем вспомо-
гательный порт
AND #C0 ;Выделяем и анали-
зируем биты,соответствующие сиг-
JP Z,METKA ;налам DRQ (6-й) и
RET M ;INTRQ (7-й) ВГ93
OUTI ;Для выполнения
JP METKA ;команд чтения не-
обходимо заменить OUTI на INI
В таком виде программа выполнит форма-
тирование дискеты,т.е.разметит дорожку,
на которой находится магнитная головка,
в соответствии с содержанием массива,
размещенного в памяти с адреса 59392.
Содержание этого массива можете найти в
вышеуказанном тексте,посвященном команде
"ЗАПИСЬ ДОРОЖКИ".
Если вместо кода команды "ЗАПИСЬ ДОРОЖ-
КИ" подставить код команды "ЗАПИСЬ СЕК-
ТОРА" и записать предварительно номер
нужного сектора в РгСек (например,коман-
дой OUT 95,N),то информация,расположен-
ная в памяти с адреса 59392,запишется в
этот сектор на диске.Аналогично можно
прочитать с диска и записать в память
с адреса 59392 (или другого - по вашему
желанию) любую информацию,доступную ко-
мандам "ЧТЕНИЕ СЕКТОРА","ЧТЕНИЕ АДРЕСА",
"ЧТЕНИЕ ДОРОЖКИ".
Other articles: