03C8 FE 08 M12: CPI 08H ;
03CA C2 D3 03 JNZ EXIT_CH ; не 12 маршрут - выход
03CD 21 0B 20 LXI H,200Bh ;
03D0 C3 D6 03 JMP OPER ;
03D3 C3 19 05 EXIT_CH: JMP IDLE ;
03D6 3A 11 20 OPER: LDA COMMAND2 ; выбор требуемой операции
03D9 47 MOV B,A ;
03DA 7E MOV A,M ;
03DB 80 ADD B ; складываем команду и состояние маршрута
03DC FE 00 CPI 00H ; проверяем на возможные вариации
03DE CA EE 03 JZ USTANOV ; состояние: нулевое - установить
03E1 FE 49 CPI 49H ;
03E3 CA BA 04 JZ RAZDEL ; установлен и идет размыкание - разделать
03E6 FE 21 CPI 21H ;
03E8 CA C3 04 JZ OTMEN ; установлен - отменить
03EB C3 5F 05 JMP ERROR ; вариантов нет - выдать ошибку на индикатор
03EE E5 USTANOV: PUSH H ; сохраняем адрес маршрута
03EF CD 1D 04 CALL ADRES ; вычисляем косвенный адрес для других таблиц
03F2 EB XCHG ; меняем DE и HL
03F3 E5 PUSH H ;
03F4 E5 PUSH H ;
03F5 26 13 MVI H,13H ; переход на таблицу враждебности
03F7 CD 30 04 CALL VRAJDEB ; проверка на враждебность установленным маршр.
03FA 7B MOV A,E ;
03FB FE FF CPI FFH ; есть ли враждебные?
03FD C2 1A 04 JNZ EXIT_U ; есть - выход
0400 E1 POP H ;
0401 26 12 MVI H,12H ; переход на таблицу свободности
0403 CD 61 04 CALL SVOBOD ; проверка на свободность секций
0406 7B MOV A,E ;
0407 FE FF CPI FFH ; свободны ли секции?
0409 C2 1A 04 JNZ EXIT_U ; заняты - выход
040C E1 POP H ;
040D 26 15 MVI H,15H ; переходим на таблицу выходных воздействий
040F CD 7D 04 CALL OUTTHE ; формируем выходные воздействия
0412 E1 POP H ;
0413 7E MOV A,M ;
0414 F6 20 ORI 20H ; маршрут "устанавливается" - смена сосояния
0416 77 MOV M,A ;
0417 CD 99 04 CALL STRELKA ; перевод стрелок, открытие сигналов
041A C3 19 05 EXIT_U: JMP IDLE ; выход из установки
; определение косвенного адреса в таблицах
041D 1E 10 ADRES: MVI E,10H ; начальный адрес в таблицах
041F 45 MOV B,L ;
0420 78 MMM3: MOV A,B ; пока младший байт адреса маршрута
0421 FE 00 CPI 00H ; не станет нулевым - декрементируем
0423 CA 2F 04 JZ EXIT_AD ;
0426 3D DCR A ;
0427 47 MOV B,A ;
0428 7B MOV A,E ; и увеличиваем младший косвенный адрес
0429 C6 05 ADI 05H ; на 05H
042B 5F MOV E,A ;
042C C3 20 04 JMP MMM3 ;
042F C9 EXIT_AD: RET ; выход
0430 3A 40 20 VRAJDEB: LDA MDM_OUTB1; проверяем, установлено ли 2 маршрута?
0433 E6 F0 ANI F0H ;
0435 CA 3A 04 JZ CLEAR1 ; если уже 2 установлено - выход, враждебность
0438 1E 00 MVI E,00H ;
043A 3A 40 20 CLEAR1: LDA MDM_OUTB1;
043D FE 00 CPI 00H ; если нет установленных - выход, не враждебен
043F C2 44 04 JNZ CLEAR2 ;
0442 1E FF MVI E,FFH ;
0444 3A 40 20 CLEAR2: LDA MDM_OUTB1; установлен 1, А = его номеру в HEX
0447 47 MOV B,A ;
0448 CD 55 04 CALL FIND ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.