Партнёр/Радиолюбитель 1994/Большие возможности ПК «Партнёр»

Материал из Emuverse
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: А.ЛАШКОВ

Источник: Архив журнала Радиолюбитель

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

Прочитав красочную рекламу ПК «Партнер» в журнале «Радио» (N 7/1988 г.), некоторые любители компьютерной техники приобрели этот компьютер, надеясь в будущем приобрести еще и дополнительные модули расширения. Однако мало кому это удалось.

С другой стороны, отсутствие хорошего описания архитектуры ПК вынуждает многих пользователей ограничить возможности своего компьютера возможностями «Радио-86РК» с ОЗУ емкостью 32 К.

Целью данной статьи является дополнение эксплуатационной документации, поставляемой с ПК «Партнер», которое даст возможность пользователю создавать более сложное мощное программное обеспечение.

Описание разбито на разделы, в каждом из которых описан один узел ПК. Так как прародителем «Партнера» является «Радио-86РК», рекомендуем всем пользователям ПК «Партнер» прочесть его подробное описание в [1].

МОНИТОР

Компьютер является ничем иным как беспрекословным исполнителем программ, в первую очередь, программ операционной системы (ОС). ОС обеспечивает управление ресурсами компьютера и процессами. В ПК «Партнер» функции ОС выполняет управляющая программа «Монитор».

«Монитор» занимает в адресном пространстве ПК 4 Кбайта и, после нажатия на клавишу «Сброс» располагается в адресах 0F000H — 0FFFFH. Более подробная информация приведена в табл.1.

Технологический тест запускается по директиве А1234. После этого производится проверка ОЗУ, ПЗУ и узла управления прерываниями. Неисправность идентифицируется по светодиоду РУС/ЛАТ и звуковому сигналу: Табл.1

Адрес              Назначение
0F003H—0F03EH      Таблица переходов на подпрограммы обработки прерываний 
0F03FH—0F0FFH      Свободно 
0F100Н—0F24FH      Технологический тест компьютера 
0F250H—0F281Н      Подпрограмма обработки директивы Е 
0F282H—0F749H      Подпрограммы обработки диретив R и W 
0F74AH—0F7FFH      Свободно 
0F800H—0FFE9H      Основная часть монитора 
OFFEAH—0FFFEH      Свободно 
0FFFFH             DD — байт идентификации ПЗУ
  • РУС/ЛАТ не горит, сигнала нет — неисправность узла управления прерываниями;
  • РУС/ЛАТ не горит, сигнал есть — неисправность ПЗУ;
  • РУС/ЛАТ светится, сигнала нет — неисправность ОЗУ.

В мониторе имеются три неописанные директивы: Е, К и Z.

Директива Е имеет форму Е N, где N-1,2,3 или 4 и определяет номер разъема X1, Х2, Х3 или Х4, к которому подсоединено некоторое внешнее устройство (ВУ). Какое — гадать не будем. Можно только сказать, что после идентификации этого ВУ по первым двум символам «ПР» (код 0x70 и 0x72) управление передается по адресу, прочитанному из 0Е004Н, 0Е005Н.

Директива К предназначена для создания рисунков и надписей на всем поле экрана. Параметров директива не имеет. Выход — по нажатию клавиши F4. Директива может быть полезна для печатания писем, объявлений, если осуществляется вывод символа параллельно на экран и на печатающее устройство.

Директива Z предназначена для поиска в области памяти двухбайтного значения (слова). Формат директивы Z подобен формату директивы S за исключением третьего параметра, длина которого равна двум байтам.

В таблице переходов монитора (адреса с 0xF800 пo 0xF85F) существуют пять неописанных точек входа:

  • 0F851Н — выключает мотор магнитофона (МГ) и запускает индикацию на экране;
  • 0F854H — временная задержка порядка 2,8 с, выключает мотор на МГ и запускает индикацию на экране;
  • 0F857H — обнуление области хранения контрольной суммы (0764ВН,0764СН);
  • 0F85AH — подсчет контрольной суммы по алгоритму директив R и W. Вход: HL — адрес начала, DE — адрес конца. Выход: HL — контрольная сумма;
  • 0F85DH — преобразует байт в двухбайтное число и прибавляет к контрольной сумме. Вход: А — код. Выход — увеличенная сумма в 0764ВН, 0764СН. Например, в результате преобразования числа 055Н, содержащегося в регистре А, получится число 001FEH, которое будет прибавлено к контрольной сумме.

Назначение полей рабочей области монитора представлено в табл.2.

Табл.2

7600Н—7601Н Адрес курсора в экранной области (например, 077BDH — первый символ первой строки).
7602Н—7603Н Координаты курсора в экранной области (счетчик строк, счетчик столбцов).
7604Н Флаг состояния клавиши РУС/ЛАТ.
7605Н 02СН — стандартное значение константы записи.
7606Н 042Н — стандартное значение константы чтения.
7607Н Рабочая ячейка подпрограммы ввода байта с МГ.
7608Н—7609Н Не используются.
760АН—760ВН Рабочие ячейки при работе с клавиатурой. По адресу 0760АН содержится последний введенный код.
760СН—760DH Рабочие ячейки. Используются при прямой адресации курсора.
760ЕН—760FH Рабочие ячейки при работе с клавиатурой.
7610Н—7611Н 075FFH — адрес ОЗУ, доступного пользователю.
7612Н—761ЗН Значение регистра PC. Сохраняется при достижении точки останова (выполнение G с адресом останова).
7614Н—7615Н Значение регистра HL. Сохраняется при достижении точки останова (выполнение G с адресом останова.
7616Н—7617Н Значение регистра ВС. Сохраняется при достижении точки останова (выполнение G с адресом останова).
7618Н—7619Н Значение регистра DE. Сохраняется при достижении точки останова (выполнение G с адресом останова).
761АН—761ВН Значение регистра SP. Сохраняется при достижении точки останова (выполнение G с адресом останова).
761СН—761DH Значение регистра AF. Сохраняется при достижении точки останова (выполнение G с адресом останова).
761ЕН Сохраняется байт программы, на место которого помещается код команды RST7 (G с адресом останова).
761FH 0C3H (JMP) — в конце выполнения директивы G по этому адресу передается управление.
7620Н—7621Н Первый параметр директивы (число).
7622Н—7623Н Второй параметр директивы (число).
7624Н—7625Н Третий параметр директивы (число).
7626Н Рабочая ячейка.
7627Н—7636Н Буква директивы и ее параметры в символьном виде или имя файла (до 8 байт) — используют R и W.
7637Н—7639Н (С90000) Использует подпрограмма ввода символа с клавиатуры.
763АН—763СН (С90000) Использует подпрограмма вывода символа на экран.
763DH—763FH (С90000) Использует подпрограмма ввода блока с магнитофона.
7640Н—7642Н (С90000) Использует подпрограмма вывода блока на магнитофон.
7643Н—7645Н Рабочие ячейки.
7646Н Не используется.
7647Н Рабочая ячейка.
7648Н Не используется.
7649Н 00 — не подсчитывать контрольную сумму; FF — подсчитывать контрольную сумму.
764АН Рабочая ячейка.
764ВН—764СН Значение контрольной суммы (используется директивами R и W).
764DH—7652Н Имя файла, прочитанного по директиве R.
7653Н—76CFH Стек.
7FD0H—76F3H Экранная область (видеоЗУ).
7FF4H—7FFFH Свободно.

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

В заключение приводим некоторые полезные подпрограммы монитора, которые можно использовать при разработке программного обеспечения:

  • 0F22CH — переключение на ОЗУ 54К;
  • 0xF3B3 — заполнение поля пробелами. HL — адрес начала, С — количество байт. Обращений PUSH H, PUSH В, CALL 0xF3B3;
  • 0F3C7H — вывод на экран ВК и ПС;
  • 0F554H — задержка порядка 0,78 с, выкл. мотора МГ, запуск индикации на экране;
  • 0F96DH — ввод строки символов с возможностью редактирования по адресу 07627Н с одновременным отображением на экране. Длина вводимой строки — не более 16 байт. Нельзя вводить символ '.';
  • 0FA3FH — печать HL в НЕХ-виде;
  • 0FA4BH — то же. Обращение: PUSH В, CALL 0FA4BH;
  • 0FA34H — вывод содержимого регистра А в НЕХ-виде и символа ' ' (пробел);
  • 0FE4AH — звуковой сигнал. Изменяется содержимое регистровой пары ВС;
  • 0FF85H — проверка на равенство HL и DE. Если равны, устанавливается признак Z.

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

УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ

Микропроцессор (МП) должен оперативно реагировать на различные события, происходящие в ПК в результате действий пользователя или по другим причинам. Необходимую реакцию на события выполняет система прерываний, состоящая из аппаратных и программных средств, которые обеспечивают выявление и обработку прерываний.

Узел управления прерываниями (УУП) состоит из следующих элементов: D2.1, D2.2, D3.1, D3.2, D5.2, D8.1, D10.3, D16.2, D16.3, D19 и двух диодов VD 2 и VD7 (здесь и далее все обозначения даны по электрической принципиальной схеме блока вычислителя в [ 2]).

В исходном состоянии, когда МП находится в состоянии запрета прерываний, а именно в этом состоянии находится МП после нажатия на клавишу «Сброс», на выводе 8 D3.2 присутствует уровень логической единицы. Импульсы обратного хода кадровой развертки VRTC.H, приходящие с частотой 50 Гц с вывода 8 контроллера дисплея D23, никакого действия не производят. На выводе 6 D5.2 будет уровень «О», так как триггер прерывания МП в состоянии запрета прерывания (выход INTE) установлен в «О». Сигнал TM.L (вывод 5 D8.1) установлен в «1» и обеспечивает на выводе 1 D2 уровень «1». Сигнал INTAI.L (вывод 4 D2) установлен в «1», так как сигнал SWOF.H (вывод 5 D3) установлен в «О».

В таком состоянии УУП будет находиться до тех пор, пока в программе пользователя не будет выполнена команда EI (Enable Interrupt), переводящая МП в состояние разрешения прерывания. В результате выполнения команды EI на выводе 16 МП устанавливается «1» (сигнал INTE) и по фронту этого сигнала на выводе 5 D8 устанавливается уровень логического нуля (сигнал TM.L — таймер). Низкий уровень сигнала ТМ.L вызывает появление «1» на выводе 1 D2, что интерпретируется МП как появление запроса на прерывание.

О переходе к обработке прерывания МП сообщает другим модулям компьютера словом состояния с единицей в разряде DO (приходит на вывод 2 триггера D3). С переходом сигнала STSB от низкого уровня к высокому (вывод 3 D3) сигнал SWOF.H (вывод 5 D3) устанавливается в «1». Появление сигнала SWOF. Н подтверждает запрос не прерывание. Сигнал SWOF.L («О» на выводе 6 D3), который является инверсным значением сигнала SWOF.H, вызывает установку сигнала IR.L (вывод 10 D16) в «О». Сигнал IR.L устанавливает на выводе 8 D3 уровень логического нуля и через диод VD2 устанавливает уровень нуля в третьем разряде шины данных. Таким образом, благодаря сигналу IR.L на шине данных формируется код 11110111В, что является кодом команды RST6, и МП начинает выполнение этой инструкции.

С приходом сигнала DBIN (строб приема данных при чтении), формируемого микропроцессором, на вывод 9 D10, на выводе 4 D19 вырабатывается сигнал RESINT.L. Этот сигнал переводит УУП в исходное состояние: сигнал SWOF.H устанавливается в «О», сигнал TM.L устанавливается в « 1». В этом состоянии УУП находится до прихода на вывод 11 D3 очередного импульса VRTC.H, после чего весь цикл повторяется.

Табл.3

1100: 3Е С3 32 30 00 2А В4 11 22 31 00 21 00 00 22 AF 
1110: 11 FB С9 F3 F5 С5 D5 Е5 21 ЕЕ 77 22 В1 11 3А В3 
1120: 11 3С 32 В3 11 FE 32 С2 6F 11 AF 32 В3 11 2А AF 
1130: 11 23 22 AF 11 1E 11 CD 75 11 4F IE 11 CD 75 11 
1140. 47 7D 59 21 B6 11 77 CD 98 11 70 CD 8D 11 73 CD 
1150: 8D 11 7B FE 59 C2 6F 11 2A AF 11 11 28 00 19 22 
1160: AF 11 78 FE 59 C2 6F 11 01 АО OF 09 22 AF 11 E1 
1170: D1 C1 F1 FB C9 AF 1D C8 29 8F 27 D2 76 11 23 C3 
1180: 76 11 E5 2A B1 11 71 23 22 B1 11 E1 C9 E5 2A B1

Результатом выполнения команды RST6 является передача управления по адресу 0x0030, куда программа пользователя до выдачи инструкции EI должна поместить команду перехода на подпрограмму обработки прерывания.

Использование прерывания 6 показано на примере программных часов, представленных в табл.3. Программа оттранслирована с адреса 0x1100. После запуска монитора по директиве G1100 в правом верхнем углу экрана начинает отсчитываться с нуля время в формате час:мин:сек. Заинтересованному читателю предоставляется возможность дизассемблировать программу и оттранслировать с любого другого адреса. Можно также добавить процедуру установки текущего времени.

Кроме прерывания 6, УУП может обрабатывать также и прерывание 5. Это прерывание использует внешнее устройство (ВУ), подстыкованное к одному из системных разъемов X1,Х2,ХЗ или Х4. Запрос на прерывание от ВУ приходит с контакта ВЗ системного разъема (сигнал INTREQ.L). Сигнал INTREQ.L также формирует на выводе 1 D2 запрос к МП на прерывание. С установкой сигнала SWOF.H в единичное состояние и при условии отсутствия запроса на прерывание от таймера (сигнал TM.L установлен в «1»), на выходе элемента D2.2 формируется сигнал низкого уровня INTAI.L. Таким образом, элемент D2.2 обеспечивает приоритетное обслуживание запросов на прерывание от таймера.

С установкой сигнала INTAI.L в нулевое состояние через диод VD7 четвертый разряд шины данных будет также установлен в «О» и на шине данных установится код 11101111В, что является кодом команды RST5. Сигнал INTAI.L поступает через один из системных разъемов на ВУ, которое при нулевом сигнале INTAI.L должно установить сигнал INTREQ.L в единичное состояние.

Для обработки прерывания 5 от ВУ предварительно необходимо установить по адресу 0x0028 команду перехода на подпрограмму обработки прерывания.

Более подробную информацию об обработке прерывания можно извлечь, например, из [3].

ДЕШИФРАТОР БАНКОВ

Наибольший интерес у пользователей ПК «Партнер», бесспорно, вызывает дешифратор банков (ДБ). ДБ собран на следующих элементах: D16.1, D17.5, D18 и ПЗУ D14 [2]. Запись информации со старшей тетрады шины данных (D4…D8) в триггер D18 производится прн выполнении процессором команды записи по адресу 0xDA00. В результате выполнения этой команды устанавливаются сигналы REC0, REC1, REC2 и REC3 (выводы 2, 7, 10, 15 D18 соответственно), которые поступают на старшие адресные разряды А5…А8 ПЗУ D14 (выводы 3, 2, 1 и 23) и обеспечивают перераспределение адресного пространства. На младшие адресные разряды А0…А14 ПЗУ D14 (выводы 8, 7, 6, 5, 4) поступают пять старших двоичных разрядов адресной шины, которые делят адресное пространство на 32 равные части по 2К.

Четыре сигнала REC0, REC1, REC2 и REC3 позволяют перераспределять адресное пространство ПК шестнадцатью вариантами, однако в ПК «Партнер 01.01» версии 02 используются, вероятно, только одиннадцать первых вариантов. Оставшиеся, по мнению автора, не используются.

В табл.4 показано распределение адресного пространства в каждом из одиннадцати вариантов. Вверху таблицы приведено значение управляющего байта, запись которого по адресу 0xDA00 и вызывает переключение на соответствующий вариант.

ПЗУ D14 формирует следующие сигналы выборки ВУ:

  • MASK-ROML (вывод 9) — выборка дополнительного ПЗУ;
  • EXTL (вывод 10) — не используется;
  • MASK-RAML (вывод 11) — выборка дополнительного ОЗУ;
  • ROM2L (вывод 13) — выборка ПЗУ D32, в котором «зашиты» монитор, редактор и ассемблер;
  • ROM1L (вывод 14) — выборка ПЗУ D30 с интерпретатором BASIC;
  • RAM1L (вывод 15) —выборка ОЗУ D35…D42. При обращении к ОЗУ старший разряд шины адреса А15 не используется;
  • RAM2L (вывод 16) — при обращении к ОЗУ заменяет старший разряд шины адреса А15;
  • SLOTL (вывод 17) — устанавливается в состояние логического нуля при обращении к адресному пространству 0xD800…0xDFFF. Поступает на дешифратор D21 (вывод 5) и необходим для формирования сигналов выборки еще восьми ВУ.

Дешифратор D21 формирует следующие сигналы:

  • CSCRTL — выбор контроллера видеотерминала D23 (адрес 0xD800);
  • CSPPIL — выбор программируемого параллельного адаптера (ППА) D28 (адрес 0xD900);
  • CS1L — выбор ДБ (адрес 0xDA00);
  • CSDMAL — выбор контроллера прямого доступа к памяти (ПДП) D20 (адрес 0xDB00);
  • PORT1L, PORT2L, SELSLOTL, SELINTL — выбор ВУ, подключаемых к системным разъемам X1, Х2, ХЗ, Х4 (адреса — соответственно 0xDC00, 0xDD00, 0xDE00, 0xDF00).

Табл. 4

00 10 20 30 40 50 60 70 80 90 А0
F800 монитор монитор монитор свободно свободно свободно монитор монитор монитор ОЗУ монитор
F000 ROM2L ROM2L ROM2L       ROM2L ROM2L ROM2L бк ROM2L
Е800 асм. ROM2L 8GM. ROM2L асм. ROM2L MASK-ROML MASK-ROML MASK-ROML асм. ROM2L aсм. ROM2L асм. ROM2L RAM1L RAM2L асм. ROM2L
Е000 MASK-ROML ред. MASK-ROML MASK-ROML       MASK-ROML MASK-ROML MASK-ROML MASK-ROML  
D800 BY BY BY BY BY BY BY BY BY BY BY
D000       ОЗУ ОЗУ ОЗУ   свободно свободно ОЗУ
С800 ОЗУ ОЗУ ОЗУ ОЗУ бк ОЗУ MASK-RAM L MASK-RAM L RAM1L RAM2L
С0О0       RAM1L RAM2L RAM1L RAM2L RAM1L RAM2L   peд. ROM2L ОЗУ peд. ROM2L
В800 22к 22к 22к 22к MASK RAML     22к   Юк  
ВООО         свободно BASIC   BASIC банк 2 свобожно
А800 банк 2 банк 2 банк 2 банк 2 ОЗУ     банк 1   RAM1L RAM2L  
А000       14к 16к ROM1L   ROM1L   16к
9800 RAM1L RAM2L RAM1L RAM2L RAM1L RAM2L RAM1L RAM2L банк 2   ОЗУ RAM1L свободно свободно  
9000         MASK-RAML   MASK RAML
8800       RAM1L RAM2L   RAML1 RAML2   MASK-ROML MASK-ROML  
8000                    
7800 эдоан экран экран       экран экран экран   экоан
7000                   ОЗУ
6800 ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ ОЗУ бк
6000                   RAM1L
5800 28к 30к 30к 32к 32к 32к 30к 30к 30к 32к свободно
5000                  
4800 банк 1 банк 1 банк 1 банк 1 6анк 1 банк 1 банк 1 банк 2 банк 1 банк 1 MASK-ROML
1000                    
3800                    
3000 RAM1L RAM1L RAM1L RAM1L RAM1L RAM1L. RAM1L RAM1L RAM2L RAM1L ОЗУ  
2800                    
2000                   16к
1800                   банк 1
1000                    
800                   RAM1L
000 ред. ROM2L                    


Рассмотрим табл.4 несколько подробнее.

После нажатия на клавишу «Сброс» ПК переходит в состояние 00, так как с приходом сигнала RESL на вывод 1 D18 REC0, REC1, REC2 и REC3 устанавливаются в состояние логического нуля. Счетчик команд PC обнуляется и микропроцессор начинает выборку из памяти команды, расположенной по нулевому адресу. Как видно из табл.4, по нулевому адресу расположена команда из ПЗУ D32. Этой командой является инструкция JMP 0xF800, по которой осуществляется переход на монитор. С третьего байта расположена программа редактор. Рабочие ячейки монитора и экранная область занимают адреса с 0x7600 по Ox7FF3.

Распределение адресного пространства в состоянии 0x10 и 0x20 незначительно отличается от состояния 00.

В состоянии 0x30, 0x40 в старших 8К адресного пространства можно установить дополнительное ПЗУ, выбираемое по сигналу MASK-ROML. В состоянии 0x40 можно использовать также дополнительную память с адреса 0хВ800. Неизвестно, совпадение это или нет, но видеобуфер многих адаптеров IBM-совместимых компьютеров также находится в области памяти ОхВ800 (значение сегментного регистра).

В состоянии 0x50 в области памяти 0x8000…OxBFFF можно разместить дополнительное ОЗУ, используемое, например, модулем графического контроллера. Этого объема памяти хватит для отображения 640x200 точек в монохромном режиме.

В состоянии 0x70 страницы ОЗУ меняются местами.

Монитор инициализирует состояние 0x80. В этом варианте распределения адресного пространства доступны все программные средства: редактор, ассемблер и BASIC. Можно установить еще 12К дополнительной памяти, выбираемой сигналами MASK-RAML и MASK-ROML.

Используя состояние 0x90 совместно с состоянием 0x70, можно относительно просто реализовать две экранные области монитора без перепрограммирования контроллера видеотерминала D23. Вторая экранная область занимает адреса 0xF6D0…0xFFF3 и в состоянии 0x90 незаметно от пользователя в этой экранной области можно создавать изображение, которое почти мгновенно может предстать перед пользователем после перехода ПК в состояние 0x70. Пример подобной программы представлен в табл.5.

Табл. 5

1100: CD F2 21 65 F8 11 C8 F8 01 20 11 CD OF F8 21
1110: 00 11 11 00 21 01 00 91 CD OF F8 3E 70 32 00 DA
1120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1130: 00 00 00 00 DO 00 00 00 00 00 00 00 00 00 00 00
1140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1160: 00 00 00 00 DO 00 00 00 00 00 00 00 00 00 00 00
1170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1180: 00 00 00 00 CD 3F FF CD A1 FF 0D 20 7C 6B 72 61
1190: 20 20 6F 6D 65 72 20 20 32 20 20 20 20 20
11А0: 20 00 CD 33 F5 CD 33 F5 3E 20 32 00 DA CD 3F FF
11ВО: CD 33 F5 CD 33 F5 3E 70 32 00 DA CD 3F FF CD 33
11С0: F5 C3 А2 11 00 00 00 00 00 00 00 00 00 00 00 00

Знакогенератор

В [4] указано, что ПК «Партнер 01.01» обладает возможностью работы с восемью наборами символов. Более подробная информация о всевозможных способах кодировки содержится, например, в [5].

В табл. 6…13 приведены все восемь наборов символов.

В табл.6 представлен номер набора 0, выбираемый управляющим кодом контроллера видеотерминала 10ПН00М0 [4]. Этот набор соответствует основной кодировке ГОСТа (коды 0x00…0x7F).

Табл.7 содержит символы набора 1 (управляющий код — 10ПН01М0). Номер набора 1 соответствует основной кодировке ГОСТа (коды 0x80…0xFF).

В табл.8 приведен набор 2 (управляющий код — 10ПН10М0). Здесь содержится изображение шахматных фигур и специальных графических символов. Использование кодов 0x70…0x7С позволит воспроизвести плавное перемещение тонкой линии по диагонали экрана.

Номер набора 3 (табл.9, управляющий код — 10ПН11М0) содержит прописные русские и латинские буквы. Именно этот набор символов выбирается при инициализации ПК (после нажатия на клавишу «Сброс»).

Четвертый набор символов (табл.10, управляющий код — 10ПН00М1) содержит специальные графические символы, предназначенные для построения таблиц, плавного перемещения по вертикали и горизонтали прямых линий и шарика.

Набор символов 5 (табл.11, управляющий код — 10ПН01М0) позволяет изобразить скрипичный ключ (коды 0x10…0x17), ноты, плавное перемещение жирной линии по диагонали, плавное движение колеса машины (коды 0x67…0x77) и др.

Набор символов 6 (табл. 12, управляющий код — 10ПН10М1) и набор символов 7 (табл.13, управляющий код — 10ПН11М1) представляют собой последовательность закодированных чисел. Если байт 76543210 представить в виде

0  1
2  3
4  5
7  6

набор 6 соответствует числовым значениям 0…127, а набор 7 — числовым значениям 128…255.

Таким образом, числу 01000111В соответствует символ

X  X
X  .
.  .
.  X

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

На этом мы закончим краткое знакомство с возможностями ПК «Партнер 01.01» версии 02. В статье возможны неточности, опечатки, в таблицах знакогенератора присутствует 16 явных ошибок, допущенных при программировании ПЗУ на заводе. Поэтому перед пользователем открываются широкие перспективы в исследовании своего ПК. Будем надеяться, что данная статья окажет существенную помощь при разработке широкого спектра программ.

ПЕЧАТЬ

При работе на ПЭВМ создание текстов является одной из наиболее часто встречающихся задач. Во-первых, чтобы создать какую-либо программу, ее вначале необходимо записать в виде текста в специальный файл. Затем — многократно редактировать: исправлять синтаксические ошибки, на которые укажет транслятор соответствующего языка программирования, вставлять дополнительные операторы. Во-вторых, с помощью ПЭВМ можно решить огромное число задач, связанных с подготовкой разнообразных текстовых документов.

Практика использования ПЭВМ показывает, что более семидесяти процентов всех применении ПК связано именно с подготовкой текстов [5]. Поэтому совсем простой и дешевый компьютер, оснащенный внешней памятью на магнитных дисках и печатающим устройством, резко увеличивает свои функциональные возможности. В данной статье описывается интерфейс сопряжения ПЭВМ «Партнер» с печатающим устройством типа «CONSUL» и с принтером «МС-6313».

Описание печатающей части «CONSUL» довольно подробно дано в [6]. Отличительной особенностью данного интерфейса является максимальная программная реализация выполняемых функций.

Принципиальная схема сопряжения печатающего устройства «CONSUL-254» и компьютера «Партнер 01.01 (В02)» приведена на рис. 1. В основу построения схемы положен следующий принцип: если записать байт в какой-либо порт программируемого параллельного адаптера (ППА) КР580ВВ55 (А, В или С), информация на выводах ППА, соответствующих данному порту, будет сохраняться до тех пор, пока не придет сигнал сброса или в этот порт не будет записана другая информация [3].

На схеме отсутствуют такие традиционные элементы, как дешифраторы и микросхема ПЗУ. Вывод информации с шины данных ПК на внешнее устройство осуществляется через микросхему D1 КР580ВВ55. Разъем XI подсоединяется к системному каналу ПЭВМ «Партнер» через один из системных разъемов X1, Х2, ХЗ, Х4 (см.схему электрическую принципиальную блока вычислителя). Инверторы D2.2…D4.5 предназначены для повышения нагрузочной способности портов А и В ППА и могут быть заменены на ЛН2, ЛАЗ и т. п. Так как электромагниты печати потребляют значительный ток (до 1,5 А при 12В), ключи на транзисторах VT9…VT1 б следует питать от отдельного источника питания +12 В (можно нестабилизированного). Напряжение питания +12 В подается на все блоки Al…A8.

Вместо печатающего устройства «CONSUL-254» можно использовать и аналогичные модели — −260, −260.1 или другие, но в этом случае потребуется изменить разводку разъема Х2.

Текст подпрограммы печати приведен в табл.1.

В данном случае подпрограмма транслируется с адреса 1100Н, что позволяет разместить подпрограмму печати в области трансляции ассемблера, а весь текстовый буфер использовать для хранения и редактирования печатаемого текста.

Для инициализации процесса печати необходимо запустить подпрограмму с адреса 1100Н (метка INIT). Разработчики управляющей программы Монитор ПЭВМ «Партнер» в начале подпрограммы вывода символа на экран монитора предусмотрительно включили команду обращения в ОЗУ в рабочую область монитора. При нажатии на клавишу «Сброс» на клавиатуре ПЭВМ в эту рабочую область записывается код команды RET (0хС9 по адресу 0х763А). Подпрограмма инициализации печати (метка INIT) перед своим завершением устанавливает вектор перехода на подпрограмму печати символа (метка START) по этому же адресу (0х763А). Таким образом, после инициализации печати все символы, выводимые на экран, будут параллельно выводиться на печать.

В табл. 1 даны необходимые комментарии. Добавим только, что использование двух адресов (ATABL и ATABL1) из таблицы кодировки вызвано тем, что при вычислении трехбайтного смещения в таблице кодировки для кода больше 0x75 в регистре А микропроцессора смещение оказывается больше 255, регистр А обнуляется и логика работы подпрограммы нарушается.

Каждому коду символа в таблице кодировки соответствует три байта. Первый байт определяет, в каком регистре, нижнем (0) или верхнем (0xFF), необходимо печатать. Второй байт выдается в порт В ППА, подключая этим корпус к одному из восьми столбцов матрицы электромагнитов. Третий байт выдается в порт А ППА, подавая тем самым через ключи VT9…VT16 напряжение+12 В на одну из

восьми строк матрицы электромагнитов. Таким образом однозначно выбирается один из 64 возможных электромагнитов печати. После печатания символа через 40… 100 мс [2] в порты А и В ППА записывается байт 0xFF, убирая этим напряжение питания с ранее выбранного электромагнита печати.

Подпрограмма PRINT предназначена для распечатки текста из текстового буфера редактора-ассемблера без вывода текста на экран монитора.

Один из способов подключения принтера «МС-6313» к ПЭВМ «Партнер 01.01 (В02)» показан на рис.2, программная поддержка данного способа подключения приведена в табл.2.

Печать в обеих подпрограммах прекращается при нажатии на клавишу «Сброс» на клавиатуре ПЭВМ. Этот недостаток можно устранить, добавив в обеих подпрограммах опрос клавиатуры, и при нажатии определенной клавиши (например, F4) записать по адресу Ох7бЗА код 0хС9.

Литература

  1. Горшков Д., Зеленко Г., Озеров Ю., Попов С. Персональный радиолюбительский компьютер «Радио-86РК». — Радио, 1986 г., NN5…10.
  2. Машины электронные вычислительные персональные. Модуль вычислительный центральный «Партнер 01.01». Альбом схем.
  3. Самофалов К. Г., Викторов О. В. Микропроцессоры. — Киев. Техника, 1989. — 312 с.
  4. Программное обеспечение МВЦ «Партнер 01.01». Руководство оператора. 1П.00045-01 34 01.1988, с.56
  5. Фигурнов В. Э. Русские буквы на вашем компьютере. — Компьютер, 1990 г., вып. 1.
  6. В. М. Брябрин. Программное обеспечение персональных ЭВМ. — М.:Наука, 1990. — 272 с.
  7. В.Сугоняко. Универсальный интерфейс для «CONSUL». — Радио, 1989, N 12, с.37.

А.ЛАШКОВ,

416500, Астраханская обл., г. Капустин Яр-1, ул. Янгеля, 7 — 52.