УДК 681.3.06
Д.А. Черников, К.А. Черников
ПАКЕТ ПРОГРАММ ДЛЯ РАБОТЫ МИКРО-ЭВМ «ЭЛЕКТРОНИКА БК-0010» В КОМПЛЕКТЕ С ПЕЧАТАЮЩИМ УСТРОЙСТВОМ
Подключение печатающего устройства (ПУ) к БК-0010 существенно расширяет спектр возможностей компьютера. Авторами разработан пакет программ для работы БК-0010 в комплексе со стандартной термопечатью (в комплекте с ДВК-2) или другим ПУ с аналогичным интерфейсом. В первый момент было желание разработать одну универсальную программу, выполнявшую все функции, которые могут потребоваться при печати с БК-0010. Но универсальная программа стала занимать довольно значительный участок и без того малой памяти, что заставило отказаться от этого варианта и создать пакет для работы в различных режимах (ФОКАЛЕ, Мониторе, БЕЙСИКЕ-87...) и печати текстовых файлов различных форматов (MIKRO8S, EDASP...). В пакет входят следующие программы:
DIR/PRI - печать каталогов файлов (с указанием имени и типа файла, а также его начального адреса и длины), записанных на внешний носитель. Все имена прочитанных файлов заносятся в буфер (в формате редактора текстов EDASP), который может быть записан на внешний носитель и в дальнейшем считываться из редактора EDASP как простой текстовый файл. Существует возможность многократной печати буфера (программа работает в диалоговом режиме).
PRI/FOC:DOC - печать текстов или результатов работы программ, написанных на ФОКАЛЕ. Печать производится с разбиением текста на страницы с указанием в начале каждой имени работающей (или распечатываемой) программы и номера страницы. Существует вариант этой программы и без разбиения на страницы. После запуска программы с адреса её загрузки управление передаётся ФОКАЛУ, затем, используя его стандартные команды, можно считать программу, текст или результаты работы которой требуется вывести на печать. Необходимо лишь следить за тем, чтобы текст программы, написанной на ФОКАЛЕ, не затёр программу печати, для чего последнюю нужно загружать в дальние ячейки ОЗУ (программа занимает 1150 адресов) или, если программа на ФОКАЛЕ занимает всю область ОЗУ, переходить в режим расширенной памяти. Для включения режима печати надо указать команду X FCHR(1). Далее любой текст, выводимый на дисплей, будет дублироваться на ПУ. Выключается режим печати по команде X FCHR(2).
PRI/ED/K - печать файлов, написанных в редакторах EDASP и MIKRO8K, или других аналогичного формата. Печать осуществляется с разбиением на страницы и указанием в начале каждой имени печатаемой программы и номера страницы.
PRI/S - печать файлов, написанных в редакторе MIKRO8S, или других файлов аналогичного формата. Работа программы полностью аналогична PRI/ED/K.
PRI/MIK - дублирование на печать любой информации, выводимой на дисплей при работе в мониторе (например, распечатывает содержимое ячеек с адреса 0 по 1000), или печать нестандартных текстовых файлов (например, адресов меток операторов, получаемых при трансляции программы, написанной на МИКРО), или вывод любой информации, полученной после старта какой-либо программы из монитора (например, инструкций к некоторым играм, выполненных как законченные программы, а не в виде текстовых файлов). Вывод на ПУ начинается после ввода с клавиатуры или вставки в выводимый текст двух точек с запятой. После этого любая информация, выводимая на дисплей, будет дублироваться на ПУ. Выключается печать после ввода подряд двух звёздочек - **. (Если в выводимом тексте встречаются две звёздочки подряд, то символ окончания печати нужно выбрать другим. Это делается заменой кода звёздочки на другой.)
PRI/BAS - печать шести текстов или результатов выполнения программ, написанных на БЕЙСИКе для БК-0010 со встроенным ФОКАЛОМ. Программа получилась настолько маленькой, что её удалось разместить в области системного ОЗУ, которая при работе БЕЙСИКа остаётся незадействованной. Режим печати включается командой POKE 24,250, после чего любой текст, выводимый на дисплей (например, командой LIST) будет дублироваться на ПУ. Выключается печать командой POKE 24,-32694.
Особенности этих программ:
- символы, декодировка которых отсутствует в ПУ, заменяются на *;
- длина печатаемой строки - 80 символов. Если символов в строке больше 80, то оставшиеся символы переносятся на следующую строку;
- одна страница текста содержит 64 строчки;
- вывод на ПУ ведётся параллельно с выводом на дисплей. Работа программ без ПУ невозможна (за исключением DIR/PRI);
- в программе предусмотрена печать всех букв русского и латинского алфавитов как заглавных, так и строчных.
Сопряжение с печатью программное, ПУ подключается к разъёму пользователя. По младшим семи разрядам порта вывода на ПУ передаются данные, по восьмому разряду порта идёт сигнал, который подаётся на контакт СИ4 разъёма термопечати (для переключения режимов работы ПУ), девятый разряд - сигнал синхронизации. Сигнал СИ3 на разъёме термопечати подключён к выводу «Корпус», разряд готовности не используется (считается, что оба устройства всегда готовы к передаче данных). Остальные контакты разъёма термопечати не используются.
Телефон 582-45-34, Москва
Сообщение поступило 26.05.88
УДК 681.322.042
В.Л. Лавровский
ГРАФИКА ЛОКАЛЬНОЙ СЕТИ МИКРО-ЭВМ БК-0010
Разработана локальная сеть, позволяющая работать на языке Паскаль с элементами формирования графических изображений на микро-ЭВМ БК-0010. Сеть промышленного исполнения функционирует без технических изменений. Работу сети в центральном комплексе обеспечивает программа связи с БК-0010 и операционная система ОС ДВК со средствами для работы на Паскале. В каждой из БК-0010 выполняется программа-монитор, содержащая редактор текста. Она преобразует команды оператора на трансляцию, загрузку исходного текста и оттранслированной программы в БК-0010 в соответствующие запросы к программе, исполняемой в центральном комплексе.
За основу модуля-ловушки прерываний взят модуль ST10 [1], недостатком которого можно считать невозможность выполнения многих команд EMT БК-0010, так как все команды EMT, не связанные с вводом-выводом на дисплей, воспринимаются им как ошибочные. Изменения, позволяющие устранить этот недостаток, свелись к преобразованию модуля ST10 от метки EXIT: до метки ЕХЕМТ:
EXIT: CMPB R0,#350 BNE BKEMT HALT BKEMT: MOVB R0,EMT BIC #1,6(SP) MOV (SP)+,R1 MOV (SP)+,R0 EMT: EMT 0 JSR PC,T60 RT1 EXEMT:
Возможность использовать команды EMT в программах позволила выводить графические изображения на экран монитора БК-0010. Для этого были написаны процедуры на Паскале, в которых применяются фрагменты на Макроассемблере. Процедуры оформлены, как внешние, оттранслированы отдельно и объединены в библиотеку GRAF.OBJ, расположенную на диске центрального комплекса. В состав библиотеки входят процедуры:
INIT - начальная инициация графического пакета,
POINT(X,Y:INTEGER; LIGHT:BOOLEAN) - формирования точки,
LINE(X1,Y1,X2, Y2:INTEGER;LIGHT:BOOLEAN) - формирование линии,
CIRCLE(X,Y,R:INTEGER; LIGHT:BOOLEAN) - построение окружности,
ARC(X,Y,R,L1,L2:INTEGER;LIGHT:BOOLEAN) - построение дуги,
BOX(XLD,YLD,XUR,YUR:INTEGER;LIGHT:BOOLEAN) - построение прямоугольника,
FILL(X,Y:INTEGER;LIGHT:BOOLEAN) - заполнение области,
CELL(I,J:INTEGER;VAR MAT:TMAT;LIGHT:BOOLEAN) - вывод на экран массива 8×8 точек, где тип TMAT - ARRAY [1...8] OF CHAR.
Эти процедуры подключаются к головной программе на этапе компоновки и должны быть описаны в ней, как внешние. Параметр LIGHT означает свечение или гашение точки: если LIGHT - TRUE, то точка с этими координатами засвечивается; если же LIGHT - FALSE, то точка гаснет.
В качестве примера рассмотрим реализацию процедуры LINE:
(* Е+*) PROCEDURE LINE(X1,Y1,Х2,Y2:INTEGER;LIGHT:BOOLEAN); BEGIN MO\C (* C MOV #1,R0 TSTB LIGHT(SP) BNE 1 MOV R0 MOV X1(SP),R1 MOV Y1(SP),R2 EMT -030 MOV X2(SP),R1 MOV Y2(SP),R2 EMT -032 *) END;
Полезная особенность сети - возможность получения копии графического изображения с экрана БК-0010. Для этого содержимое ОЗУ БК-0010, соответствующее экранной памяти, записывается на диск центрального комплекса и затем распечатывается на матричном устройстве печати. Кроме того, возможна и немедленная (т.е. минуя диск) распечатка содержимого экранного ОЗУ.
Телефон 5-79-14, Орджоникидзе
ЛИТЕРАТУРА
- Водянкин А.Г., Моисеенко В.И., Учебная локальная сеть микро-ЭВМ // Микропроцессорные средства и системы.- 1987. - № 4.
- Математическое обеспечение микро-ЭВМ БК-0010. Руководство системного программиста. - 1985. - Т. 1, кн. 2.
- Микрокомпьютерная графика / Д. Хирн, М. Бейкер. - М.: Мир, 1987.
Статья поступила 20.06.88
УДК 681.3
Б.М. Лисенков
СОПРЯЖЕНИЕ ПИШУЩЕЙ МАШИНЫ КОНСУЛ-260 С ПЭВМ ТИПА БК-0010
Для сопряжения электрифицированной пишущей машины (ЭПМ) «Консул-260» с ПЭВМ БК-0010 разработана схема переходного устройства и написана программа-драйвер АЦПУ, загружаемая в ПЭВМ с магнитной ленты при необходимости вывода информации на печать. Программа-драйвер написана на языке ассемблера в трёх вариантах: в виде самостоятельной программы, загружаемой в любую область ОЗУ пользователя; дополнения («врезки») к интерпретатору языка ФОКАЛ, имеющемуся в ПЗУ машины; врезки в компилятор языка БЕЙСИК, при этом получившийся дополненный компилятор хранится на магнитной ленте и загружается вместо обычного компилятора для вывода информации на печать. Все разновидности драйвера обеспечивают вывод на печать текстов программ и данных, включая результаты решения задач, т.е. дают полную распечатку всей информации, выводимой на экран.
Рис. 1. Принципиальная схема переходного устройства
С драйверами АЦПУ работают в режиме «узкого» экрана, в котором ёмкость ОЗУ пользователя увеличена с 357768 до 557768 байт. Загрузка драйвера производится обычно, начиная с адреса 400008, хотя начальный адрес загрузки может быть любым.
При начальном запуске с адреса загрузки (в режиме «Монитор» - S<адрес загрузки>, а в режиме отладки «ТС» - G<адрес загрузки>) программа изменяет векторы прерывания по клавиатуре (60) и EMT (30) на адреса подпрограмм дополнительного анализа кодов символов клавиатуры и прерываний по EMT. В самостоятельном варианте драйвера замена операторов NOP и HALT по адресам 14 и 16 на оператор JMP <начальный адрес> позволяет передавать управление после начального запуска на любую программу, расположенную в ОЗУ или ПЗУ. Такой механизм используется, в частности, в вариантах «врезок» в язык ФОКАЛ (оператор JMP 120000) и компилятор языка БЕЙСИК (оператор JMP 15174).
Рис. 2. Функциональная схема переходного устройства
Рис. 3. Схема соединений переходного устройства
040000 |
012737 |
040066 |
000060 |
012737 |
040020 |
000030 |
040014 |
000240 |
000000 |
010546 |
016605 |
000002 |
014505 |
040030 |
042705 |
177400 |
022705 |
000016 |
001403 |
012605 |
040044 |
000137 |
100112 |
012605 |
022700 |
000214 |
001372 |
040060 |
012700 |
000040 |
000767 |
023727 |
177662 |
000015 |
040074 |
001406 |
023727 |
177662 |
000020 |
001410 |
000137 |
040110 |
101136 |
012737 |
040136 |
000030 |
004767 |
001020 |
040124 |
000002 |
004767 |
001066 |
000240 |
000002 |
010546 |
040140 |
016605 |
000002 |
014505 |
042705 |
177400 |
000167 |
040154 |
001062 |
000240 |
012605 |
000137 |
100112 |
012605 |
040170 |
022700 |
000214 |
001002 |
012700 |
000040 |
004767 |
040204 |
000002 |
000765 |
010346 |
010446 |
010546 |
004767 |
040220 |
000226 |
010704 |
004767 |
000650 |
126400 |
000510 |
040234 |
001444 |
005204 |
077505 |
010704 |
004767 |
000642 |
040250 |
126400 |
000600 |
001453 |
005204 |
077505 |
022700 |
040264 |
000012 |
001413 |
022700 |
000025 |
001410 |
012737 |
040300 |
077737 |
177714 |
004767 |
000160 |
004767 |
000134 |
040314 |
000451 |
012737 |
175577 |
177714 |
004767 |
000140 |
040330 |
004767 |
000114 |
004767 |
000140 |
000240 |
000240 |
040344 |
000435 |
012737 |
177177 |
177714 |
004767 |
000110 |
040360 |
004767 |
000064 |
004767 |
000310 |
000240 |
004767 |
040374 |
000072 |
004767 |
000046 |
000416 |
012737 |
176577 |
040410 |
177714 |
004767 |
000052 |
004767 |
000026 |
004767 |
040424 |
000252 |
000240 |
004767 |
000034 |
004767 |
000010 |
040440 |
012605 |
012604 |
012603 |
000207 |
012737 |
177777 |
040454 |
177714 |
012704 |
001000 |
000240 |
077402 |
000207 |
040470 |
012704 |
020000 |
077401 |
000207 |
012704 |
177777 |
040504 |
000240 |
077402 |
000207 |
000000 |
000000 |
000000 |
040520 |
077577 |
077737 |
077757 |
077773 |
077775 |
077776 |
040534 |
137737 |
137757 |
137767 |
137773 |
137775 |
137776 |
040550 |
157577 |
157737 |
157757 |
157767 |
157773 |
157775 |
040564 |
157776 |
167737 |
167757 |
167767 |
167773 |
167775 |
040600 |
167776 |
173737 |
173757 |
173767 |
173773 |
173775 |
040614 |
173776 |
173776 |
175737 |
175757 |
175767 |
175773 |
040630 |
175775 |
175776 |
176577 |
176737 |
176757 |
176767 |
040644 |
176773 |
176775 |
176776 |
177177 |
177337 |
177357 |
040660 |
177367 |
177373 |
177375 |
177376 |
137767 |
175773 |
040674 |
177373 |
177373 |
012704 |
000070 |
160504 |
060404 |
040710 |
000240 |
000240 |
060304 |
000506 |
006010 |
044050 |
040724 |
054120 |
024441 |
044537 |
054521 |
021033 |
041052 |
040740 |
051112 |
021532 |
041453 |
051513 |
022133 |
042074 |
040754 |
052114 |
133574 |
036445 |
120105 |
056525 |
023016 |
040770 |
043076 |
053116 |
007536 |
037447 |
076507 |
077527 |
041004 |
066500 |
067717 |
014430 |
164070 |
174360 |
034461 |
041020 |
164741 |
174761 |
031024 |
161072 |
171352 |
031772 |
041034 |
161473 |
171753 |
032373 |
162054 |
172354 |
137774 |
041050 |
026465 |
166745 |
176765 |
033162 |
163056 |
173356 |
041064 |
066376 |
027467 |
167747 |
160367 |
046501 |
047460 |
041100 |
012705 |
000070 |
162704 |
000014 |
000405 |
012705 |
041114 |
000070 |
162704 |
000034 |
000240 |
010403 |
000207 |
041130 |
000000 |
000000 |
016437 |
000310 |
177714 |
000207 |
041144 |
010046 |
010146 |
012701 |
000010 |
012700 |
000341 |
041160 |
104022 |
005201 |
012700 |
000343 |
104022 |
005201 |
041174 |
012700 |
000360 |
104022 |
005201 |
012700 |
000365 |
041210 |
104022 |
012601 |
012600 |
000207 |
012737 |
040020 |
041224 |
000030 |
010046 |
005000 |
104022 |
012600 |
000207 |
041240 |
022705 |
000016 |
001002 |
000167 |
176714 |
022705 |
041254 |
000020 |
001402 |
000167 |
176674 |
012605 |
010046 |
041270 |
010346 |
010203 |
000303 |
042702 |
177400 |
112100 |
041304 |
104016 |
120003 |
001401 |
077205 |
012603 |
012600 |
041320 |
000000 |
000000 |
000000 |
000000 |
000000 |
000000 |
Рис. 4. Дамп памяти драйвера печати
В составе программы-драйвера имеется несколько подпрограмм. Подпрограмма дополнительного анализа кодов символов клавиатуры служит для включения (клавиша ПЭВМ УСТ. ТАБ.) и выключения (СБР. ТАБ) режима печати. Используются также комбинации клавиш СУ с соответствующими алфавитными. Включение режима печати сопровождается появлением на служебной строке слова АЦПУ.
Подпрограмма анализа прерываний по EMT обеспечивает вызов подпрограммы управления печатью при прерываниях по EMT 16 (посимвольный вывод, применяется в самостоятельном варианте и с языком ФОКАЛ) или по EMT 20 (вывод строки, используемый в основном с компилятором языка БЕЙСИК). При прерывании по EMT 20 строка выводится путём многократного вызова в цикле оператора EMT 16 и подпрограммы управления печатью. В любом случае подпрограмма управления печатью вызывается только при включённом режиме печати.
Подпрограмма управления печатью ставит в соответствие каждому печатному символу (на ЭПМ «Консул-260») комбинацию двоичных разрядов, соответствующую данному символу в коде матрицы включения электромагнитов ЭПМ, и заносит её в выходной регистр 16-разрядного параллельного порта БК-0010 в виде числа, представляемого по одной единице в старшем и младшем байтах. Эти комбинации разрядов формируются с помощью таблицы, в которой каждому печатному символу поставлено в соответствие определённое двоичное число (выходной код), состоящее из указанных выше двух единиц. Вместо строчных букв, полуграфики и других символов, отсутствующих на ЭПМ «Консул-260», печатаются пробелы. Таблица сравнения символов побайтная, а таблица выходных кодов пословная, так как каждый выходной код занимает 16 разрядов. Выходные коды хранятся в таблице в дополнительном коде в соответствии с принципом вывода информации на порт, принятым в ПЭВМ БК-0010.
Переходное устройство (рис. 1), включаемое между выходным регистром порта БК-0010 и входами матрицы электромагнитов ЭПМ, преобразует сигналы уровня ТТЛ, выдаваемые ПЭВМ, в сигналы высокого уровня, требуемые для возбуждения электромагнитов. Сопротивление электромагнитов ЭПМ постоянному току составляет 8 и 17 Ом, а ток необходимый для их срабатывания, должен быть в пределах 0,8...1,5 А. Напряжение питания цепей электромагнитов - 12 В. Переходное устройство содержит восемь «плюсовых» каналов, входы которых подключаются к выходам старшего байта порта БК-0010, и восемь «минусовых» каналов, входы которых подключаются к выходам младшего байта (рис. 2). Каждый канал содержит мощный ключ на транзисторе, управляемый соответствующими предварительными каскадами, осуществляющими усиление и преобразование уровня сигнала. Входные каскады всех каналов одинаковы по схеме и параметрам. Схема соединений приведена на рис. 3, самостоятельный вариант разработанного драйвера - на рис. 4 в виде дампа памяти.
Переходное устройство эксплуатируется уже более полугода и за это время показало себя надёжным в работе.
Телефон 150-33-18, Москва
Статья поступила 8.07.88