Разработка микропроцессорной централизации малой станции. Разработка структурной схемы МПС. Блок центрального процессора, страница 18

044B  CD 55 04             CALL  FIND     ; просматриваем строку таблицы враждебности

044E  CD 55 04             CALL  FIND     ; на предмет наличия допустимого маршрута

0451  CD 55 04             CALL  FIND     ;

0454  C9                   RET

0455  7E         FIND:     MOV   A,M      ; допустимый маршрут

0456  23                   INX   H        ; переход к следующему допустимому

0457  B8                   CMP   B        ; если установленный и допустимый совпадают - ОК

0458  C2 5E 04             JNZ   BAD1     ; если нет - враждебен

045B  1E FF                MVI   E,FFH    ;

045D  C9                   RET            ;

045E  1E 00      BAD1:     MVI   E,00H    ;

0460  C9                   RET


0461  3A 80 20   SVOBOD:   LDA   STATEB1  ; текущще состояние байт 1

0464  47                   MOV   B,A      ;

0465  7E                   MOV   A,M      ; загружаем маску для первого байта

0466  A0                   ANA   B        ; применяем маску к текущему состоянию

0467  57                   MOV   D,A      ; запоминаем

0468  3A 85 20             LDA   STATEB2  ; текущее состояние байт 2

046B  47                   MOV   B,A      ;

046C  23                   INX   H        ; переходим к следующей маске в таблице

046D  7E                   MOV   A,M      ; загружаем маску для второго байта

046E  A0                   ANA   B        ; применяем маску к текущему состоянию

046F  82                   ADD   D        ; складываем два результата наложения масок

0470  57                   MOV   D,A      ; запоминаем

0471  23                   INX   H        ; переходим к требуемому результату суммы

0472  7E                   MOV   A,M      ;

0473  BA                   CMP   D        ; сравниваем

0474  C2 7A 04             JNZ   ERRM1    ; если результаты различны - секции не готовы

0477  1E FF                MVI   E,FFH    ; секции готовы, свободно

0479  C9                   RET            ;

047A  1E 00      ERRM1:    MVI   E,00H    ; знято

047C  C9                   RET            ; возврат

047D  3A 60 20   OUTTHE:   LDA   OUTPUT1  ; формирование управляющих воздействий

0480  47                   MOV   B,A      ; на текущее воздействие накладываются

0481  7E                   MOV   A,M      ; 2 маски одна - для замены 1 на 0

0482  A0                   ANA   B        ;

0483  47                   MOV   B,A      ;

0484  23                   INX   H        ;

0485  7E                   MOV   A,M      ; вторая для замены 0 на 1

0486  B0                   ORA   B        ;

0487  32 60 20             STA   OUTPUT1  ;

048A  23                   INX   H        ;

048B  3A 70 20             LDA   OUTPUT2  ;

048E  47                   MOV   B,A      ;

048F  7E                   MOV   A,M      ;

0490  A0                   ANA   B        ;

0491  47                   MOV   B,A      ;

0492  23                   INX   H        ;

0493  7E                   MOV   A,M      ;

0494  B0                   ORA   B        ;

0495  32 70 20             STA   OUTPUT2  ;

0498  C9                   RET            ; возврат

0499  3E 01      STRELKA:  MVI   A,01H    ;

049B  32 53 20             STA   OUT_MODE ; режим вывода информации - перевод стрелки

049E  DB C6                IN    PORT9    ;

04A0  E6 20                ANI   20H      ; isOK?

04A2  CA F3 0A             JZ    VIKL     ; второй канал неисправен - в защитное состояние

04A5  3A 60 20             LDA   OUTPUT1  ;

04A8  D3 C4                OUT   PORT1    ;

04AA  3E 05                MVI   A,05H    ; GO!=1

04AC  D3 C7                OUT   PPI1MS   ; на всякий случай задержка,

04AE  CD 95 02             CALL  WAIT1    ; должно произойти прерывание IRQ_GO

04B1  3A 53 20             LDA   OUT_MODE ;

04B4  E6 08                ANI   08H      ; перевод начат?

04B6  CA F3 0A             JZ    VIKL     ; 2 канал работает замедленно - в защитное состояние

04B9  C9                   RET            ; возврат

04BA  26 2A      RAZDEL:   MVI   H,2AH    ; нулевое состояние байта занимаемых секций