Радио-86РК/Радио 05-89/Печать
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: Г. ЗЕЛЕНКО, Д. ГОРШКОВ |
МОНИТОР «Радио-86РК» не содержит подпрограммы для вывода информации на печатающее устройство, так как подключение устройства какого-либо определенного типа не предусматривалось при разработке этого компьютера, а создание универсальной программы для обслуживания устройств с разными интерфейсами не возможно. Однако в таблице переходов, предназначенных для вызова стандартных подпрограмм МОНИТОРа, по адресу F80FH можно расположить команду перехода на подпрограмму печати символа, соответствующего коду в регистре С микропроцессора. Саму подпрограмму можно разместить в ОЗУ, в области рабочих ячеек МОНИТОРа, и перед началом работы с печатающим устройством загружать ее в память с магнитной ленты. Адрес начала подпрограммы — 7654Н или 3654Н (в зависимости от общего объема памяти). Подпрограмма вывода кода на печать перед выполнением команды возврата должна восстанавливать исходное содержимое всех используемых ею внутренних регистров микропроцессора. Размер подпрограммы не должен превышать 70 байтов. Возможно размещение подпрограммы печати и непосредственно в любой прикладной программе пользователя. Для этого по адресу 7654Н (3654Н) эта программа должна заносить коды трехбайтовой команды безусловного перехода на начало подпрограммы печати.
В любом случае вызов подпрограммы печати должен осуществляться по стандартному адресу — F80FH. Это позволит использовать вашу программу на любых микроЭВМ с монитором, имеющим такие же таблицы переходов для вызова стандартных подпрограмм.
ТАБЛИЦА 1
F810: 54 76 F84A: 1A FC FC0F: 2A FC10: 00 76 3А 2Е 76 A9 F5 C3 85 FC 3E C9 32 53 76 CD FC20: ED F9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FC30: 00 00 00 C9 FCBF: 53 76
В табл. 1 приведены изменения, которые необходимо внести в ПЗУ с монитором для 32-килобайтной версии микроЭВМ. Чтобы получить модификацию для 16-килобайтной версии компьютера, следует заменить все коды 76Н на 36Н. Вместо нулевых кодов (пустая операция — NOP) по адресам с FC22H по FC32H (включительно) можно записать коды команд для начальной настройки интерфейса печатающего устройства. В этом случае программа настройки интерфейса будет выполняться автоматически при запуске МОНИТОРа.
Кроме вызова подпрограммы печати, данная модификация МОНИТОРа обеспечивает печать информации, выводимой на экран. Для управления режимом дублирования используется рабочая ячейка по адресу 7653Н (3653Н), первоначально содержащая код С9Н. Чтобы включить дублирование, нужно занести в эту ячейку нулевой код, чтобы выключить — восстановить прежнее значение, С9Н. Запись кодов в эту ячейку можно производить «вручную» с помощью директивы МОНИТОРа (М7653) или из любой программы пользователя. Запись других кодов в ячейку 7653Н недопустима. Будьте осторожны! Перед использованием вывода на печать следует убедиться в том, что в ОЗУ загружена подпрограмма обслуживания печатающего устройства.
Рассмотрим пример подпрограммы вывода кода для параллельного интерфейса «Centronics», подключенного к ППА КР580ВВ55 следующим образом:
РА0 - DATA1 PC7 - Strobe PA1 - DATA2 PC3 - BUSY PA2 - DATA3 РАЗ - DATA4 PA4 - DATA5 PA5 - DATA6 PA6 - DATA7 PA7 - DATA8
Подключение остальных сигналов интерфейса необязательно. ППА должен быть настроен в нулевом режиме таким образом, чтобы линии С порта А и старшая половина порта С работали на вывод, а младшая половина порта С — на ввод.
Сразу после настройки ППА на линии РС7 (сигнал STROBE) следует установить лог. «1». В табл. 2 приведена программа настройки ППА, заносимая в ПЗУ с монитором, в табл. 3 — подпрограмма печати кода регистра С, хранимая в ОЗУ.
ТАБЛИЦА 2 FC22 3е 83 MVI А,83Н FC24 32 03 А0 STA 0А003Н FC27 32 02 А0 STA 0A002H ТАБЛИЦА 3 7654 F5 PUSH PSW 7655 3А 02 А0 LDA 0A002H 7658 E6 08 ANI 1000В 765A C2 55 76 JNZ 7655H 765D 79 MOV A,C 765E 32 00 А0 STA 0A000H 7661 3E 0E MVI A,0EH 7663 32 03 А0 STA 0А003Н 7666 3С INR A 7667 32 03 А0 STA 0А003Н 766А F1 POP PSW 766В C9 RET ТАБЛИЦА 4 ; ПОДПРОГРАММА ПЕЧАТИ СООБЩЕНИЯ 2100 E1 PRINT: POP H 2101 4E MOV C,M 2102 CD 0F F8 CALL 0F80FH 2105 23 INX H 2106 7E MOV A,W 2107 B7 ORA A 2108 C2 01 21 JNZ PRINT+1 210В E9 PCHL ТАБЛИЦА 5 ;ВЫЗОВ ПОДПРОГРАММЫ PRINT 0100 CD 00 21 CALL PRINT 0103 70 72 69 60 65 DB 'ПРИМЕР ВЫЗОВА ' 0108 72 20 77 79 7A 010D 6F 77 61 20 0111 70 6P 64 70 72 DB 'ПОДПРОГРАММЫ ' 0116 6P 67 72 61 60 011B 60 79 20 011E 50 52 49 4E 54 DB 'PRINT.',00H,0AH 0123 2E 00 0A 0126 6В 6F 6E 65 63 DВ 'КОНЕЦ СООБЩЕНИЯ -' 012В 20 73 6F 6F 65 0130 56 6E 69 71 20 0135 20 0136 20 30 30 00 0A DВ ' 00',00Н,0AH 013В 00 DВ 0
В табл. 4 и 5 приведены примеры подпрограммы PRINT для печати сообщения и вызова этой подпрограммы. Коды выводимого сообщения должны располагаться непосредственно за командой вызова подпрограммы PRINT. Конец сообщения определяется кодом 0.
Г. ЗЕЛЕНКО, Д. ГОРШКОВ, г. Москва