Текстовый редактор для БК: новые принципы и возможности

Родоначальником текстовых экранных редакторов для БК-0010 был EDASP (остающийся и сейчас лучшим «карманным» редактором). Все остальные разработки дополняли или изменяли те или иные функциональные возможности EDASP: появились новые драйверы принтеров, улучшался сервис, варьировались системы директив. Изредка появлялись и оригинальные программы со своими оригинальными форматами, например, редакторы микроассемблеров С. Кумандина и А. Сомова, обладающие рядом неоспоримых достоинств по сравнению с EDASP: малым объёмом самого редактора, компактностью выходного файла, достигнутой за счёт кодировки пробелов, хорошо продуманным набором команд и динамическим перераспределением памяти.

У всех существующих текстовых редакторов имеется общий недостаток - жёсткая структура, не позволяющая пользователю перенастраивать программу под свои потребности, и обрекающая его на необходимость иметь дело с несколькими редакторами. Это и послужило причиной создания редактора ЕДИТ2, в основу которого положен принцип модульности, аналогичный применяемому практически в любой современной операционной системе.

Пользователь ЕДИТ2 обладает базовым вариантом редактора с набором стандартных драйверов и имеет выбор дополнительных драйверов, с помощью которых может производить перенастройку (например, под свой принтер или экранный шрифт любого национального алфавита или начертания).

Драйверная система построена так, что пользователю не нужно беспокоиться о длине и адресе загрузки драйвера: программа сама его загрузит и установит в себе и все дальнейшие операции произведёт под своим управлением.

При разработке ЕДИТ2 были учтены практически все достижения в области сервисных услуг и команд «карманных» текстовых редакторов. В первую очередь ликвидирован наиболее существенный недостаток многих таких программ - отсутствие автоповтора при вводе символов с клавиатуры: в ЕДИТ2 все клавиши способны работать в режиме автоповтора (включается при удержании клавиши в нажатом состоянии более 1 с). Для купирования возможного «дребезга» клавиатуры введена процедура настройки драйвера клавиатуры по времени восприимчивости. В течение «периода невосприимчивости» драйвер нечувствителен к повторяющимся кодам, но воспринимает новые, что позволяет избавиться от «дребезга» без снижения скорости набора текста. Индикаторы свободной памяти обычно делаются в виде 4-значного числа, рассматривание которого, по замыслу, способно защитить пользователя от неожиданной нехватки ОЗУ. Между тем давно замечено, что подсознание человека, плохо реагируя на цифровую информацию, отлично воспринимает образную; пример - часы цифровые и обычные. Поэтому гораздо более удобен аналоговый линейный индикатор памяти, одного взгляда на который достаточно, чтобы определить, сколько текста ещё можно вводить, не опасаясь за последствия. Именно такой индикатор реализован в ЕДИТ2 (впервые на БК-0010).

Большие неудобства вызывает несовместимость форматов текстов, написанных с помощью разных редакторов. В ЕДИТ2 этой проблемы нет: перед вводом файла с магнитофона программа может быть настроена на переформатировку введённого текста в свой собственный формат.

При наборе таблиц и некоторых других текстов в каждой строке содержится много пробелов, «съедающих» память и сокращающих конечный размер документа. В ЕДИТ2 применён экономичный вариант кодировки пробелов символами ТАБ.

Обычно в редакторах - и EDASP не является исключением - ширина текста задаётся пользователем в виде числового параметра. Это мешает наглядно представить, как будет выглядеть текст на экране или при печати. В ЕДИТ2 задание длины строки осуществляется с помощью специальной мерительной линейки, по которой перемещается курсор, определяя правую границу строки. Одной командой при этом можно соотнести длину строки с набранным текстом и при необходимости установить новую длину строки.

При наборе текстовая строка в ЕДИТ2 постоянно находится в режиме автосвёртки: слово, не помещающееся в установленных границах строки, автоматически переносится на следующую строку. За четыре знакоместа до правой границы строки подаётся звуковой сигнал.

Установленная длина строки используется и при форматировании текста. Процедур форматирования две: «глобальная» (для всего текста) и выборочная (только для одной строки). Обе построены на одном принципе: выравнивание текста по правому краю путём добавления пробелов между словами до достижения установленной границы.

Выборочное форматирование удобнее при работе со строками, меньшими половины установленной длины строки. При необходимости эта процедура может стать и «глобальной», если использовать её в рамках макрооперации с соответствующим числом повторов.

Команда записи текста на магнитофон позволяет (в отличие от EDASP) записать указанное число копий.

Нововведением является и наличие мощной системы транслитерации, которая в сочетании с макрокомандным режимом выводит ЕДИТ2 на качественно новый уровень сервисных возможностей.

Таблица кодировки символов БК содержит 4 набора латинских и русских букв, так что 12 видов транслитераций (большие латинские в малые латинские, большие латинские в малые русские и т.д.) на первый взгляд исчерпывают возможные варианты. Однако есть и тринадцатый вид - он предназначен для перекодировки маленьких букв в большие и обратно с учётом структуры текста: переводу не подлежат первые буквы предложений.

При возникновении нехватки памяти ЕДИТ2 автоматически переходит в режим расширенной памяти; при освобождении буфера текста происходит обратный переход. Таким образом, редактор позволяет создавать тексты длиной до 23 Кбайт.

В связи с тем, что большинство пользователей привыкли работать с EDASP, в ЕДИТ2 сохранены основные управляющие клавиши и команды этого заслуженного редактора.

Основные параметры ЕДИТ2:

Работа с программой. Режим 32 или 64 символа в строке устанавливается до запуска. После старта программа спрашивает: «Драйверы стандартные?», на что следует ответить Д, если не будут загружаться внешние драйверы, или Н, если редактор будет перенастраиваться под нестандартные устройства - дисковод, другой принтер, новый знакогенератор экранного шрифта и т.д. В этом случае запрашивается имя драйвера, и после его загрузки он становится частью системы и работает под её управлением. В настоящее время с редактором поставляются драйвер экранного шрифта IBM, драйверы принтеров МС 6312, МС 6313, D 100, драйвер печати графической копии экрана и др.

После настройки запрашиваются имя файла для считывания и его формат.

Программа имеет две точки входа: холодный старт - адрес 1000; тёплый старт 1002. При запуске с адреса 1000 происходит начальная установка системных ячеек редактора и очищается буфер текста. Запуск с адреса 1002 позволяет перезапустить редактор с сохранением ранее набранного текста.

Процесс набора команд безразличен к состоянию регистров клавиатуры; положительным ответом на запросы служит нажатие клавиши ВК или любой последовательности клавиш, а отказом - любое слово, начинающееся с N.

Перечисление команд редактора начнём с обычных перемещений курсора на символ и строку, осуществляемых клавишами-стрелками; если предварительно нажать клавишу КТ, курсор перемещается в начало (конец) строки или вверх-вниз на экранную страницу. Имеется также возможность перемещения курсора в позицию текста, кратную 8 (с помощью клавиши ТАБ), перехода в начало предыдущего или конец следующего слова, в начало следующей строки, начало текста, начало последней страницы текста.

Следующая группа команд - стирание, восстановление, вставка: стирание символа перед курсором с подтягиванием остатка строки, восстановление удалённой строки или её части, стирание символа в позиции курсора с подтягиванием остатка строки или сцеплением со следующей строкой, стирание строки слева (справа) от курсора с занесением фрагмента в буфер, перемещение остатка строки вправо на один символ (вставление пробела), разбиение строки текста на две, вставка пустой строки, удаление и вставка фрагмента текста.

Клавишами КТ+Р устанавливается режим вставки-замены. Режим замены индицируется в служебной строке.

Можно задать автоматическое выполнение (определённое число раз) какой-либо команды, задать макропоследовательность команд и исполнить её. Имеются команды ввода модели и её поиска в тексте, установки метки и перехода на ранее установленную метку, выравнивания строки или фрагмента текста по правому краю в соответствии с установленной длиной строки. Имеется также возможность задать размер (число строк) экранной страницы. По завершении работы текст можно записать на магнитофон или распечатать.

Дозагружаемые модули можно использовать готовые, а можно и написать самостоятельно. В связи с этим приведём некоторые сведения, полезные при написании собственных драйверов для данного редактора.

Адреса с 400 по 500 (в восьмеричной системе счисления) используются основным модулем, и всякое вмешательство в эту область может привести к нежелательным последствиям.

Адрес

Назначение

400

Адрес-указатель на начало текущей строки, т.е. строки, в которой находится курсор

402

Адрес начала буфера текста; эта величина непостоянна и зависит от длины драйвера, загруженного вместе с редактором

404

Адрес конца текста, зависит от длины введённого текста

454

Длина страницы для печати (после вывода указанного числа строк программой выдаётся код перевода формата)

456

Величина отступа от левого края при печати

462

Используется драйвером загружаемого знакогенератора как указатель на начало таблицы образов символов

464

Используется драйвером принтера. Нулевое содержимое указывает на применение встроенного драйвера печати, ненулевое - на адрес начала загруженного драйвера печати

466

Длина загруженного драйвера

На загружаемый драйвер накладываются следующие ограничения:

  1. Драйвер должен быть написан в перемещаемом формате, т.е. работать в любой области памяти.
  2. Тело драйвера должно заканчиваться командой RTS PC.
  3. Структура драйвера должна соответствовать приведённой ниже.
СЛОВО-ИДЕНТИФИКАТОР
МОДУЛЬ ИНИЦИАЛИЗАЦИИ
ТЕЛО ДРАЙВЕРА

Здесь слово-идентификатор - слово с числом 252 в младшем байте, старший байт зарезервирован; модуль инициализации - модуль, устанавливающий драйвер в системе и передающий ему управление; тело драйвера - сама программа.

В качестве примера приводится текст эмулятора знакогенератора экранного шрифта IBM.

;---------------------------------------------
BUFUS: .WORD 252    ;БАЙТ-ИДЕНТИФИКАТОР
;---------------------------------------------
; МОДУЛЬ ИНИЦИАЛИЗАЦИИ
        MOV     PC,R5
        ADD     (PС)+ .R5       ;ПЕРЕХВАТ
                                ; ЗАПРОСОВ EMT
        .WORD   @EMT0+2
        MOV     R5,@#30
        ADD     #DRITT-EMT0,R5  ;ПОЛУЧЕНИЕ
        MOV     R5,@#462        ;АДРЕСА
                                ;ТАБЛИЦЫ
                                ;ОБРАЗОВ
                                ;СИМВОЛОВ
        RETURN
;---------------------------------------------
; ТЕЛО ДРАЙВЕРА
EMT0:   MOV     R5,-(SP)
        MOV     2(SP),R5
        MOV     -(R5),R5
        BIC     #177400,R5
        CMP     R5,#16          ;ПЕРЕХВАТИТЬ
        BNE     3$              ;ЗАПРОС EMT 16
        JSR     R4,@#110346     ;И ОБРАБОТАТЬ
                                ;ЕГО СОГЛАСНО
                                ;НОВОЙ ТАБЛИЦЕ
                                ;ОБРАЗОВ
        BIC     #177400,R0
        CMPB    R0,#40
        BLO     2$
        CMPB    R0,#200
        BLO     1$
        CMPB    R0,#240
        BLO     2$
        SUB     #40,R0
1$:     SUB     #40,R0
        ASL     R0
        MOV     R0,R1
        ASL     R0
        ASL     R0
        ADD     R0,R1
        ADD     @#462,R1        ;ПОЛУЧЕНИЕ
                                ;АДРЕСА
                                ;СИМВОЛА
        CALL    @#102764        ;ВЫВОД СИМВОЛА
        CALL    @#102374        ;НА ТЕРМИНАЛ
                                ;В РЕЖИМЕ
                                ;ТЕЛЕТАЙПА
        JSR     R4,@#110362
        MOV     (SP)+,R5
        RTI
2$:     JSR     R4,@#110362
3$:     JMP     @#100126
DRITT:  ;НАЧАЛО ТАБЛИЦЫ ОБРАЗОВ
        .
        .
        .
        .END

В ЕДИТ2 может быть загружен одновременно целый пакет драйверов, объединённых общим модулем инициализации.

В. КОРЕНКОВ


 

BIGRED - текстовый редактор для БК-0010(01)

BIGRED является дальнейшим развитием текстовых редакторов EDASP для компьютеров БК-0010 и БК-0010-01, позволяющим более чем вдвое превышать размеры стандартного текстового файла для БК (как по длине строк, так и по объёму обрабатываемого текста) и эффективно управлять принтером при печати.

EDASP (последняя известная нам версия выпущена в феврале 1988 г.) при малых размерах имеет богатый выбор возможностей для обработки текста, надёжен в работе, прост для изучения и стал фактически стандартом текстового редактора для БК. К сожалению, группа ASP перестала поддерживать его, а доработки других программистов страдают локальностью и улучшение в них какой-то одной функции часто приводит к внесению ошибок в другие.

BIGRED способен делать всё то, что делает обычный EDASP:

Действие команд может отличаться от «стандартного» только за счёт упрощения работы с ними, устранения ошибок или расширения возможностей, о чём сказано ниже, а назначение клавиш взято из версии EDASP 10 (20.02.88, А.В. Шакунов.).

Основным назначением стандартного EDASP было создание текстового файла на магнитной ленте. Однако неудобство работы с магнитофоном привело к попыткам объединить все операции обработки текста в одной программе.

Возможности распечатки текста прямо из редактора наиболее велики у программ EDASPS (К.В. Косов) и EDA (А.С. Лозовицкий). Эти программы и были взяты за основу при разработке алгоритма работы редактора BIGRED с принтером.

  1. Печать на принтере ведётся с отступом от левого края листа. Величину этого отступа можно изменять построчно в широких пределах.
  2. Управление режимами работы принтера осуществляется вводом в процессе подготовки текста специальных управляющих кодов.
  3. В зависимости от типа принтера применяются различные версии BIGRED, позволяющие наиболее полно использовать возможности данного принтера.

Так, при работе с принтером Robotron СМ 6329 (и совместимых с ним по кодам: D-100M, «Электроника МС 6312» и др.) реализована оригинальная разработка, позволяющая выводить на печать любой символ из набора символов БК, включая все символы псевдографики. Размеры символов согласованы с размерами основных шрифтов принтера; различие в начертании букв принтера и БК создаёт дополнительные полиграфические возможности при печати.

BIGRED способен загрузить с магнитофона для дальнейшей распечатки или редактирования практически любой файл. Ограничением является длина файла: если она превышает 50 000(8), теряется часть последних символов. Загружаться может не только текстовый файл, написанный в формате EDASP, но любой, содержащий текстовые вкрапления. При этом недопустимые в формате EDASP символы автоматически заменяются на пробелы, и пользователю остаётся только стереть «мусор», появившийся на месте нетекстовой части файла.

При работе в режимах ЧТЕНИЕ и ЗАПИСЬ предусмотрено повторение операций без повторного набора имени: это удобно при некачественном считывании файла с МЛ и при повторной записи дубля файла на МЛ.

BIGRED имеет встроенный каталогизатор, что может быть оценено теми, кто следит за своей библиотекой программ: это позволяет устранить лишнюю операцию записи на магнитофон для редактирования или распечатки каталога.

Чем ещё отличается BIGRED от EDASP? Помимо преобразования заглавных букв в строчные и наоборот в BIGRED добавлена оригинальная операция преобразования русских букв в латинские и наоборот, зачастую необходимая при редактировании; длительное нажатие любой клавиши вызывает автоматическое повторение её действия; реализован оригинальный алгоритм автоматического перехода редактора в режим расширенной памяти и обратно в зависимости от объёма обрабатываемого текста. Использование режима расширенной памяти позволяет обрабатывать BIGRED тексты, длина которых вдвое превышает возможности EDASP (более 21 500 символов).

Максимальная длина строки в BIGRED вдвое превышает длину строки экрана. Это позволяет эффективно использовать принтер с широкой кареткой. О выходе правого края строки за пределы экрана свидетельствует стрелка-признак на последнем знакоместе текущей строки. Стрелка не влияет на набранный текст. Попутно с введением в редактор этого оригинального признака исправлена ошибка EDASP, из-за которой в нём иногда изменяется порядок символов в выходящей за край экрана части строки.

В режиме команды ПОВТОР в служебной строке редактора показывается убывающий десятичный счётчик, облегчающий контроль за работой при большом числе повторений долго выполняющихся команд.

Переключение режимов ВСТАВКА и ЗАМЕНА сделано проще и с постоянной индикацией текущего режима.

При сравнении текстовых редакторов основными являются два параметра: объём обрабатываемого текста и удобство работы. Если оценивать по ним BIGRED, то следует отметить, что размер текста, обрабатываемого им до перехода в режим расширенной памяти, не меньше, чем в стандартном EDASP, а максимальный размер обрабатываемого текста вообще не имеет аналогов для БК.

Л. БАКУЛИН, В. ЧЕРНЯКОВ


 

Попробуйте так!

Ни для кого не секрет, что БК-0010(-01) - это конструктор для умелых рук. В «ИНФО» публиковалось немало рекомендаций по его доделкам и усовершенствованиям.

Главное место в этом длиннейшем списке, бесспорно, занимает способ избавления от блока МСТД. В [1] описано, как это сделать. Существует и менее кропотливый способ: микросхемы (МС) ПЗУ с Фокалом 018 и тестовой диагностикой 019 выпаивают из платы МСТД и напаивают «этажеркой» на МС ПЗУ Бейсика с номерами 106 и 108 соответственно. При этом выводы 23 МС 018 и 1 МС 019 отгибают и распаивают гибким монтажным проводом согласно схеме, приведённой на рисунке. Необходимые коммутации осуществляются двумя переключателями: с помощью SB1 выбирают ПЗУ Бейсика или Фокала и тестовой диагностики, a SB2 коммутирует дополнительные ПЗУ или блок расширения ОЗУ. При их отсутствии этот переключатель спасает от неприятных сюрпризов при работе в кодах или на ассемблере, порождаемых неприятной «привычкой» БК к перезапуску системы, приводящему к искажению информации в ОЗУ. В предлагаемой схеме также решена проблема зависания (зацикливания) БК: достаточно нажать кнопку «INIT», и произойдёт перезапуск процессора с адреса «холодного» старта БК (100000), а каскад на транзисторе VT1 обеспечит блокировку ПЗУ на время перезапуска. В результате управление останется в мониторе, а содержимое рабочей области ОЗУ не пострадает. Директивы «MONIT» Бейсика и «Р М» Фокала становятся просто ненужными. Кроме того, выходить в монитор после включения БК после такой переделки уже нет необходимости.

К сожалению, попытка повторно войти в Бейсик по адресу «тёплого» старта (120300) после снятия зависания удаётся не всегда.

Полное наименование МС ПЗУ с Фокалом - К1801РЕ1А-018. Здесь и далее они обозначаются только по трём последним цифрам, определяющим записанную в них информацию. В некоторых блоках МСТД вместо МС 018 может быть установлена МС 084. Все позиционные обозначения элементов БК даны по его схеме, приведённой в [1]. Следует учесть, что в БК-0010-01 подключение ПЗУ несколько отличается, а именно:

Все эти отличия учтены в приводимой схеме.

Для монтажа лучше всего подходит резервное место под микросхему в нижнем левом углу платы БК: на его диагональ выведены общий провод и питание +5 В. Сигнал, блокирующий ПЗУ (ROMBLOCK), подаётся на верхний (по схеме) вывод SB2. Если блок МСТД хотят оставить в неприкосновенности, то сигнал ROMBLOCK следует подать через два диода на выводы 23 и 1 МС DS18 и DS19 аналогично тому, как это показано на схеме.

Если не было ошибок при монтаже, то никакой настройки не потребуется, кроме, быть может, увеличения ёмкости С1 при нечёткой блокировке ПЗУ. Все диоды типа КД521 или КД522, транзистор может быть заменён на любой p-n-p типа с коэффициентом усиления не ниже 50, номиналы остальных элементов могут отличаться от указанных на 50%.

Несколько слов о реализации турбо-режима [2]. Прежде чем начинать такую переделку, нужно убедиться в её возможности для данного экземпляра БК. Для этого аккуратно перережьте дорожку, идущую от D8.2 (вывод 9) на вход CLC процессора (вывод 1), и соедините перемычкой вход CLC с выводом 5 или 13 D8. Включите питание БК и проверьте его работоспособность: если происходит зависание, попробуйте уменьшить (вплоть до нуля) сопротивление R28, а если происходят сбои при записи в системный регистр (самопроизвольно срабатывает реле управления магнитофоном, искажается или полностью исчезает звук), попробуйте увеличить ёмкость С8 до 300-500 пФ. После этого закройте корпус и проверьте работу БК в течение часа-полутора. Если результаты испытаний будут удовлетворительными, можно начинать переделку всерьёз.

Литература

  1. Панченков И. Приручение БК // Информатика и образование. 1990. № 4. С. 68.
  2. Антонов Д. Увеличение тактовой частоты // Информатика и образование. 1990. № 2. С. 46.

С. КАРАГИОЗ

От редакции. Предлагаемый способ, в отличие от описанного в [1], можно рекомендовать только тем, кто в совершенстве владеет паяльником и хорошо знаком с правилами монтажа интегральных схем. Неквалифицированная попытка реализовать этот способ может нанести компьютеру непоправимый вред.

 


 

И. ПАНЧЕНКОВ

Подключение принтеров к БК-0010(01)

Несмотря на большое число публикаций о подключении принтеров к БК, многие читатели испытывают затруднения. Чтобы помочь им, мы публикуем систематическое изложение этого вопроса.

Появившиеся наконец-то в свободной продаже относительно дешёвые принтеры, большое число имеющихся драйверов для печатающих устройств и богатые возможности БК по подключению разнообразной периферии позволяют перевести использование этих компьютеров на качественно новый уровень. БК с принтером - серьёзный рабочий инструмент творческой личности. Показателен в этом смысле пример известного американского писателя-фантаста А. Азимова, который никогда не страдал от низкой производительности своего труда, однако, научившись работать на текстовом процессоре, горестно заявил, что вся его прошлая литературная жизнь - черепашья прогулка по полю незатронутых тем, а настоящая работа только теперь и начинается...

Для начала разберёмся, как соединить печатающее устройство (ПУ) с БК, - редакционная почта показывает, что большинство вопросов возникают на этом этапе.

ПУ подключаются к компьютерам с помощью одного из двух типов каналов связи: параллельного (ИРПР, ИРПР-М, IFSP) или последовательного (ИРПС, IRPS) с протоколом обмена RS-232 или CENTRONIX. У наиболее совершенных ПУ и компьютеров имеются оба типа каналов; именно к этому классу относится БК. Однако исторически сложилась практика использования у БК почти исключительно параллельного канала. На сегодня известно о подключении по последовательному каналу только принтера «Robotron» СМ 6329.01 (П. Чирков, г. Львов).

Для начала кратко опишем параллельный и последовательный интерфейсы. Основой параллельного в БК является программируемый порт ввода-вывода (разъём ХТ5, УП), доступ к которому осуществляется с помощью двух разных (несмотря на одинаковый адрес - 177714) регистров - чтения и записи. Соответствие контактов разъёма ХТ5 сигналам порта приведено в таблице 1. Программной поддержки в штатном мониторе порт не имеет, и в большинстве случаев приходится использовать загружаемый драйвер принтера.

Общая схема работы драйверов такова. Проверяется состояние 8-го разряда регистра чтения порта ввода-вывода (сигнал BUSY). Если он равен 1 (этому соответствует нулевой потенциал на контакте В31 разъёма ХТ5), то это означает, что ПУ готово принять очередной байт данных. В таком случае драйвер записывает в младший байт регистра записи порта очередной байт данных, а в 8-й разряд регистра записи (сигнал STROBE) - 1. Последнее является сигналом разрешения считывания данных для ПУ. ПУ считывает данные и заносит 0 в ЗАН, а драйвер после этого заносит 0 в СТРОБ. Так работает, в частности, драйвер из ПЗУ с Бейсиком.

Для наиболее распространённых ПУ (соответствия их контактов контактам ХТ5 приведены в таблице) существует уже множество драйверов - оформленных в виде отдельных программ или входящих в состав редакторов (текстовых и графических) и каталогизаторов-верификаторов. Перечислим некоторые из них:

D100

- PRINTER, PRINTFOC, PRINTER2, EDASP10;

УВВП4 30-004

- BED, EDASP10М9, GRATEP, BIGRED, EDIT.WS;

ROBOTRON

- ROB.IRPS, ROB.IFSP, BIGRED, GRAFRE, TED6+ROB64.DRV, TED6+ROB32.DRV;

MC 6312

- ПМ6312, ПС6312, MS6312.SAV, BIGRED, EDIT4.WS4-LP12, ТСТФ6312, VERIFY+;

MC 6313

- ПМ6313, ПС6313, MS6313.SAV, EDIT4.WS+LP13, ТСТФ6313, VERIFY+, Р1.0М+ГРКМ6313;

Think Je

- SCREEN.BIN;

GEMINI-10XR

- ПМ6312, ПС6312;

EPSON

- TED6+EPSON8.DRV, TED6+EPSON7.DRV.

Заканчивая тему параллельного интерфейса, приведём две полезные схемы. Первая (рис. 1) - инвертирование сигналов STROBE и BUSY, необходимого для некоторых комбинаций принтер - драйвер (например, для «Электроники МС6313» и драйвера PRINT2). Вторая (рис. 2) - оригинальное подключение (разработанное С. Карагиозом, Москва) к порту ввода-вывода сразу двух ПУ - если вам, например, захотелось объединить достоинства струйного и матричного принтеров.

О последовательном интерфейсе достаточно хорошо рассказано в журнале «Вычислительная техника и её применения» № 7 за 1991 г.

А теперь немного об «узких» местах принтеров. Первое из них - лента: она либо рвётся, либо высыхает.

Что делать, если лента порвалась? Советую в предвидении такой неприятности сделать себе очень простое и удобное приспособление для её сварки, показанное на рис. 3. Способ применения ясен из рисунка и в дополнительных пояснениях не нуждается.

Сделать же устройство можно из чего угодно: картона, текстолита, оргстекла - важно только, чтобы под жалом паяльника была полоска металла (жести, фольги).

Рис. 1

 


Рис. 2

 

Таблица 1
Подключение принтеров к порту ввода-вывода "УП" (ХТ5) БК-0010(01)

Контакты разъёма "УП"

Обозначение сигнала

Наименование сигнала

Контакты разъёмов принтеров

русское

международное

Robotron

CM 6329.02

EC 7189

CM 6325

D-100

УВВПЧ

30-004

Электроника

Think Jet

Gemini 10XR

МС 6312

МС 6313

МС 6313М

A16

ВД00

Д0

DATA1, D1

B5

2

Б14

2

3

3

1

2

B12

ВД02

Д2

DATA3, D3

B6

3

Б13

3

5

5

2

3

B10

ВД03

Д3

DATA4, D4

B7

4

Б12

4

7

7

3

4

B5

ВД04

Д4

DATA5, D5

B8

5

Б11

5

9

9

4

5

B7

ВД05

Д5

DATA6, D6

B9

6

Б10

6

11

11

13

6

B6

ВД06

Д6

DATA7, D7

B10

7

Б8

7

13

13

14

7

A7

ВД07

Д7

DATA8, D8

B11

8

Б9

8

15

15

15

8

A28

ВД08

СТР

STROBE, SC, DAV

B12

9

Б7

9

17

17

16

9

B31

ВВ08

ЗП, ЗАН

BUSY, AC, NDAC

B2

1

Б6

1

23

23

6

1

 

 

 

 

B3

10

Б4

11

21

21

8

11

A,B 11, 18, 19

ОБЩ

ОБЩ

GND, S0, LogicGnd

B4, A4

19, 21

Б1, Б16, А1

15

4,6,8,10,12, 14,16,18,20

4,6,8,10,12, 14,16,18,20

24

16, 19-30

 


Рис. 3

Ну а что делать, если лента высохла? Восстановить её свойства очень просто - достаточно равномерно пропитать её каким-нибудь нейтральным маслом: вазелиновым, трансформаторным или любым другим, не дающим кислой реакции, добавив к нему 10% глицерина. Проще всего пропитку сделать при помощи куска поролона, сквозь который следует протащить всю ленту несколько раз, пока она не пропитается равномерно и негусто маслом. Ю. Зальцман рекомендует всунуть при этом руки в полиэтиленовые пакеты, чтобы не испачкаться краской. При неинтенсивной работе принтера этот способ, конечно, хорош своей простотой и «незатратным» механизмом. Однако, на мой взгляд, лучше не пожалеть времени и постараться сделать специальный станок для пропитки лент не только маслом для освежения, но и краской для продления сроков службы ленты в 50-100 раз (!). Принцип действия такого станка чрезвычайно прост и ясен из рис. 4. Единственное, что нужно для его безупречной работы, - достаточно жидкая консистенция раствора типографской краски (в том же масле с примесью глицерина): она должна приближаться к консистенции магазинного молока. Достоинством такого подхода является быстрота операции и чистота рук.

Рис. 4

 

У струйных принтеров (МС 6312 и т.п.) узким местом является ёмкость чернильницы, которой хватает на 300-350 страниц текста. Как заправить чернильницу? Опять же весьма просто: нужно взять обычные чернила «Радуга», добавить к ним 30% по объёму этилового спирта (водки) и 5% (тоже по объёму!) глицерина, прокипятить эту смесь 10-15 мин на слабом огне и профильтровать через слой ваты. Заправку головки, лучше всего вести следующим образом: держа головку матрицей вверх, осторожно чем-нибудь тупым сжать пластиковый мешок чернильницы до появления чернил на матрице, а затем, капая пипеткой на матрицу приготовленные чернила, медленно отпускать мешок, чтобы он, расправляясь, засасывал чернила внутрь. Чернила при этом дополнительно фильтруются, головка не портится и может быть использована вплоть до физического износа термоэлементов матрицы (в среднем головка отечественного производства выдерживает 30-35 заправок, импортная - 70-80). Справедливости ради нужно упомянуть и другие способы заправки: один связан с проколом пластикового мешка шприцем с чернилами, а другой - со вскрытием заправочного отверстия на лицевой панели головки. Оба способа рано или поздно приводят к течи через сделанные отверстия и порче каретки. Пользоваться ими советую только очень нетерпеливым и... очень богатым.

Ещё один совет даёт И. Шторк (г. Алма-Ата). Если головка не работала больше 3-4 ч, обязательно промойте её перед работой, выдавив каплю чернил на матрицу и засосав её обратно в мешок; остатки чернил сотрите ватой, смоченной спиртом. При заправке бумаги в принтер следите, чтобы головка находилась в крайнем левом положении: если этого не сделать, то есть опасность отрыва металлической пластины матрицы краем заправляемого листа. После заправки бумаги головку нужно осторожно вернуть в исходное положение, иначе сдвинется поле печати.

И в заключение совет самого общего характера: каким бы принтером вы ни располагали, помните - это сложный, высокоточный прибор, требующий квалифицированного и бережного обращения!

Авторами статьи «LinkWay - мультимедиа для IBM РС», опубликованной в ИНФО № 6-91, являются М. Матекин и Г. Полилова. Телефон для справок в Москве: 207-04-89.


 

Операционная система для БК-0010

Необходимость подключения к БК-0010 НГМД очевидна, и контроллеры, предназначенные для этого, производят многие кооперативы. Но, похоже, большинство производителей продают нечто, напоминающее граммофонные трубы без самого граммофона. Для эффективной работы с дисками требуется не только драйверок, позволяющий что-то куда-то записывать и читать, и не только мониторчик, который даёт возможность читать файл в память и т.д., а операционная система, пусть с простейшими функциями, но имеющая тем не менее нормальные командный и программный интерфейсы, допускающая расширение и «прозрачная» для ранее написанных программ. Весьма желательна также совместимость хотя бы по форматам дисков и файловой системе с ближайшими родственниками БК - машинами ряда ДВК и УКНЦ.

Такая система была разработана автором статьи и в настоящее время выпускается вместе с контроллером гибких дисков малым предприятием «КомКон». К концу 1991 г. будет начат серийный выпуск на одном из заводов, производящих БК-0010.

Ниже приведено краткое описание ОС БК.

Схемы контроллеров для БК не отличаются большим разнообразием - в большинстве за основу взят аналогичный контроллер от УКНЦ. С минимальными изменениями эта же схема применена и в описываемой конструкции. К собственно контроллеру необходимо добавить ПЗУ и ОЗУ операционной системы, поместить всё это в корпус - и можно подключаться к разъёму системного канала БК-0010. Трудности и разнобой в подходах начинаются далее.

Драйвер диска, форматировщик. Автору статьи совершенно непонятны мотивы, побуждающие многих программистов изобретать собственные форматы, лишающие их разработки совместимости. Для БК допустим только один формат - тот, который используется в ДВК и УКНЦ (дискеты этого формата можно также читать специальными программами и на IBM PC). Напомним его: запись ведётся методом модифицированной фазовой модуляции, что позволяет разместить на 80 дорожках двухстороннего диска 800 Кбайт информации; каждая дорожка разбита на 10 секторов по 512 байтов.

Драйвер обеспечивает обмен информацией между ОЗУ и диском блоками по 512 байтов, всего до 64 Кбайт за одну операцию, и скрывает таким образом секторно-дорожечную структуру диска.

С драйвером тесно связан форматировщик, который предназначен для начальной разметки диска.

Файловая система. Блок является слишком низкоуровневым понятием, для пользователя ОС общепринятой единицей обмена информацией является файл. Под файлом мы понимаем непрерывный массив блоков на диске, как и в ОС ДВК. Для поддержки файловой системы каждый диск содержит свой каталог - список имён файлов и их «адресов». ОС имеет программный интерфейс для работы с файлами.

Программный интерфейс ОС БК. Программы имеют доступ к операционной системе через командные прерывания ЕМТ. Набор прерываний, определённый в мониторе БК-0010, в ОС БК расширен и частично модифицирован. Например, ЕМТ 36 в ОС БК обеспечивает операции не с магнитофоном, а с диском. Благодаря этому программы, разработанные в расчёте на использование магнитофона, работают и в среде ОС БК, «не замечая» подмены его на диск. Для доступа к магнитофону введён запрос EMT 37, имеющий тот же формат.

В дополнительный набор прерываний входят запросы, предназначенные для доступа к файловой системе, клавиатуре, экрану, принтеру, а также для преобразований типа «число - строка» и RADIX - ASCII. Все запросы, аналогичные имеющимся в ОС ДВК, полностью соответствуют последним по форматам, что даёт возможность разрабатывать программы для ОС БК в среде ДВК с использованием стандартных средств программирования - макроассемблера, системной макробиблиотеки и т.д. Многие сервисные программы можно даже полностью отладить на ДВК.

Программист, пишущий на БК, может не знать о всех возможностях ОС и работать точно так же, как и без неё, но гораздо быстрее - благодаря диску. Кстати, сама ОС БК разрабатывалась на ДВК и активно использует командные запросы ею ОС.

Командный интерфейс. В ОС БК принят простейший способ взаимодействия пользователя с системой, обычно называемый командным интерфейсом. Пользователь вводит с клавиатуры команды с необходимыми аргументами, система исполняет их. Программы, осуществляющие обработку команд, называются утилитами. Встроенные утилиты записаны в системном ПЗУ; пользователь может добавить к ним внешние, располагающиеся на дисках, и завести таким образом свой собственный набор утилит.

В ПЗУ размещены лишь наиболее необходимые программы (просмотр каталога диска, копирование, удаление, переименование, печать файла, копирование с магнитофона на диск и наоборот и т.д.). Здесь же имеется редактор командной строки, позволяющий просматривать ранее введённые команды, выбирая нужную.

Ядро системы. ОС БК не нуждается в загрузке: она резидентна в адресном пространстве БК-0010 и автоматически запускается при включении питания компьютера, сразу же выдавая подсказку к вводу команды. В адресном пространстве оставлен свободным 6-й банк, на него система пытается передать управление после запуска. Это сделано для того, чтобы, во-первых, можно было установить ПЗУ со своим пользовательским интерфейсом, а во-вторых, использовать контроллер с ОС БК в ранее разработанных на базе БК системах, для чего потребуется лишь перенести их встроенное ПО из 5-го в 6-й банк.

Описанная система вместе с контроллером представляет собой законченное устройство, превращающее БК-0010 в самый дешёвый 16-разрядный компьютер, доступный сегодня потребителю. Она обладает неоспоримыми преимуществами по сравнению с аналогами и позволяет активно использовать как БК в качестве «домашнего ДВК», так и ДВК в качестве системы разработки программ для БК.

О. БУЛАНОВ


 

Программное исполнение системных команд Бейсика БК

Вильнюсская версия Бейсика, с которой приходится иметь дело пользователям БК-0010, не позволяет исполнять системные команды (SAVE, CSAVE, LIST и др.) программным образом. Это сильно обедняет возможности программистов и не позволяет автоматизировать некоторые весьма полезные процессы, например считывание или запись программ под контролем компьютера, просмотр текстов программ в автоматическом режиме и т.п.

Для ликвидации этого недостатка предлагается способ введения командной строки в текст программы и вызов её на исполнение, иллюстрируемый демонстрационной программой.

10 CLS
20 P$="CSAVE"+CHR$(34)+"EXE"+CHR$(34)+CHR$(10)+"GOTO270"
30 ADR%=&O1000
40 IF LEN(P$) MOD 2=1 THEN P$=P$+" "
50 FOR L%=1 TO LEN(P$) STEP 2
60 CD%=256%*(ASC(MID$(P$,L%+1,1%)))+(ASC(MID$(P$,L%,1%)))
70 POKE ADR%,CD%
80 ADR%=ADR%+2%
90 NEXT L%
100 POKE ADR%,&O12
110 POKE &O124,&O1000
120 POKE &O122,LEN(P$)+1%
130 END
. . .
. . .
270 ?"Произведена запись в файл EXE.COD"
280 END

Комментарии к программе.

  1. В строке 20 сформирована командная строка, содержащая команды CSAVE “ЕХЕ” и GOTO 270. После выполнения первой из них текст программы, содержащей эту строку, автоматически будет записан в файл с именем ЕХЕ в формате команды CSAVE. Затем последует уведомление оператора о выполненной процедуре.

    В командной строке может быть записано столько команд, сколько позволяет буфер строки (255 символов). Нужно только учесть, что все команды в строке должны быть разделены кодом 10 (CHR$ (10)).

  2. В строке 30 устанавливается адрес командной строки в памяти; стандартным является адрес 1000(8). Использовать другие адреса нецелесообразно, поскольку они либо используются программами, либо ненадёжны, как, например, адрес буфера оператора INPUT 2422(8).
  3. В строке 40 длина командной строки увеличивается до чётного числа для удобства размещения в памяти.
  4. В строках 50-90 размещается цикл, заносящий символы в память. Внутри цикла (строка 60) происходит превращение двух символов, идущих подряд, в одно число (форматирование записи).
  5. В строках 100-120 осуществляется запись кода 10 в конце командной строки, установка адреса строки в памяти и её длины.
  6. Для вывода командной строки на экран и её исполнения обязательна строка 130 с командой END.
  7. Остальные строки введены в демонстрационных целях для контроля выполнения командной строки.

Особенностью предлагаемого способа является то, что пока инициализированная строка команд не будет выполнена полностью, её содержимое будет попадать в буферы операторов INPUT и INKEY$.

А. МУМИНОВ


 

Кирпичики ваших программ

Рубрика с этим названием впервые появилась в нашем журнале в третьем номере за 1991 г. и немедленно вызвала большое число одобрительных отзывов у пользователей БК.

В этом номере, уважаемые читатели, вы найдёте новую подборку программистских находок; надеемся, что и на неё вы откликнитесь с не меньшим энтузиазмом.

И. Шебалкин предлагает вводить бегущую строку следующей подпрограммой:

1000 A$=STRING$(&H20,&H20)+A$+STRING$(&H14,&H20)
1010 IFLEN(B$)=1%THA%=1%ELA%=A%+1%
1020 B$=""+MID$(A$,A%,&H20)
1030 ?AT(0%,10%)B$
1040 IFINKEY$<>""THRETELGOT1010

Строка задаётся переменной А в любом месте основной программы, а темп её вывода на экран может быть задан параметром N% в элементарном цикле задержки, встроенном в подпрограмму между строками 1020 и 1030:

1023 FOI%=0%TON%
1024 NEXI%

Этот же автор предлагает простой способ защиты программы от несанкционированного доступа: достаточно ввести в начало уже отлаженной программы строку

POKE 4%,&O134602

и любая попытка остановить работающую программу клавишей СТОП приведёт к исполнению команды NEW со всеми вытекающими отсюда последствиями...

 

 

Д. Баженов предлагает свой приём ввода сообщения в служебную строку.

10 IFPEEK(&H20)=0%TH?CHR$(&H9B)
20 ?CHR$(&H94)CHR$(&H9E)CHR$(&H91)
30 POKE&H82,&H3C00
40 ?AT(0%,0%)"...сообщение...
50 POKE&H82,&H4000

Если к этой подпрограмме добавить три строки

60 POKE&H88,&H4000
70 POKE&HFFB4,&H200OR(PEEK(&H84)/&H40-&H28)
80 LOC&HA,&HA

то служебная строка с сообщением сместится в низ экрана.

Предлагаемая им же подпрограмма позволяет вдвое увеличивать размеры символов на экране.

5 ?CHR$(140%)CHR$(140%)
10 DATA &H1345,&H15C3,&H4180,&H65C3,&H280,&H7F43,&H10C0,&H65C0,
&H280,&H15C1,&HA,&H15C2,&H20,&H140B,&H14F3,&H3E,
&H7E84,&H65C3,&H40,&H7E49,&H87
20 FOA%=512%TO552%ST2%
30 REAC%
40 POKEA%,C%
50 NEXA%
60 DEFUSR=512%
70 ?AT(3%,5%)"УДВОЕННЫЙ ШРИФТ
80 A%=USR(5%)

А программа

10 IFPEEK(32%)=0%TH?CHR$(155%)
20 ?CHR$(12%)CHR$(148%)CHR$(158%)CHR$(145%)
30 POKE-50%,192%
40 POKE-50%,0%
50 IFINP(-50%,64%)TH50ELJ%=PEEK(-78%)
60 PSET(X%,Y%),2%
70 IFJ%=8%ANDX%>0%THX%=X%-1%
80 IFJ%=25%ANDX%<255%THX%=X%+1%
90 IFJ%=26%ANDY%>0%THY%=Y%-1%
100 IFJ%=27%ANDY%<239%THY%=Y%+1%
110 GOT50

позволяет прорисовывать линии курсорными клавишами.

Оказывается, можно прорисовывать линии не только четырьмя основными цветами палитры БК, но и произвольным их сочетанием:

10 CLS
20 FOI%=0%TO239%
30 POKE138%,I%+1000%
40 LINE(0%,0%)-(255%,I%),0%
50 NEXI%
60 POKE138%,0%

Этот же автор рекомендует при случайном выходе в монитор БК возвращаться в Бейсик-систему без потери программы в ОЗУ с помощью команды

?S120170

а при случайном затирании текста программы командами NEW или DEL попытаться восстановить его в памяти БК командой

РОКЕ&О2024,&О2026

 

 

Д. Шеховцов предлагает организовать плавное смещение экранной страницы подпрограммой

10 А%=16383%
20 FOI%=0%TO255%
30 POKE-76%,РЕЕК(-76%)+1%
40 FOJ%=A%TOA%+63
50 POKEJ%,0%
60 NEXJ%
70 A%=J%
80 NEXT%
90 POKE-76%,728%
100 RET

Строка 90 может быть заменена строкой

90 ?CHR$(140%)CHR$(140%)

для обеспечения исходной установки ячейки 204, например для вывода сообщения в служебную строку. Естественно, это справедливо только для случая, когда служебная строка уже предварительно была погашена тем или иным способом.

 

 

В. Владимиров прислал две подпрограммы, анализирующие слово состояния дисплея (ССД).

Анализ бита 0:

10 POKE&O1000,&O104034
20 POKE&O1002,&O10015
30 POKE&O1004,&O207
40 DEFUSR=&O1000
50 IFMID$(BIN$(USR(А%)),15,1)<>"0"ТН ?CHR$(&O233)

При этом вывод информации будет происходить в формате 64 символа в строке независимо от режима показа, установленного ранее.

Анализ бита 3:

50 A$=BIN$(USR(А%))
60 IFMID$ (А$, 12, 1) О" 1 "TH?"Включите регистр РУС"ELGOT80
70 GOT50
80 '...продолжение программы

Программа продолжит свою работу только при соответствующем регистровом переключении.

Подобным же образом можно организовать анализ остальных битов ССД, что расширяет возможности программиста и даёт интересные решения достаточно сложных проблем.

 

 

Читатель В. Константинов более двух лет успешно использует адаптированный им для БК алгоритм генератора случайных чисел, предложенный в книге Дж. Теннанта-Смита «Бейсик для статистиков».

10 W1=8192
20 W2=67101323
30 W3=W1*W1-W2
40 ?"Введите число из интервала 1-67101322 для задания последовательности случайных чисел:":
50 INPW
60 W4=INT(W/W1)
70 W=W3*W4+W1*(W-W1*W4)
80 IFW>W2 TH W=W-W2
90 X=INT(100*(W/W2)+1)
100 ?X;
110 GOT60

По мнению автора, этот алгоритм обладает рядом существенных преимуществ перед алгоритмом штатного генератора случайных чисел БК: большим рассеянием, отсутствием корреляции троек чисел, возможностью повторения любой из 67101322 последовательностей случайных чисел. Апробирован при разработках статистических моделей и программирования игр.

 

 

С.А. Паничев (Мурманская обл.) обратил внимание на ошибки, вкравшиеся в опубликованную в «ИНФО» (№ 4-90) схему БК-0010:

 

И. ПАНЧЕНКОВ


 

Список статей о БК-0010, опубликованных в течение 1991 г.

Для читателей, начавших выписывать «ИНФО» только в этом году, приводим список статей о БК-0010, опубликованных в течение 1991 г.

Барсуков А. Подключение принтеров «Электроника МС-6312» и «Электроника МС-6313» к БК

3

Барсуков А. БК-0010.01 в роли осциллографа

5

Барсуков А. Энергонезависимое ОЗУ

2

БК-информ

Информация о назначении контактов некоторых разъёмов БК и функциях контактов клавиатуры

4

Гармашов А. Удобный аналог команды MERGE

2

Губаренко В. Волшебная сила двух ячеек

Об использовании режима псевдоклавиатуры, позволяющего в автоматическом режиме исполнять директивы Бейсика

3

Диков А., Калашников А., Кулаков А. TermOS

Описание операционной системы, использующей в качестве внешнего запоминающего устройства полностью управляемый БК магнитофон, и необходимых доработок магнитофона и компьютера

2-3

Еремин Е. Как работает команда MARK

6

Ермаков А. Программатор микросхем ППЗУ 558РРЗ для БК-0010

3

Зальцман Ю. Архитектура и ассемблер БК

(прим.gid: эта книга была распознана из журнала ПК БК, там она в более расширенном виде публиковалась)

1-5

Зальцман Ю. Продолжительность исполнения команд на БК-0010

6

Зальцман Ю., Михайлов В. БК-0010 - речь и слух: возможности и реальность

2

Ингорь А. Конвертор Бейсик - ассемблер для БК

1

Ингорь А. Просмотрщик памяти

2

Калейдоскоп БК

1,5

Карагиоз С. Многоформатный верификатор-каталогизатор

6

Ким В. Важные восьмеричные числа

3

Козлов О. «Куплю БК...»

4

Коренков В. Диспетчер ОЗУ и операционная система для БК-128К

Описание схемы увеличения ОЗУ БК-0010 до 128К байт и программы, позволяю щей использовать эту дополнительную память

6

Кошелев В. Подключение термопринтера 15ВВП80-002 к БК

6

Кумандин С., Соколов А. «Электронный диск» для БК-0010

1

Луцкевич Ю. 4УСЦТ - монитор

Описание доработки телевизора 4УСЦТ, позволяющей с лёгкостью переключать его в режим монитора

6

Матвийчук С. Увеличение символов на экране

3

Михайлов П. Улучшение сопряжения БК и ТВ

5

Молдавский 3. Работа с символьными величинами

Оригинальный приём «обхода» ошибок компилятора Бейсика

4

Молчанов А. Оптимальный драйвер магнитофона для БК

3

Никонов П. Спрайты на БК

3

Панченков И. Кирпичики ваших программ

3

Парсаданов О., Янушко А. Защита программ от несанкционированного доступа

1

Подгорецкий А. Дополнительные сведения о системном таймере

6

Рекомендации по оформлению программного обеспечения ПЭВМ БК-0010/ 0010.01

1

Рекомендации по подключению внешних устройств к порту ввода-вывода БК-0010

3

Садовников М., Петрук О. Упрощение организации движения изображений в Бейсике

5

Соколов А. Принципы работы БК-0010

Описание работы микропроцессора К1801BM1А, системной шины, ОЗУ, устройств ввода-вывода и системы прерываний БК на «физическом» уровне

1

Сулейманов Т. и др. Цветной монитор как чёрно-белый

Об использовании цветного монитора в одноцветном режиме

6

Фролкин Б. О «дребезге» клавиатуры БК-0010

6

Хорунжий В. Подключение принтера «Электроника МС-6312» к БК

Приведён текст драйвера для управления МС-6312 из МИКРО8К

4

Чернолясов А. О символьных переменных

3

 

 

Performed by © gid, 2012-2022.