Техника - молодёжи 1994-12, страница 27HELP Среди пожеланий наших читателей — пользователей ПК часто звучит следующее: наряду с информацией общего характера (например, о языках высокого уровня) не упускать из поля зрения конкретные способы программирования с выходом на "железо" компьютера. В частности, неоднократно высказывалась просьба описать систему прерываний ПК с популярным микропроцессором Z80. Своими познаниями и опытом делится программист Александр ГУСЕВ. Операции Z80 для Мнемоника Код HALT 76Н ГРАМОТНО ПРЕРВАТЬ ПРОЦЕДУРА ТОНКАЯ Как известно, компьютерная программа представляет собой набор инструкций, выполняемых в строгой последовательности. При этом взаимодействие компьютера с внешней средой происходит в той мере, в какой данная программа позволяет это сделать. Но как быть, если параллельно с основной работой вычислительная машина должна выполнять какие-либо вспомогательные функции, скажем, изменять показания часов при поступлении сигнала от таймера? Или другой пример. Вы увлечены компьютерной игрой, а в это время по каналам внешней сети на ваш терминал поступает срочное сообщение. Как примет его машина, если контроль сети в игровой программе не предусмотрен? Выход из подобной ситуации следующий — позволить процессору в случае поступления сигнала от внешнего устройства прервать при определенных условиях естественный ход программы для передачи управления процедуре, которая бы необходимым образом эти сигналы обработала, после чего продолжить выполнение основной программы. Такая последовательность действий процессора называется прерыванием. Структурно оно состоит из двух частей: аппаратная — обеспечивает переход на необходимую процедуру, программная — и есть сама процедура. В качестве примера рассмотрим аппаратную организацию прерываний в компьютере Enterprise. Ею заняты: микропроцессор Z80, поддерживающий обработку немаскируемого и трех видов маскируемых прерываний; порт ввода/вывода R/W В4Н, организующий захват и передачу на микропроцессор запросов на маскируемые прерывания от четырех независимых источников; аудио-сопроцессор DAVE (биты 6 и 5 порта WA7H, порты W A0H..A3H), генерирующий запросы на прерывания в качестве источника № 1; генератор частоты 1 Гц — источник № 2; видеосопроцессор NICK (бит 7 байта режима изображения) — источник № 3; а также интерфейс SERIAL/NET — источник № 4, посылающий запрос в случае поступления информации из внешней сети. Микропроцессор Z80 имеет два типа прерываний — немаскируемое и маскируемые. Запрос немаскируемого прерывания принимается процессором в любой момент времени, при этом выполняется рестарт с ячейки 0066Н. В компьютере Enterprise рестарту предшествует обнуление регистров страниц. Маскируемые прерывания называются так потому, что пользователь может запретить процессору реагировать на них. Для этого существует специальный триггер разрешения прерываний, в случае сброса которого маскируемые прерывания будут игнорироваться. Сброс триггера выполняется операцией DI (код F3H), а установка — операцией EI (FBH). При выполнении прерывания триггер автоматически сбрасывается. Реакция Z80 на маскируемое прерывание зависит от режима прерывания, предварительно установленного пользовате лем. Существуют три таких режима. РЕЖИМ 0 устанавливается операцией IMO (EDH,46H). В этом случае прерывающее устройство может выдать на шину данных код команды, которую процессор сразу выполнит. В ПК Enterprise в момент любого из прерываний шина данных остается свободной, что соответствует коду FFH, следовательно, Z80 выполнит операцию RST38H (FFH). РЕЖИМ 1 — IM1 (EDH,56H). В этом случае Z80 также выполнит операцию RST38H. Таким образом, для Enterprise режимы 0 и 1 идентичны. РЕЖИМ 2 — IM2 (EDH,5EH). В данной ситуации будет вызвана процедура по адресу, хранящемуся в ячейках памяти с адресами ITJT+1, где I — регистр (8 бит), определяемый пользователем, а Т — состояние шины данных в момент прерывания (для Enterprise T=FFH). Порт W В4Н имеет следующий формат. Значение битов 0, 2, 4, 6: 1 — включение прерывания от 1-го, 2-го, 3-го и 4-го источников соответственно, 0 — выключение. Если прерывание включено, то при подаче сигнала с источника устанавливается "ловушка" — триггер, выход которого связан с линией маскируемых прерываний Z80. Биты 1, 3, 5, 7: 1 — сброс соответствующих "ловушек", 0 — состояние "ловушки" не меняется. Порт R В4Н. Биты 1, 3, 5, 7: 1 — ловушка установлена, 0 — сброшена. Биты 6 и 5 порта WA7H: 00 — частота прерываний от источника 1 равняется 1КГц, 01 — 50 Гц, 10 — удвоенной частоте тонового генератора О (ТГО), 11 — то же, но для ТГ1. Порт W АОН (8 битов) и биты 3..0 порта W А1Н (в качестве 4 старших): частота тонового генератора 0 равна 125000/(п+1) Гц, где п — десятичное значение записанного в эти порты 12-битового числа. Порт W А2Н и биты 3..0 порта W АЗН: то же, но для ТГ1. Если бит 7 байта режима изображения в данной макростроке равен 1, то в ее начале генерируется прерывание от источника 3. Перед выходом из процедуры прерывания следует сбросить все установленные ловушки, чтобы избежать зацикливания, и разрешить прерывания операцией EI. В качестве примера, иллюстрирующего прерывания Z80 в режиме 2, предлагается простенькая программа для ПК Enterprise, позволяющая выводить в статусную строку текущее время. 100 ALLOCATE 103 110 CODE В="" 120 DEF W$(P)=WORD$( 16129-В+Р) 130 CODE Т=" 12:00:00:00" 140 CODE L= "99595999" 150 CODE l=HEX$("F5,C5,D5,E5,06,08,11")& W$(L+7)&HEX$("21 ")&W$(T+10)&HEX$ ("34,34,1 A,BE,30,0B,36,30,1 B,2B,CB,40,28, 01,2B,10,F0,FF,DB,B2,47,3E,FF,D3,B2, 78,01,1 D,00,2A,F6,BF,09,0E,0B,EB,21 ")& W$(T)&HEX$("ED,B0,D3,B2,E1 ,D1 ,C1 ,F1 ,C9") 160 CODE S=HEX$("01 ")&WORD$(ST)&HEX$("11 ")& WORD$( 16129)&HEX$("21 ")&WORD$(T)& HEX$("ED,B0,21")&W$(I)&HEX$("22,FF,3E, 3E,3E,ED,47,ED,5E,C9") 170 CALL USR(S,0) DI El IMO IM1 IM2 RETI F3H FBH EDH,46H EDH,56H EDH,5EH EDH,4DH организации прерываний: Операция остановить процессор до прерывания запретить прерывания разрешить прерывания после команды, следующей за EI установить режим прерываний О LD A,l LD l,A возврат из маскируемого прерывания RETN EDH,45H возврат из немаскируемого прерывания (обе процедуры аналогичны RET) EDH,57H загрузить регистр I в аккумулятор, при этом триггер разрешения прерывания копируется в флаг Р/V EDH.47H загрузить аккумулятор в регистр I InfoHARD & SOFTАОН; компьютеры БК, "Спектрум , 'Поиск' - по почте, дешево! Программы: IBM-совместимые, МС-0511 (УКНЦ), БК-0010(01), БК-Л(М). 189510, г.Ломоно-сов, а/я 649, А.В.Молчанову (для получения каталога укажите на конверте тип ЭВМ и вложите конверт с марками). Для удобства расчета стоимость предлагаемых ниже товаров и услуг приведена в долларах США. Оплата производится в рублях по курсу ЦБ РФ на момент покупки или отправления денежного перевода. КЛУБ ЭЛЕКТРОННЫХ ИГР (123022, Москва, а/я 77, "Техника - молодежи"): - ПРОДОЛЖАЕТ РАСПРОДАЖУ КОМПЬЮТЕРОВ АНГЛИЙСКОЙ СБОРКИ ENTERPRISE 128 в комплекте с магнитофоном, картриджем с интерпретатором IS-BASIC, демонстрационной и игровой кассетами. Стоимость комплекта - 130 $. Тел.: (095) 285-16-87, 285-88-48; - ПРЕДЛАГАЕТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ ENTERPRISE 128 В ОТДЕЛЬНЫХ КАРТРИДЖАХ: графические редакторы, текстовый процессор PALEX, игровые картриджи, прикладной картридж PASM0N с кассетными приложениями (игры, техническое описание операционной системы на русском языке и др.). Стоимость одного картриджа (без кассетных приложений) 10 - 15 $. Тел.: (095) 285-88-48; - ПРЕДЛАГАЕТ ПРОГРАММЫ ДЛЯ ENTERPRISE 128 НА КОМПАКТ-КАССЕТАХ И ДИСКЕТАХ: игры; языки программирования (в том числе LISP и FORTH с описаниями); прикладные и системные программы -цветной эмулятор-конвертор "Спектрума SP 2.1, русификатор ABC для стандартных сред Enterprise, текстовый процессор RED 1.4, совместимый с ним виртуальный (электронный) диск RAM 0.1; операционная система СРМ с виртуальным диском VDISK 0.2, позволяющая загружать с магнитофона и запускать программы, совместимые с популярнейшей дисковой системой СР/М 2.2 (в пакет прилагаемого матобеспечения входят языки Турбо-Паскаль 3.0, BASIC-80, компилятор Си с библиотекой, различные утилиты); а также справочник по IS-BASIC на русском языке. Тел.: (095) 285-88-01. - ПРОИЗВОДИТ РЕМОНТ КОМПЬЮТЕРОВ ENTERPRISE. Тел. (095) 285-88-48. Компьютеры, картриджи и кассетные приложения к ним можно приобрести в редакции по адресу: Москва, ул. Новодмитровская, 5а, 9-й этаж, к. 907Б; кассеты и дискеты с программным обеспечением - к. 903. Проезд до ст. метро "Дмитровская". Пересылка по почте не производится. Заявки на объявления принимаются по адресу: 123022, Москва, а/я 77, Конюшкову А.А. К тексту приложите квитанцию почтового перевода из расчета 0,5 $ за слово (для частных лиц) и 1 $ за слово для организаций. ■ ТЕХНИКА-МОЛОДЕЖИ 1 2 ' 9 4 |