╔══════════════════════════════════════╗ ║Раздел:Открытие; ║ ║Статья:Возможности КР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 (или другого - по вашему желанию) любую информацию,доступную ко- мандам "ЧТЕНИЕ СЕКТОРА","ЧТЕНИЕ АДРЕСА", "ЧТЕНИЕ ДОРОЖКИ".