0129 EB xchg
012A 77 mov m,a
012B EB xchg
012C 23 inx h
012D 13 inx d
012E 0D dcr c
012F C2 28 01 jnz F_DTI
0132 D1 pop d
0133 FB ei
0134 3A 06 80 C_ERR: lda PPI+2
0137 E6 80 ani 80h ; если ошибка на выходе -
0139 CA 42 01 jz OUT_R ; сигнализация об этом и останов
013C 3E 0C mvi a,0ch
013E 32 06 80 sta PPI+2
0141 76 hlt
0142 21 04 08 OUT_R:lxi h,DT_INT+3
0145 7E mov a,m
0146 EE 01 xri 1
0148 0F rrc
0149 0F rrc
014A 47 mov b,a
014B 7E mov a,m
014C 0F rrc
014D B0 ora b
014E 2B dcx h
014F B6 ora m
0150 32 18 80 sta RG3 ; вывод на индикацию Y1,Y2,Y3
0153 23 inx h
0154 23 inx h
0155 7E mov a,m
0156 32 1C 80 sta RG4 ; вывод на индикацию Y4
0159 3A 06 80 C_STOP:lda PPI+2
015C E6 40 ani 40h
015E C2 59 01 jnz C_STOP
0161 C3 2F 00 jmp BEGIN ; цикл пока включен тумблер "Останов"
;----------------------------------------
; подпрограмма умножения
;----------------------------------------
0164 C9 MULT: ret
;----------------------------------------
; обработчики прерываний
;----------------------------------------
; прерывание от истчника питания
0165 3E 10 INT0: mvi a,00111110h
0167 32 0F 80 sta PIT+3 ; 0-й канал ПТ - режим 3
016A 3E 70 mvi a,70h ; запись констант в 0-й канал
016C 32 0C 80 sta PIT ; для сигнала Y5 (2*30 мкс)
016F 3E 17 mvi a,17h
0171 32 0C 80 sta PIT
0174 3E 01 mvi a,01
0176 32 06 80 sta PPI+2 ; переключение выхода Y1/Y5 на Y5
0179 3E 20 mvi a,20h ; запись констант в 1-й канал
017B 32 0D 80 sta PIT+1 ; для строба длительностью 100 мкс
017E 3E 4E mvi a,4eh
0180 32 0D 80 sta PIT+1
0183 7A mov a,d ; строб GATE0
0184 F6 40 ori 40h
0186 32 04 80 sta PPI
0189 E6 BF ani 0bfh
018B 32 04 80 sta PPI
018E 3E 21 mvi a,'!' ; посылка в последовательный канал
0190 32 08 80 sta PCI ; символа "!"
0193 76 hlt ; останов
; прерывание от аварийного источника
0194 21 01 08 INT3: lxi h,DT_INT
0197 7E mov a,m
0198 32 10 80 sta RG1 ; регистр 1 <- N1
019B 23 inx h
019C 7E mov a,m
019D 32 14 80 sta RG2 ; регистр 1 <- X
01A0 3E 02 mvi a,02
01A2 32 06 80 sta PPI+2 ; строб для ВЕ51
01A5 3E 10 mvi a,10h ; (режим "сигнализация")
01A7 32 04 80 sta PPI
01AA 3E 00 mvi a,0
01AC 32 04 80 sta PPI
01AF 76 hlt ; останов
; прерывание от внешней ЭВМ
01B0 3A 08 80 INT4: lda PCI
01B3 FE 44 cpi 'D'
01B5 C2 BE 01 jnz CMP_A
01B8 3A 03 08 lda DT_INT+2 ; если "D" - посылаем Y1
01BB 32 08 80 sta PCI
01BE FE 41 CMP_A: cpi 'A'
01C0 C2 C9 01 jnz E_INT2
01C3 3A 05 08 lda DT_INT+4
01C6 32 08 80 sta PCI ; если "A" - посылаем Y4
01C9 FB E_INT2:ei
01CA C9 ret ; возврат
01CB 21 03 08 INT5: lxi h,DT_INT+2
01CE 46 mov b,m ; выделяем Y1
01CF 23 inx h
01D0 7E mov a,m
01D1 EE 01 xri 01 ; выделяем N>Q (!Y2)
01D3 07 rlc
01D4 B0 ora b
01D5 47 mov b,a
01D6 2B dcx h
01D7 2B dcx h
01D8 7E mov a,m ; A <- X1-X5
01D9 E6 0F ani 0fh ; A <- X1-X4
01DB CA ED 01 jz A_ONE ; получаем X1*X2*X3*X4
01DE 78 mov a,b ; и X1vX2vX3vX4
01DF E6 FB ani 0fbh
01E1 47 mov b,a
01E2 79 mov a,c
01E3 B7 ora a
01E4 CA F3 01 jz A_ZERO
01E7 78 mov a,b
01E8 F6 08 ori 08
01EA C3 F6 01 jmp O_R1
01ED 78 A_ONE: mov a,b ; все Х = 1
01EE F6 0C ori 0ch
01F0 C3 F6 01 jmp O_R1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.