0000 FREE_TBL EQU 1210H ; таблица необходимой свободности секций
0000 OUT_TBL EQU 1510H ; таблица выходных воздействий
0000 STT_TBL EQU 2020H ; таблица состояний секций
0000 OTM_TBL EQU 1B00H ; таблица сигналов отмены маршрутов
0000 ORG 0000H ;
0000 C3 FE 01 START: JMP INIT ;
0080 ORG 0080H
0080 C3 CE 01 IRQTBL: JMP IRQ_GO ; прерывание начала процессов перевода
0083 00 NOP ;
0084 C3 AF 01 JMP IRQ_STR ; прерывание от таймера стрелки
0087 00 NOP ;
0088 C3 55 01 JMP IRQ_OTM ; прерывание от таймера отмены
008B 00 NOP ;
008C C3 00 01 JMP IRQ_TERM ; прерывание от таймера ПСА
008F 00 NOP ;
0090 C3 39 01 JMP IRQ_FIX ; прерывание от ССВК
0093 00 NOP
0100 ORG 0100H
0100 F3 IRQ_TERM: DI ;
0101 F5 PUSH PSW ; сохранение его в стеке
0102 DB B1 IN PCIC ; чтение слова состояния ПСА
0104 E6 38 ANI 38H ; выделение битов ошибок
0106 FE 00 CPI 00H ; есть ошибки?
0108 CA 18 01 JZ TERM ; если нет - обработка запроса
010B DB B1 TXRD1: IN PCIC ; прием слова состояния оп ПСА
010D 1F RAR ; CY=1, если TxRDY=1 в SW ПСА
010E D2 0B 01 JNC TXRD1 ; ожидание готовности передатчика
0111 3E 52 MVI A,'R' ; вывод символа "R" в канал связи
0113 D3 B0 OUT PCID ;
0115 C3 32 01 JMP EXIT_M ;
0118 3A 51 20 TERM: LDA RCV_CNT ; загружаем счетчик принятых байт
011B FE 01 CPI 01H ;
011D CA 29 01 JZ BYTE2 ; принимаемый байт - второй
0120 F1 POP PSW ; восстановление принятого байта
0121 32 1A 20 STA MDM_BYTE1;
0124 3E 01 MVI A,01H ;
0126 32 51 20 STA RCV_CNT ; следующий принимаемый байт будет вторым
0129 F1 BYTE2: POP PSW ;
012A 32 1B 20 STA MDM_BYTE2;
012D 3E 00 MVI A,00H ;
012F 32 51 20 STA RCV_CNT ; следующий принимаемый байт будет первым
0132 3E 20 EXIT_M: MVI A,20H ; завершение прерывания
0134 D3 C0 OUT PICW1 ;
0136 FB EI ; разрешение прерываний
0137 F1 POP PSW ; восстановление состояния процессора
0138 C9 RET ; возврат в основную программу
0139 F3 IRQ_FIX: DI ; запрет прерываний
013A F5 PUSH PSW ; запомнить состояние
013B 3A 50 20 LDA ERR_CNT ; загружаем счетчик сбоев
013E 3D DCR A ; уменьшаем счетчик
013F CA 3F 01 ERR1: JZ ERR1 ; если =0, то автовыключение канала
0142 3E 09 MVI A,09H ;
0144 D3 C7 OUT PPI1MS ; TST.RST=1 - сброс триггера
0146 00 NOP ; небольшая задержка, чтобы триггер сбросился
0147 00 NOP ;
0148 00 NOP ;
0149 00 NOP ;
014A 3E 08 MVI A,08H ;
014C D3 C7 OUT PPI1MS ; TST.RST=0 - вкл триггера
014E 3E 20 MVI A,20H ;
0150 D3 C0 OUT PICW1 ; завершаем прерывание
0152 FB EI ; разрешаем прерывания
0153 F1 POP PSW ; восстанавливаем сосояние
0154 C9 RET ; выход
0155 F3 IRQ_OTM: DI ; запрет прерываний
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.