-=RUS=- | Дата: Вторник, 11.11.2014, 16:12 | Сообщение # 1 |
Генералиссимус
Группа: Администраторы
Сообщений: 352
Статус: Offline
| (ASCER-1.doc)
(С) ALER 29.02.88
Транслятор текстов 'АСКЕР-1'
Версия 29.02.88
Программа 'АСКЕР-1' предназначена для преобразования формата текстовых файлов. Этимология названия (кстати, с ударением на первый слог) связана с жаргонным "аск" - символ ASCII или, при- менительно к БК0010 - КОИ-8. Загруженный файл рассматривается как текст (набор асков), написанный в заданном входном формате. АСКЕР преобразует формат текста в соответствии с указанными ниже особенностями и ограни- чивает длину строки 63-мя символами (избыток переносится). Все неопознанные аски, т.е. невозможные в указанном входном формате коды, меняются на заранее заданный символ. Управление АСКЕРом осуществляется через "меню" и не нуждается в пространных комментариях. На запросы АСКЕРа нужно отвечать: "нет" - 'Н' (в любом регистре) или "да" - любая клавиша.
ИСКЛЮЧЕНИЕ: на запрос о замене неопознанных асков символом ¯¯¯¯¯¯¯¯¯¯¯ [&] ответом "да" является 'ВВОД'; любой другой символ будет записан вместо предложенного.
Автор надеется, что экономия Вашего времени оправдает его затраты на разработку "меню".
"ЛЕКСИКОН" ПРЕОБРАЗУЕМЫХ ФОРМАТОВ ┌────────────────┬─────┬─────┬─────────┬─────┬─────┬─────┬─────┐ │ ФОРМАТ ТЕКСТА │ АСК │ 000 │001...010│ 011 │ 012 │ 014 │ 040 │ ├────────────────┴─────┼─────┼─────────┼─────┼─────┼─────┼─────┤ │ EDASP │ ПС │ [&] │ ГТ │ [&] │ ПФ │ [ ] │ ├──────────────────────┼─────┼─────────┼─────┼─────┼─────┼─────┤ │ МИКРО#8К │ [&] │ [&] │ ГТ │ ПС │ [&] │ [ ] │ ├──────────────────────┼─────┼─────────┼─────┼─────┼─────┼─────┤ │ МИКРО#8,9С │ [&] │ N [ ] │ [&] │ ПС │ [&] │ [&] │ ├──────────────────────┼─────┼─────────┼─────┼─────┼─────┼─────┤ │ ПРОИЗВ. НАБОР АСКОВ │ [&] │ [&] │ [&] │ ПС │ [&] │ [ ] │ └──────────────────────┴─────┴─────────┴─────┴─────┴─────┴─────┘
ПС - перевод строки; [ ] - пробел; N [ ] - код количества про- белов; ГТ - горизонтальная табуляция; [&] - неопознанный аск; Аск ПФ (перевод формата: запись по клавише 'СБР/РП', инди- кация [■] - штатная для 'ЗБ',ЛАТ.,СТР.) возможен только в текс- тах формата EDASP (например, разметка страниц в 'Document 2'). При трансляции из EDASPа в EDASP аск сохраняется (индицируется так же). При любой другой - заменяется как неопознанный. Аски с кодами 041...177 и 240...377 допустимы в любом формате и не изменяются. Все остальные считаются неопознанными.
В режиме "АВТО" (положительный ответ на запрос "АВТО...?") АСКЕР проверяет наличие в файле асков 001...010, 012, 040 и сам задает форматы трансляции по алгоритму: ЕСТЬ 012? - НЕТ: вход - EDASP, выход - МИКРО#8К; ИНАЧЕ - ЕСТЬ 001...010? - НЕТ: вход - МИКРО#8К, выход - EDASP; ИНАЧЕ - ЕСТЬ 040? - НЕТ: вход - МИКРО#8,9С, выход - EDASP; ИНАЧЕ: вход - ПРОИЗВОЛЬНЫЙ НАБОР АСКОВ, выход - EDASP.
Такая процедура однозначно определяет формат правильно написанного текста из ассортимента АСКЕРа. При "АВТО": ГТ разрешено, неопознанные аски заменяются на [&], трансляция из МИКРО#8,9С - по ТОЧНОМУ протоколу (см.ниже).
Если формат файла заранее не известен, его можно установить с помощью АСКЕРа: просмотрите текст после пробной трансляции, за- дав входной формат "ПРОИЗВОЛЬНЫЙ НАБОР АСКОВ". Выходной формат не имеет значения, т.к. при просмотре текст любого формата выглядит одинаково. Нарушенные границы строк означают, что файл был написан в EDASPе; символы [&] вместо пробелов указывают на МИКРО#8,9С. Текст формата МИКРО#8К преобразуется почти точно: попадающимися кое-где символами [&] заменены аски ГТ. Повторно загрузите и обработайте файл, задав правильный входной формат.
Способ записи пробелов в формате МИКРО#8,9С требуется пояс- нить. При их количестве N=1...8 записывается только один байт: 001...010. Если же N>8, после первого байта добавляется второй: 001...007. В процессе декодирования второй байт умножается на 8 и складывается с первым: N=9=1+8 - 001,001; N=16=8+8 - 010,001; N=60=4+56 - 004,007. Такое кодирование дает возможность сущест- венно повысить плотность записи таблиц (в частности, листингов) - даже полная строка пробелов занимает всего два байта. В форматах EDASP и МИКРО#8К для этого же служит аск ГТ (код 011), перемещающий курсор вправо на ближайшую позицию с номером 9, 17, 25...=8n+1 (считая левую крайнюю - первой). Все же, в общем случае тексты формата МИКРО#8,9С более ком- пактны и при ТОЧНОЙ трансляции в EDASP или МИКРО#8К могут пре- высить объём отведенного ОЗУ (видно по служебной строке). Такой файл нужно записывать на МЛ до просмотра. На этот случай АСКЕР предлагает СОКРАЩЕННОЕ преобразование текстов из формата МИКРО#8,9С в EDASP или МИКРО#8К: в выходной файл точно передаются 1...2 пробела, а любое большее количество заменяется одним ГТ. Такое преобразование способно выравнивать колонки листингов (но не требуйте невозможного!). Если же ГТ не разрешено, записываются 2 пробела.
При трансляции АСКЕР, "развернув цепочку" ГТ и пробелов или коды пробелов в МИКРО#8,9С, считает их общее количество, прове- ряет длину строки (лишние убираются) и переписывает в выходной файл. При трансляции в формат МИКРО#8,9С всегда кодируется пол- ное число пробелов. В EDASP и МИКРО#8К все количество пробелов передается в следующих случаях: - если их 1 или 2 (лишний, второй пробел нередко ставится для выравнивания концов строк - см. настоящий текст); - если ГТ запрещено, а заданный входной формат отличается от МИКРО#8,9(СОКР.); - если в текущей строке раньше встречалось ".A:" или ".R:"; этими конструкциями (буквы ЛАТ., ЗАГЛ.) в системах МИКРО опреде- ляются строки символов в кодах КОИ-8 и RADIX50; поскольку эти фрагменты как правило предназначены для вывода на экран, АСКЕР не использует ни ГТ, ни СОКРАЩЕННОЕ преобразование; подчеркнем, что это условие распространяется только на текст, стоящий справа от указанных конструкций. СОКРАЩЕННОЕ преобразование было подробно описано выше. В остальных случаях АСКЕР стремится сократить объём текста, записывая максимально-возможное количество ГТ, а затем добавляет пробелы до полного соблюдения внешнего вида текста.
АСКЕРом можно готовить текст с "читалкой" типа 'Document 2' или 'МОНСТР' к загрузке в любой редактор используемого формата. Машинные коды "читалки" будут заменены асками (в основном - как неопознанные), и их легко удалить редактором. Это намного проще и быстрее, чем отделение текстовой части файла "вручную" в МСД: не нужно искать конец "читалки", считать адреса и длины.
Между прочим, если Вы предпочитаете 'МОНСТР' (автору больше по душе 'Document 2'), Вам известно, что подготовленный для него в EDASPe текст не должен содержать ГТ (по крайней мере, для версии 01.07.87). Обработайте текст АСКЕРом: из EDASPа в EDASP, ГТ запрещено - и все ГТ будут заменены пробелами с сохранением внешнего вида текста. Разумеется, длина файла увеличится.
Если формат текста отличен от EDASP и МИКРО, рекомендуется преобразование: ПРОИЗВОЛЬНЫЙ НАБОР АСКОВ в EDASP. В редакторе Вы можете скорректировать текст в силу своей сообразительности. Нередко удается задать МАКРО, исправляющее текст. Во любом случае, МАКРО легко убирает символы, заменяющие неопознанные аски: МОДЕЛЬ: &;МАКРО: ПОИСК, СДВИЖКА, КУРСОР ВЛЕВО, ОКОНЧИТЬ. Затем можно задать заведомо избыточное число повторов.
Основное назначение систем МИКРО - трансляция текстов про- грамм в машинные коды. Поэтому набор функций редактора ограни- чен. У МИКРО#8,9С он лишь немного больше необходимого минимума. Возможности редактора МИКРО#8К шире, но он медленный и не очень надежный (автор не раз "вылетал" из редактора при использовании функции ПРЕФИКС - КУРСОР ВНИЗ). Наиболее мощным редактором для БК0010 является EDASP. АСКЕР даёт Вам возможность писать тексты программ в EDASPe, а затем перегружать их в любой МИКРО для ассемблирования. Обна- руженные при этом ошибки можно исправить редактором МИКРО.
Дизассемблированные листинги формата МИКРО#8К, которые вы- дает ДИЗАКС#0, можно обработать АСКЕРом для EDASPа.
ПРИМЕЧАНИЯ. ¯¯¯¯¯¯¯¯¯¯¯ 1. Если в конце файла нет аска ПС, он добавляется АСКЕРом. 2. При просмотре стоп/пуск происходит по любой клавише.
Автор глубоко признателен В.А.МАЛЬЦЕВУ за ценные советы.
А.ЕРМОЛОВ, Москва, т. 275-47-13.
|
|
| |