;--------------------------------------------------------------------------- 
; Эта программа обрабатывет прерывания таймера 8253 по каналу 0. Входная 
; частота 1.19318Мгц, делитель 65536, результат - 18.2 прерывания в секунду. 
; 
; Обработка прерывания содержит счетчик прерываний, который может 
; использоваться для установки времени суток. Обработка прерывания также 
; вычитает счетчик управления двигателем накопителем ГМД, и когда счетчик 
; исчерпан, двигатель отключается и сбрасываются флажки. Обработка прерывания 
; может воздействовать на программу пользователя через прерывание 1CH каждый 
; такт таймера. Пользователь подготавливает программу и помещает ее адрес в 
; таблицу векторов. 
;-------------------------------------------------------------------------- 
TIMER_INT        PROC  FAR 
        STI                          ;Разрешить прерывания 
        PUSH    DS 
        PUSH    AX 
        PUSH    DX                   ;Сохранить состояние 
        MOV     AX,DATA 
        MOV     DS,AX                ;Установить адресацию 
        INC     TIMER_LOW            ;Инкремент таймера 
        JNZ     T4                   ;Переполнение? 
        INC     TIMER_HIGH           ;Инкремент старшей части таймера 
T4:                                  ;Переполнение 
        CMP     TIMER_HIGH,018H      ;Проверка: равен счетчик 24 часам? 
        JNZ     T5                   ;Управление дискеттой 
        CMP     TIMER_LOW,0B0H 
        JNZ     T5                   ;Управление дискетой 
; 
;------Таймер исчерпал 24 часа 
; 
        MOV     TIMER_HIGH,0 
        MOV     TIMER_LOW,0 
        MOV     TIMER_OFL,1 
; 
;------Опрос времени ожидания для дискеты 
; 
T5:                                  ;Управление дискетой 
        DEC     CURSOR_COUNT 
        JNZ     T6 
        MOV     CURSOR_COUNT,CURSOR_TIME 
        CMP     CURSOR_MODE,0         ;анализ на нулевой размер курсора 
        JZ      T6 
 
        CMP     CURSOR_MODE,2000H     ;15.01.90г 
        JZ      T6                    ;15.01.90г 
 
T51:    MOV     AX,8 
        INT     10h 
        NOP 
T6:                                  ;Возврат из программы 
        INT     1CH                ;Передача управления программе пользователя 
        MOV     AL,EOI 
        OUT     020H,AL              ;Конец прерывания для 8259 
        POP     DX 
        POP     AX 
        POP     DS                   ;Восстановить состояние 
        IRET                         ;Возврат из прерывания 
TIMER_INT       ENDP 
 
 
        ORG     0EC59H 
 
