Предыдущий раздел | УПРАВЛЕНИЕ УСТРОЙСТВАМИ БЕЗ ПРЕРЫВАНИЙ | Следующий раздел |
Логическая схема драйвера приведена на рис.69. Драйвер представляет собой совокупность двух интерфейсных (то есть доступных для вызова извне драйвера) логических процедур. Процедура “Инициализация” без параметров. Она выполняет два действия: 1) делает процедуру “Ввести символ” резидентной; 2) запрещает прерывания от считывателя перфоленты.
Рис.69. Логическая схема синхронного драйвера
Вспомним, что инициирование резидентной подпрограммы возможно только через прерывание. Так как подпрограмму “Ввести символ” вызывают прикладные программы, то они должны использовать для этого команду программного прерывания int. В качестве номера прерывания (этот номер совпадает с операндом команды int и с номером вектора прерываний) можно взять любой неиспользуемый в системе номер, например EEh.
Запрет аппаратных прерываний от управляемого ПУ выполняется потому, что при синхронном вводе-выводе они не нужны. Для выполнения такого запрета в нашем примере достаточно сбросить бит b3 в регистре RS (см. рис.68). (На практике для этого можно выдать команду маскирования в программируемый контроллер прерываний, который рассматривается в п.21.)
Логическая процедура «Ввести символ» обслуживает запросы прикладных и системных программ по вводу символов с перфоленты. После своего вызова эта логическая процедура устанавливает в единицу бит b0 в RS и тем самым инициирует устройство ввода, которое продвигает перфоленту на один шаг. В ожидании завершения этой операции опрашивается в цикле бит b7 в RS. Затем, если нет ошибки, код символа переписывается из RD в S. После этого следует возврат управления в прикладную программу.
Предыдущий раздел | В начало | Следующий раздел |